| @ -0,0 +1,45 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | Basic usage</title> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| </head> | |||||
| <body> | |||||
| <div id="mygraph"></div> | |||||
| <script type="text/javascript"> | |||||
| // create an array with nodes | |||||
| var nodes = [ | |||||
| {id: 1, text: 'Node 1'}, | |||||
| {id: 2, text: 'Node 2'}, | |||||
| {id: 3, text: 'Node 3'}, | |||||
| {id: 4, text: 'Node 4'}, | |||||
| {id: 5, text: 'Node 5'} | |||||
| ]; | |||||
| // create an array with edges | |||||
| var edges = [ | |||||
| {from: 1, to: 2}, | |||||
| {from: 1, to: 3}, | |||||
| {from: 2, to: 4}, | |||||
| {from: 2, to: 5} | |||||
| ]; | |||||
| // specify options | |||||
| var options = { | |||||
| width: '400px', | |||||
| height: '400px' | |||||
| }; | |||||
| // create a graph | |||||
| var graph = new vis.Graph(document.getElementById('mygraph')); | |||||
| // draw the graph with the created data and options | |||||
| graph.draw(nodes, edges, options); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,105 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | Random nodes</title> | |||||
| <style type="text/css"> | |||||
| body { | |||||
| font: 10pt sans; | |||||
| } | |||||
| </style> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| <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, | |||||
| 'text': 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]++; | |||||
| } | |||||
| } | |||||
| // specify options | |||||
| var options = { | |||||
| width: '600px', | |||||
| height: '600px', | |||||
| edges: { | |||||
| length: 50 | |||||
| }, | |||||
| stabilize: false | |||||
| }; | |||||
| // create a graph | |||||
| graph = new vis.Graph(document.getElementById('mygraph')); | |||||
| // draw data | |||||
| graph.draw(nodes, edges, options); | |||||
| // add event listeners | |||||
| vis.events.addListener(graph, 'select', function(params) { | |||||
| document.getElementById('selection').innerHTML = | |||||
| 'Selection: ' + JSON.stringify(graph.getSelection()); | |||||
| }); | |||||
| } | |||||
| </script> | |||||
| </head> | |||||
| <body onload="draw();"> | |||||
| <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> | |||||
| @ -0,0 +1,78 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | Images</title> | |||||
| <style type="text/css"> | |||||
| body {font: 10pt arial;} | |||||
| </style> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| <script type="text/javascript"> | |||||
| var nodes = null; | |||||
| var edges = null; | |||||
| var graph = null; | |||||
| var DIR = 'img/refresh-cl/'; | |||||
| var LENGTH_MAIN = 150; | |||||
| var LENGTH_SUB = 50; | |||||
| // Called when the Visualization API is loaded. | |||||
| function draw() { | |||||
| // Create a data table with nodes. | |||||
| nodes = []; | |||||
| // Create a data table with links. | |||||
| edges = []; | |||||
| nodes.push({id: 1, text: 'Main', image: DIR + 'Network-Pipe-icon.png', style: 'image'}); | |||||
| nodes.push({id: 2, text: 'Office', image: DIR + 'Network-Pipe-icon.png', style: 'image'}); | |||||
| nodes.push({id: 3, text: 'Wireless', image: DIR + 'Network-Pipe-icon.png', style: 'image'}); | |||||
| edges.push({from: 1, to: 2, length: LENGTH_MAIN}); | |||||
| edges.push({from: 1, to: 3, length: LENGTH_MAIN}); | |||||
| for (var i = 4; i <= 7; i++) { | |||||
| nodes.push({id: i, text: 'Computer', image: DIR + 'Hardware-My-Computer-3-icon.png', style: 'image'}); | |||||
| edges.push({from: 2, to: i, length: LENGTH_SUB}); | |||||
| } | |||||
| nodes.push({id: 101, text: 'Printer', image: DIR + 'Hardware-Printer-Blue-icon.png', style: 'image'}); | |||||
| edges.push({from: 2, to: 101, length: LENGTH_SUB}); | |||||
| nodes.push({id: 102, text: 'Laptop', image: DIR + 'Hardware-Laptop-1-icon.png', style: 'image'}); | |||||
| edges.push({from: 3, to: 102, length: LENGTH_SUB}); | |||||
| nodes.push({id: 103, text: 'graph drive', image: DIR + 'Network-Drive-icon.png', style: 'image'}); | |||||
| edges.push({from: 1, to: 103, length: LENGTH_SUB}); | |||||
| nodes.push({id: 104, text: 'Internet', image: DIR + 'System-Firewall-2-icon.png', style: 'image'}); | |||||
| edges.push({from: 1, to: 104, length: LENGTH_SUB}); | |||||
| for (var i = 200; i <= 201; i++ ) { | |||||
| nodes.push({id: i, text: 'Smartphone', image: DIR + 'Hardware-My-PDA-02-icon.png', style: 'image'}); | |||||
| edges.push({from: 3, to: i, length: LENGTH_SUB}); | |||||
| } | |||||
| // specify options | |||||
| var options = { | |||||
| width: '600px', | |||||
| height: '600px', | |||||
| stabilize: false // stabilize positions before displaying | |||||
| }; | |||||
| // create a graph | |||||
| graph = new vis.Graph(document.getElementById('mygraph')); | |||||
| // draw data | |||||
| graph.draw(nodes, edges, options); | |||||
| } | |||||
| </script> | |||||
| </head> | |||||
| <body onload="draw()"> | |||||
| <div id="mygraph"></div> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,73 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | Shapes</title> | |||||
| <style type="text/css"> | |||||
| body { | |||||
| font: 10pt arial; | |||||
| } | |||||
| </style> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| <script type="text/javascript"> | |||||
| var nodes = null; | |||||
| var edges = null; | |||||
| var graph = null; | |||||
| function draw() { | |||||
| nodes = [ | |||||
| {id: 1, text: 'circle', style: 'circle', group: 'group_x'}, | |||||
| {id: 2, text: 'circle', style: 'circle', group: 'group_x'}, | |||||
| {id: 3, text: 'database', style: 'database', group: 'group_x'}, | |||||
| {id: 4, text: 'rect', style: 'rect', group: 'group_x'} | |||||
| ]; | |||||
| edges = [ | |||||
| {from: 3, to: 1, style: 'arrow', width: 1}, | |||||
| {from: 1, to: 4, style: 'moving-dot', width: 1}, | |||||
| {from: 1, to: 2, style: 'moving-arrows', width: 2} | |||||
| ]; | |||||
| var mainId = 5; | |||||
| nodes.push({id: mainId, text: 'styles\nand\nsizes', style: 'rect', group: 'group_main'}); | |||||
| var styles = ['dot', 'square', 'triangle', 'triangleDown', 'star']; | |||||
| var id = 6; | |||||
| for (var size = 1; size < 4; size++) { | |||||
| var groupId = id; | |||||
| nodes.push({id: id, text: 'size ' + size, style: 'rect', group: 'group' + size}); | |||||
| edges.push({from: mainId, to: groupId, color: 'gray', width: size}); | |||||
| id++; | |||||
| for (var i in styles) { | |||||
| if (styles.hasOwnProperty(i)) { | |||||
| nodes.push({id: id, value: size, text: styles[i], style: styles[i], group: 'group' + size}); | |||||
| edges.push({from: groupId, to: id, color: 'gray', width: size}); | |||||
| id++; | |||||
| } | |||||
| } | |||||
| } | |||||
| // specify options | |||||
| var options = { | |||||
| width: '780px', | |||||
| height: '600px', | |||||
| stabilize: false | |||||
| }; | |||||
| // Instantiate our graph object. | |||||
| graph = new vis.Graph(document.getElementById('mygraph')); | |||||
| // Draw our graph with the created data and options | |||||
| graph.draw(nodes, edges, options); | |||||
| } | |||||
| </script> | |||||
| </head> | |||||
| <body onload="draw()"> | |||||
| <div id="mygraph"></div> | |||||
| <div id="info"></div> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,96 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | Social Network</title> | |||||
| <style> | |||||
| body {font: 10pt arial;} | |||||
| </style> | |||||
| <script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| <script type="text/javascript"> | |||||
| var nodes = null; | |||||
| var edges = null; | |||||
| var graph = null; | |||||
| var DIR = 'img/soft-scraps-icons/'; | |||||
| google.load('visualization', '1'); | |||||
| // Set callback to run when API is loaded | |||||
| google.setOnLoadCallback(drawVisualization); | |||||
| // Called when the Visualization API is loaded. | |||||
| function drawVisualization() { | |||||
| // Create a data table with nodes. | |||||
| nodes = new google.visualization.DataTable(); | |||||
| nodes.addColumn('number', 'id'); | |||||
| nodes.addColumn('string', 'text'); // optional | |||||
| nodes.addColumn('string', 'image'); // optional | |||||
| nodes.addColumn('string', 'style'); // optional | |||||
| // Create a data table with links. | |||||
| edges = new google.visualization.DataTable(); | |||||
| edges.addColumn('number', 'from'); | |||||
| edges.addColumn('number', 'to'); | |||||
| edges.addColumn('number', 'value'); // optional | |||||
| edges.addColumn('string', 'color'); // optional | |||||
| edges.addColumn('number', 'length'); // optional | |||||
| // create people | |||||
| nodes.addRow([1, 'Algie', DIR + 'Smiley-Angry-icon.png', 'image']); | |||||
| nodes.addRow([2, 'Alston', DIR + 'Smiley-Grin-icon.png', 'image']); | |||||
| nodes.addRow([3, 'Barney', DIR + 'User-Administrator-Blue-icon.png', 'image']); | |||||
| nodes.addRow([4, 'Coley', DIR + 'User-Administrator-Green-icon.png', 'image']); | |||||
| nodes.addRow([5, 'Grant', DIR + 'User-Coat-Blue-icon.png', 'image']); | |||||
| nodes.addRow([6, 'Langdon', DIR + 'User-Coat-Green-icon.png', 'image']); | |||||
| nodes.addRow([7, 'Lee', DIR + 'User-Coat-Red-icon.png', 'image']); | |||||
| nodes.addRow([8, 'Merlin', DIR + 'User-Executive-Green-icon.png', 'image']); | |||||
| nodes.addRow([9, 'Mick', DIR + 'User-Preppy-Blue-icon.png', 'image']); | |||||
| nodes.addRow([10, 'Tod', DIR + 'User-Preppy-Red-icon.png', 'image']); | |||||
| // create connections | |||||
| var color = '#BFBFBF'; | |||||
| var len = 100; // pixels | |||||
| var len = undefined; | |||||
| edges.addRow([2, 8, 3, color, len]); | |||||
| edges.addRow([2, 9, 5, color, len]); | |||||
| edges.addRow([2, 10, 1, color, len]); | |||||
| edges.addRow([4, 6, 8, color, len]); | |||||
| edges.addRow([5, 7, 2, color, len]); | |||||
| edges.addRow([4, 5, 1, color, len]); | |||||
| edges.addRow([9, 10, 2, color, len]); | |||||
| edges.addRow([2, 3, 6, color, len]); | |||||
| edges.addRow([3, 9, 4, color, len]); | |||||
| edges.addRow([5, 3, 1, color, len]); | |||||
| edges.addRow([2, 7, 4, color, len]); | |||||
| // specify options | |||||
| var options = { | |||||
| width: '600px', | |||||
| height: '600px', | |||||
| backgroundColor: { | |||||
| fill: '#F3F3F3' | |||||
| } | |||||
| }; | |||||
| // Instantiate our graph object. | |||||
| graph = new vis.Graph(document.getElementById('mygraph')); | |||||
| // Draw our graph with the created data and options | |||||
| graph.draw(nodes, edges, options); | |||||
| } | |||||
| </script> | |||||
| </head> | |||||
| <body> | |||||
| <div id="mygraph"></div> | |||||
| <p> | |||||
| Icons: <a href="http://www.deleket.com/" target="_blank">Scrap Icons by Deleket</a> | |||||
| </p> | |||||
| <div id="info"></div> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,140 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | Groups</title> | |||||
| <style> | |||||
| body {font: 10pt arial;} | |||||
| </style> | |||||
| <script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| <script type="text/javascript"> | |||||
| var nodes = null; | |||||
| var edges = null; | |||||
| var graph = null; | |||||
| google.load('visualization', '1'); | |||||
| // Set callback to run when API is loaded | |||||
| google.setOnLoadCallback(draw); | |||||
| // Called when the Visualization API is loaded. | |||||
| function draw() { | |||||
| // Create and populate a data table. | |||||
| nodes = new google.visualization.DataTable(); | |||||
| nodes.addColumn('number', 'id'); | |||||
| nodes.addColumn('string', 'text'); | |||||
| nodes.addColumn('number', 'group'); | |||||
| edges = new google.visualization.DataTable(); | |||||
| edges.addColumn('number', 'from'); | |||||
| edges.addColumn('number', 'to'); | |||||
| edges.addColumn('number', 'length'); | |||||
| edges.addColumn('string', 'color'); | |||||
| var color = 'gray'; | |||||
| var len = undefined; | |||||
| // randomly create some nodes | |||||
| var nodeCount = parseInt(document.getElementById('nodeCount').value); | |||||
| var nodeOffset = 0; | |||||
| var groupMin = 0; | |||||
| var groupMax = parseInt(document.getElementById('groupCount').value); | |||||
| var group = groupMin; | |||||
| var groupLeader = new Array(); // will contain the node id with the most links of each group | |||||
| while (group < groupMax) { | |||||
| // randomly create some nodes | |||||
| var i = 0; | |||||
| var cols = parseInt(Math.sqrt(nodeCount)); | |||||
| var connectionCount = new Array(); | |||||
| while (i < nodeCount) { | |||||
| nodes.addRow([i + nodeOffset, i + nodeOffset + '', group]); | |||||
| connectionCount[i] = 0; | |||||
| // create links in a scale-free-graph way | |||||
| if (i == 1) { | |||||
| var from = i; | |||||
| var to = 0; | |||||
| edges.addRow([from + nodeOffset, to + nodeOffset, len, color]); | |||||
| connectionCount[from]++; | |||||
| connectionCount[to]++; | |||||
| } | |||||
| else if (i > 1) { | |||||
| var conn = (i - 1) * 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.addRow([from + nodeOffset, to + nodeOffset, len, color]); | |||||
| connectionCount[from]++; | |||||
| connectionCount[to]++; | |||||
| } | |||||
| i++; | |||||
| } | |||||
| // calculate the node with the most number of connections | |||||
| var leader = 0; | |||||
| for (c in connectionCount) { | |||||
| if (connectionCount[c] > connectionCount[leader]) | |||||
| leader = parseInt(c); | |||||
| } | |||||
| if (group > groupMin) { | |||||
| // connect to the leader of this group to the leader of a random other group | |||||
| var from = leader + nodeOffset; | |||||
| var to = groupLeader[groupMin + parseInt(Math.random() * (group - groupMin))]; | |||||
| edges.addRow([from, to, len, color]); | |||||
| } | |||||
| // add this leader to the list | |||||
| groupLeader[group] = leader + nodeOffset; | |||||
| nodeOffset += nodeCount; | |||||
| group++; | |||||
| } | |||||
| // specify options | |||||
| var options = { | |||||
| width: '600px', | |||||
| height: '600px', | |||||
| stabilize: false, | |||||
| nodes: { | |||||
| style: 'dot' | |||||
| }, | |||||
| edges: { | |||||
| length: 50 | |||||
| } | |||||
| }; | |||||
| // Instantiate our graph object. | |||||
| graph = new vis.Graph(document.getElementById('mygraph')); | |||||
| // Draw our graph with the created data and options | |||||
| graph.draw(nodes, edges, options); | |||||
| } | |||||
| </script> | |||||
| </head> | |||||
| <body> | |||||
| <form onsubmit= "javascript: draw(); return false;"> | |||||
| Number of groups: | |||||
| <input type="text" value="6" id="groupCount" style="width: 50px;"> | |||||
| Number of nodes per group: | |||||
| <input type="text" value="7" id="nodeCount" style="width: 50px;"> | |||||
| <input type="submit" value="Go"> | |||||
| </form> | |||||
| <br> | |||||
| <div id="mygraph"></div> | |||||
| <div id="info"></div> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,67 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | Selections</title> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| </head> | |||||
| <body> | |||||
| <div id="mygraph"></div> | |||||
| <div id="info"></div> | |||||
| <script type="text/javascript"> | |||||
| // create an array with nodes | |||||
| var nodes = [ | |||||
| {id: 1, text: 'Node 1'}, | |||||
| {id: 2, text: 'Node 2'}, | |||||
| {id: 3, text: 'Node 3'}, | |||||
| {id: 4, text: 'Node 4'}, | |||||
| {id: 5, text: 'Node 5'} | |||||
| ]; | |||||
| // create an array with edges | |||||
| var edges = [ | |||||
| {from: 1, to: 2}, | |||||
| {from: 1, to: 3}, | |||||
| {from: 2, to: 4}, | |||||
| {from: 2, to: 5} | |||||
| ]; | |||||
| // specify options | |||||
| var options = { | |||||
| width: '400px', | |||||
| height: '400px' | |||||
| }; | |||||
| // create a graph | |||||
| var graph = new vis.Graph(document.getElementById('mygraph')); | |||||
| // draw the graph with the created data and options | |||||
| graph.draw(nodes, edges, options); | |||||
| // add event listener | |||||
| function onSelect() { | |||||
| var selection = graph.getSelection(); | |||||
| var info = 'selection: '; | |||||
| selection.forEach(function (s) { | |||||
| info += s.row + ' '; | |||||
| }); | |||||
| document.getElementById('info').innerHTML += info + '<br>'; | |||||
| } | |||||
| vis.events.addListener(graph, 'select', onSelect); | |||||
| // set initial selection (row based, zero-based) | |||||
| var selection = [ | |||||
| {'row': 2}, | |||||
| {'row': 3}, | |||||
| {'row': 4} | |||||
| ]; | |||||
| graph.setSelection(selection); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,82 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | Scalable images</title> | |||||
| <style type="text/css"> | |||||
| body { | |||||
| font: 10pt arial; | |||||
| } | |||||
| </style> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| <script type="text/javascript"> | |||||
| var DIR = 'img/soft-scraps-icons/'; | |||||
| var nodes = null; | |||||
| var edges = null; | |||||
| var graph = null; | |||||
| // Called when the Visualization API is loaded. | |||||
| function draw() { | |||||
| // create people. | |||||
| // value corresponds with the age of the person | |||||
| var DIR = 'img/soft-scraps-icons/'; | |||||
| nodes = [ | |||||
| {id: 1, value: 2, style: 'image', text: 'Algie', title: 'Algie (2 years old)', image: DIR + 'Smiley-Angry-icon.png'}, | |||||
| {id: 2, value: 31, style: 'image', text: 'Alston', title: 'Alston (31 years old)', image: DIR + 'Smiley-Grin-icon.png'}, | |||||
| {id: 3, value: 12, style: 'image', text: 'Barney', title: 'Barney (12 years old)', image: DIR + 'User-Administrator-Blue-icon.png'}, | |||||
| {id: 4, value: 16, style: 'image', text: 'Coley', title: 'Coley (16 years old)', image: DIR + 'User-Administrator-Green-icon.png'}, | |||||
| {id: 5, value: 17, style: 'image', text: 'Grant', title: 'Grant (17 years old)', image: DIR + 'User-Coat-Blue-icon.png'}, | |||||
| {id: 6, value: 15, style: 'image', text: 'Langdon', title: 'Langdon (15 years old)', image: DIR + 'User-Coat-Green-icon.png'}, | |||||
| {id: 7, value: 6, style: 'image', text: 'Lee', title: 'Lee (6 years old)', image: DIR + 'User-Coat-Red-icon.png'}, | |||||
| {id: 8, value: 5, style: 'image', text: 'Merlin', title: 'Merlin (5 years old)', image: DIR + 'User-Executive-Green-icon.png'}, | |||||
| {id: 9, value: 30, style: 'image', text: 'Mick', title: 'Mick (30 years old)', image: DIR + 'User-Preppy-Blue-icon.png'}, | |||||
| {id: 10, value: 18, style: 'image', text: 'Tod', title: 'Tod (18 years old)', image: DIR + 'User-Preppy-Red-icon.png'} | |||||
| ]; | |||||
| // create connetions between people | |||||
| // value corresponds with the amount of contact between two people | |||||
| edges = [ | |||||
| {from: 2, to: 8, value: 3, title: '3 emails per week'}, | |||||
| {from: 2, to: 9, value: 5, title: '5 emails per week'}, | |||||
| {from: 2, to: 10,value: 1, title: '1 emails per week'}, | |||||
| {from: 4, to: 6, value: 8, title: '8 emails per week'}, | |||||
| {from: 5, to: 7, value: 2, title: '2 emails per week'}, | |||||
| {from: 4, to: 5, value: 1, title: '1 emails per week'}, | |||||
| {from: 9, to: 10,value: 2, title: '2 emails per week'}, | |||||
| {from: 2, to: 3, value: 6, title: '6 emails per week'}, | |||||
| {from: 3, to: 9, value: 4, title: '4 emails per week'}, | |||||
| {from: 5, to: 3, value: 1, title: '1 emails per week'}, | |||||
| {from: 2, to: 7, value: 4, title: '4 emails per week'} | |||||
| ]; | |||||
| // specify options | |||||
| var options = { | |||||
| width: '600px', | |||||
| height: '600px', | |||||
| nodes: { | |||||
| widthMin: 20, // min width in pixels | |||||
| widthMax: 100 // max width in pixels | |||||
| }, | |||||
| edges: { | |||||
| color: 'lightgray' | |||||
| } | |||||
| }; | |||||
| // Instantiate our graph object. | |||||
| graph = new vis.Graph(document.getElementById('mygraph')); | |||||
| // Draw our graph with the created data and options | |||||
| graph.draw(nodes, edges, options); | |||||
| } | |||||
| </script> | |||||
| </head> | |||||
| <body onload="draw()"> | |||||
| <div id="mygraph"></div> | |||||
| <div id="info"></div> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,37 @@ | |||||
| <!DOCTYPE HTML> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | DOT Language</title> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| <style type="text/css"> | |||||
| html, body, #graph { | |||||
| width: 100%; | |||||
| height: 100%; | |||||
| padding: 0; | |||||
| margin: 0; | |||||
| } | |||||
| </style> | |||||
| </head> | |||||
| <body> | |||||
| <div id="graph"></div> | |||||
| <script type="text/javascript"> | |||||
| // create a network view | |||||
| var graph = new vis.Graph(document.getElementById('graph')); | |||||
| // parse data in DOT-notation | |||||
| var dot = 'digraph {node[shape=circle]; 1 -> 1 -> 2; 2 -> 3; 2 -- 4; 2 -> 1 }'; | |||||
| var data = vis.Graph.util.DOTToGraph(dot); | |||||
| // draw the data | |||||
| graph.draw(data.nodes, data.edges, data.options); | |||||
| // resize the network when window resizes | |||||
| window.onresize = function () { | |||||
| graph.redraw() | |||||
| }; | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,212 @@ | |||||
| <!DOCTYPE HTML> | |||||
| <html> | |||||
| <head> | |||||
| <title>Graph | DOT language playground</title> | |||||
| <script type="text/javascript" src="../../vis.js"></script> | |||||
| <style type="text/css"> | |||||
| body, html { | |||||
| font: 10pt sans; | |||||
| width: 100%; | |||||
| height: 100%; | |||||
| padding: 0; | |||||
| margin: 0; | |||||
| color: #4d4d4d; | |||||
| } | |||||
| #frame { | |||||
| width: 100%; | |||||
| height: 99%; | |||||
| } | |||||
| #frame td { | |||||
| padding: 10px; | |||||
| } | |||||
| #error { | |||||
| color: red; | |||||
| } | |||||
| #data { | |||||
| float: left; | |||||
| width: 100%; | |||||
| height: 100%; | |||||
| border: 1px solid #d3d3d3; | |||||
| } | |||||
| #graph { | |||||
| float: left; | |||||
| width: 100%; | |||||
| height: 100%; | |||||
| } | |||||
| textarea.example { | |||||
| display: none; | |||||
| } | |||||
| </style> | |||||
| </head> | |||||
| <body> | |||||
| <table id="frame"> | |||||
| <col width="50%"> | |||||
| <col width="50%"> | |||||
| <tr> | |||||
| <td colspan="2" style="height: 50px;"> | |||||
| <h1>Directed graph from data in DOT language</h1> | |||||
| <div> | |||||
| <a href="javascript: drawExample('example1')">example 1</a> | |||||
| <a href="javascript: drawExample('example2')">example 2</a> | |||||
| <a href="javascript: drawExample('example3')">example 3</a> | |||||
| </div> | |||||
| <div> | |||||
| <br> | |||||
| <button id="draw">Draw</button> | |||||
| <span id="error"></span> | |||||
| </div> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td> | |||||
| <textarea id="data"></textarea> | |||||
| </td> | |||||
| <td> | |||||
| <div id="graph"></div> | |||||
| </td> | |||||
| </tr> | |||||
| </table> | |||||
| <script type="text/javascript"> | |||||
| var graph, data; | |||||
| var btnDraw = document.getElementById('draw'); | |||||
| var txtData = document.getElementById('data'); | |||||
| var txtError = document.getElementById('error'); | |||||
| btnDraw.onclick = draw; | |||||
| // resize the graph when window resizes | |||||
| window.onresize = function () { | |||||
| graph.redraw() | |||||
| }; | |||||
| // parse and draw the data | |||||
| function draw () { | |||||
| try { | |||||
| // create a graph | |||||
| graph = new vis.Graph(document.getElementById('graph')); | |||||
| txtError.innerHTML = ''; | |||||
| // parse the data from DOT-notation | |||||
| data = vis.Graph.util.DOTToGraph(txtData.value); | |||||
| // draw the data in the graph view | |||||
| var options = data.options; | |||||
| options.width = '100%'; | |||||
| //options.links.length = options.links.length; | |||||
| options.height = '100%'; | |||||
| //options.nodes.radius = 20; | |||||
| //options.links.width = 2; | |||||
| graph.draw(data.nodes, data.edges, options); | |||||
| } | |||||
| catch (err) { | |||||
| // set the cursor at the position where the error occurred | |||||
| var match = /\(char (.*)\)/.exec(err); | |||||
| if (match) { | |||||
| var pos = Number(match[1]); | |||||
| if(txtData.setSelectionRange) { | |||||
| txtData.focus(); | |||||
| txtData.setSelectionRange(pos, pos); | |||||
| } | |||||
| } | |||||
| // show an error message | |||||
| txtError.innerHTML = err.toString(); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Draw an example | |||||
| * @param {String} id HTML id of the textarea containing the example code | |||||
| */ | |||||
| function drawExample(id) { | |||||
| txtData.value = document.getElementById(id).value; | |||||
| draw(); | |||||
| } | |||||
| </script> | |||||
| <textarea id="example1" class="example"> | |||||
| digraph { | |||||
| node [style=circle fontSize=16] | |||||
| edge [length=100, color=gray, fontColor=black] | |||||
| A -> A[text=0.5]; | |||||
| B -> B[text=1.2] -> C[text=0.7] -- A; | |||||
| B -> D; | |||||
| D -> B; | |||||
| D -> C; | |||||
| D -> E[text=0.2]; | |||||
| F -> F; | |||||
| A [ | |||||
| fontColor=red, | |||||
| borderColor=red, | |||||
| backgroundColor=white, | |||||
| highlightColor=white | |||||
| ] | |||||
| } | |||||
| </textarea> | |||||
| <textarea id="example2" class="example"> | |||||
| digraph topology | |||||
| { | |||||
| node[shape=circle fontSize=12] | |||||
| edge[length=170 fontSize=12] | |||||
| "10.0.255.1" -> "10.0.255.3"[label="1.000"]; | |||||
| "10.0.255.1" -> "10.0.255.2"[label="1.000"]; | |||||
| "10.0.255.1" -> "10.0.255.2"[label="1.000"]; | |||||
| "10.0.255.1" -> "10.0.255.3"[label="1.000"]; | |||||
| "10.0.255.2" -> "10.0.255.1"[label="1.000"]; | |||||
| "10.0.255.2" -> "10.0.255.3"[label="1.000"]; | |||||
| "10.0.255.3" -> "10.0.255.1"[label="1.000"]; | |||||
| "10.0.255.3" -> "10.0.255.2"[label="1.000"]; | |||||
| "10.0.255.3" -> "10.0.3.0/24"[label="HNA", style=solid]; | |||||
| "10.0.3.0/24"[shape=rect]; | |||||
| "10.0.255.2" -> "10.0.2.0/24"[label="HNA"]; | |||||
| "10.0.2.0/24"[shape=rect]; | |||||
| "10.0.255.1" -> "10.0.1.0/24"[label="HNA"]; | |||||
| "10.0.1.0/24"[shape=rect]; | |||||
| } | |||||
| </textarea> | |||||
| <textarea id="example3" class="example"> | |||||
| digraph G { | |||||
| // note: not all attributes are recognized and supported by Network | |||||
| // unrecognized attributes are ignored | |||||
| node[width=.25,height=.375,fontsize=15] | |||||
| node [style=filled fillcolor=#F1AAF0] | |||||
| 0-> 0 ; | |||||
| 1-> 1 ; | |||||
| 2-> 2 ; | |||||
| 3-> 3 ; | |||||
| 4-> 4 ; | |||||
| 5-> 5 ; | |||||
| 6-> 6 ; | |||||
| 7-> 5 ; | |||||
| 8-> 8 ; | |||||
| 9-> 9 ; | |||||
| 10-> 10 ; | |||||
| 11-> 10 ; | |||||
| 12-> 12 ; | |||||
| 13-> 5 ; | |||||
| 14-> 10 ; | |||||
| 15-> 0 ; | |||||
| } | |||||
| </textarea> | |||||
| <script> | |||||
| // draw example1 now | |||||
| drawExample('example1'); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @ -0,0 +1,14 @@ | |||||
| Refresh Cl icon set | |||||
| http://www.iconarchive.com/show/refresh-cl-icons-by-tpdkdesign.net.html | |||||
| http://www.iconarchive.com/artist/tpdkdesign.net.html | |||||
| Artist: TpdkDesign.net | |||||
| License: Free for non-commercial use. | |||||
| Name: TpdkDesign.net | |||||
| URL: http://www.tpdkdesign.net | |||||
| Available for custom work: No | |||||
| Default License: Free for non-commercial use. | |||||
| Commercial usage: Not allowed | |||||
| @ -0,0 +1,12 @@ | |||||
| Scrap Icons by Deleket | |||||
| http://www.iconarchive.com/show/soft-scraps-icons-by-deleket.html | |||||
| Artist: Deleket (Jojo Mendoza) (Available for custom work) | |||||
| License: CC Attribution-Noncommercial-No Derivate 3.0 | |||||
| http://creativecommons.org/licenses/by-nc-nd/3.0/ | |||||
| Commercial usage: Allowed (Author Approval required -> Visit artist homepage for details). | |||||