<!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>