You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
3.9 KiB

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