<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Timeline | Select items</title>
|
|
|
|
<style>
|
|
body, html {
|
|
font-family: arial, sans-serif;
|
|
font-size: 11pt;
|
|
}
|
|
</style>
|
|
|
|
<script src="../../../dist/vis.js"></script>
|
|
<link href="../../../dist/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css" />
|
|
|
|
</head>
|
|
<body>
|
|
<h1>Set selection</h1>
|
|
<p style="max-width: 600px;">
|
|
Enter one or multiple ids of items, then press select to select the items. This demo uses the function <code>Timeline.setSelection(ids)</code>. Optionally, the window can be moved to the selected items.
|
|
</p>
|
|
|
|
<p>
|
|
Select item(s): <input type="text" id="selection" value="5, 6"><input type="button" id="select" value="Select"><br>
|
|
<label><input type="checkbox" id="focus" checked> Focus on selection</label>
|
|
</p>
|
|
<div id="visualization"></div>
|
|
|
|
<br/>
|
|
<p>If the height of the timeline is limited some items may be vertically offscreen. This demo uses <code>Timeline.setSelection(ids, {focus: true})</code> and demonstrates that focusing on an item will
|
|
cause the timeline to scroll vertically to the item that is being focused on. You can use the buttons below select a random item either above or below the currently selected item.
|
|
</p>
|
|
<button id="prevFocus">Select Item Above</button>
|
|
<button id="nextFocus">Select Item Below</button>
|
|
<br/>
|
|
|
|
<p>If focusing on multiple items only the first item will be scrolled to. Try entering several ids and hitting <em>select</em>.</p>
|
|
<p>
|
|
Select item(s): <input type="text" id="selectionVertical" value="g1_5, g2_3"><input type="button" id="selectVertical" value="Select"><br>
|
|
</p>
|
|
|
|
<div id="vertical-visualization"></div>
|
|
|
|
<script>
|
|
// create a dataset with items
|
|
// we specify the type of the fields `start` and `end` here to be strings
|
|
// containing an ISO date. The fields will be outputted as ISO dates
|
|
// automatically getting data from the DataSet via items.get().
|
|
var items = new vis.DataSet({
|
|
type: { start: 'ISODate', end: 'ISODate' }
|
|
});
|
|
|
|
// add items to the DataSet
|
|
items.add([
|
|
{id: 1, content: 'item 1<br>start', start: '2014-01-23'},
|
|
{id: 2, content: 'item 2', start: '2014-01-18'},
|
|
{id: 3, content: 'item 3', start: '2014-01-21'},
|
|
{id: 4, content: 'item 4', start: '2014-01-19', end: '2014-01-24'},
|
|
{id: 5, content: 'item 5', start: '2014-01-28', type:'point'},
|
|
{id: 6, content: 'item 6', start: '2014-01-26'}
|
|
]);
|
|
|
|
var container = document.getElementById('visualization');
|
|
var options = {
|
|
editable: true
|
|
};
|
|
|
|
var timeline = new vis.Timeline(container, items, options);
|
|
|
|
var selection = document.getElementById('selection');
|
|
var select = document.getElementById('select');
|
|
var focus = document.getElementById('focus');
|
|
select.onclick = function () {
|
|
var ids = selection.value.split(',').map(function (value) {
|
|
return value.trim();
|
|
});
|
|
timeline.setSelection(ids, {focus: focus.checked});
|
|
};
|
|
|
|
function getRandomInt(min, max) {
|
|
min = Math.ceil(min);
|
|
max = Math.floor(max);
|
|
return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
|
|
};
|
|
|
|
// Vertical scroll example
|
|
var groups = [];
|
|
var items = [];
|
|
var groupItems = {};
|
|
|
|
for (var g = 0; g < 10; g++) {
|
|
groups.push({
|
|
id: g,
|
|
content: "Group " + g
|
|
});
|
|
|
|
groupItems[g] = [];
|
|
|
|
for (var i = 0; i < 30; i++) {
|
|
items.push({
|
|
id: "g" + g + "_" + i,
|
|
content: "g" + g + "_" + i,
|
|
group: g,
|
|
start: "2014-" + (g + 1) + "-" + getRandomInt(1, 20)
|
|
});
|
|
|
|
groupItems[g].push(items[items.length - 1]);
|
|
}
|
|
}
|
|
|
|
var container2 = document.getElementById('vertical-visualization');
|
|
var options = {
|
|
editable: false,
|
|
stack: true,
|
|
height: 300,
|
|
verticalScroll: true,
|
|
groupOrder: 'id'
|
|
};
|
|
|
|
var timeline2 = new vis.Timeline(container2, items, groups, options);
|
|
|
|
var groupIndex = 0;
|
|
var itemIndex = 0;
|
|
|
|
var moveToItem = function(direction) {
|
|
itemIndex += direction;
|
|
groupIndex += direction;
|
|
|
|
if (groupIndex < 0) {
|
|
groupIndex = groups.length - 1;
|
|
} else if (groupIndex >= groups.length) {
|
|
groupIndex = 0;
|
|
}
|
|
|
|
var items = groupItems[groupIndex];
|
|
|
|
if (itemIndex < 0) {
|
|
itemIndex = items.length - 1;
|
|
} else if (itemIndex >= items.length) {
|
|
itemIndex = 0;
|
|
}
|
|
|
|
var id = items[itemIndex].id;
|
|
|
|
timeline2.setSelection(id, {focus: true});
|
|
}
|
|
|
|
var nextFocus = document.getElementById('nextFocus');
|
|
var prevFocus = document.getElementById('prevFocus');
|
|
var selectionVertical = document.getElementById('selectionVertical');
|
|
var selectVertical = document.getElementById('selectVertical');
|
|
|
|
selectVertical.onclick = function () {
|
|
var ids = selectionVertical.value.split(',').map(function (value) {
|
|
return value.trim();
|
|
});
|
|
timeline2.setSelection(ids, {focus: focus.checked});
|
|
};
|
|
|
|
nextFocus.onclick = function() {
|
|
moveToItem(1);
|
|
};
|
|
|
|
prevFocus.onclick = function() {
|
|
moveToItem(-1);
|
|
};
|
|
|
|
// Set the initial focus
|
|
setTimeout(function() {
|
|
moveToItem(0);
|
|
}, 500);
|
|
</script>
|
|
</body>
|
|
</html>
|