<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Timeline | Event listeners</title>
|
|
|
|
<style type="text/css">
|
|
body, html {
|
|
font-family: sans-serif;
|
|
}
|
|
</style>
|
|
|
|
<script src="../../../dist/vis.js"></script>
|
|
<link href="../../../dist/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css" />
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
This example listens for events <code>select</code>, <code>click</code>, <code>doubleClick</code>, <code>rangechange</code>, and <code>rangechanged</code> of the Timeline (other possible events: <code>mouseDown</code>, <code>mouseUp</code>, <code>mouseOver</code>, <code>mouseMove</code>), and listens for changes in the DataSet (<code>add</code>, <code>update</code>, or <code>remove</code> items).
|
|
</p>
|
|
<div id="visualization"></div>
|
|
<p></p>
|
|
<div id="hoveredItem"></div>
|
|
<div id="log"></div>
|
|
|
|
<script type="text/javascript">
|
|
var items = new vis.DataSet([
|
|
{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 container = document.getElementById('visualization');
|
|
var options = {
|
|
editable: true
|
|
};
|
|
var timeline = new vis.Timeline(container, items, options);
|
|
|
|
timeline.on('rangechange', function (properties) {
|
|
logEvent('rangechange', properties);
|
|
});
|
|
|
|
timeline.on('rangechanged', function (properties) {
|
|
logEvent('rangechanged', properties);
|
|
});
|
|
|
|
timeline.on('select', function (properties) {
|
|
logEvent('select', properties);
|
|
});
|
|
|
|
timeline.on('itemover', function (properties) {
|
|
logEvent('itemover', properties);
|
|
setHoveredItem(properties.item);
|
|
});
|
|
|
|
timeline.on('itemout', function (properties) {
|
|
logEvent('itemout', properties);
|
|
setHoveredItem('none');
|
|
});
|
|
|
|
timeline.on('click', function (properties) {
|
|
logEvent('click', properties);
|
|
});
|
|
|
|
timeline.on('doubleClick', function (properties) {
|
|
logEvent('doubleClick', properties);
|
|
});
|
|
|
|
timeline.on('contextmenu', function (properties) {
|
|
logEvent('contextmenu', properties);
|
|
});
|
|
|
|
timeline.on('mouseDown', function (properties) {
|
|
logEvent('mouseDown', properties);
|
|
});
|
|
|
|
timeline.on('mouseUp', function (properties) {
|
|
logEvent('mouseUp', properties);
|
|
});
|
|
|
|
// other possible events:
|
|
|
|
// timeline.on('mouseOver', function (properties) {
|
|
// logEvent('mouseOver', properties);
|
|
// });
|
|
|
|
// timeline.on("mouseMove", function(properties) {
|
|
// logEvent('mouseMove', properties);
|
|
// });
|
|
|
|
items.on('*', function (event, properties) {
|
|
logEvent(event, properties);
|
|
});
|
|
|
|
function stringifyObject (object) {
|
|
if (!object) return;
|
|
var replacer = function(key, value) {
|
|
if (value && value.tagName) {
|
|
return "DOM Element";
|
|
} else {
|
|
return value;
|
|
}
|
|
}
|
|
return JSON.stringify(object, replacer)
|
|
}
|
|
|
|
function logEvent(event, properties) {
|
|
var log = document.getElementById('log');
|
|
var msg = document.createElement('div');
|
|
msg.innerHTML = 'event=' + JSON.stringify(event) + ', ' +
|
|
'properties=' + stringifyObject(properties);
|
|
log.firstChild ? log.insertBefore(msg, log.firstChild) : log.appendChild(msg);
|
|
}
|
|
|
|
function setHoveredItem(id) {
|
|
var hoveredItem = document.getElementById('hoveredItem');
|
|
hoveredItem.innerHTML = 'hoveredItem=' + id;
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|