Last active
August 10, 2017 10:58
-
-
Save DelphicOkami/64521e9ad97bf1399c9349e4080106d8 to your computer and use it in GitHub Desktop.
Adds controls for expanding and collapsing all files in github pull requests. Add this to greasemonkey / tampermonkey
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Github File collapser | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description try to take over the world! | |
// @author Micheal Wilkinson | |
// @match https://github.com/*/*/pull/*/files* | |
// @grant none | |
// ==/UserScript== | |
(function () { | |
var classes = 'open Details--on'; | |
var file_count = parseInt(document.getElementById('files_tab_counter').innerHTML.trim()); | |
var collapse_all = function() { | |
for(int_diff = 0; int_diff < file_count; int_diff++) { | |
var element = document.getElementById("diff-" + int_diff); | |
if (null !== element) { | |
var elementClasses = element.className; | |
elementClasses = elementClasses.replace(new RegExp('(?:^|\\s)' + classes + '(?:\\s|$)'), ' '); | |
elementClasses += ' ' + classes; | |
document.getElementById("diff-" + int_diff).className = elementClasses; | |
} else { | |
break; | |
} | |
} | |
}; | |
var expand_all = function() { | |
for(int_diff = 0; int_diff < file_count; int_diff++) { | |
var element = document.getElementById("diff-" + int_diff); | |
if (null !== element) { | |
var elementClasses = element.className; | |
elementClasses = elementClasses.replace(new RegExp('(?:^|\\s)' + classes + '(?:\\s|$)'), ' '); | |
document.getElementById("diff-" + int_diff).className = elementClasses; | |
} else { | |
break; | |
} | |
} | |
expanded = true; | |
}; | |
var outer_div = document.createElement('div'); | |
var inner_div = document.createElement('div'); | |
var expand_link = document.createElement('a'); | |
var collapse_link = document.createElement('a'); | |
var tool_div = document.getElementsByClassName('float-right pr-review-tools')[0]; | |
outer_div.className = 'diffbar-item'; | |
inner_div.className = 'BtnGroup'; | |
expand_link.className = 'btn btn-sm btn-outline BtnGroup-item tooltipped tooltipped-s'; | |
collapse_link.className = 'btn btn-sm btn-outline BtnGroup-item tooltipped tooltipped-s'; | |
expand_link.setAttribute('id', 'expand_all_link'); | |
collapse_link.setAttribute('id', 'collapse_all_link'); | |
expand_link.setAttribute('aria-label', 'Expand all files'); | |
collapse_link.setAttribute('aria-label', 'Collapse all files'); | |
expand_link.appendChild(document.createTextNode('Expand all')); | |
collapse_link.appendChild(document.createTextNode('Collapse all')); | |
inner_div.appendChild(expand_link); | |
inner_div.appendChild(collapse_link); | |
outer_div.appendChild(inner_div); | |
tool_div.insertBefore(outer_div, tool_div.firstChild); | |
document.getElementById("expand_all_link").addEventListener("click", expand_all); | |
document.getElementById("collapse_all_link").addEventListener("click", collapse_all); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment