// DOM element where the Timeline will be attached
var container = document.getElementById("visualization");
// Create a DataSet (allows two way data-binding)
var items = new vis.DataSet([
{ id: 1, content: "item 1", start: new Date(2021, 11, 20) },
{ id: 2, content: "item 2", start: new Date(2021, 11, 14) },
{ id: 3, content: "item 3", start: new Date(2021, 11, 18) },
{ id: 4, content: "item 4", start: new Date(2021, 11, 16), end: new Date(2021, 11, 19) },
{ id: 5, content: "item 5", start: new Date(2021, 11, 25) },
{ id: 6, content: "item 6", start: new Date(2021, 11, 27), type: "point" },
]);
// Configuration for the Timeline
var options = {
editable: true,
onMoving: function(item, callback){
// Fetch the current item from the DataSet
let currentItem = items.get(item.id);
// Log the changes
console.log("Moving Start - From:", currentItem.start.toISOString(), "To:", item.start.toISOString());
if(item.end){
console.log("Moving End - From:", currentItem.end.toISOString(), "To:", item.end.toISOString());
}
// Return the item, updated if needed
callback(item);
},
onMove: function(item, callback){
// Fetch the current item from the DataSet
let currentItem = items.get(item.id);
// Log the changes
console.log("Moved Start - From:", currentItem.start.toISOString(), "To:", item.start.toISOString());
if(item.end){
console.log("Moved End - From:", currentItem.end.toISOString(), "To:", item.end.toISOString());
}
// Return the item, updated if needed
// This will result in the items DataSet being updated
callback(item);
},
};
// Create a Timeline
var timeline = new vis.Timeline(container, items, options);
body,
html {
font-family: sans-serif;
}
/* Restrict height of console in stackoverflow snippet */
.as-console-wrapper { max-height: 4em !important; }
<script src="https://visjs.github.io/vis-timeline/standalone/umd/vis-timeline-graph2d.min.js"></script>
<link href="https://visjs.github.io/vis-timeline/styles/vis-timeline-graph2d.min.css" rel="stylesheet"/>
<div id="visualization"></div>