| <!doctype html> | |
| <html> | |
| <head> | |
|   <title>Graph | Navigation</title> | |
| 
 | |
|   <style type="text/css"> | |
|     body { | |
|       font: 10pt sans; | |
|     } | |
|     #mygraph { | |
|       width: 600px; | |
|       height: 600px; | |
|       border: 1px solid lightgray; | |
|     } | |
|     table.legend_table { | |
|       font-size: 11px; | |
|       border-width:1px; | |
|       border-color:#d3d3d3; | |
|       border-style:solid; | |
|     } | |
|     table.legend_table,td { | |
|       border-width:1px; | |
|       border-color:#d3d3d3; | |
|       border-style:solid; | |
|       padding: 2px; | |
|     } | |
|     div.table_content { | |
|       width:80px; | |
|       text-align:center; | |
|     } | |
|     div.table_description { | |
|       width:100px; | |
|     } | |
|   </style> | |
| 
 | |
|   <script type="text/javascript" src="../../dist/vis.js"></script> | |
|   <link type="text/css" rel="stylesheet" href="../../dist/vis.css"> | |
| 
 | |
|   <script type="text/javascript"> | |
|     var nodes = null; | |
|     var edges = null; | |
|     var graph = null; | |
| 
 | |
|     function draw() { | |
|       nodes = []; | |
|       edges = []; | |
|       var connectionCount = []; | |
| 
 | |
|       // randomly create some nodes and edges | |
|       var nodeCount = document.getElementById('nodeCount').value; | |
|       for (var i = 0; i < nodeCount; i++) { | |
|         nodes.push({ | |
|           id: i, | |
|           label: String(i) | |
|         }); | |
| 
 | |
|         connectionCount[i] = 0; | |
| 
 | |
|         // create edges in a scale-free-graph way | |
|         if (i == 1) { | |
|           var from = i; | |
|           var to = 0; | |
|           edges.push({ | |
|             from: from, | |
|             to: to | |
|           }); | |
|           connectionCount[from]++; | |
|           connectionCount[to]++; | |
|         } | |
|         else if (i > 1) { | |
|           var conn = edges.length * 2; | |
|           var rand = Math.floor(Math.random() * conn); | |
|           var cum = 0; | |
|           var j = 0; | |
|           while (j < connectionCount.length && cum < rand) { | |
|             cum += connectionCount[j]; | |
|             j++; | |
|           } | |
| 
 | |
|           var from = i; | |
|           var to = j; | |
|           edges.push({ | |
|             from: from, | |
|             to: to | |
|           }); | |
|           connectionCount[from]++; | |
|           connectionCount[to]++; | |
|         } | |
|       } | |
| 
 | |
|       // create a graph | |
|       var container = document.getElementById('mygraph'); | |
|       var data = { | |
|         nodes: nodes, | |
|         edges: edges | |
|       }; | |
|       /* | |
|        var options = { | |
|        nodes: { | |
|        shape: 'circle' | |
|        }, | |
|        edges: { | |
|        length: 50 | |
|        }, | |
|        stabilize: false | |
|        }; | |
|        */ | |
|       var options = { | |
|         edges: { | |
|           length: 50 | |
|         }, | |
|         stabilize: false, | |
|         navigation: true, | |
|         keyboard: true | |
|       }; | |
|       graph = new vis.Graph(container, data, options); | |
| 
 | |
|       // add event listeners | |
|       graph.on('select', function(params) { | |
|         document.getElementById('selection').innerHTML = 'Selection: ' + params.nodes; | |
|       }); | |
|     } | |
|   </script> | |
| </head> | |
| 
 | |
| <body onload="draw();"> | |
| <h2>Navigation controls and keyboad navigation</h2> | |
| <div style="width: 700px; font-size:14px;"> | |
|   This example is the same as example 2, except for the navigation controls that have been activated. The navigation controls are described below. <br /><br /> | |
|   <table class="legend_table"> | |
|     <tr> | |
|       <td>Icons: </td> | |
|       <td><div class="table_content"><img src="../../dist/img/graph/upArrow.png" />     </div></td> | |
|       <td><div class="table_content"><img src="../../dist/img/graph/downArrow.png" />   </div></td> | |
|       <td><div class="table_content"><img src="../../dist/img/graph/leftArrow.png" />   </div></td> | |
|       <td><div class="table_content"><img src="../../dist/img/graph/rightArrow.png" />  </div></td> | |
|       <td><div class="table_content"><img src="../../dist/img/graph/plus.png" />        </div></td> | |
|       <td><div class="table_content"><img src="../../dist/img/graph/minus.png" />       </div></td> | |
|       <td><div class="table_content"><img src="../../dist/img/graph/zoomExtends.png" /> </div></td> | |
|     </tr> | |
|     <tr> | |
|       <td><div class="table_description">Keyboard shortcuts:</div></td> | |
|       <td><div class="table_content">Up arrow</div></td> | |
|       <td><div class="table_content">Down arrow</div></td> | |
|       <td><div class="table_content">Left arrow</div></td> | |
|       <td><div class="table_content">Right arrow</div></td> | |
|       <td><div class="table_content">=<br />[<br />Page up</div></td> | |
|       <td><div class="table_content">-<br />]<br />Page down</div></td> | |
|       <td><div class="table_content">None</div></td> | |
|     </tr> | |
|     <tr> | |
|       <td><div class="table_description">Description:</div></td> | |
|       <td><div class="table_content">Move up</div></td> | |
|       <td><div class="table_content">Move down</div></td> | |
|       <td><div class="table_content">Move left</div></td> | |
|       <td><div class="table_content">Move right</div></td> | |
|       <td><div class="table_content">Zoom in</div></td> | |
|       <td><div class="table_content">Zoom out</div></td> | |
|       <td><div class="table_content">Zoom extent</div></td> | |
|     </tr> | |
|   </table> | |
|   <br /> | |
|   Apart from clicking the icons, you can also navigate using the keyboard. The buttons are in table above. | |
|   Zoom Extends changes the zoom and position of the camera to encompass all visible nodes. To correctly display the navigation icons, the <b>vis.css</b> file must be included. | |
|     The user is free to alter or overload the CSS classes but without them the navigation icons are not visible. | |
| 
 | |
| 
 | |
| </div> | |
| <br /> | |
| 
 | |
| <form onsubmit="draw(); return false;"> | |
|   <label for="nodeCount">Number of nodes:</label> | |
|   <input id="nodeCount" type="text" value="25" style="width: 50px;"> | |
|   <input type="submit" value="Go"> | |
| </form> | |
| <br> | |
| 
 | |
| <div id="mygraph"></div> | |
| 
 | |
| <p id="selection"></p> | |
| </body> | |
| </html>
 |