Skip to content

Instantly share code, notes, and snippets.

@max630
Last active June 10, 2017 05:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save max630/0ef61f4aa93d2871a1c3054c11b5f3e1 to your computer and use it in GitHub Desktop.
Save max630/0ef61f4aa93d2871a1c3054c11b5f3e1 to your computer and use it in GitHub Desktop.
Greasemonkey script to show only first parents in bitbucket server's commit list
// ==UserScript==
// @name BitbucketServer_FirstParentsOnly
// @namespace http://max630.net
// @include https://example.com/projects/FOO/repos/BAR/commits*
// @version 1
// @grant none
// @run-at document-idle
// ==/UserScript==
function HandleContent() {
while (window.rc_last.nextElementSibling !== null) {
var rc_next = window.rc_last.nextElementSibling;
console.log('tag name: ' + rc_next.tagName);
while (rc_next !== null && rc_next.tagName.toLowerCase() != 'tr') { rc_next = rc_next.nextElementSibling; }
var commit_data = JSON.parse(rc_next.getAttribute('data-commit-json'));
if (window.rc_waitParent !== '' && window.rc_waitParent != commit_data.id) {
console.log('drop: ' + commit_data.id);
window.rc_tbody.removeChild(rc_next);
} else {
window.rc_last = rc_next;
window.rc_waitParent = commit_data.parents[0].id;
console.log('next parent: ' + window.rc_waitParent);
}
}
}
var rc_trs = document.getElementsByTagName('tr');
console.log('size: ' + rc_trs.length);
for (let el of rc_trs[Symbol.iterator]()) {
console.log('commit ' + el.classList);
if (el.classList.contains('commit-row')) {
window.rc_tbody = el.parentNode;
console.log('rc_body ' + el.parentNode.innerHTML);
break;
}
}
window.rc_waitParent = '';
window.rc_last = window.rc_tbody.firstElementChild;
HandleContent();
window.rc_updateHandler = (()=> {
var obj = {};
obj.triggerUpdate = () => {
if(obj.triggered) {
obj.observer.disconnect();
}
obj.triggered = true;
obj.observer.disconnect();
window.setTimeout(() => { obj.runUpdate(); });
};
obj.runUpdate = () => {
obj.observer.disconnect();
HandleContent();
obj.triggered = false;
obj.observer.observe(window.rc_tbody, { childList: true });
};
obj.observer = new MutationObserver(() => { obj.triggerUpdate(); });
obj.triggered = false;
obj.observer.observe(window.rc_tbody, { childList: true });
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment