@ -0,0 +1,235 @@ | |||||
.vis.timeline { | |||||
} | |||||
.vis.timeline.rootpanel { | |||||
position: relative; | |||||
overflow: hidden; | |||||
border: 1px solid #bfbfbf; | |||||
-moz-box-sizing: border-box; | |||||
box-sizing: border-box; | |||||
} | |||||
.vis.timeline .panel { | |||||
position: absolute; | |||||
overflow: hidden; | |||||
} | |||||
.vis.timeline .groupset { | |||||
position: absolute; | |||||
padding: 0; | |||||
margin: 0; | |||||
} | |||||
.vis.timeline .labels { | |||||
position: absolute; | |||||
top: 0; | |||||
left: 0; | |||||
width: 100%; | |||||
height: 100%; | |||||
padding: 0; | |||||
margin: 0; | |||||
border-right: 1px solid #bfbfbf; | |||||
box-sizing: border-box; | |||||
-moz-box-sizing: border-box; | |||||
} | |||||
.vis.timeline .labels .label-set { | |||||
position: absolute; | |||||
top: 0; | |||||
left: 0; | |||||
width: 100%; | |||||
height: 100%; | |||||
overflow: hidden; | |||||
border-top: none; | |||||
border-bottom: 1px solid #bfbfbf; | |||||
} | |||||
.vis.timeline .labels .label-set .label { | |||||
position: absolute; | |||||
left: 0; | |||||
top: 0; | |||||
width: 100%; | |||||
color: #4d4d4d; | |||||
} | |||||
.vis.timeline.top .labels .label-set .label, | |||||
.vis.timeline.top .groupset .itemset-axis { | |||||
border-top: 1px solid #bfbfbf; | |||||
border-bottom: none; | |||||
} | |||||
.vis.timeline.bottom .labels .label-set .label, | |||||
.vis.timeline.bottom .groupset .itemset-axis { | |||||
border-top: none; | |||||
border-bottom: 1px solid #bfbfbf; | |||||
} | |||||
.vis.timeline .labels .label-set .label .inner { | |||||
display: inline-block; | |||||
padding: 5px; | |||||
} | |||||
.vis.timeline .itemset { | |||||
position: absolute; | |||||
padding: 0; | |||||
margin: 0; | |||||
overflow: hidden; | |||||
} | |||||
.vis.timeline .background { | |||||
} | |||||
.vis.timeline .foreground { | |||||
} | |||||
.vis.timeline .itemset-axis { | |||||
position: absolute; | |||||
} | |||||
.vis.timeline .item { | |||||
position: absolute; | |||||
color: #1A1A1A; | |||||
border-color: #97B0F8; | |||||
background-color: #D5DDF6; | |||||
display: inline-block; | |||||
} | |||||
.vis.timeline .item.selected { | |||||
border-color: #FFC200; | |||||
background-color: #FFF785; | |||||
z-index: 999; | |||||
} | |||||
.vis.timeline .item.cluster { | |||||
/* TODO: use another color or pattern? */ | |||||
background: #97B0F8 url('img/cluster_bg.png'); | |||||
color: white; | |||||
} | |||||
.vis.timeline .item.cluster.point { | |||||
border-color: #D5DDF6; | |||||
} | |||||
.vis.timeline .item.box { | |||||
text-align: center; | |||||
border-style: solid; | |||||
border-width: 1px; | |||||
border-radius: 5px; | |||||
-moz-border-radius: 5px; /* For Firefox 3.6 and older */ | |||||
} | |||||
.vis.timeline .item.point { | |||||
background: none; | |||||
} | |||||
.vis.timeline .dot { | |||||
border: 5px solid #97B0F8; | |||||
position: absolute; | |||||
border-radius: 5px; | |||||
-moz-border-radius: 5px; /* For Firefox 3.6 and older */ | |||||
} | |||||
.vis.timeline .item.range { | |||||
overflow: hidden; | |||||
border-style: solid; | |||||
border-width: 1px; | |||||
border-radius: 2px; | |||||
-moz-border-radius: 2px; /* For Firefox 3.6 and older */ | |||||
} | |||||
.vis.timeline .item.rangeoverflow { | |||||
border-style: solid; | |||||
border-width: 1px; | |||||
border-radius: 2px; | |||||
-moz-border-radius: 2px; /* For Firefox 3.6 and older */ | |||||
} | |||||
.vis.timeline .item.range .drag-left, .vis.timeline .item.rangeoverflow .drag-left { | |||||
cursor: w-resize; | |||||
z-index: 1000; | |||||
} | |||||
.vis.timeline .item.range .drag-right, .vis.timeline .item.rangeoverflow .drag-right { | |||||
cursor: e-resize; | |||||
z-index: 1000; | |||||
} | |||||
.vis.timeline .item.range .content, .vis.timeline .item.rangeoverflow .content { | |||||
position: relative; | |||||
display: inline-block; | |||||
} | |||||
.vis.timeline .item.line { | |||||
position: absolute; | |||||
width: 0; | |||||
border-left-width: 1px; | |||||
border-left-style: solid; | |||||
} | |||||
.vis.timeline .item .content { | |||||
margin: 5px; | |||||
white-space: nowrap; | |||||
overflow: hidden; | |||||
} | |||||
.vis.timeline .axis { | |||||
position: relative; | |||||
} | |||||
.vis.timeline .axis .text { | |||||
position: absolute; | |||||
color: #4d4d4d; | |||||
padding: 3px; | |||||
white-space: nowrap; | |||||
} | |||||
.vis.timeline .axis .text.measure { | |||||
position: absolute; | |||||
padding-left: 0; | |||||
padding-right: 0; | |||||
margin-left: 0; | |||||
margin-right: 0; | |||||
visibility: hidden; | |||||
} | |||||
.vis.timeline .axis .grid.vertical { | |||||
position: absolute; | |||||
width: 0; | |||||
border-right: 1px solid; | |||||
} | |||||
.vis.timeline .axis .grid.horizontal { | |||||
position: absolute; | |||||
left: 0; | |||||
width: 100%; | |||||
height: 0; | |||||
border-bottom: 1px solid; | |||||
} | |||||
.vis.timeline .axis .grid.minor { | |||||
border-color: #e5e5e5; | |||||
} | |||||
.vis.timeline .axis .grid.major { | |||||
border-color: #bfbfbf; | |||||
} | |||||
.vis.timeline .currenttime { | |||||
background-color: #FF7F6E; | |||||
width: 2px; | |||||
z-index: 9; | |||||
} | |||||
.vis.timeline .customtime { | |||||
background-color: #6E94FF; | |||||
width: 2px; | |||||
cursor: move; | |||||
z-index: 9; | |||||
} |
@ -1,87 +1,87 @@ | |||||
.com { | .com { | ||||
color: gray; | |||||
color: gray; | |||||
} | } | ||||
.lit { | .lit { | ||||
color: red; | |||||
color: red; | |||||
} | } | ||||
.pun { | .pun { | ||||
color: gray; | |||||
color: gray; | |||||
} | } | ||||
.pln { | .pln { | ||||
color: #333333; | |||||
color: #333333; | |||||
} | } | ||||
pre.prettyprint { | pre.prettyprint { | ||||
border: 1px solid lightgray; | |||||
background-color: #fcfcfc; | |||||
padding: 5px; | |||||
border: 1px solid lightgray; | |||||
background-color: #fcfcfc; | |||||
padding: 5px; | |||||
font-size: 10pt; | |||||
line-height: 1.5em; | |||||
font-family: monospace; | |||||
font-size: 10pt; | |||||
line-height: 1.5em; | |||||
font-family: monospace; | |||||
} | } | ||||
ol.linenums { | ol.linenums { | ||||
margin-top:0; | |||||
margin-bottom:0; | |||||
margin-top:0; | |||||
margin-bottom:0; | |||||
} | } | ||||
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { | li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { | ||||
list-style:none; | |||||
list-style:none; | |||||
} | } | ||||
li.L1,li.L3,li.L5,li.L7,li.L9 { | li.L1,li.L3,li.L5,li.L7,li.L9 { | ||||
background:#eee; | |||||
background:#eee; | |||||
} | } | ||||
.str,.atv { | .str,.atv { | ||||
color: green; | |||||
color: green; | |||||
} | } | ||||
.kwd,.tag { | .kwd,.tag { | ||||
color:#2B7CE9; | |||||
color:#2B7CE9; | |||||
} | } | ||||
.typ,.atn,.dec { | .typ,.atn,.dec { | ||||
color: darkorange; | |||||
color: darkorange; | |||||
} | } | ||||
@media print { | @media print { | ||||
.com { | |||||
color:#600; | |||||
font-style:italic; | |||||
} | |||||
.typ { | |||||
color:#404; | |||||
font-weight:700; | |||||
} | |||||
.lit { | |||||
color:#044; | |||||
} | |||||
.pun { | |||||
color:#440; | |||||
} | |||||
.pln { | |||||
color:#000; | |||||
} | |||||
.atn { | |||||
color:#404; | |||||
} | |||||
.str,.atv { | |||||
color:#060; | |||||
} | |||||
.kwd,.tag { | |||||
color:#006; | |||||
font-weight:700; | |||||
} | |||||
.com { | |||||
color:#600; | |||||
font-style:italic; | |||||
} | |||||
.typ { | |||||
color:#404; | |||||
font-weight:700; | |||||
} | |||||
.lit { | |||||
color:#044; | |||||
} | |||||
.pun { | |||||
color:#440; | |||||
} | |||||
.pln { | |||||
color:#000; | |||||
} | |||||
.atn { | |||||
color:#404; | |||||
} | |||||
.str,.atv { | |||||
color:#060; | |||||
} | |||||
.kwd,.tag { | |||||
color:#006; | |||||
font-weight:700; | |||||
} | |||||
} | } |
@ -1,77 +1,77 @@ | |||||
html, body { | html, body { | ||||
width: 100%; | |||||
height: 100%; | |||||
padding: 0; | |||||
margin: 0; | |||||
width: 100%; | |||||
height: 100%; | |||||
padding: 0; | |||||
margin: 0; | |||||
} | } | ||||
body, td, th { | body, td, th { | ||||
font-family: arial, sans-serif; | |||||
font-size: 11pt; | |||||
color: #4D4D4D; | |||||
line-height: 1.7em; | |||||
font-family: arial, sans-serif; | |||||
font-size: 11pt; | |||||
color: #4D4D4D; | |||||
line-height: 1.7em; | |||||
} | } | ||||
#container { | #container { | ||||
position: relative; | |||||
margin: 0 auto; | |||||
padding: 10px 10px 50px 10px; | |||||
width: 700px; | |||||
max-width: 100%; | |||||
box-sizing: border-box; | |||||
position: relative; | |||||
margin: 0 auto; | |||||
padding: 10px 10px 50px 10px; | |||||
width: 700px; | |||||
max-width: 100%; | |||||
box-sizing: border-box; | |||||
} | } | ||||
h1 { | h1 { | ||||
font-size: 180%; | |||||
font-weight: bold; | |||||
padding: 0; | |||||
margin: 1em 0 1em 0; | |||||
font-size: 180%; | |||||
font-weight: bold; | |||||
padding: 0; | |||||
margin: 1em 0 1em 0; | |||||
} | } | ||||
h2 { | h2 { | ||||
padding-top: 20px; | |||||
padding-bottom: 10px; | |||||
border-bottom: 1px solid #a0c0f0; | |||||
color: #2B7CE9; | |||||
padding-top: 20px; | |||||
padding-bottom: 10px; | |||||
border-bottom: 1px solid #a0c0f0; | |||||
color: #2B7CE9; | |||||
} | } | ||||
h3 { | h3 { | ||||
font-size: 140%; | |||||
font-size: 140%; | |||||
} | } | ||||
a > img { | a > img { | ||||
border: none; | |||||
border: none; | |||||
} | } | ||||
a { | a { | ||||
color: #2B7CE9; | |||||
text-decoration: none; | |||||
color: #2B7CE9; | |||||
text-decoration: none; | |||||
} | } | ||||
a:visited { | a:visited { | ||||
color: #2E60A4; | |||||
color: #2E60A4; | |||||
} | } | ||||
a:hover { | a:hover { | ||||
color: red; | |||||
text-decoration: underline; | |||||
color: red; | |||||
text-decoration: underline; | |||||
} | } | ||||
table { | table { | ||||
border-collapse: collapse; | |||||
border-collapse: collapse; | |||||
} | } | ||||
th { | th { | ||||
font-weight: bold; | |||||
border: 1px solid lightgray; | |||||
background-color: #E5E5E5; | |||||
text-align: left; | |||||
vertical-align: top; | |||||
padding: 5px; | |||||
font-weight: bold; | |||||
border: 1px solid lightgray; | |||||
background-color: #E5E5E5; | |||||
text-align: left; | |||||
vertical-align: top; | |||||
padding: 5px; | |||||
} | } | ||||
td { | td { | ||||
border: 1px solid lightgray; | |||||
padding: 5px; | |||||
vertical-align: top; | |||||
border: 1px solid lightgray; | |||||
padding: 5px; | |||||
vertical-align: top; | |||||
} | } |
@ -1,65 +1,65 @@ | |||||
<!doctype html> | <!doctype html> | ||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Graph | Dashed lines</title> | |||||
<title>Graph | Dashed lines</title> | |||||
<style type="text/css"> | |||||
body { | |||||
font: 10pt sans; | |||||
} | |||||
#mygraph { | |||||
width: 600px; | |||||
height: 600px; | |||||
border: 1px solid lightgray; | |||||
} | |||||
</style> | |||||
<style type="text/css"> | |||||
body { | |||||
font: 10pt sans; | |||||
} | |||||
#mygraph { | |||||
width: 600px; | |||||
height: 600px; | |||||
border: 1px solid lightgray; | |||||
} | |||||
</style> | |||||
<script type="text/javascript" src="../../vis.js"></script> | |||||
<script type="text/javascript" src="../../dist/vis.js"></script> | |||||
<script type="text/javascript"> | |||||
// Called on page load | |||||
function draw() { | |||||
var nodes = [ | |||||
{id: 1, label: 'dashed\nline\nexamples'}, | |||||
{id: 2, label: 'default'}, | |||||
{id: 3, label: 'dash.length: 20\ndash.gap: 20'}, | |||||
{id: 4, label: 'dash.length: 20\ndash.gap: 5'}, | |||||
{id: 5, label: 'dash.length: 5\ndash.gap: 20'}, | |||||
{id: 6, label: 'dash.length: 20\ndash.gap: 5\ndash.altLength: 5'} | |||||
]; | |||||
var edges = [ | |||||
{from: 1, to: 2, style: 'dash-line'}, | |||||
{from: 1, to: 3, style: 'dash-line', dash: {length: 20, gap: 20}}, | |||||
{from: 1, to: 4, style: 'dash-line', dash: {length: 20, gap: 5}}, | |||||
{from: 1, to: 5, style: 'dash-line', dash: {length: 5, gap: 20}}, | |||||
{from: 1, to: 6, style: 'dash-line', dash: {length: 20, gap: 5, altLength: 5}} | |||||
]; | |||||
<script type="text/javascript"> | |||||
// Called on page load | |||||
function draw() { | |||||
var nodes = [ | |||||
{id: 1, label: 'dashed\nline\nexamples'}, | |||||
{id: 2, label: 'default'}, | |||||
{id: 3, label: 'dash.length: 20\ndash.gap: 20'}, | |||||
{id: 4, label: 'dash.length: 20\ndash.gap: 5'}, | |||||
{id: 5, label: 'dash.length: 5\ndash.gap: 20'}, | |||||
{id: 6, label: 'dash.length: 20\ndash.gap: 5\ndash.altLength: 5'} | |||||
]; | |||||
var edges = [ | |||||
{from: 1, to: 2, style: 'dash-line'}, | |||||
{from: 1, to: 3, style: 'dash-line', dash: {length: 20, gap: 20}}, | |||||
{from: 1, to: 4, style: 'dash-line', dash: {length: 20, gap: 5}}, | |||||
{from: 1, to: 5, style: 'dash-line', dash: {length: 5, gap: 20}}, | |||||
{from: 1, to: 6, style: 'dash-line', dash: {length: 20, gap: 5, altLength: 5}} | |||||
]; | |||||
// create the graph | |||||
var container = document.getElementById('mygraph'); | |||||
var data = { | |||||
nodes: nodes, | |||||
edges: edges | |||||
}; | |||||
var options = { | |||||
nodes: { | |||||
shape: 'box' | |||||
}, | |||||
edges: { | |||||
length: 180 | |||||
}, | |||||
stabilize: false | |||||
}; | |||||
var graph = new vis.Graph(container, data, options); | |||||
} | |||||
</script> | |||||
// create the graph | |||||
var container = document.getElementById('mygraph'); | |||||
var data = { | |||||
nodes: nodes, | |||||
edges: edges | |||||
}; | |||||
var options = { | |||||
nodes: { | |||||
shape: 'box' | |||||
}, | |||||
edges: { | |||||
length: 180 | |||||
}, | |||||
stabilize: false | |||||
}; | |||||
var graph = new vis.Graph(container, data, options); | |||||
} | |||||
</script> | |||||
</head> | </head> | ||||
<body onload="draw();"> | <body onload="draw();"> | ||||
<p> | |||||
This example shows the different options for dashed lines. | |||||
</p> | |||||
<p> | |||||
This example shows the different options for dashed lines. | |||||
</p> | |||||
<div id="mygraph"></div> | |||||
<div id="mygraph"></div> | |||||
</body> | </body> | ||||
</html> | </html> |
@ -1,18 +1,18 @@ | |||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Graph | DOT Language</title> | |||||
<title>Graph | DOT Language</title> | |||||
<script type="text/javascript" src="../../vis.js"></script> | |||||
<script type="text/javascript" src="../../dist/vis.js"></script> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div id="mygraph"></div> | |||||
<div id="mygraph"></div> | |||||
<script type="text/javascript"> | |||||
var container = document.getElementById('mygraph'); | |||||
var data = { | |||||
dot: 'digraph {node[shape=circle]; 1 -> 1 -> 2; 2 -> 3; 2 -- 4; 2 -> 1 }' | |||||
}; | |||||
var graph = new vis.Graph(container, data); | |||||
</script> | |||||
<script type="text/javascript"> | |||||
var container = document.getElementById('mygraph'); | |||||
var data = { | |||||
dot: 'digraph {node[shape=circle]; 1 -> 1 -> 2; 2 -> 3; 2 -- 4; 2 -> 1 }' | |||||
}; | |||||
var graph = new vis.Graph(container, data); | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
@ -1,201 +1,201 @@ | |||||
<!doctype html> | <!doctype html> | ||||
<html> | <html> | ||||
<head> | <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; | |||||
} | |||||
<title>Graph | DOT language playground</title> | |||||
<script type="text/javascript" src="../../dist/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; | |||||
height: 100%; | |||||
} | |||||
#error { | |||||
color: red; | |||||
} | |||||
#frame { | |||||
width: 100%; | |||||
height: 99%; | |||||
} | |||||
#frame td { | |||||
padding: 10px; | |||||
height: 100%; | |||||
} | |||||
#error { | |||||
color: red; | |||||
} | |||||
#data { | |||||
width: 100%; | |||||
height: 100%; | |||||
border: 1px solid #d3d3d3; | |||||
} | |||||
#data { | |||||
width: 100%; | |||||
height: 100%; | |||||
border: 1px solid #d3d3d3; | |||||
} | |||||
#mygraph { | |||||
float: left; | |||||
width: 100%; | |||||
height: 100%; | |||||
border: 1px solid #d3d3d3; | |||||
box-sizing: border-box; | |||||
-moz-box-sizing: border-box; | |||||
overflow: hidden; | |||||
} | |||||
#mygraph { | |||||
float: left; | |||||
width: 100%; | |||||
height: 100%; | |||||
border: 1px solid #d3d3d3; | |||||
box-sizing: border-box; | |||||
-moz-box-sizing: border-box; | |||||
overflow: hidden; | |||||
} | |||||
textarea.example { | |||||
display: none; | |||||
} | |||||
</style> | |||||
textarea.example { | |||||
display: none; | |||||
} | |||||
</style> | |||||
</head> | </head> | ||||
<body onload="drawExample('example1')"> | <body onload="drawExample('example1')"> | ||||
<table id="frame"> | <table id="frame"> | ||||
<col width="50%"> | |||||
<col width="50%"> | |||||
<tr> | |||||
<td colspan="2" style="height: 50px;"> | |||||
<h1>DOT language playground</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="mygraph"></div> | |||||
</td> | |||||
</tr> | |||||
<col width="50%"> | |||||
<col width="50%"> | |||||
<tr> | |||||
<td colspan="2" style="height: 50px;"> | |||||
<h1>DOT language playground</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="mygraph"></div> | |||||
</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<script type="text/javascript"> | <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 { | |||||
txtError.innerHTML = ''; | |||||
// Provide a string with data in DOT language | |||||
data = { | |||||
dot: txtData.value | |||||
}; | |||||
// create a graph | |||||
var container = document.getElementById('mygraph'); | |||||
var options = {}; | |||||
graph = new vis.Graph(container, data, 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(); | |||||
} | |||||
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 { | |||||
txtError.innerHTML = ''; | |||||
// Provide a string with data in DOT language | |||||
data = { | |||||
dot: txtData.value | |||||
}; | |||||
// create a graph | |||||
var container = document.getElementById('mygraph'); | |||||
var options = {}; | |||||
graph = new vis.Graph(container, data, 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); | |||||
} | |||||
} | |||||
/** | |||||
* 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(); | |||||
// 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> | </script> | ||||
<textarea id="example1" class="example"> | <textarea id="example1" class="example"> | ||||
digraph { | |||||
node [shape=circle fontSize=16] | |||||
edge [length=100, color=gray, fontColor=black] | |||||
A -> A[label=0.5]; | |||||
B -> B[label=1.2] -> C[label=0.7] -- A; | |||||
B -> D; | |||||
D -> {B; C} | |||||
D -> E[label=0.2]; | |||||
F -> F; | |||||
A [ | |||||
fontColor=white, | |||||
color=red, | |||||
] | |||||
} | |||||
digraph { | |||||
node [shape=circle fontSize=16] | |||||
edge [length=100, color=gray, fontColor=black] | |||||
A -> A[label=0.5]; | |||||
B -> B[label=1.2] -> C[label=0.7] -- A; | |||||
B -> D; | |||||
D -> {B; C} | |||||
D -> E[label=0.2]; | |||||
F -> F; | |||||
A [ | |||||
fontColor=white, | |||||
color=red, | |||||
] | |||||
} | |||||
</textarea> | </textarea> | ||||
<textarea id="example2" class="example"> | <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", shape=solid]; | |||||
"10.0.3.0/24"[shape=box]; | |||||
"10.0.255.2" -> "10.0.2.0/24"[label="HNA"]; | |||||
"10.0.2.0/24"[shape=box]; | |||||
"10.0.255.1" -> "10.0.1.0/24"[label="HNA"]; | |||||
"10.0.1.0/24"[shape=box]; | |||||
} | |||||
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", shape=solid]; | |||||
"10.0.3.0/24"[shape=box]; | |||||
"10.0.255.2" -> "10.0.2.0/24"[label="HNA"]; | |||||
"10.0.2.0/24"[shape=box]; | |||||
"10.0.255.1" -> "10.0.1.0/24"[label="HNA"]; | |||||
"10.0.1.0/24"[shape=box]; | |||||
} | |||||
</textarea> | </textarea> | ||||
<textarea id="example3" class="example"> | <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 [shape=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 ; | |||||
} | |||||
digraph G { | |||||
// note: not all attributes are recognized and supported by Network | |||||
// unrecognized attributes are ignored | |||||
node[width=.25,height=.375,fontsize=15] | |||||
node [shape=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> | </textarea> | ||||
</body> | </body> | ||||
@ -1,264 +1,264 @@ | |||||
<!doctype html> | <!doctype html> | ||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Graph | DataSet</title> | |||||
<title>Graph | DataSet</title> | |||||
<style type="text/css"> | |||||
html, body { | |||||
font: 11pt arial; | |||||
} | |||||
<style type="text/css"> | |||||
html, body { | |||||
font: 11pt arial; | |||||
} | |||||
h1 { | |||||
font-size: 150%; | |||||
margin: 5px 0; | |||||
} | |||||
h1 { | |||||
font-size: 150%; | |||||
margin: 5px 0; | |||||
} | |||||
h2 { | |||||
font-size: 100%; | |||||
margin: 5px 0; | |||||
} | |||||
h2 { | |||||
font-size: 100%; | |||||
margin: 5px 0; | |||||
} | |||||
table.view { | |||||
width: 100%; | |||||
} | |||||
table.view { | |||||
width: 100%; | |||||
} | |||||
table td { | |||||
vertical-align: top; | |||||
} | |||||
table td { | |||||
vertical-align: top; | |||||
} | |||||
table table { | |||||
background-color: #f5f5f5; | |||||
border: 1px solid #e5e5e5; | |||||
} | |||||
table table { | |||||
background-color: #f5f5f5; | |||||
border: 1px solid #e5e5e5; | |||||
} | |||||
table table td { | |||||
vertical-align: middle; | |||||
} | |||||
table table td { | |||||
vertical-align: middle; | |||||
} | |||||
input[type=text], pre { | |||||
border: 1px solid lightgray; | |||||
} | |||||
input[type=text], pre { | |||||
border: 1px solid lightgray; | |||||
} | |||||
pre { | |||||
margin: 0; | |||||
padding: 5px; | |||||
font-size: 10pt; | |||||
} | |||||
pre { | |||||
margin: 0; | |||||
padding: 5px; | |||||
font-size: 10pt; | |||||
} | |||||
#graph { | |||||
width: 100%; | |||||
height: 400px; | |||||
border: 1px solid lightgray; | |||||
} | |||||
</style> | |||||
#graph { | |||||
width: 100%; | |||||
height: 400px; | |||||
border: 1px solid lightgray; | |||||
} | |||||
</style> | |||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> | |||||
<script type="text/javascript" src="../../vis.js"></script> | |||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> | |||||
<script type="text/javascript" src="../../dist/vis.js"></script> | |||||
<script type="text/javascript"> | |||||
var nodes, edges, graph; | |||||
<script type="text/javascript"> | |||||
var nodes, edges, graph; | |||||
// convenience method to stringify a JSON object | |||||
function toJSON (obj) { | |||||
return JSON.stringify(obj, null, 4); | |||||
} | |||||
// convenience method to stringify a JSON object | |||||
function toJSON (obj) { | |||||
return JSON.stringify(obj, null, 4); | |||||
} | |||||
$(window).load(function () { | |||||
// attach actions to the node buttons | |||||
$('#node-add').click(function () { | |||||
try { | |||||
nodes.add({ | |||||
id: $('#node-id').val(), | |||||
label: $('#node-label').val() | |||||
}); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
$('#node-update').click(function () { | |||||
try { | |||||
nodes.update({ | |||||
id: $('#node-id').val(), | |||||
label: $('#node-label').val() | |||||
}); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
$('#node-remove').click(function () { | |||||
try { | |||||
var id = $('#node-id').val(); | |||||
nodes.remove(id); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
$(window).load(function () { | |||||
// attach actions to the node buttons | |||||
$('#node-add').click(function () { | |||||
try { | |||||
nodes.add({ | |||||
id: $('#node-id').val(), | |||||
label: $('#node-label').val() | |||||
}); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
$('#node-update').click(function () { | |||||
try { | |||||
nodes.update({ | |||||
id: $('#node-id').val(), | |||||
label: $('#node-label').val() | |||||
}); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
$('#node-remove').click(function () { | |||||
try { | |||||
var id = $('#node-id').val(); | |||||
nodes.remove(id); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
// attach actions to the edge buttons | |||||
$('#edge-add').click(function () { | |||||
try { | |||||
edges.add({ | |||||
id: $('#edge-id').val(), | |||||
from: $('#edge-from').val(), | |||||
to: $('#edge-to').val() | |||||
}); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
$('#edge-update').click(function () { | |||||
try { | |||||
edges.update({ | |||||
id: $('#edge-id').val(), | |||||
from: $('#edge-from').val(), | |||||
to: $('#edge-to').val() | |||||
}); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
$('#edge-remove').click(function () { | |||||
try { | |||||
var id = $('#edge-id').val(); | |||||
edges.remove(id); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
// attach actions to the edge buttons | |||||
$('#edge-add').click(function () { | |||||
try { | |||||
edges.add({ | |||||
id: $('#edge-id').val(), | |||||
from: $('#edge-from').val(), | |||||
to: $('#edge-to').val() | |||||
}); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
$('#edge-update').click(function () { | |||||
try { | |||||
edges.update({ | |||||
id: $('#edge-id').val(), | |||||
from: $('#edge-from').val(), | |||||
to: $('#edge-to').val() | |||||
}); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
$('#edge-remove').click(function () { | |||||
try { | |||||
var id = $('#edge-id').val(); | |||||
edges.remove(id); | |||||
} | |||||
catch (err) { | |||||
alert(err); | |||||
} | |||||
}); | |||||
// create an array with nodes | |||||
nodes = new vis.DataSet(); | |||||
nodes.subscribe('*', function () { | |||||
$('#nodes').html(toJSON(nodes.get())); | |||||
}); | |||||
nodes.add([ | |||||
{id: '1', label: 'Node 1'}, | |||||
{id: '2', label: 'Node 2'}, | |||||
{id: '3', label: 'Node 3'}, | |||||
{id: '4', label: 'Node 4'}, | |||||
{id: '5', label: 'Node 5'} | |||||
]); | |||||
// create an array with nodes | |||||
nodes = new vis.DataSet(); | |||||
nodes.subscribe('*', function () { | |||||
$('#nodes').html(toJSON(nodes.get())); | |||||
}); | |||||
nodes.add([ | |||||
{id: '1', label: 'Node 1'}, | |||||
{id: '2', label: 'Node 2'}, | |||||
{id: '3', label: 'Node 3'}, | |||||
{id: '4', label: 'Node 4'}, | |||||
{id: '5', label: 'Node 5'} | |||||
]); | |||||
// create an array with edges | |||||
edges = new vis.DataSet(); | |||||
edges.subscribe('*', function () { | |||||
$('#edges').html(toJSON(edges.get())); | |||||
}); | |||||
edges.add([ | |||||
{id: '1', from: '1', to: '2'}, | |||||
{id: '2', from: '1', to: '3'}, | |||||
{id: '3', from: '2', to: '4'}, | |||||
{id: '4', from: '2', to: '5'} | |||||
]); | |||||
// create an array with edges | |||||
edges = new vis.DataSet(); | |||||
edges.subscribe('*', function () { | |||||
$('#edges').html(toJSON(edges.get())); | |||||
}); | |||||
edges.add([ | |||||
{id: '1', from: '1', to: '2'}, | |||||
{id: '2', from: '1', to: '3'}, | |||||
{id: '3', from: '2', to: '4'}, | |||||
{id: '4', from: '2', to: '5'} | |||||
]); | |||||
// create a graph | |||||
var container = $('#graph').get(0); | |||||
var data = { | |||||
nodes: nodes, | |||||
edges: edges | |||||
}; | |||||
var options = {}; | |||||
graph = new vis.Graph(container, data, options); | |||||
}); | |||||
</script> | |||||
// create a graph | |||||
var container = $('#graph').get(0); | |||||
var data = { | |||||
nodes: nodes, | |||||
edges: edges | |||||
}; | |||||
var options = {}; | |||||
graph = new vis.Graph(container, data, options); | |||||
}); | |||||
</script> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<p> | <p> | ||||
This example demonstrates dynamically adding, updating and removing nodes | |||||
and edges using a DataSet. | |||||
This example demonstrates dynamically adding, updating and removing nodes | |||||
and edges using a DataSet. | |||||
</p> | </p> | ||||
<h1>Adjust</h1> | <h1>Adjust</h1> | ||||
<table> | <table> | ||||
<tr> | |||||
<td> | |||||
<h2>Node</h2> | |||||
<table> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="node-id">Id</label></td> | |||||
<td><input id="node-id" type="text" value="6"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="node-label">Label</label></td> | |||||
<td><input id="node-label" type="text" value="Node 6"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td>Action</td> | |||||
<td> | |||||
<button id="node-add">Add</button> | |||||
<button id="node-update">Update</button> | |||||
<button id="node-remove">Remove</button> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td> | |||||
<h2>Edge</h2> | |||||
<table> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="edge-id">Id</label></td> | |||||
<td><input id="edge-id" type="text" value="5"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="edge-from">From</label></td> | |||||
<td><input id="edge-from" type="text" value="3"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="edge-to">To</label></td> | |||||
<td><input id="edge-to" type="text" value="4"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td>Action</td> | |||||
<td> | |||||
<button id="edge-add">Add</button> | |||||
<button id="edge-update">Update</button> | |||||
<button id="edge-remove">Remove</button> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td> | |||||
<h2>Node</h2> | |||||
<table> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="node-id">Id</label></td> | |||||
<td><input id="node-id" type="text" value="6"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="node-label">Label</label></td> | |||||
<td><input id="node-label" type="text" value="Node 6"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td>Action</td> | |||||
<td> | |||||
<button id="node-add">Add</button> | |||||
<button id="node-update">Update</button> | |||||
<button id="node-remove">Remove</button> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
<td> | |||||
<h2>Edge</h2> | |||||
<table> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="edge-id">Id</label></td> | |||||
<td><input id="edge-id" type="text" value="5"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="edge-from">From</label></td> | |||||
<td><input id="edge-from" type="text" value="3"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td><label for="edge-to">To</label></td> | |||||
<td><input id="edge-to" type="text" value="4"></td> | |||||
</tr> | |||||
<tr> | |||||
<td></td> | |||||
<td>Action</td> | |||||
<td> | |||||
<button id="edge-add">Add</button> | |||||
<button id="edge-update">Update</button> | |||||
<button id="edge-remove">Remove</button> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<h1>View</h1> | <h1>View</h1> | ||||
<table class="view"> | <table class="view"> | ||||
<colgroup> | |||||
<col width="25%"> | |||||
<col width="25%"> | |||||
<col width="50%"> | |||||
</colgroup> | |||||
<tr> | |||||
<td> | |||||
<h2>Nodes</h2> | |||||
<pre id="nodes"></pre> | |||||
</td> | |||||
<colgroup> | |||||
<col width="25%"> | |||||
<col width="25%"> | |||||
<col width="50%"> | |||||
</colgroup> | |||||
<tr> | |||||
<td> | |||||
<h2>Nodes</h2> | |||||
<pre id="nodes"></pre> | |||||
</td> | |||||
<td> | |||||
<h2>Edges</h2> | |||||
<pre id="edges"></pre> | |||||
</td> | |||||
<td> | |||||
<h2>Edges</h2> | |||||
<pre id="edges"></pre> | |||||
</td> | |||||
<td> | |||||
<h2>Graph</h2> | |||||
<div id="graph"></div> | |||||
</td> | |||||
</tr> | |||||
<td> | |||||
<h2>Graph</h2> | |||||
<div id="graph"></div> | |||||
</td> | |||||
</tr> | |||||
</table> | </table> | ||||
</body> | </body> | ||||
@ -1,86 +1,86 @@ | |||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Graph | Graphviz Gallery</title> | |||||
<title>Graph | Graphviz Gallery</title> | |||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> | |||||
<script type="text/javascript" src="../../../vis.js"></script> | |||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> | |||||
<script type="text/javascript" src="../../../dist/vis.js"></script> | |||||
<style type="text/css"> | |||||
p { | |||||
width: 600px; | |||||
} | |||||
html, body, select { | |||||
font: 11pt arial; | |||||
} | |||||
#mygraph { | |||||
width: 100%; | |||||
height: 600px; | |||||
border: 1px solid lightgray; | |||||
} | |||||
</style> | |||||
<style type="text/css"> | |||||
p { | |||||
width: 600px; | |||||
} | |||||
html, body, select { | |||||
font: 11pt arial; | |||||
} | |||||
#mygraph { | |||||
width: 100%; | |||||
height: 600px; | |||||
border: 1px solid lightgray; | |||||
} | |||||
</style> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<script> | <script> | ||||
if (location.href.substr(0, 5) == 'file:') { | |||||
document.write( | |||||
'<p style="color: red;">' + | |||||
'Error: Cannot fetch the example data because of security ' + | |||||
'restrictions in JavaScript. Run the example from a server ' + | |||||
'instead of as a local file to resolve this problem. ' + | |||||
'Alternatively, you can load DOT graphs in ' + | |||||
'the <a href="../15_dot_language_playground.html" ' + | |||||
'style="color:red;">playground</a>.' + | |||||
if (location.href.substr(0, 5) == 'file:') { | |||||
document.write( | |||||
'<p style="color: red;">' + | |||||
'Error: Cannot fetch the example data because of security ' + | |||||
'restrictions in JavaScript. Run the example from a server ' + | |||||
'instead of as a local file to resolve this problem. ' + | |||||
'Alternatively, you can load DOT graphs in ' + | |||||
'the <a href="../15_dot_language_playground.html" ' + | |||||
'style="color:red;">playground</a>.' + | |||||
'</p>'); | '</p>'); | ||||
} | |||||
} | |||||
</script> | </script> | ||||
<p> | <p> | ||||
The following examples are unmodified copies from the | |||||
<a href="http://www.graphviz.org/Gallery.php" target="_blank">Graphviz Gallery</a>. | |||||
The following examples are unmodified copies from the | |||||
<a href="http://www.graphviz.org/Gallery.php" target="_blank">Graphviz Gallery</a>. | |||||
</p> | </p> | ||||
<p> | <p> | ||||
Note that some style attributes of Graphviz are not supported by vis.js, | |||||
and that vis.js offers options not supported by Graphviz (which could make | |||||
some examples look much nicer). | |||||
Note that some style attributes of Graphviz are not supported by vis.js, | |||||
and that vis.js offers options not supported by Graphviz (which could make | |||||
some examples look much nicer). | |||||
</p> | </p> | ||||
<p> | <p> | ||||
<label for="url">Select an example:</label> | |||||
<select id="url" onchange="loadData()"> | |||||
<option value="data/fsm.gv.txt">fsm</option> | |||||
<option value="data/hello.gv.txt">hello</option> | |||||
<option value="data/process.gv.txt">process</option> | |||||
<option value="data/siblings.gv.txt">siblings</option> | |||||
<option value="data/softmaint.gv.txt">softmaint</option> | |||||
<option value="data/traffic_lights.gv.txt">traffic_lights</option> | |||||
<option value="data/transparency.gv.txt">transparency</option> | |||||
<option value="data/twopi2.gv.txt">twopi2</option> | |||||
<option value="data/unix.gv.txt">unix</option> | |||||
<option value="data/world.gv.txt">world</option> | |||||
</select> | |||||
<label for="url">Select an example:</label> | |||||
<select id="url" onchange="loadData()"> | |||||
<option value="data/fsm.gv.txt">fsm</option> | |||||
<option value="data/hello.gv.txt">hello</option> | |||||
<option value="data/process.gv.txt">process</option> | |||||
<option value="data/siblings.gv.txt">siblings</option> | |||||
<option value="data/softmaint.gv.txt">softmaint</option> | |||||
<option value="data/traffic_lights.gv.txt">traffic_lights</option> | |||||
<option value="data/transparency.gv.txt">transparency</option> | |||||
<option value="data/twopi2.gv.txt">twopi2</option> | |||||
<option value="data/unix.gv.txt">unix</option> | |||||
<option value="data/world.gv.txt">world</option> | |||||
</select> | |||||
</p> | </p> | ||||
<div id="mygraph"></div> | <div id="mygraph"></div> | ||||
<script type="text/javascript"> | <script type="text/javascript"> | ||||
var container = document.getElementById('mygraph'); | |||||
var url = document.getElementById('url'); | |||||
var graph = new vis.Graph(container); | |||||
var container = document.getElementById('mygraph'); | |||||
var url = document.getElementById('url'); | |||||
var graph = new vis.Graph(container); | |||||
function loadData () { | |||||
$.ajax({ | |||||
type: "GET", | |||||
url: url.value | |||||
}).done(function(data) { | |||||
graph.setOptions({ | |||||
stabilize: false | |||||
}); | |||||
graph.setData( { | |||||
dot: data | |||||
}); | |||||
function loadData () { | |||||
$.ajax({ | |||||
type: "GET", | |||||
url: url.value | |||||
}).done(function(data) { | |||||
graph.setOptions({ | |||||
stabilize: false | |||||
}); | |||||
graph.setData( { | |||||
dot: data | |||||
}); | |||||
}); | }); | ||||
} | |||||
loadData(); | |||||
} | |||||
loadData(); | |||||
</script> | </script> | ||||
</body> | </body> | ||||
</html> | </html> |
@ -1,31 +1,32 @@ | |||||
<!DOCTYPE HTML> | <!DOCTYPE HTML> | ||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Timeline | Basic demo</title> | |||||
<title>Timeline | Basic demo</title> | |||||
<style type="text/css"> | |||||
body, html { | |||||
font-family: sans-serif; | |||||
} | |||||
</style> | |||||
<style type="text/css"> | |||||
body, html { | |||||
font-family: sans-serif; | |||||
} | |||||
</style> | |||||
<script src="../../vis.js"></script> | |||||
<script src="../../dist/vis.js"></script> | |||||
<link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div id="visualization"></div> | <div id="visualization"></div> | ||||
<script type="text/javascript"> | <script type="text/javascript"> | ||||
var container = document.getElementById('visualization'); | |||||
var items = [ | |||||
{id: 1, content: 'item 1', start: '2013-04-20'}, | |||||
{id: 2, content: 'item 2', start: '2013-04-14'}, | |||||
{id: 3, content: 'item 3', start: '2013-04-18'}, | |||||
{id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'}, | |||||
{id: 5, content: 'item 5', start: '2013-04-25'}, | |||||
{id: 6, content: 'item 6', start: '2013-04-27'} | |||||
]; | |||||
var options = {}; | |||||
var timeline = new vis.Timeline(container, items, options); | |||||
var container = document.getElementById('visualization'); | |||||
var items = [ | |||||
{id: 1, content: 'item 1', start: '2013-04-20'}, | |||||
{id: 2, content: 'item 2', start: '2013-04-14'}, | |||||
{id: 3, content: 'item 3', start: '2013-04-18'}, | |||||
{id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'}, | |||||
{id: 5, content: 'item 5', start: '2013-04-25'}, | |||||
{id: 6, content: 'item 6', start: '2013-04-27'} | |||||
]; | |||||
var options = {}; | |||||
var timeline = new vis.Timeline(container, items, options); | |||||
</script> | </script> | ||||
</body> | </body> | ||||
</html> | </html> |
@ -1,60 +1,62 @@ | |||||
<!DOCTYPE HTML> | <!DOCTYPE HTML> | ||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Timeline | Dataset example</title> | |||||
<style> | |||||
body, html { | |||||
font-family: arial, sans-serif; | |||||
font-size: 11pt; | |||||
height: 100%; | |||||
margin: 0; | |||||
padding: 0; | |||||
} | |||||
#visualization { | |||||
box-sizing: border-box; | |||||
width: 100%; | |||||
height: 100%; | |||||
} | |||||
</style> | |||||
<!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js --> | |||||
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.3.1/moment.min.js"></script> | |||||
<script src="../../vis.js"></script> | |||||
<title>Timeline | Dataset example</title> | |||||
<style> | |||||
body, html { | |||||
font-family: arial, sans-serif; | |||||
font-size: 11pt; | |||||
height: 100%; | |||||
margin: 0; | |||||
padding: 0; | |||||
} | |||||
#visualization { | |||||
box-sizing: border-box; | |||||
width: 100%; | |||||
height: 100%; | |||||
} | |||||
</style> | |||||
<!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js --> | |||||
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.3.1/moment.min.js"></script> | |||||
<script src="../../dist/vis.js"></script> | |||||
<link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div id="visualization"></div> | <div id="visualization"></div> | ||||
<script> | <script> | ||||
var now = moment().minutes(0).seconds(0).milliseconds(0); | |||||
// create a dataset with items | |||||
var items = new vis.DataSet({ | |||||
convert: { | |||||
start: 'Date', | |||||
end: 'Date' | |||||
} | |||||
}); | |||||
items.add([ | |||||
{id: 1, content: 'item 1<br>start', start: now.clone().add('days', 4)}, | |||||
{id: 2, content: 'item 2', start: now.clone().add('days', -2)}, | |||||
{id: 3, content: 'item 3', start: now.clone().add('days', 2)}, | |||||
{id: 4, content: 'item 4', start: now.clone().add('days', 0), end: now.clone().add('days', 3).toDate()}, | |||||
{id: 5, content: 'item 5', start: now.clone().add('days', 9), type:'point'}, | |||||
{id: 6, content: 'item 6', start: now.clone().add('days', 11)} | |||||
]); | |||||
var container = document.getElementById('visualization'); | |||||
var options = { | |||||
start: now.clone().add('days', -3), | |||||
end: now.clone().add('days', 7), | |||||
orientation: 'top', | |||||
height: '100%' | |||||
}; | |||||
var timeline = new vis.Timeline(container, items, options); | |||||
var now = moment().minutes(0).seconds(0).milliseconds(0); | |||||
// create a dataset with items | |||||
var items = new vis.DataSet({ | |||||
convert: { | |||||
start: 'Date', | |||||
end: 'Date' | |||||
} | |||||
}); | |||||
items.add([ | |||||
{id: 1, content: 'item 1<br>start', start: now.clone().add('days', 4)}, | |||||
{id: 2, content: 'item 2', start: now.clone().add('days', -2)}, | |||||
{id: 3, content: 'item 3', start: now.clone().add('days', 2)}, | |||||
{id: 4, content: 'item 4', start: now.clone().add('days', 0), end: now.clone().add('days', 3).toDate()}, | |||||
{id: 5, content: 'item 5', start: now.clone().add('days', 9), type:'point'}, | |||||
{id: 6, content: 'item 6', start: now.clone().add('days', 11)} | |||||
]); | |||||
var container = document.getElementById('visualization'); | |||||
var options = { | |||||
start: now.clone().add('days', -3), | |||||
end: now.clone().add('days', 7), | |||||
orientation: 'top', | |||||
height: '100%', | |||||
showCurrentTime: true | |||||
}; | |||||
var timeline = new vis.Timeline(container, items, options); | |||||
</script> | </script> | ||||
</body> | </body> |
@ -1,69 +1,74 @@ | |||||
<!DOCTYPE HTML> | <!DOCTYPE HTML> | ||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Timeline | HTML data</title> | |||||
<title>Timeline | HTML data</title> | |||||
<style> | |||||
body, html { | |||||
font-family: arial, sans-serif; | |||||
font-size: 11pt; | |||||
} | |||||
span { | |||||
color: red; | |||||
} | |||||
span.large { | |||||
font-size: 200%; | |||||
} | |||||
</style> | |||||
<style> | |||||
body, html { | |||||
font-family: arial, sans-serif; | |||||
font-size: 11pt; | |||||
} | |||||
span { | |||||
color: red; | |||||
} | |||||
span.large { | |||||
font-size: 200%; | |||||
} | |||||
</style> | |||||
<script src="../../dist/vis.js"></script> | |||||
<link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> | |||||
<script src="../../vis.js"></script> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<p> | <p> | ||||
Load HTML contents in the Timeline | |||||
Load HTML contents in the Timeline | |||||
</p> | </p> | ||||
<div id="visualization"></div> | <div id="visualization"></div> | ||||
<script> | <script> | ||||
// create a couple of HTML items in various ways | |||||
// create a couple of HTML items in various ways | |||||
var item1 = document.createElement('div'); | |||||
item1.appendChild(document.createTextNode('item 1')); | |||||
var item1 = document.createElement('div'); | |||||
item1.appendChild(document.createTextNode('item 1')); | |||||
var item2 = document.createElement('div'); | |||||
item2.innerHTML = '<span>item 2</span>'; | |||||
var item2 = document.createElement('div'); | |||||
item2.innerHTML = '<span>item 2</span>'; | |||||
var item3 = document.createElement('div'); | |||||
var span3 = document.createElement('span'); | |||||
span3.className = 'large'; | |||||
span3.appendChild(document.createTextNode('item 3')); | |||||
item3.appendChild(span3); | |||||
var item3 = document.createElement('div'); | |||||
var span3 = document.createElement('span'); | |||||
span3.className = 'large'; | |||||
span3.appendChild(document.createTextNode('item 3')); | |||||
item3.appendChild(span3); | |||||
var item4 = 'item <span class="large">4</span>'; | |||||
var item4 = 'item <span class="large">4</span>'; | |||||
var item5 = document.createElement('div'); | |||||
item5.appendChild(document.createTextNode('item 5')); | |||||
item5.appendChild(document.createElement('br')); | |||||
var img5 = document.createElement('img'); | |||||
img5.src = 'img/attachment-icon.png'; | |||||
img5.style.width = '48px'; | |||||
img5.style.height = '48px'; | |||||
item5.appendChild(img5); | |||||
var item5 = document.createElement('div'); | |||||
item5.appendChild(document.createTextNode('item 5')); | |||||
item5.appendChild(document.createElement('br')); | |||||
var img5 = document.createElement('img'); | |||||
img5.src = 'img/attachment-icon.png'; | |||||
img5.style.width = '48px'; | |||||
img5.style.height = '48px'; | |||||
item5.appendChild(img5); | |||||
var item6 = 'item6<br><img src="img/comments-icon.png" style="width: 48px; height: 48px;">'; | |||||
var item6 = 'item6<br><img src="img/comments-icon.png" style="width: 48px; height: 48px;">'; | |||||
var item7 = 'item7<br><a href="http://visjs.org" target="_blank">click here</a>'; | |||||
// create data and a Timeline | |||||
var container = document.getElementById('visualization'); | |||||
var items = [ | |||||
{id: 1, content: item1, start: '2013-04-20'}, | |||||
{id: 2, content: item2, start: '2013-04-14'}, | |||||
{id: 3, content: item3, start: '2013-04-18'}, | |||||
{id: 4, content: item4, start: '2013-04-16', end: '2013-04-19'}, | |||||
{id: 5, content: item5, start: '2013-04-25'}, | |||||
{id: 6, content: item6, start: '2013-04-27'} | |||||
]; | |||||
var options = {}; | |||||
var timeline = new vis.Timeline(container, items, options); | |||||
// create data and a Timeline | |||||
var container = document.getElementById('visualization'); | |||||
var items = [ | |||||
{id: 1, content: item1, start: '2013-04-20'}, | |||||
{id: 2, content: item2, start: '2013-04-14'}, | |||||
{id: 3, content: item3, start: '2013-04-18'}, | |||||
{id: 4, content: item4, start: '2013-04-16', end: '2013-04-19'}, | |||||
{id: 5, content: item5, start: '2013-04-25'}, | |||||
{id: 6, content: item6, start: '2013-04-27'}, | |||||
{id: 7, content: item7, start: '2013-04-21'} | |||||
]; | |||||
var options = {}; | |||||
var timeline = new vis.Timeline(container, items, options); | |||||
</script> | </script> | ||||
</body> | </body> | ||||
</html> | </html> |
@ -1,71 +1,72 @@ | |||||
<!DOCTYPE HTML> | <!DOCTYPE HTML> | ||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Timeline | Group example</title> | |||||
<title>Timeline | Group example</title> | |||||
<style> | |||||
body, html { | |||||
font-family: arial, sans-serif; | |||||
font-size: 11pt; | |||||
} | |||||
<style> | |||||
body, html { | |||||
font-family: arial, sans-serif; | |||||
font-size: 11pt; | |||||
} | |||||
#visualization { | |||||
box-sizing: border-box; | |||||
width: 100%; | |||||
height: 300px; | |||||
} | |||||
</style> | |||||
#visualization { | |||||
box-sizing: border-box; | |||||
width: 100%; | |||||
height: 300px; | |||||
} | |||||
</style> | |||||
<!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js --> | |||||
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.3.1/moment.min.js"></script> | |||||
<!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js --> | |||||
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.3.1/moment.min.js"></script> | |||||
<script src="../../vis.js"></script> | |||||
<script src="../../dist/vis.js"></script> | |||||
<link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<p> | <p> | ||||
This example demonstrate using groups. Note that a DataSet is used for both | |||||
items and groups, allowing to dynamically add, update or remove both items | |||||
and groups via the DataSet. | |||||
This example demonstrate using groups. Note that a DataSet is used for both | |||||
items and groups, allowing to dynamically add, update or remove both items | |||||
and groups via the DataSet. | |||||
</p> | </p> | ||||
<div id="visualization"></div> | <div id="visualization"></div> | ||||
<script> | <script> | ||||
var now = moment().minutes(0).seconds(0).milliseconds(0); | |||||
var groupCount = 3; | |||||
var itemCount = 20; | |||||
var now = moment().minutes(0).seconds(0).milliseconds(0); | |||||
var groupCount = 3; | |||||
var itemCount = 20; | |||||
// create a data set with groups | |||||
var names = ['John', 'Alston', 'Lee', 'Grant']; | |||||
var groups = new vis.DataSet(); | |||||
for (var g = 0; g < groupCount; g++) { | |||||
groups.add({id: g, content: names[g]}); | |||||
} | |||||
// create a data set with groups | |||||
var names = ['John', 'Alston', 'Lee', 'Grant']; | |||||
var groups = new vis.DataSet(); | |||||
for (var g = 0; g < groupCount; g++) { | |||||
groups.add({id: g, content: names[g]}); | |||||
} | |||||
// create a dataset with items | |||||
var items = new vis.DataSet(); | |||||
for (var i = 0; i < itemCount; i++) { | |||||
var start = now.clone().add('hours', Math.random() * 200); | |||||
var group = Math.floor(Math.random() * groupCount); | |||||
items.add({ | |||||
id: i, | |||||
group: group, | |||||
content: 'item ' + i + | |||||
' <span style="color:#97B0F8;">(' + names[group] + ')</span>', | |||||
start: start, | |||||
type: 'box' | |||||
}); | |||||
} | |||||
// create a dataset with items | |||||
var items = new vis.DataSet(); | |||||
for (var i = 0; i < itemCount; i++) { | |||||
var start = now.clone().add('hours', Math.random() * 200); | |||||
var group = Math.floor(Math.random() * groupCount); | |||||
items.add({ | |||||
id: i, | |||||
group: group, | |||||
content: 'item ' + i + | |||||
' <span style="color:#97B0F8;">(' + names[group] + ')</span>', | |||||
start: start, | |||||
type: 'box' | |||||
}); | |||||
} | |||||
// create visualization | |||||
var container = document.getElementById('visualization'); | |||||
var options = { | |||||
groupsOrder: 'content' | |||||
}; | |||||
// create visualization | |||||
var container = document.getElementById('visualization'); | |||||
var options = { | |||||
groupOrder: 'content' | |||||
}; | |||||
var timeline = new vis.Timeline(container); | |||||
timeline.setOptions(options); | |||||
timeline.setGroups(groups); | |||||
timeline.setItems(items); | |||||
var timeline = new vis.Timeline(container); | |||||
timeline.setOptions(options); | |||||
timeline.setGroups(groups); | |||||
timeline.setItems(items); | |||||
</script> | </script> | ||||
</body> | </body> |
@ -1,11 +1,13 @@ | |||||
<!DOCTYPE HTML> | <!DOCTYPE HTML> | ||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Timeline requirejs demo</title> | |||||
<title>Timeline requirejs demo</title> | |||||
<script data-main="scripts/main" src="scripts/require.js"></script> | |||||
<script data-main="scripts/main" src="scripts/require.js"></script> | |||||
<link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div id="visualization"></div> | |||||
<div id="visualization"></div> | |||||
</body> | </body> | ||||
</html> | </html> |
@ -1,19 +1,19 @@ | |||||
require.config({ | require.config({ | ||||
paths: { | |||||
vis: '../../../../vis' | |||||
} | |||||
paths: { | |||||
vis: '../../../../dist/vis' | |||||
} | |||||
}); | }); | ||||
require(['vis'], function (vis) { | require(['vis'], function (vis) { | ||||
var container = document.getElementById('visualization'); | |||||
var data = [ | |||||
{id: 1, content: 'item 1', start: '2013-04-20'}, | |||||
{id: 2, content: 'item 2', start: '2013-04-14'}, | |||||
{id: 3, content: 'item 3', start: '2013-04-18'}, | |||||
{id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'}, | |||||
{id: 5, content: 'item 5', start: '2013-04-25'}, | |||||
{id: 6, content: 'item 6', start: '2013-04-27'} | |||||
]; | |||||
var options = {}; | |||||
var timeline = new vis.Timeline(container, data, options); | |||||
var container = document.getElementById('visualization'); | |||||
var data = [ | |||||
{id: 1, content: 'item 1', start: '2013-04-20'}, | |||||
{id: 2, content: 'item 2', start: '2013-04-14'}, | |||||
{id: 3, content: 'item 3', start: '2013-04-18'}, | |||||
{id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'}, | |||||
{id: 5, content: 'item 5', start: '2013-04-25'}, | |||||
{id: 6, content: 'item 6', start: '2013-04-27'} | |||||
]; | |||||
var options = {}; | |||||
var timeline = new vis.Timeline(container, data, options); | |||||
}); | }); |