example03_performance.html 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <html>
  2. <head>
  3. <title>Timeline demo</title>
  4. <style>
  5. body {font: 10pt arial;}
  6. </style>
  7. <script type="text/javascript" src="http://www.google.com/jsapi"></script>
  8. <script type="text/javascript" src="../timeline.js"></script>
  9. <link rel="stylesheet" type="text/css" href="../timeline.css">
  10. <script type="text/javascript">
  11. google.load("visualization", "1");
  12. // Set callback to run when API is loaded
  13. google.setOnLoadCallback(drawVisualization);
  14. var data;
  15. var options;
  16. var timeline;
  17. function go() {
  18. var eventnum = parseInt(document.getElementById("eventnum").value);
  19. createEvents(eventnum);
  20. }
  21. function createEvents(eventnum) {
  22. // clear the table
  23. data.removeRows(0, data.getNumberOfRows());
  24. // insert new events
  25. var startDate = new Date(2010,07,01)
  26. var date = new Date(startDate);
  27. for (var i = 0; i < eventnum; i++) {
  28. data.addRow([new Date(date), null, "event" + i]);
  29. date.setDate(date.getDate() + 1);
  30. }
  31. var endDate = new Date(date);
  32. timeline.setVisibleChartRange(startDate, endDate);
  33. // load the new data in the timeline
  34. timeline.redraw();
  35. }
  36. // Called when the Visualization API is loaded.
  37. function drawVisualization() {
  38. // Create and populate a data table.
  39. data = new google.visualization.DataTable();
  40. data.addColumn('datetime', 'start');
  41. data.addColumn('datetime', 'end');
  42. data.addColumn('string', 'content');
  43. // specify options
  44. options = {
  45. 'width': '100%',
  46. 'height': '300px',
  47. 'editable': true, // make the events dragable
  48. 'style': 'box'
  49. };
  50. // Instantiate our timeline object.
  51. timeline = new links.Timeline(document.getElementById('mytimeline'));
  52. // Make a callback function for the select event
  53. var onselect = function () {
  54. var sel = timeline.getSelection();
  55. if (sel.length) {
  56. if (sel[0].row != undefined) {
  57. var row = sel[0].row;
  58. document.getElementById("info").innerHTML += "event " + row + " selected<br>";
  59. // Note: you can retrieve the contents of the selected row with
  60. // data.getValue(row, 2);
  61. }
  62. }
  63. }
  64. // callback function for the change event
  65. var onchange = function () {
  66. var sel = timeline.getSelection();
  67. if (sel.length) {
  68. if (sel[0].row != undefined) {
  69. var row = sel[0].row;
  70. document.getElementById("info").innerHTML += "event " + row + " changed<br>";
  71. }
  72. }
  73. }
  74. // Add event listeners
  75. google.visualization.events.addListener(timeline, 'select', onselect);
  76. google.visualization.events.addListener(timeline, 'change', onchange);
  77. // Draw our timeline with the created data and options
  78. timeline.draw(data, options);
  79. // load initial data
  80. go();
  81. }
  82. </script>
  83. </head>
  84. <body>
  85. <p>You can test the performance of the timeline visualization here.
  86. Note that stacking events is relatively heavy.</p>
  87. <p>
  88. <form onsubmit='go(); return false;'>
  89. number of events: <input type="input" id="eventnum" value="50" size="5">
  90. <input type="submit" value="Go">
  91. </form>
  92. </p>
  93. <div id="mytimeline"></div>
  94. <br>
  95. <div id="info"></div>
  96. </body>
  97. </html>