vis.js is a dynamic, browser-based visualization library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.9 KiB

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