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.

266 lines
7.1 KiB

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>Network | DataSet</title>
  5. <style type="text/css">
  6. html, body {
  7. font: 11pt arial;
  8. }
  9. h1 {
  10. font-size: 150%;
  11. margin: 5px 0;
  12. }
  13. h2 {
  14. font-size: 100%;
  15. margin: 5px 0;
  16. }
  17. table.view {
  18. width: 100%;
  19. }
  20. table td {
  21. vertical-align: top;
  22. }
  23. table table {
  24. background-color: #f5f5f5;
  25. border: 1px solid #e5e5e5;
  26. }
  27. table table td {
  28. vertical-align: middle;
  29. }
  30. input[type=text], pre {
  31. border: 1px solid lightgray;
  32. }
  33. pre {
  34. margin: 0;
  35. padding: 5px;
  36. font-size: 10pt;
  37. }
  38. #network {
  39. width: 100%;
  40. height: 400px;
  41. border: 1px solid lightgray;
  42. }
  43. </style>
  44. <script type="text/javascript" src="../../../dist/vis.js"></script>
  45. <link href="../../../dist/vis.css" rel="stylesheet" type="text/css"/>
  46. <script type="text/javascript">
  47. var nodes, edges, network;
  48. // convenience method to stringify a JSON object
  49. function toJSON(obj) {
  50. return JSON.stringify(obj, null, 4);
  51. }
  52. function addNode() {
  53. try {
  54. nodes.add({
  55. id: document.getElementById('node-id').value,
  56. label: document.getElementById('node-label').value
  57. });
  58. }
  59. catch (err) {
  60. alert(err);
  61. }
  62. }
  63. function updateNode() {
  64. try {
  65. nodes.update({
  66. id: document.getElementById('node-id').value,
  67. label: document.getElementById('node-label').value
  68. });
  69. }
  70. catch (err) {
  71. alert(err);
  72. }
  73. }
  74. function removeNode() {
  75. try {
  76. nodes.remove({id: document.getElementById('node-id').value});
  77. }
  78. catch (err) {
  79. alert(err);
  80. }
  81. }
  82. function addEdge() {
  83. try {
  84. edges.add({
  85. id: document.getElementById('edge-id').value,
  86. from: document.getElementById('edge-from').value,
  87. to: document.getElementById('edge-to').value
  88. });
  89. }
  90. catch (err) {
  91. alert(err);
  92. }
  93. }
  94. function updateEdge() {
  95. try {
  96. edges.update({
  97. id: document.getElementById('edge-id').value,
  98. from: document.getElementById('edge-from').value,
  99. to: document.getElementById('edge-to').value
  100. });
  101. }
  102. catch (err) {
  103. alert(err);
  104. }
  105. }
  106. function removeEdge() {
  107. try {
  108. edges.remove({id: document.getElementById('edge-id').value});
  109. }
  110. catch (err) {
  111. alert(err);
  112. }
  113. }
  114. function draw() {
  115. // create an array with nodes
  116. nodes = new vis.DataSet();
  117. nodes.on('*', function () {
  118. document.getElementById('nodes').innerHTML = JSON.stringify(nodes.get(), null, 4);
  119. });
  120. nodes.add([
  121. {id: '1', label: 'Node 1'},
  122. {id: '2', label: 'Node 2'},
  123. {id: '3', label: 'Node 3'},
  124. {id: '4', label: 'Node 4'},
  125. {id: '5', label: 'Node 5'}
  126. ]);
  127. // create an array with edges
  128. edges = new vis.DataSet();
  129. edges.on('*', function () {
  130. document.getElementById('edges').innerHTML = JSON.stringify(edges.get(), null, 4);
  131. });
  132. edges.add([
  133. {id: '1', from: '1', to: '2'},
  134. {id: '2', from: '1', to: '3'},
  135. {id: '3', from: '2', to: '4'},
  136. {id: '4', from: '2', to: '5'}
  137. ]);
  138. // create a network
  139. var container = document.getElementById('network');
  140. var data = {
  141. nodes: nodes,
  142. edges: edges
  143. };
  144. var options = {};
  145. network = new vis.Network(container, data, options);
  146. }
  147. </script>
  148. <script src="../../googleAnalytics.js"></script>
  149. </head>
  150. <body onload="draw();">
  151. <p>
  152. This example demonstrates dynamically adding, updating and removing nodes
  153. and edges using a DataSet.
  154. </p>
  155. <h1>Adjust</h1>
  156. <table>
  157. <tr>
  158. <td>
  159. <h2>Node</h2>
  160. <table>
  161. <tr>
  162. <td></td>
  163. <td><label for="node-id">Id</label></td>
  164. <td><input id="node-id" type="text" value="6"></td>
  165. </tr>
  166. <tr>
  167. <td></td>
  168. <td><label for="node-label">Label</label></td>
  169. <td><input id="node-label" type="text" value="Node 6"></td>
  170. </tr>
  171. <tr>
  172. <td></td>
  173. <td>Action</td>
  174. <td>
  175. <button id="node-add" onclick="addNode();">Add</button>
  176. <button id="node-update" onclick="updateNode();">Update</button>
  177. <button id="node-remove" onclick="removeNode();">Remove</button>
  178. </td>
  179. </tr>
  180. </table>
  181. </td>
  182. <td>
  183. <h2>Edge</h2>
  184. <table>
  185. <tr>
  186. <td></td>
  187. <td><label for="edge-id">Id</label></td>
  188. <td><input id="edge-id" type="text" value="5"></td>
  189. </tr>
  190. <tr>
  191. <td></td>
  192. <td><label for="edge-from">From</label></td>
  193. <td><input id="edge-from" type="text" value="3"></td>
  194. </tr>
  195. <tr>
  196. <td></td>
  197. <td><label for="edge-to">To</label></td>
  198. <td><input id="edge-to" type="text" value="4"></td>
  199. </tr>
  200. <tr>
  201. <td></td>
  202. <td>Action</td>
  203. <td>
  204. <button id="edge-add" onclick="addEdge();">Add</button>
  205. <button id="edge-update" onclick="updateEdge();">Update</button>
  206. <button id="edge-remove" onclick="removeEdge();">Remove</button>
  207. </td>
  208. </tr>
  209. </table>
  210. </td>
  211. </tr>
  212. </table>
  213. <h1>View</h1>
  214. <table class="view">
  215. <colgroup>
  216. <col width="25%">
  217. <col width="25%">
  218. <col width="50%">
  219. </colgroup>
  220. <tr>
  221. <td>
  222. <h2>Nodes</h2>
  223. <pre id="nodes"></pre>
  224. </td>
  225. <td>
  226. <h2>Edges</h2>
  227. <pre id="edges"></pre>
  228. </td>
  229. <td>
  230. <h2>Network</h2>
  231. <div id="network"></div>
  232. </td>
  233. </tr>
  234. </table>
  235. </body>
  236. </html>