Created
July 21, 2015 21:04
-
-
Save elqahtani/6fbf43b120ba787a6892 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| // This used to use jQuery, but was rewritten in plan DOM for speed and to get rid of the jQuery dependency. | |
| document.addEventListener('DOMContentLoaded', function() { | |
| // Click handler for collapsing and expanding objects and arrays | |
| function collapse(evt) { | |
| var collapser = evt.target; | |
| var target = collapser.parentNode.getElementsByClassName('collapsible'); | |
| if ( ! target.length ) { | |
| return; | |
| } | |
| target = target[0]; | |
| if ( target.style.display == 'none' ) { | |
| var ellipsis = target.parentNode.getElementsByClassName('ellipsis')[0]; | |
| target.parentNode.removeChild(ellipsis); | |
| target.style.display = ''; | |
| collapser.innerHTML = '-'; | |
| } else { | |
| target.style.display = 'none'; | |
| var ellipsis = document.createElement('span'); | |
| ellipsis.className = 'ellipsis'; | |
| ellipsis.innerHTML = ' … '; | |
| target.parentNode.insertBefore(ellipsis, target); | |
| collapser.innerHTML = '+'; | |
| } | |
| } | |
| function addCollapser(item) { | |
| // This mainly filters out the root object (which shouldn't be collapsible) | |
| if ( item.nodeName != 'LI' ) { | |
| return; | |
| } | |
| var collapser = document.createElement('div'); | |
| collapser.className = 'collapser'; | |
| collapser.innerHTML = '-'; | |
| collapser.addEventListener('click', collapse, false); | |
| item.insertBefore(collapser, item.firstChild); | |
| } | |
| var items = document.getElementsByClassName('collapsible'); | |
| for( var i = 0; i < items.length; i++) { | |
| addCollapser(items[i].parentNode); | |
| } | |
| }, false); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment