|
|
<html> <head> <title>Timeline demo</title>
<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">
<style type="text/css"> body {font: 11pt arial;} input {font: 11pt arial;}
div.myParagraph { width: 200px; white-space: normal; } </style>
<script type="text/javascript"> google.load("visualization", "1");
// Set callback to run when API is loaded google.setOnLoadCallback(drawVisualization);
var timeline; var data;
// Called when the timelineualization 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');
function addRow(startDate, endDate, content, backgroundColor, borderColor) { // we make our own customized layout for the events
if (backgroundColor == undefined) backgroundColor = "yellow"; if (borderColor == undefined) borderColor = "gold";
var fill = endDate ? "pink" : "yellow"; var div = '<div style="background-color:' + backgroundColor + '; border:1px solid ' + borderColor + ';padding:5px;">' + content + '</div>';
data.addRows([ [startDate, endDate, div] ]); }
data.addRows([ [ new Date(2010, 7, 19), null, 'Some html<br>containing an image<br>' + '<img src="img/notes-edit-icon.png">' ], [ new Date(2010, 7, 23), null, '<h3>Lorem ipsum</h3>' + '<div class="myParagraph">' + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque eget sem arcu. Pellentesque habitant morbi tristique senectus et netus et.' + '</div>' ], [ new Date(2010, 7, 22), new Date(2010, 7, 30), 'This text contains some <span style="font-weight: bold;">bold</span> text,<br>' + 'some <span style="font-style: italic;">italic</span> text,<br>' + 'and some <span style="color: red;">red</span> text.' ], [ new Date(2010, 7, 29), null, '<div style="text-align:left;">There are a few limitations<br>' + '<ul>' + '<li>A box can have either non-wrapped text and a<br>flexible width, or a fixed width and wrapping text.</li>' + '<li>A range cannot automatically wrap text</li>' + '<li>The css styles <i>min-width</i> and <i>max-width</i><br>are not working well together with the timeline.</li>' + '</ul></div>' ] ]);
// specify options var options = { width: "75%", height: "auto", start: new Date(2010, 7, 17), end: new Date(2010, 8, 2), style: "box" // optional. choose "dot" (default), "box", or "none" };
// Instantiate our table object. timeline = new links.Timeline(document.getElementById('mytimeline'), options);
// Attach event listeners google.visualization.events.addListener(timeline, 'select', onselect); google.visualization.events.addListener(timeline, 'rangechange', onrangechange);
// Draw our table with the data we created locally. timeline.draw(data);
// Set the scale by hand. Autoscaling will be disabled. // Note: you can achieve the same by specifying scale and step in the // options for the timeline. timeline.setScale(links.Timeline.StepDate.SCALE.DAY, 1); }
// adjust start and end time. function setTime() { if (!timeline) return;
var newStartDate = new Date(document.getElementById('startDate').value); var newEndDate = new Date(document.getElementById('endDate').value); timeline.setVisibleChartRange(newStartDate, newEndDate); timeline.redraw(); }
function onrangechange() { // adjust the values of startDate and endDate var range = timeline.getVisibleChartRange(); document.getElementById('startDate').value = dateFormat(range.start); document.getElementById('endDate').value = dateFormat(range.end); }
function onselect() { var sel = timeline.getSelection(); if (sel.length) { if (sel[0].row != undefined) { var row = sel[0].row; alert("event " + row + " selected"); } } }
// Format given date as "yyyy-mm-dd hh:ii:ss" // @param datetime A Date object. function dateFormat(date) { var datetime = date.getFullYear() + "-" + ((date.getMonth() < 9) ? "0" : "") + (date.getMonth() + 1) + "-" + ((date.getDate() < 10) ? "0" : "") + date.getDate() + " " + ((date.getHours() < 10) ? "0" : "") + date.getHours() + ":" + ((date.getMinutes() < 10) ? "0" : "") + date.getMinutes() + ":" + ((date.getSeconds() < 10) ? "0" : "") + date.getSeconds(); return datetime; }
</script> </head> <body onresize="if (timeline) {timeline.redraw();}"> <p>This page demonstrates the timeline visualization.</p> <p>Click and drag to move the timeline, scroll to zoom the timeline.</p> <p> Starttime: <input type="text" id="startDate" value="2010-08-16"> Endtime: <input type="text" id="endDate" value="2010-09-07"> <input type="button" id="setStartDate" value="set" onclick="setTime();"> </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>
|