|  | <!DOCTYPE HTML> | 
						
						
							|  | <html> | 
						
						
							|  | <head> | 
						
						
							|  |   <title>Timeline | performance</title> | 
						
						
							|  | 
 | 
						
						
							|  |   <style> | 
						
						
							|  |     body, html { | 
						
						
							|  |       font-family: arial, sans-serif; | 
						
						
							|  |       font-size: 11pt; | 
						
						
							|  |     } | 
						
						
							|  |   </style> | 
						
						
							|  | 
 | 
						
						
							|  |   <!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js --> | 
						
						
							|  |   <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script> | 
						
						
							|  | 
 | 
						
						
							|  |   <script src="../../../dist/vis.js"></script> | 
						
						
							|  |   <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" /> | 
						
						
							|  |   <script src="../../googleAnalytics.js"></script> | 
						
						
							|  | </head> | 
						
						
							|  | <body> | 
						
						
							|  | <p> | 
						
						
							|  |   Test the performance with a lot of items. The Timeline can load hundreds of thousands of items, but the performance of rendering them in the browser is limited. Rendering typically runs smooth for up to a few hundreds of items at once (you can set a <code>zoomMax</code> to prevent the user from zooming out too far). | 
						
						
							|  | </p> | 
						
						
							|  | <p> | 
						
						
							|  |     <label for="count">Number of items</label> | 
						
						
							|  |     <input id="count" value="10000"> | 
						
						
							|  |     <input id="draw" type="button" value="draw"> | 
						
						
							|  | </p> | 
						
						
							|  | <div id="visualization"></div> | 
						
						
							|  | 
 | 
						
						
							|  | <script> | 
						
						
							|  |   // create a dataset with items | 
						
						
							|  |   var now = moment().minutes(0).seconds(0).milliseconds(0); | 
						
						
							|  |   var items = new vis.DataSet({ | 
						
						
							|  |     type: {start: 'ISODate', end: 'ISODate' } | 
						
						
							|  |   }); | 
						
						
							|  | 
 | 
						
						
							|  |   // create data | 
						
						
							|  |   function createData() { | 
						
						
							|  |     var count = parseInt(document.getElementById('count').value) || 100; | 
						
						
							|  |     var newData = []; | 
						
						
							|  |       var start = now; | 
						
						
							|  |     for (var i = 0; i < count; i++) { | 
						
						
							|  |       newData.push({id: i, content: 'item ' + i, start: start + 24*3600*1000 * i}); // much much faster than now.clone add days | 
						
						
							|  |     } | 
						
						
							|  |     items.clear(); | 
						
						
							|  |     items.add(newData); | 
						
						
							|  |   } | 
						
						
							|  |   createData(); | 
						
						
							|  | 
 | 
						
						
							|  |   document.getElementById('draw').onclick = createData; | 
						
						
							|  | 
 | 
						
						
							|  |   var container = document.getElementById('visualization'); | 
						
						
							|  |   var options = { | 
						
						
							|  |     editable: true, | 
						
						
							|  |     start: now.clone().add(-3, 'days'), | 
						
						
							|  |     end: now.clone().add(11, 'days'), | 
						
						
							|  |     zoomMin: 1000 * 60 * 60 * 24,          // a day | 
						
						
							|  |     zoomMax: 1000 * 60 * 60 * 24 * 30 * 3  // three months | 
						
						
							|  |   }; | 
						
						
							|  | 
 | 
						
						
							|  |   var timeline = new vis.Timeline(container, items, options); | 
						
						
							|  | </script> | 
						
						
							|  | </body> | 
						
						
							|  | </html> |