123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- <html>
- <head>
- <title>Timeline demo</title>
- <style>
- body {font: 10pt arial;}
- #mytimeline {
- width: 100%;
- height: 300px;
- }
- </style>
- <script type="text/javascript" src="http://www.google.com/jsapi"></script>
- <script type="text/javascript" src="../timeline.js"></script>
- <link rel="stylesheet" type="text/css" href="../timeline.css">
-
- <script type="text/javascript">
- var timeline;
- var data;
-
- google.load("visualization", "1");
-
- // Set callback to run when API is loaded
- google.setOnLoadCallback(drawVisualization);
-
- // Called when the Visualization API is loaded.
- function drawVisualization() {
- // Create and populate a data table.
- data = new google.visualization.DataTable();
- data.addColumn('datetime', 'start');
- data.addColumn('datetime', 'end');
- data.addColumn('string', 'content');
- data.addRows([
- [new Date(2010,07,23), , '<div>Conversation</div><img src="img/comments-icon.png" style="width:32px; height:32px;">'],
- [new Date(2010,07,23,23,00,00), , '<div>Mail from boss</div><img src="img/mail-icon.png" style="width:32px; height:32px;">'],
- [new Date(2010,07,24,16,00,00), , 'Report'],
- [new Date(2010,07,26), new Date(2010,08,02), 'Traject A'],
- [new Date(2010,07,28), , '<div>Memo</div><img src="img/notes-edit-icon.png" style="width:48px; height:48px;">'],
- [new Date(2010,07,29), , '<div>Phone call</div><img src="img/Hardware-Mobile-Phone-icon.png" style="width:32px; height:32px;">'],
- [new Date(2010,07,31), new Date(2010,08,03), 'Traject B'],
- [new Date(2010,08,04,12,00,00), , '<div>Report</div><img src="img/attachment-icon.png" style="width:32px; height:32px;">']
- ]);
- // specify options
- options = {
- 'width': "100%",
- 'height': "300px",
- 'editable': true, // make the events dragable
- 'layout': "box"
- };
- // Instantiate our timeline object.
- timeline = new links.Timeline(document.getElementById('mytimeline'));
- // Make a callback function for the select event
- var onselect = function (event) {
- var row = undefined
- var sel = timeline.getSelection();
- if (sel.length) {
- if (sel[0].row != undefined) {
- var row = sel[0].row;
- }
- }
-
- if (row != undefined) {
- var content = data.getValue(row, 2);
- document.getElementById("txtContent").value = content;
- document.getElementById("info").innerHTML += "event " + row + " selected<br>";
-
- }
- }
- // callback function for the change event
- var onchange = function () {
- var sel = timeline.getSelection();
- if (sel.length) {
- if (sel[0].row != undefined) {
- var row = sel[0].row;
- document.getElementById("info").innerHTML += "event " + row + " changed<br>";
- }
- }
- }
-
- // callback function for the delete event
- var ondelete = function () {
- var sel = timeline.getSelection();
- if (sel.length) {
- if (sel[0].row != undefined) {
- var row = sel[0].row;
- document.getElementById("info").innerHTML += "event " + row + " deleted<br>";
- }
- }
- }
-
- // callback function for the add event
- var onadd = function () {
- var count = data.getNumberOfRows();
- document.getElementById("info").innerHTML += "event " + (count-1) + " added<br>";
- }
-
- // Add event listeners
- google.visualization.events.addListener(timeline, 'select', onselect);
- google.visualization.events.addListener(timeline, 'change', onchange);
- google.visualization.events.addListener(timeline, 'delete', ondelete);
- google.visualization.events.addListener(timeline, 'add', onadd);
- // Draw our timeline with the created data and options
- timeline.draw(data, options);
- }
- /**
- * Add a new event
- */
- function add() {
- var range = timeline.getVisibleChartRange();
- var start = new Date((range.start.valueOf() + range.end.valueOf()) / 2);
- var content = document.getElementById("txtContent").value;
- timeline.addItem({
- 'start': start,
- 'content': content
- });
-
- var count = data.getNumberOfRows();
- timeline.setSelection([{
- 'row': count-1
- }]);
- }
- /**
- * Change the content of the currently selected event
- */
- function change() {
- // retrieve the selected row
- var sel = timeline.getSelection();
- if (sel.length) {
- if (sel[0].row != undefined) {
- var row = sel[0].row;
- }
- }
- if (row != undefined) {
- var content = document.getElementById("txtContent").value;
- timeline.changeItem(row, {
- 'content': content
- // Note: start, end, and group can be added here too.
- });
- } else {
- alert("First select an event, then press remove again");
- }
- }
- /**
- * Delete the currently selected event
- */
- function doDelete() {
- // retrieve the selected row
- var sel = timeline.getSelection();
- if (sel.length) {
- if (sel[0].row != undefined) {
- var row = sel[0].row;
- }
- }
- if (row != undefined) {
- timeline.deleteItem(row);
- } else {
- alert("First select an event, then press remove again");
- }
- }
- </script>
- </head>
- <body>
- <p>This page demonstrates the timeline visualization.</p>
- <p>Click and drag to move the timeline, scroll to zoom the timeline. Click and drag events to change there date.</p>
-
- <p>
- <input type="text" value="New text" id="txtContent">
- <input type="button" value="Add" title="Add new event" onclick="add();">
- <input type="button" value="Change" title="Change content of selected event" onclick="change();">
- <input type="button" value="Delete" title="Delete selected event" onclick="doDelete();">
- </p>
- <div id="mytimeline"></div>
- <!-- Information about where the used icons come from -->
- <p style="color:gray; font-size:10px; font-style:italic;">
- Icons by <a href="http://dryicons.com" target="_blank" title="Aesthetica 2 Icons by DryIcons" style="color:gray;" >DryIcons</a>
- and <a href="http://www.tpdkdesign.net" target="_blank" title="Refresh Cl Icons by TpdkDesign.net" style="color:gray;" >TpdkDesign.net</a>
- </p>
-
- <div id="info"></div>
- </body>
- </html>
|