<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Timeline | navigation menu</title>
|
|
|
|
<style type="text/css">
|
|
body, html, input {
|
|
font-family: sans-serif;
|
|
font-size: 12pt;
|
|
}
|
|
|
|
#visualization {
|
|
position: relative;
|
|
}
|
|
|
|
.menu {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
margin: 10px;
|
|
z-index: 9999;
|
|
}
|
|
</style>
|
|
|
|
<script src="../../../dist/vis.js"></script>
|
|
<link href="../../../dist/vis.css" rel="stylesheet" type="text/css" />
|
|
<script src="../../googleAnalytics.js"></script>
|
|
</head>
|
|
<body>
|
|
|
|
<p>
|
|
Create your own navigation menu by creating an overlay with buttons to zoom and move.
|
|
</p>
|
|
|
|
<div id="visualization">
|
|
<div class="menu">
|
|
<input type="button" id="zoomIn" value="Zoom in"/>
|
|
<input type="button" id="zoomOut" value="Zoom out"/>
|
|
<input type="button" id="moveLeft" value="Move left"/>
|
|
<input type="button" id="moveRight" value="Move right"/>
|
|
</div>
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
// create a timeline with some data
|
|
var container = document.getElementById('visualization');
|
|
var items = new vis.DataSet([
|
|
{id: 1, content: 'item 1', start: '2014-04-20'},
|
|
{id: 2, content: 'item 2', start: '2014-04-14'},
|
|
{id: 3, content: 'item 3', start: '2014-04-18'},
|
|
{id: 4, content: 'item 4', start: '2014-04-16', end: '2014-04-19'},
|
|
{id: 5, content: 'item 5', start: '2014-04-25'},
|
|
{id: 6, content: 'item 6', start: '2014-04-27', type: 'point'}
|
|
]);
|
|
var options = {};
|
|
var timeline = new vis.Timeline(container, items, options);
|
|
|
|
/**
|
|
* Move the timeline a given percentage to left or right
|
|
* @param {Number} percentage For example 0.1 (left) or -0.1 (right)
|
|
*/
|
|
function move (percentage) {
|
|
var range = timeline.getWindow();
|
|
var interval = range.end - range.start;
|
|
|
|
timeline.setWindow({
|
|
start: range.start.valueOf() - interval * percentage,
|
|
end: range.end.valueOf() - interval * percentage
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Zoom the timeline a given percentage in or out
|
|
* @param {Number} percentage For example 0.1 (zoom out) or -0.1 (zoom in)
|
|
*/
|
|
function zoomIn(percentage) {
|
|
var range = timeline.getWindow();
|
|
var start = range.start.valueOf();
|
|
var end = range.end.valueOf();
|
|
var interval = end - start;
|
|
var newInterval = interval / (1 + percentage);
|
|
var distance = (interval - newInterval) / 2;
|
|
var newStart = start + distance;
|
|
var newEnd = end - distance;
|
|
|
|
timeline.setWindow({
|
|
start : newStart,
|
|
end : newEnd
|
|
});
|
|
}
|
|
|
|
function zoomOut(percentage) {
|
|
var range = timeline.getWindow();
|
|
var start = range.start.valueOf();
|
|
var end = range.end.valueOf();
|
|
var interval = end - start;
|
|
var newStart = start - interval * percentage / 2;
|
|
var newEnd = end + interval * percentage / 2;
|
|
|
|
timeline.setWindow({
|
|
start : newStart,
|
|
end : newEnd
|
|
});
|
|
}
|
|
|
|
|
|
// attach events to the navigation buttons
|
|
document.getElementById('zoomIn').onclick = function () { zoomIn( 0.2); };
|
|
document.getElementById('zoomOut').onclick = function () { zoomOut( 0.2); };
|
|
document.getElementById('moveLeft').onclick = function () { move( 0.2); };
|
|
document.getElementById('moveRight').onclick = function () { move(-0.2); };
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|