121 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE HTML>
 | |
| <html>
 | |
| <head>
 | |
|   <title>Timeline | Data serialization</title>
 | |
| 
 | |
|   <style>
 | |
|     body, html {
 | |
|       font-family: arial, sans-serif;
 | |
|       font-size: 11pt;
 | |
|     }
 | |
| 
 | |
|     textarea {
 | |
|       width: 800px;
 | |
|       height: 200px;
 | |
|     }
 | |
| 
 | |
|     .buttons {
 | |
|       margin: 20px 0;
 | |
|     }
 | |
| 
 | |
|     .buttons input {
 | |
|       padding: 10px;
 | |
|     }
 | |
|   </style>
 | |
| 
 | |
|   <script src="../../../dist/vis.js"></script>
 | |
|   <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" />
 | |
|   <script src="../../googleAnalytics.js"></script>
 | |
| </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> |