Skip to content

Instantly share code, notes, and snippets.

@joostdevries
Created September 30, 2014 12:01
Show Gist options
  • Save joostdevries/f2ce4f24dc16ae8c2d10 to your computer and use it in GitHub Desktop.
Save joostdevries/f2ce4f24dc16ae8c2d10 to your computer and use it in GitHub Desktop.
github-related-issues.user.js
// Adds a 'References' section to the github issue/PR sidebar
//
// Installation:
// - Save this file as github-related-issues.user.js somewhere
// - Go to chrome://extensions
// - Drag the file to the open extensions tab
(function(w) {
var $ = function(selector, one) {
return one?document.querySelector(selector):document.querySelectorAll(selector);
}
var initGithub = function() {
var refs = $('.discussion-item-ref .state');
var sidebar = $('.discussion-sidebar',true);
var refsList = refsList = $('.references-userscript-list',true);
if(!refs.length || !sidebar || refsList) return false;
var cssNode = document.createElement('style');
var head = $('head', true);
cssNode.type='text/css';
cssNode.innerText = '.references-userscript-list .discussion-item-header {display:none;}'+
'.references-userscript-list .issue-meta-section {display:none;}'+
'.references-userscript-list .discussion-item {margin:0; padding:0; padding-top:10px; font-size:10px !important;height:35px; overflow:hidden;}'+
'.references-userscript-list .discussion-item a .issue-num{float:left;}';
head.appendChild(cssNode);
var refsNode = document.createElement('div');
refsNode.className = 'discussion-sidebar-item sidebar-additional';
refsNode.innerHTML = '<div id="references-userscript">' +
' <div class="references-userscript">' +
'' +
' <h3 class="discussion-sidebar-heading">' +
' References' +
' </h3>' +
' <div class="references-userscript-list">' +
' </div>' +
' </div>' +
'</div>';
sidebar.insertBefore(refsNode, sidebar.firstChild);
refsList = $('.references-userscript-list',true);
for(var i=0; i<refs.length; i++) {
// console.log(refs[i], refs[i].querySelector('.state'));
var ref = refs[i].parentNode;
var state = ref.querySelector('.state').cloneNode(true);
var link = ref.querySelector('.title-link').cloneNode(true);
link.title = link.innerText.trim();
link.removeChild(link.firstChild);
var newTitle = document.createElement('h3');
newTitle.className='discussion-item-ref-title';
newTitle.appendChild(link);
var newNode = document.createElement('div');
newNode.className='discussion-item discussion-item-ref';
newNode.appendChild(state);
newNode.appendChild(newTitle);
refsList.appendChild(newNode);
}
}
var github = w.location.href.indexOf('github.com')!==-1;
// if(github && w.addEventListener)
setInterval(function() {
initGithub();
},1000);
})(window);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment