-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdefault.js
59 lines (48 loc) · 1.81 KB
/
default.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// This used to use jQuery, but was rewritten in plan DOM for speed and to get rid of the jQuery dependency.
function addExpandCollapse() {
// Click handler for collapsing and expanding objects and arrays
function collapse(collapser) {
//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 collapseEvent(evt) {
collapse(evt.target);
}
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', collapseEvent, false);
item.insertBefore(collapser, item.firstChild);
// GOTCHA: This will collapse all the collapsible elements initially,
// comment out this line if you'd rather have all elements expanded
// initially.
collapse(collapser);
}
var items = document.getElementsByClassName('collapsible');
for( var i = 0; i < items.length; i++) {
addCollapser(items[i].parentNode);
}
}
document.addEventListener('DOMContentLoaded', addExpandCollapse, false);