
This is a simple template for showing Simile's Timeline widget:
/***USAGE: SimileTimeline() template is showing a time line of customizable eventsPARAMETERS:events : [{ start?, end?, title?, desc? }] - map list with time events descriptionscale1? : days, weeks, months, yearsheight? : int - height of timeline in pixels***/let events = $0 ?? $events;let scale1 = $1 ?? $scale1;let scale1Text = scale1 ? {days: "DAY", weeks: "WEEK", months: "MONTH", years: "YEAR"}[scale1] : "WEEK";let height = $2 ?? $height ?? 150;var res = "<data>";var i = 0;foreach( var event in events ) {let startStr = event["start"] && (String.length(event["start"]) > 0) ? " start=\""..event[ "start" ].."\"" : " ";let endStr = event["end"] && (String.length(event["end"]) > 0) ? " end=\""..event[ "end" ].."\"" : " ";var titleFix = event[ "title" ];if (titleFix && string.length(titleFix)>0) {let titleFix = string.replace(titleFix,"\"","*");let titleFix = string.replace(titleFix,"<","*");let titleFix = string.replace(titleFix,">","*");let titleFix = string.replace(titleFix,"&"," and ");let titleFix = string.replace(titleFix,"\'","");}var descFix = event["desc"];if (descFix && string.length( descFix )>0) {let descFix = string.replace(descFix,"<","\"");let descFix = string.replace(descFix,">","\"");let descFix = string.replace(descFix,"&"," and ");let descFix = string.escape( descFix );}let titleStr = event["title"] && (String.length(event["title"]) > 0) ? " title=\""..titleFix.."\"" : " ";let descStr = event["desc"] && (String.length(event["desc"]) > 0) ? descFix : "";let res ..= "<event"..startStr..endStr..titleStr..">"..descStr.."</event>";}let res ..= "</data>";let xmlData = web.xml( res );<html><head><script type="text/javascript" src="http://www.simile-widgets.org/timeli...js?bundle=true"></script> <script type="text/javascript">"//BEGIN: Event handler helper methodvar addEvent = (function( window, document ) {if ( document.addEventListener ) {return function( elem, type, cb ) {if ( (elem && !elem.length) || elem === window ) {elem.addEventListener(type, cb, false );}else if ( elem && elem.length ) {var len = elem.length;for ( var i = 0; i < len; i++ ) {addEvent( elem[i], type, cb );}}};}else if ( document.attachEvent ) {return function ( elem, type, cb ) {if ( (elem && !elem.length) || elem === window ) {elem.attachEvent( 'on' + type, function() { return cb.call(elem, window.event) } );}else if ( elem.length ) {var len = elem.length;for ( var i = 0; i < len; i++ ) {addEvent( elem[i], type, cb );}}};}})( this, document );//END: Event handler helper methodvar tl=null;var resizeTimerID;function loadTimeline() { var d = Timeline.DateTime.parseGregorianDateTime('1870');var eventSource = new Timeline.DefaultEventSource(0);var bandInfos = [Timeline.createBandInfo({width: '70%',intervalUnit: Timeline.DateTime."..scale1Text..",intervalPixels: 200,eventSource: eventSource }),Timeline.createBandInfo({overview: true,width: '30%',intervalUnit: Timeline.DateTime.YEAR,intervalPixels: 200,eventSource: eventSource }) ];bandInfos[1].syncWith = 0;bandInfos[1].highlight = true;tl = Timeline.create(document.getElementById('my-timeline'), bandInfos, Timeline.HORIZONTAL); txt = '"..xml.text(xmlData, _, _, true).."';if (window.DOMParser) {parser=new DOMParser();xmlDoc=parser.parseFromString(txt,'text/xml');} else { // Internet ExplorerxmlDoc=new ActiveXObject('Microsoft.XMLDOM');xmlDoc.async='false';xmlDoc.loadXML(txt);}eventSource.loadXML(xmlDoc,'"..page.uri.."');}function resizeTimeline() {if (resizeTimerID == null) {resizeTimerID = window.setTimeout(function() {resizeTimerID = null;if (tl!=null) { tl.layout(); }}, 500);} }addEvent( window, 'load', function() {loadTimeline();});addEvent( window, 'resize', function() {resizeTimeline();});"</script></head> <body><div id="my-timeline" style=("height: "..height.."px; border: 1px solid #aaa")/></body></html>
Note: Sorry that I'm using a quotation instead of Formatting block. But there is a bug and I cannot Paste in FCK Editor correctly the code. So you have to paste that code in a DekiScript block.
Parameters
| Name | Type | Description |
| events | [{start, end?, title?, desc?}] | List of events to be visualized |
| scale1 | String | days, weeks, monts, years - resolution of upper time bar |
| height | int | Height of timeline in pixels |
1. Copy upper template text;
2. Create new Template;
3. Name it "SimileTimeline";
4. Select DekiScript style;
5. Paste the text inside;
6. Save it and you are ready.
Example of using it:
{{ SimileTimeline( [{start: "July 1 2010", title: "Summer is comming"}, {start: "September 1 2010", end: "November 30 2010", title: "Authumn"}] ) }}
You are free to extend it. Simile has a lot of features to be added.
You could find more info at: http://www.simile-widgets.org/timeline/
| File | Version | Size | Modified | |
|---|---|---|---|---|
| ||||
Copyright © 2011 MindTouch, Inc. Powered by
This part of your instructions are confusing "(Copy this with until upper line. Latest empty box should be copied too. It is a <div> where the timeline is placed.)" can you elaborate a little. Not sure what to do?