UNPKG

2.95 kBJavaScriptView Raw
1/**
2 * Created by Alex on 4/21/2015.
3 */
4
5/**
6 * it works like this:
7 *
8 * the toggle row has the onclick with the table id, the parent name and this. The function will look through all trs with matching parent and check the class
9 * if hidden, it shows them, else it hides them.
10 *
11 * The caret is also flipped and the toggle class is changed.
12 *
13 *
14 <tr class='toggle collapsible' onclick="toggleTable('physicsTable','barnesHut', this);"><td><span parent="barnesHut" class="right-caret"></span> barnesHut</td></tr>
15 <tr parent="barnesHut" class="hidden"><td>barnesHut.gravitationalConstant</td></tr>
16 <tr parent="barnesHut" class="hidden"><td>barnesHut.centralGravity</td></tr>
17 <tr parent="barnesHut" class="hidden"><td>barnesHut.springLength</td></tr>
18 <tr parent="barnesHut" class="hidden"><td>barnesHut.springConstant</td></tr>
19 <tr parent="barnesHut" class="hidden"><td>barnesHut.damping</td></tr>
20 *
21 *
22 * @param tableId
23 * @param parent
24 * @param clickedRow
25 */
26function toggleTable(tableId, parent, clickedRow) {
27 var table = document.getElementById(tableId);
28 var wasOpen = false;
29 for (var i = 0, row; row = table.rows[i]; i++) {
30 if (row.getAttribute('parent') === parent) {
31 if (row.className.indexOf('hidden') !== -1) {
32 row.className = row.className.replace(' hidden','').replace('hidden','');
33 row.className += ' visible';
34 }
35 else {
36 row.className = row.className.replace(' visible','').replace('visible','');;
37 row.className += ' hidden';
38 wasOpen = true;
39 }
40 }
41 }
42
43 var spans;
44 if (wasOpen === true) {
45 spans = document.getElementsByClassName('caret');
46 clickedRow.className += ' collapsible';
47 }
48 else {
49 spans = document.getElementsByClassName('right-caret')
50 clickedRow.className = clickedRow.className.replace(' collapsible','').replace('collapsible','');;
51 }
52
53 for (var i = 0; i < spans.length; i++) {
54 if (spans[i].getAttribute('parent') === parent) {
55 spans[i].className = wasOpen === true ? 'right-caret' : 'caret';
56 }
57 }
58}
59
60function toggleTab(tabThis) {
61 var parentNode = tabThis.parentNode;
62 var active = tabThis.className.indexOf('active') !== -1;
63 for (var i = 0; i < parentNode.children.length; i++) {
64 var child = parentNode.children[i];
65 var targetNodeId = child.getAttribute('targetNode');
66 if (targetNodeId) {
67 var targetNode = document.getElementById(child.getAttribute('targetNode'));
68 targetNode.className = targetNode.className.replace(' hidden', '').replace('hidden', '') + ' hidden';
69 }
70 child.className = child.className.replace(' active','').replace('active','');
71 }
72
73 // activate the tab
74 tabThis.className += ' active';
75 var ownTargetNodeId = tabThis.getAttribute('targetNode');
76 if (ownTargetNodeId) {
77 var ownTargetNode = document.getElementById(ownTargetNodeId);
78 ownTargetNode.className = ownTargetNode.className.replace(' hidden','').replace('hidden','');
79 }
80
81}
\No newline at end of file