2015-03-28 13:50:19 +00:00
<!DOCTYPE HTML>
< html >
< head >
< title > Timeline | Data serialization</ title >
< style >
body , html {
font-family : arial , sans-serif ;
font-size : 11 pt ;
}
textarea {
width : 800 px ;
height : 200 px ;
}
. buttons {
margin : 20 px 0 ;
}
. buttons input {
padding : 10 px ;
}
</ style >
2015-07-18 13:45:18 +01:00
< script src = "../../../dist/vis.js" ></ script >
< link href = "../../../dist/vis.css" rel = "stylesheet" type = "text/css" />
< script src = "../../googleAnalytics.js" ></ script >
2015-03-28 13:50:19 +00:00
</ head >
< body >
< h1 > Serialization and deserialization</ h1 >
< p > This example shows how to serialize and deserialize JSON data, and load this in the Timeline via a DataSet. Serialization and deserialization is needed when loading or saving data from a server.</ p >
< textarea id = "data" >
[
{"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"}
]
</ textarea >
< div class = "buttons" >
< input type = "button" id = "load" value = "↓ Load" title = "Load data from textarea into the Timeline" >
< input type = "button" id = "save" value = "↑ Save" title = "Save data from the Timeline into the textarea" >
</ div >
< div id = "visualization" ></ div >
< script >
var txtData = document . getElementById ( 'data' );
var btnLoad = document . getElementById ( 'load' );
var btnSave = document . getElementById ( 'save' );
// Create an empty DataSet.
// This DataSet is used for two way data binding with the Timeline.
var items = new vis . DataSet ();
// create a timeline
var container = document . getElementById ( 'visualization' );
var options = {
editable : true
};
var timeline = new vis . Timeline ( container , items , options );
function loadData () {
// get and deserialize the data
var data = JSON . parse ( txtData . value );
// update the data in the DataSet
//
// Note: when retrieving updated data from a server instead of a complete
// new set of data, one can simply update the existing data like:
//
// items.update(data);
//
// Existing items will then be updated, and new items will be added.
items . clear ();
items . add ( data );
// adjust the timeline window such that we see the loaded data
timeline . fit ();
}
btnLoad . onclick = loadData ;
function saveData () {
// get the data from the DataSet
// Note that we specify the output type of the fields start and end
// as ISODate, which is safely serializable. Other serializable types
// are Number (unix timestamp) or ASPDate.
//
// Alternatively, it is possible to configure the DataSet to convert
// the output automatically to ISODates like:
//
// var options = {
// type: {start: 'ISODate', end: 'ISODate'}
// };
// var items = new vis.DataSet(options);
// // now items.get() will automatically convert start and end to ISO dates.
//
var data = items . get ({
type : {
start : 'ISODate' ,
end : 'ISODate'
}
});
// serialize the data and put it in the textarea
txtData . value = JSON . stringify ( data , null , 2 );
}
btnSave . onclick = saveData ;
// load the initial data
loadData ();
</ script >
</ body >
</ html >