<html>
|
|
<head>
|
|
<title>Timeline | A lot of grouped data</title>
|
|
|
|
<script src="../../dist/vis.js"></script>
|
|
<link href="../../dist/vis.css" rel="stylesheet" type="text/css" />
|
|
|
|
<style type="text/css">
|
|
body {
|
|
color: #4D4D4D;
|
|
font: 10pt arial;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body onresize="/*timeline.checkResize();*/">
|
|
<h1>Timeline grouping performance</h1>
|
|
|
|
<p>
|
|
Choose a number of items:
|
|
<a href="?count=100">100</a>,
|
|
<a href="?count=1000">1000</a>,
|
|
<a href="?count=10000">10000</a>,
|
|
<a href="?count=10000">100000</a>
|
|
<p>
|
|
<p>
|
|
Current number of items: <span id='count'>100</span>
|
|
</p>
|
|
|
|
<div id="mytimeline"></div>
|
|
|
|
<script>
|
|
/**
|
|
* Get URL parameter
|
|
* http://www.netlobo.com/url_query_string_javascript.html
|
|
*/
|
|
function gup( name ) {
|
|
name = name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");
|
|
var regexS = "[\\?&]"+name+"=([^&#]*)";
|
|
var regex = new RegExp( regexS );
|
|
var results = regex.exec( window.location.href );
|
|
if( results == null )
|
|
return "";
|
|
else
|
|
return results[1];
|
|
}
|
|
|
|
// get selected item count from url parameter
|
|
var count = (Number(gup('count')) || 1000);
|
|
|
|
// create groups
|
|
var groups = new vis.DataSet([
|
|
{id: 1, content: 'Truck 1'},
|
|
{id: 2, content: 'Truck 2'},
|
|
{id: 3, content: 'Truck 3'},
|
|
{id: 4, content: 'Truck 4'}
|
|
]);
|
|
|
|
// create items
|
|
var items = new vis.DataSet();
|
|
|
|
var order = 1;
|
|
var truck = 1;
|
|
for (var j = 0; j < 4; j++) {
|
|
var date = new Date();
|
|
for (var i = 0; i < count/4; i++) {
|
|
date.setHours(date.getHours() + 4 * (Math.random() < 0.2));
|
|
var start = new Date(date);
|
|
|
|
date.setHours(date.getHours() + 2 + Math.floor(Math.random()*4));
|
|
var end = new Date(date);
|
|
|
|
items.add({
|
|
id: order,
|
|
group: truck,
|
|
start: start,
|
|
end: end,
|
|
content: 'Order ' + order
|
|
});
|
|
|
|
order++;
|
|
}
|
|
truck++;
|
|
}
|
|
|
|
// specify options
|
|
var options = {
|
|
stack: false,
|
|
start: new Date(),
|
|
end: new Date(1000*60*60*24 + (new Date()).valueOf()),
|
|
editable: true,
|
|
margin: {
|
|
item: 10, // minimal margin between items
|
|
axis: 5 // minimal margin between items and the axis
|
|
},
|
|
orientation: 'top'
|
|
};
|
|
|
|
// create a Timeline
|
|
var container = document.getElementById('mytimeline');
|
|
timeline = new vis.Timeline(container, null, options);
|
|
timeline.setGroups(groups);
|
|
timeline.setItems(items);
|
|
|
|
document.getElementById('count').innerHTML = count;
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|