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.
166 lines
7.0 KiB
166 lines
7.0 KiB
<html>
|
|
<head>
|
|
<title>Timeline demo</title>
|
|
|
|
<style type="text/css">
|
|
body {font: 10pt arial;}
|
|
</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 = undefined;
|
|
var data = undefined;
|
|
|
|
google.load("visualization", "1");
|
|
|
|
// Set callback to run when API is loaded
|
|
google.setOnLoadCallback(drawVisualization);
|
|
|
|
function getSelectedRow() {
|
|
var row = undefined;
|
|
var sel = timeline.getSelection();
|
|
if (sel.length) {
|
|
if (sel[0].row != undefined) {
|
|
row = sel[0].row;
|
|
}
|
|
}
|
|
return row;
|
|
}
|
|
|
|
// 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
|
|
var options = {
|
|
width: "100%",
|
|
height: "300px",
|
|
editable: true // make the events dragable
|
|
};
|
|
|
|
// Instantiate our timeline object.
|
|
timeline = new links.Timeline(document.getElementById('mytimeline'), options);
|
|
|
|
// Make a callback function for the select event
|
|
var onselect = function (event) {
|
|
var row = getSelectedRow();
|
|
document.getElementById("info").innerHTML += "event " + row + " selected<br>";
|
|
// Note: you can retrieve the contents of the selected row with
|
|
// data.getValue(row, 2);
|
|
}
|
|
|
|
// callback function for the change event
|
|
var onchanged = function (event) {
|
|
// retrieve the changed row
|
|
var row = getSelectedRow();
|
|
|
|
if (row != undefined) {
|
|
// request approval from the user.
|
|
// You can choose your own approval mechanism here, for example
|
|
// send data to a server which responds with approved/denied
|
|
var approve = confirm("Are you sure you want to move the event?");
|
|
|
|
if (approve) {
|
|
document.getElementById("info").innerHTML += "event " + row + " changed<br>";
|
|
} else {
|
|
// new date NOT approved. cancel the change
|
|
timeline.cancelChange();
|
|
|
|
document.getElementById("info").innerHTML += "change of event " + row + " cancelled<br>";
|
|
}
|
|
}
|
|
};
|
|
|
|
// callback function for the delete event
|
|
var ondelete = function (event) {
|
|
// retrieve the row to be deleted
|
|
var row = getSelectedRow();
|
|
|
|
if (row != undefined) {
|
|
// request approval from the user.
|
|
// You can choose your own approval mechanism here, for example
|
|
// send data to a server which responds with approved/denied
|
|
var approve = confirm("Are you sure you want to delete the event?");
|
|
|
|
if (approve) {
|
|
document.getElementById("info").innerHTML += "event " + row + " deleted<br>";
|
|
} else {
|
|
// new date NOT approved. cancel the change
|
|
timeline.cancelDelete();
|
|
|
|
document.getElementById("info").innerHTML += "deleting event " + row + " cancelled<br>";
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
// callback function for adding an event
|
|
var onadd = function (event) {
|
|
// retrieve the row to be deleted
|
|
var row = getSelectedRow();
|
|
|
|
if (row != undefined) {
|
|
// request approval from the user.
|
|
// You can choose your own approval mechanism here, for example
|
|
// send data to a server which responds with approved/denied
|
|
var title = prompt("Enter a title for the new event", "New event");
|
|
|
|
if (title != undefined) {
|
|
data.setValue(row, 2, title);
|
|
document.getElementById("info").innerHTML += "event " + row + " created<br>";
|
|
timeline.redraw();
|
|
} else {
|
|
// cancel adding a new event
|
|
timeline.cancelAdd();
|
|
|
|
document.getElementById("info").innerHTML += "creating event " + row + " cancelled<br>";
|
|
}
|
|
}
|
|
}
|
|
|
|
// Add event listeners
|
|
google.visualization.events.addListener(timeline, 'select', onselect);
|
|
google.visualization.events.addListener(timeline, 'changed', onchanged);
|
|
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);
|
|
}
|
|
</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.
|
|
You will be asked for confirmation before changes are actually applied.</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>
|