diff --git a/CHANGES.txt b/CHANGES.txt index 68c9b6b..f102255 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -18,7 +18,20 @@ Version pre 2.4.0 * Added a test for timezones. -- David H * Turned the highlight rectangle of a band into an overview of the band it's synced with (i.e., indicating the visible offset and extent). -- David H rev 1921 - +* Added attribute synonyms for json event data files. The following attribute names are interchangable. + The shorter names enable smaller load files. If both are present for an event, the longer attribute name + wins. Rationale: decrease load times for large event data sets that use json. + Changed example2 to use the shorter names. + eid -- eventID + s -- start + e -- end + ls -- latestStart + ee -- earliestEnd + d -- description + de -- durationEvent + t -- title, + c -- classname + -- LarryK rev 1954 Version 2.3.1 * timeline-api.js now uses diff --git a/src/webapp/api/scripts/sources.js b/src/webapp/api/scripts/sources.js index d40fbde..1e05d97 100644 --- a/src/webapp/api/scripts/sources.js +++ b/src/webapp/api/scripts/sources.js @@ -98,35 +98,49 @@ Timeline.DefaultEventSource.prototype.loadJSON = function(data, url) { var parseDateTimeFunction = this._events.getUnit().getParser(dateTimeFormat); for (var i=0; i < data.events.length; i++){ - var event = data.events[i]; + var evnt = data.events[i]; + + // New feature: attribute synonyms. The following attribute names are interchangable. + // The shorter names enable smaller load files. + // eid -- eventID + // s -- start + // e -- end + // ls -- latestStart + // ee -- earliestEnd + // d -- description + // de -- durationEvent + // t -- title, + // c -- classname + // Fixing issue 33: // instant event: default (for JSON only) is false. Or use values from isDuration or durationEvent // isDuration was negated (see issue 33, so keep that interpretation - var instant = event.isDuration || (event.durationEvent != null && !event.durationEvent); - + var instant = evnt.isDuration || + (('durationEvent' in evnt) && !evnt.durationEvent) || + (('de' in evnt) && !evnt.de); var evt = new Timeline.DefaultEventSource.Event({ - id: ("id" in event) ? event.id : undefined, - start: parseDateTimeFunction(event.start), - end: parseDateTimeFunction(event.end), - latestStart: parseDateTimeFunction(event.latestStart), - earliestEnd: parseDateTimeFunction(event.earliestEnd), + id: ("id" in evnt) ? evnt.id : undefined, + start: parseDateTimeFunction(evnt.start || evnt.s), + end: parseDateTimeFunction(evnt.end || evnt.e), + latestStart: parseDateTimeFunction(evnt.latestStart || evnt.ls), + earliestEnd: parseDateTimeFunction(evnt.earliestEnd || evnt.ee), instant: instant, - text: event.title, - description: event.description, - image: this._resolveRelativeURL(event.image, base), - link: this._resolveRelativeURL(event.link , base), - icon: this._resolveRelativeURL(event.icon , base), - color: event.color, - textColor: event.textColor, - hoverText: event.hoverText, - classname: event.classname, - tapeImage: event.tapeImage, - tapeRepeat: event.tapeRepeat, - caption: event.caption, - eventID: event.eventID, - trackNum: event.trackNum + text: evnt.title || evnt.t, + description: evnt.description || evnt.d, + image: this._resolveRelativeURL(evnt.image, base), + link: this._resolveRelativeURL(evnt.link , base), + icon: this._resolveRelativeURL(evnt.icon , base), + color: evnt.color, + textColor: evnt.textColor, + hoverText: evnt.hoverText, + classname: evnt.classname || evnt.c, + tapeImage: evnt.tapeImage, + tapeRepeat: evnt.tapeRepeat, + caption: evnt.caption, + eventID: evnt.eventID || evnt.eid, + trackNum: evnt.trackNum }); - evt._obj = event; + evt._obj = evnt; evt.getProperty = function(name) { return this._obj[name]; }; diff --git a/src/webapp/api/timeline-bundle.js b/src/webapp/api/timeline-bundle.js index a2d19cc..421d544 100644 --- a/src/webapp/api/timeline-bundle.js +++ b/src/webapp/api/timeline-bundle.js @@ -1,13 +1,13 @@  /* band.js */ -Timeline._Band=function(F,G,B){if(F.autoWidth&&typeof G.width=="string"){G.width=G.width.indexOf("%")>-1?0:parseInt(G.width); -}this._timeline=F; +Timeline._Band=function(B,G,C){if(B.autoWidth&&typeof G.width=="string"){G.width=G.width.indexOf("%")>-1?0:parseInt(G.width); +}this._timeline=B; this._bandInfo=G; -this._index=B; +this._index=C; this._locale=("locale" in G)?G.locale:Timeline.getDefaultLocale(); this._timeZone=("timeZone" in G)?G.timeZone:0; -this._labeller=("labeller" in G)?G.labeller:(("createLabeller" in F.getUnit())?F.getUnit().createLabeller(this._locale,this._timeZone):new Timeline.GregorianDateLabeller(this._locale,this._timeZone)); +this._labeller=("labeller" in G)?G.labeller:(("createLabeller" in B.getUnit())?B.getUnit().createLabeller(this._locale,this._timeZone):new Timeline.GregorianDateLabeller(this._locale,this._timeZone)); this._theme=G.theme; this._zoomIndex=("zoomIndex" in G)?G.zoomIndex:0; this._zoomSteps=("zoomSteps" in G)?G.zoomSteps:null; @@ -26,33 +26,33 @@ this._syncWithBandOrthogonalScrollHandler=function(H){A._onHighlightBandOrthogon }; this._selectorListener=function(H){A._onHighlightBandScroll(); }; -var D=this._timeline.getDocument().createElement("div"); -D.className="timeline-band-input"; -this._timeline.addDiv(D); +var E=this._timeline.getDocument().createElement("div"); +E.className="timeline-band-input"; +this._timeline.addDiv(E); this._keyboardInput=document.createElement("input"); this._keyboardInput.type="text"; -D.appendChild(this._keyboardInput); +E.appendChild(this._keyboardInput); SimileAjax.DOM.registerEventWithObject(this._keyboardInput,"keydown",this,"_onKeyDown"); SimileAjax.DOM.registerEventWithObject(this._keyboardInput,"keyup",this,"_onKeyUp"); this._div=this._timeline.getDocument().createElement("div"); -this._div.id="timeline-band-"+B; -this._div.className="timeline-band timeline-band-"+B; +this._div.id="timeline-band-"+C; +this._div.className="timeline-band timeline-band-"+C; this._timeline.addDiv(this._div); SimileAjax.DOM.registerEventWithObject(this._div,"mousedown",this,"_onMouseDown"); SimileAjax.DOM.registerEventWithObject(this._div,"mousemove",this,"_onMouseMove"); SimileAjax.DOM.registerEventWithObject(this._div,"mouseup",this,"_onMouseUp"); SimileAjax.DOM.registerEventWithObject(this._div,"mouseout",this,"_onMouseOut"); SimileAjax.DOM.registerEventWithObject(this._div,"dblclick",this,"_onDblClick"); -var E=this._theme!=null?this._theme.mouseWheel:"scroll"; -if(E==="zoom"||E==="scroll"||this._zoomSteps){if(SimileAjax.Platform.browser.isFirefox){SimileAjax.DOM.registerEventWithObject(this._div,"DOMMouseScroll",this,"_onMouseScroll"); +var F=this._theme!=null?this._theme.mouseWheel:"scroll"; +if(F==="zoom"||F==="scroll"||this._zoomSteps){if(SimileAjax.Platform.browser.isFirefox){SimileAjax.DOM.registerEventWithObject(this._div,"DOMMouseScroll",this,"_onMouseScroll"); }else{SimileAjax.DOM.registerEventWithObject(this._div,"mousewheel",this,"_onMouseScroll"); }}this._innerDiv=this._timeline.getDocument().createElement("div"); this._innerDiv.className="timeline-band-inner"; this._div.appendChild(this._innerDiv); this._ether=G.ether; -G.ether.initialize(this,F); +G.ether.initialize(this,B); this._etherPainter=G.etherPainter; -G.etherPainter.initialize(this,F); +G.etherPainter.initialize(this,B); this._eventSource=G.eventSource; if(this._eventSource){this._eventListener={onAddMany:function(){A._onAddMany(); },onClear:function(){A._onClear(); @@ -61,14 +61,14 @@ this._eventSource.addListener(this._eventListener); }this._eventPainter=G.eventPainter; this._eventTracksNeeded=0; this._eventTrackIncrement=0; -G.eventPainter.initialize(this,F); +G.eventPainter.initialize(this,B); this._decorators=("decorators" in G)?G.decorators:[]; -for(var C=0; -Cthis._eventTracksNeeded){this._eventTracksNeeded=B; +Timeline._Band.prototype.updateEventTrackInfo=function(A,B){this._eventTrackIncrement=B; +if(A>this._eventTracksNeeded){this._eventTracksNeeded=A; }}; Timeline._Band.prototype.checkAutoWidth=function(){if(!this._timeline.autoWidth){return ; -}var A=this._eventPainter.getType()=="overview"; -var C=A?this._theme.event.overviewTrack.autoWidthMargin:this._theme.event.track.autoWidthMargin; -var B=Math.ceil((this._eventTracksNeeded+C)*this._eventTrackIncrement); -B+=A?this._theme.event.overviewTrack.offset:this._theme.event.track.offset; +}var C=this._eventPainter.getType()=="overview"; +var A=C?this._theme.event.overviewTrack.autoWidthMargin:this._theme.event.track.autoWidthMargin; +var B=Math.ceil((this._eventTracksNeeded+A)*this._eventTrackIncrement); +B+=C?this._theme.event.overviewTrack.offset:this._theme.event.track.offset; var D=this._bandInfo; if(B!=D.width){D.width=B; }}; @@ -209,33 +209,33 @@ Timeline._Band.prototype.getViewOrthogonalOffset=function(){return this._viewOrt }; Timeline._Band.prototype.setViewOrthogonalOffset=function(A){this._viewOrthogonalOffset=Math.max(0,A); }; -Timeline._Band.prototype.createLayerDiv=function(D,B){var C=this._timeline.getDocument().createElement("div"); -C.className="timeline-band-layer"+(typeof B=="string"?(" "+B):""); -C.style.zIndex=D; -this._innerDiv.appendChild(C); -var A=this._timeline.getDocument().createElement("div"); -A.className="timeline-band-layer-inner"; -if(SimileAjax.Platform.browser.isIE){A.style.cursor="move"; -}else{A.style.cursor="-moz-grab"; -}C.appendChild(A); -return A; +Timeline._Band.prototype.createLayerDiv=function(C,A){var D=this._timeline.getDocument().createElement("div"); +D.className="timeline-band-layer"+(typeof A=="string"?(" "+A):""); +D.style.zIndex=C; +this._innerDiv.appendChild(D); +var B=this._timeline.getDocument().createElement("div"); +B.className="timeline-band-layer-inner"; +if(SimileAjax.Platform.browser.isIE){B.style.cursor="move"; +}else{B.style.cursor="-moz-grab"; +}D.appendChild(B); +return B; }; Timeline._Band.prototype.removeLayerDiv=function(A){this._innerDiv.removeChild(A.parentNode); }; -Timeline._Band.prototype.scrollToCenter=function(B,C){var A=this._ether.dateToPixelOffset(B); -if(A<-this._viewLength/2){this.setCenterVisibleDate(this.pixelOffsetToDate(A+this._viewLength)); -}else{if(A>3*this._viewLength/2){this.setCenterVisibleDate(this.pixelOffsetToDate(A-this._viewLength)); -}}this._autoScroll(Math.round(this._viewLength/2-this._ether.dateToPixelOffset(B)),C); +Timeline._Band.prototype.scrollToCenter=function(A,C){var B=this._ether.dateToPixelOffset(A); +if(B<-this._viewLength/2){this.setCenterVisibleDate(this.pixelOffsetToDate(B+this._viewLength)); +}else{if(B>3*this._viewLength/2){this.setCenterVisibleDate(this.pixelOffsetToDate(B-this._viewLength)); +}}this._autoScroll(Math.round(this._viewLength/2-this._ether.dateToPixelOffset(A)),C); }; Timeline._Band.prototype.showBubbleForEvent=function(C){var A=this.getEventSource().getEvent(C); if(A){var B=this; this.scrollToCenter(A.getStart(),function(){B._eventPainter.showBubble(A); }); }}; -Timeline._Band.prototype.zoom=function(F,A,E,C){if(!this._zoomSteps){return ; +Timeline._Band.prototype.zoom=function(C,A,F,E){if(!this._zoomSteps){return ; }A+=this._viewOffset; var D=this._ether.pixelOffsetToDate(A); -var B=this._ether.zoom(F); +var B=this._ether.zoom(C); this._etherPainter.zoom(B); this._moveEther(Math.round(-this._ether.dateToPixelOffset(D))); this._moveEther(A); @@ -258,33 +258,33 @@ Timeline._Band.prototype._onMouseUp=function(B,A,C){this._dragging=false; this._keyboardInput.focus(); this._bounceBack(); }; -Timeline._Band.prototype._onMouseOut=function(B,A,D){var C=SimileAjax.DOM.getEventRelativeCoordinates(A,B); -C.x+=this._viewOffset; -if(C.x<0||C.x>B.offsetWidth||C.y<0||C.y>B.offsetHeight){this._dragging=false; +Timeline._Band.prototype._onMouseOut=function(C,B,D){var A=SimileAjax.DOM.getEventRelativeCoordinates(B,C); +A.x+=this._viewOffset; +if(A.x<0||A.x>C.offsetWidth||A.y<0||A.y>C.offsetHeight){this._dragging=false; this._bounceBack(); }}; -Timeline._Band.prototype._onMouseScroll=function(G,I,E){var A=new Date(); +Timeline._Band.prototype._onMouseScroll=function(G,H,B){var A=new Date(); A=A.getTime(); if(!this._lastScrollTime||((A-this._lastScrollTime)>50)){this._lastScrollTime=A; -var H=0; -if(I.wheelDelta){H=I.wheelDelta/120; -}else{if(I.detail){H=-I.detail/3; +var I=0; +if(H.wheelDelta){I=H.wheelDelta/120; +}else{if(H.detail){I=-H.detail/3; }}var F=this._theme.mouseWheel; -if(this._zoomSteps||F==="zoom"){var D=SimileAjax.DOM.getEventRelativeCoordinates(I,G); -if(H!=0){var C; -if(H>0){C=true; -}if(H<0){C=false; -}this._timeline.zoom(C,D.x,D.y,G); -}}else{if(F==="scroll"){var B=50*(H<0?-1:1); -this._moveEther(B); -}}}if(I.stopPropagation){I.stopPropagation(); -}I.cancelBubble=true; -if(I.preventDefault){I.preventDefault(); -}I.returnValue=false; -}; -Timeline._Band.prototype._onDblClick=function(B,A,D){var C=SimileAjax.DOM.getEventRelativeCoordinates(A,B); -var E=C.x-(this._viewLength/2-this._viewOffset); -this._autoScroll(-E); +if(this._zoomSteps||F==="zoom"){var E=SimileAjax.DOM.getEventRelativeCoordinates(H,G); +if(I!=0){var D; +if(I>0){D=true; +}if(I<0){D=false; +}this._timeline.zoom(D,E.x,E.y,G); +}}else{if(F==="scroll"){var C=50*(I<0?-1:1); +this._moveEther(C); +}}}if(H.stopPropagation){H.stopPropagation(); +}H.cancelBubble=true; +if(H.preventDefault){H.preventDefault(); +}H.returnValue=false; +}; +Timeline._Band.prototype._onDblClick=function(C,B,E){var A=SimileAjax.DOM.getEventRelativeCoordinates(B,C); +var D=A.x-(this._viewLength/2-this._viewOffset); +this._autoScroll(-D); }; Timeline._Band.prototype._onKeyDown=function(B,A,C){if(!this._dragging){switch(A.keyCode){case 27:break; case 37:case 38:this._scrollSpeed=Math.min(50,Math.abs(this._scrollSpeed*1.05)); @@ -360,17 +360,17 @@ Timeline._Band.prototype._onAddMany=function(){this._paintEvents(); }; Timeline._Band.prototype._onClear=function(){this._paintEvents(); }; -Timeline._Band.prototype._positionHighlight=function(){if(this._syncWithBand){var C=this._syncWithBand.getMinVisibleDate(); -var G=this._syncWithBand.getMaxVisibleDate(); -if(this._highlight){var H=0; -var F=1; -var B=this._syncWithBand.getEventPainter(); -if("supportsOrthogonalScrolling" in B&&B.supportsOrthogonalScrolling()){var E=B.getOrthogonalExtent(); -var D=this._syncWithBand.getViewWidth(); -var A=Math.max(D,E); -F=D/A; -H=-this._syncWithBand.getViewOrthogonalOffset()/A; -}this._etherPainter.setHighlight(C,G,H,F); +Timeline._Band.prototype._positionHighlight=function(){if(this._syncWithBand){var F=this._syncWithBand.getMinVisibleDate(); +var H=this._syncWithBand.getMaxVisibleDate(); +if(this._highlight){var G=0; +var B=1; +var A=this._syncWithBand.getEventPainter(); +if("supportsOrthogonalScrolling" in A&&A.supportsOrthogonalScrolling()){var D=A.getOrthogonalExtent(); +var C=this._syncWithBand.getViewWidth(); +var E=Math.max(C,D); +B=C/E; +G=-this._syncWithBand.getViewOrthogonalOffset()/E; +}this._etherPainter.setHighlight(F,H,G,B); }}}; Timeline._Band.prototype._recenterDiv=function(){this._viewOffset=-this._viewLength*(Timeline._Band.SCROLL_MULTIPLES-1)/2; if(this._timeline.isHorizontal()){this._div.style.left=this._viewOffset+"px"; @@ -412,24 +412,24 @@ A._fireOnOrthogonalScroll(); Timeline._Band.prototype._showScrollbar=function(){if(!this._supportsOrthogonalScrolling){return ; }var D=this._eventPainter.getOrthogonalExtent(); var C=this.getViewWidth(); -var A=Math.max(C,D); -var F=(C/A); -var E=Math.round(C*F)+"px"; -var G=Math.round(-this._viewOrthogonalOffset*F)+"px"; -var B=this._scrollBar.firstChild; +var F=Math.max(C,D); +var E=(C/F); +var B=Math.round(C*E)+"px"; +var G=Math.round(-this._viewOrthogonalOffset*E)+"px"; +var A=this._scrollBar.firstChild; if(this._timeline.isHorizontal()){this._scrollBar.style.top=this._div.style.top; this._scrollBar.style.height=this._div.style.height; this._scrollBar.style.right="0px"; this._scrollBar.style.width="10px"; -B.style.top=G; -B.style.height=E; +A.style.top=G; +A.style.height=B; }else{this._scrollBar.style.left=this._div.style.left; this._scrollBar.style.width=this._div.style.width; this._scrollBar.style.bottom="0px"; this._scrollBar.style.height="10px"; -B.style.left=G; -B.style.width=E; -}if(F>=1&&this._viewOrthogonalOffset==0){this._scrollBar.style.display="none"; +A.style.left=G; +A.style.width=B; +}if(E>=1&&this._viewOrthogonalOffset==0){this._scrollBar.style.display="none"; }else{this._scrollBar.style.display="block"; }}; Timeline._Band.prototype._hideScrollbar=function(){if(!this._supportsOrthogonalScrolling){return ; @@ -471,39 +471,39 @@ Timeline.CompactEventPainter.prototype.getHighlightMatcher=function(){return thi }; Timeline.CompactEventPainter.prototype.setHighlightMatcher=function(A){this._highlightMatcher=A; }; -Timeline.CompactEventPainter.prototype.paint=function(){var B=this._band.getEventSource(); -if(B==null){return ; +Timeline.CompactEventPainter.prototype.paint=function(){var D=this._band.getEventSource(); +if(D==null){return ; }this._eventIdToElmt={}; this._prepareForPainting(); var L=this._computeMetrics(); -var E=this._band.getMinDate(); -var A=this._band.getMaxDate(); +var G=this._band.getMinDate(); +var B=this._band.getMaxDate(); var O=(this._filterMatcher!=null)?this._filterMatcher:function(Q){return true; }; -var K=(this._highlightMatcher!=null)?this._highlightMatcher:function(Q){return -1; +var A=(this._highlightMatcher!=null)?this._highlightMatcher:function(Q){return -1; }; -var H=B.getEventIterator(E,A); +var J=D.getEventIterator(G,B); var M="stackConcurrentPreciseInstantEvents" in this._params&&typeof this._params.stackConcurrentPreciseInstantEvents=="object"; -var J="collapseConcurrentPreciseInstantEvents" in this._params&&this._params.collapseConcurrentPreciseInstantEvents; -if(J||M){var P=[]; -var C=null; -while(H.hasNext()){var N=H.next(); -if(O(N)){if(!N.isInstant()||N.isImprecise()){this.paintEvent(N,L,this._params.theme,K(N)); -}else{if(C!=null&&C.getStart().getTime()==N.getStart().getTime()){P[P.length-1].push(N); +var C="collapseConcurrentPreciseInstantEvents" in this._params&&this._params.collapseConcurrentPreciseInstantEvents; +if(C||M){var P=[]; +var E=null; +while(J.hasNext()){var N=J.next(); +if(O(N)){if(!N.isInstant()||N.isImprecise()){this.paintEvent(N,L,this._params.theme,A(N)); +}else{if(E!=null&&E.getStart().getTime()==N.getStart().getTime()){P[P.length-1].push(N); }else{P.push([N]); -C=N; -}}}}for(var F=0; -F0){b[O-1].end=Math.max(b[O-1].end,U); -}var J=E.height+V.iconBottomMargin+N; -while(J>0){b.push({start:B,end:U}); -J-=V.trackHeight; -}}var P=X.text; -var G=this._frc.computeSize(P); -var C=G.height+V.labelBottomMargin+N; -var F=U+G.width+V.labelRightMargin; -if(O>0){b[O-1].end=Math.max(b[O-1].end,F); -}for(var W=0; -C>0; -W++){if(O+W0){W[B-1].end=Math.max(W[B-1].end,U); +}var E=I.height+X.iconBottomMargin+C; +while(E>0){W.push({start:N,end:U}); +E-=X.trackHeight; +}}var P=a.text; +var H=this._frc.computeSize(P); +var M=H.height+X.labelBottomMargin+C; +var J=U+H.width+X.labelRightMargin; +if(B>0){W[B-1].end=Math.max(W[B-1].end,J); +}for(var Y=0; +M>0; +Y++){if(B+Y=0){var D=this._timeline.getDocument(); var G=E.event; @@ -872,33 +872,33 @@ F.style.top=(C.top-2)+"px"; F.style.height=(C.height+4)+"px"; this._highlightLayer.appendChild(F); }}; -Timeline.CompactEventPainter.prototype._onClickMultiplePreciseInstantEvent=function(D,E,B){var F=SimileAjax.DOM.getPageCoordinates(D); -this._showBubble(F.left+Math.ceil(D.offsetWidth/2),F.top+Math.ceil(D.offsetHeight/2),B); -var C=[]; -for(var A=0; -A0){F=this._unit.later(F,this._startDate); -C=this._unit.earlier(C,this._endDate); -var D=this._band.dateToPixelOffset(F); -var K=this._band.dateToPixelOffset(C); -var I=this._timeline.getDocument(); -var H=function(){var L=I.createElement("table"); +var E=this._band.getMinDate(); +var A=this._band.getMaxDate(); +if(this._unit.compare(this._startDate,A)<0&&this._unit.compare(this._endDate,E)>0){E=this._unit.later(E,this._startDate); +A=this._unit.earlier(A,this._endDate); +var F=this._band.dateToPixelOffset(E); +var I=this._band.dateToPixelOffset(A); +var H=this._timeline.getDocument(); +var K=function(){var L=H.createElement("table"); L.insertRow(0).insertCell(0); return L; }; -var B=I.createElement("div"); +var B=H.createElement("div"); B.className="timeline-highlight-decorator"; if(this._cssClass){B.className+=" "+this._cssClass; }if(this._color!=null){B.style.backgroundColor=this._color; }if(this._opacity<100){SimileAjax.Graphics.setOpacity(B,this._opacity); }this._layerDiv.appendChild(B); -var J=H(); +var J=K(); J.className="timeline-highlight-label timeline-highlight-label-start"; -var G=J.rows[0].cells[0]; -G.innerHTML=this._startLabel; -if(this._cssClass){G.className="label_"+this._cssClass; +var C=J.rows[0].cells[0]; +C.innerHTML=this._startLabel; +if(this._cssClass){C.className="label_"+this._cssClass; }this._layerDiv.appendChild(J); -var A=H(); -A.className="timeline-highlight-label timeline-highlight-label-end"; -var E=A.rows[0].cells[0]; -E.innerHTML=this._endLabel; -if(this._cssClass){E.className="label_"+this._cssClass; -}this._layerDiv.appendChild(A); -if(this._timeline.isHorizontal()){B.style.left=D+"px"; -B.style.width=(K-D)+"px"; -J.style.right=(this._band.getTotalViewLength()-D)+"px"; +var G=K(); +G.className="timeline-highlight-label timeline-highlight-label-end"; +var D=G.rows[0].cells[0]; +D.innerHTML=this._endLabel; +if(this._cssClass){D.className="label_"+this._cssClass; +}this._layerDiv.appendChild(G); +if(this._timeline.isHorizontal()){B.style.left=F+"px"; +B.style.width=(I-F)+"px"; +J.style.right=(this._band.getTotalViewLength()-F)+"px"; J.style.width=(this._startLabel.length)+"em"; -A.style.left=K+"px"; -A.style.width=(this._endLabel.length)+"em"; -}else{B.style.top=D+"px"; -B.style.height=(K-D)+"px"; -J.style.bottom=D+"px"; +G.style.left=I+"px"; +G.style.width=(this._endLabel.length)+"em"; +}else{B.style.top=F+"px"; +B.style.height=(I-F)+"px"; +J.style.bottom=F+"px"; J.style.height="1.5px"; -A.style.top=K+"px"; -A.style.height="1.5px"; +G.style.top=I+"px"; +G.style.height="1.5px"; }}this._layerDiv.style.display="block"; }; Timeline.SpanHighlightDecorator.prototype.softPaint=function(){}; @@ -1001,8 +1001,8 @@ this._layerDiv.setAttribute("name","span-highlight-decorator"); this._layerDiv.style.display="none"; var C=this._band.getMinDate(); var E=this._band.getMaxDate(); -if(this._unit.compare(this._date,E)<0&&this._unit.compare(this._date,C)>0){var B=this._band.dateToPixelOffset(this._date); -var A=B-Math.round(this._width/2); +if(this._unit.compare(this._date,E)<0&&this._unit.compare(this._date,C)>0){var A=this._band.dateToPixelOffset(this._date); +var B=A-Math.round(this._width/2); var D=this._timeline.getDocument(); var F=D.createElement("div"); F.className="timeline-highlight-point-decorator"; @@ -1010,9 +1010,9 @@ F.className+=" "+this._cssClass; if(this._color!=null){F.style.backgroundColor=this._color; }if(this._opacity<100){SimileAjax.Graphics.setOpacity(F,this._opacity); }this._layerDiv.appendChild(F); -if(this._timeline.isHorizontal()){F.style.left=A+"px"; +if(this._timeline.isHorizontal()){F.style.left=B+"px"; F.style.width=this._width; -}else{F.style.top=A+"px"; +}else{F.style.top=B+"px"; F.style.height=this._width; }}this._layerDiv.style.display="block"; }; @@ -1052,22 +1052,22 @@ Timeline.DetailedEventPainter.prototype.getHighlightMatcher=function(){return th }; Timeline.DetailedEventPainter.prototype.setHighlightMatcher=function(A){this._highlightMatcher=A; }; -Timeline.DetailedEventPainter.prototype.paint=function(){var B=this._band.getEventSource(); -if(B==null){return ; +Timeline.DetailedEventPainter.prototype.paint=function(){var C=this._band.getEventSource(); +if(C==null){return ; }this._eventIdToElmt={}; this._prepareForPainting(); var I=this._params.theme.event; var G=Math.max(I.track.height,this._frc.getLineHeight()); var F={trackOffset:Math.round(this._band.getViewWidth()/2-G/2),trackHeight:G,trackGap:I.track.gap,trackIncrement:G+I.track.gap,icon:I.instant.icon,iconWidth:I.instant.iconWidth,iconHeight:I.instant.iconHeight,labelWidth:I.label.width}; -var C=this._band.getMinDate(); -var A=this._band.getMaxDate(); +var D=this._band.getMinDate(); +var B=this._band.getMaxDate(); var J=(this._filterMatcher!=null)?this._filterMatcher:function(K){return true; }; -var E=(this._highlightMatcher!=null)?this._highlightMatcher:function(K){return -1; +var A=(this._highlightMatcher!=null)?this._highlightMatcher:function(K){return -1; }; -var D=B.getEventReverseIterator(C,A); -while(D.hasNext()){var H=D.next(); -if(J(H)){this.paintEvent(H,F,this._params.theme,E(H)); +var E=C.getEventReverseIterator(D,B); +while(E.hasNext()){var H=E.next(); +if(J(H)){this.paintEvent(H,F,this._params.theme,A(H)); }}this._highlightLayer.style.display="block"; this._lineLayer.style.display="block"; this._eventLayer.style.display="block"; @@ -1103,174 +1103,174 @@ Timeline.DetailedEventPainter.prototype.paintInstantEvent=function(B,C,D,A){if(B Timeline.DetailedEventPainter.prototype.paintDurationEvent=function(B,C,D,A){if(B.isImprecise()){this.paintImpreciseDurationEvent(B,C,D,A); }else{this.paintPreciseDurationEvent(B,C,D,A); }}; -Timeline.DetailedEventPainter.prototype.paintPreciseInstantEvent=function(K,N,Q,O){var S=this._timeline.getDocument(); -var J=K.getText(); +Timeline.DetailedEventPainter.prototype.paintPreciseInstantEvent=function(L,P,S,Q){var T=this._timeline.getDocument(); +var J=L.getText(); +var G=L.getStart(); +var H=Math.round(this._band.dateToPixelOffset(G)); +var A=Math.round(H+P.iconWidth/2); +var C=Math.round(H-P.iconWidth/2); +var E=this._frc.computeSize(J); +var F=this._findFreeTrackForSolid(A,H); +var B=this._paintEventIcon(L,F,C,P,S); +var K=A+S.event.label.offsetFromLine; +var O=F; +var D=this._getTrackData(F); +if(Math.min(D.solid,D.text)>=K+E.width){D.solid=C; +D.text=K; +}else{D.solid=C; +K=H+S.event.label.offsetFromLine; +O=this._findFreeTrackForText(F,K+E.width,function(U){U.line=H-2; +}); +this._getTrackData(O).text=C; +this._paintEventLine(L,H,F,O,P,S); +}var N=Math.round(P.trackOffset+O*P.trackIncrement+P.trackHeight/2-E.height/2); +var R=this._paintEventLabel(L,J,K,N,E.width,E.height,S); +var M=this; +var I=function(V,U,W){return M._onClickInstantEvent(B.elmt,U,L); +}; +SimileAjax.DOM.registerEvent(B.elmt,"mousedown",I); +SimileAjax.DOM.registerEvent(R.elmt,"mousedown",I); +this._createHighlightDiv(Q,B,S); +this._eventIdToElmt[L.getID()]=B.elmt; +}; +Timeline.DetailedEventPainter.prototype.paintImpreciseInstantEvent=function(O,S,W,T){var X=this._timeline.getDocument(); +var M=O.getText(); +var I=O.getStart(); +var U=O.getEnd(); +var K=Math.round(this._band.dateToPixelOffset(I)); +var B=Math.round(this._band.dateToPixelOffset(U)); +var A=Math.round(K+S.iconWidth/2); +var D=Math.round(K-S.iconWidth/2); +var G=this._frc.computeSize(M); +var H=this._findFreeTrackForSolid(B,K); +var E=this._paintEventTape(O,H,K,B,W.event.instant.impreciseColor,W.event.instant.impreciseOpacity,S,W); +var C=this._paintEventIcon(O,H,D,S,W); +var F=this._getTrackData(H); +F.solid=D; +var N=A+W.event.label.offsetFromLine; +var J=N+G.width; +var R; +if(J=T+G.width){F.solid=I; -F.text=T; -}else{F.solid=I; -T=C+Q.event.label.offsetFromLine; -P=this._findFreeTrackForText(D,T+G.width,function(U){U.line=C-2; +var R=K.getEnd(); +var F=Math.round(this._band.dateToPixelOffset(E)); +var A=Math.round(this._band.dateToPixelOffset(R)); +var C=this._frc.computeSize(I); +var D=this._findFreeTrackForSolid(A); +var P=K.getColor(); +P=P!=null?P:T.event.duration.color; +var B=this._paintEventTape(K,D,F,A,P,100,O,T); +var H=this._getTrackData(D); +H.solid=F; +var J=F+T.event.label.offsetFromLine; +var N=this._findFreeTrackForText(D,J+C.width,function(V){V.line=F-2; }); -this._getTrackData(P).text=I; -this._paintEventLine(K,C,D,P,N,Q); -}var R=Math.round(N.trackOffset+P*N.trackIncrement+N.trackHeight/2-G.height/2); -var M=this._paintEventLabel(K,J,T,R,G.width,G.height,Q); +this._getTrackData(N).text=F-2; +this._paintEventLine(K,F,D,N,O,T); +var M=Math.round(O.trackOffset+N*O.trackIncrement+O.trackHeight/2-C.height/2); +var S=this._paintEventLabel(K,I,J,M,C.width,C.height,T); var L=this; -var H=function(U,V,W){return L._onClickInstantEvent(B.elmt,V,K); +var G=function(W,V,X){return L._onClickDurationEvent(B.elmt,V,K); }; -SimileAjax.DOM.registerEvent(B.elmt,"mousedown",H); -SimileAjax.DOM.registerEvent(M.elmt,"mousedown",H); -this._createHighlightDiv(O,B,Q); +SimileAjax.DOM.registerEvent(B.elmt,"mousedown",G); +SimileAjax.DOM.registerEvent(S.elmt,"mousedown",G); +this._createHighlightDiv(Q,B,T); this._eventIdToElmt[K.getID()]=B.elmt; }; -Timeline.DetailedEventPainter.prototype.paintImpreciseInstantEvent=function(N,Q,V,R){var X=this._timeline.getDocument(); -var M=N.getText(); -var H=N.getStart(); -var S=N.getEnd(); -var E=Math.round(this._band.dateToPixelOffset(H)); -var B=Math.round(this._band.dateToPixelOffset(S)); -var A=Math.round(E+Q.iconWidth/2); -var L=Math.round(E-Q.iconWidth/2); -var J=this._frc.computeSize(M); -var F=this._findFreeTrackForSolid(B,E); -var G=this._paintEventTape(N,F,E,B,V.event.instant.impreciseColor,V.event.instant.impreciseOpacity,Q,V); -var C=this._paintEventIcon(N,F,L,Q,V); -var I=this._getTrackData(F); -I.solid=L; -var W=A+V.event.label.offsetFromLine; -var D=W+J.width; -var T; -if(DB&&(!(A)||C.line>A)){return D; +C++){if(CD&&(!(A)||B.line>A)){return C; }}else{this._lowerTracks.push({solid:Number.POSITIVE_INFINITY,text:Number.POSITIVE_INFINITY,line:Number.POSITIVE_INFINITY}); -return D; -}if(DB&&(!(A)||C.line>A)){return -1-D; +return C; +}if(CD&&(!(A)||B.line>A)){return -1-C; }}else{this._upperTracks.push({solid:Number.POSITIVE_INFINITY,text:Number.POSITIVE_INFINITY,line:Number.POSITIVE_INFINITY}); -return -1-D; +return -1-C; }}}; -Timeline.DetailedEventPainter.prototype._findFreeTrackForText=function(D,C,H){var F; -var G; -var B; -var J; -if(D<0){F=true; -B=-D; -G=this._findFreeUpperTrackForText(B,C); -J=-1-G; -}else{if(D>0){F=false; -B=D+1; -G=this._findFreeLowerTrackForText(B,C); -J=G; -}else{var A=this._findFreeUpperTrackForText(0,C); -var I=this._findFreeLowerTrackForText(1,C); -if(I-1<=A){F=false; -B=1; -G=I; -J=G; -}else{F=true; -B=0; -G=A; -J=-1-G; -}}}if(F){if(G==this._upperTracks.length){this._upperTracks.push({solid:Number.POSITIVE_INFINITY,text:Number.POSITIVE_INFINITY,line:Number.POSITIVE_INFINITY}); -}for(var E=B; -E0){B=false; +F=C+1; +E=this._findFreeLowerTrackForText(F,A); +H=E; +}else{var G=this._findFreeUpperTrackForText(0,A); +var J=this._findFreeLowerTrackForText(1,A); +if(J-1<=G){B=false; +F=1; +E=J; +H=E; +}else{B=true; +F=0; +E=G; +H=-1-E; +}}}if(B){if(E==this._upperTracks.length){this._upperTracks.push({solid:Number.POSITIVE_INFINITY,text:Number.POSITIVE_INFINITY,line:Number.POSITIVE_INFINITY}); +}for(var D=F; +D=C){break; }; Timeline.DetailedEventPainter.prototype._getTrackData=function(A){return(A<0)?this._upperTracks[-A-1]:this._lowerTracks[A]; }; -Timeline.DetailedEventPainter.prototype._paintEventLine=function(I,C,F,A,G,D){var H=Math.round(G.trackOffset+F*G.trackIncrement+G.trackHeight/2); -var J=Math.round(Math.abs(A-F)*G.trackIncrement); -var E="1px solid "+D.event.label.lineColor; +Timeline.DetailedEventPainter.prototype._paintEventLine=function(J,E,D,A,G,F){var H=Math.round(G.trackOffset+D*G.trackIncrement+G.trackHeight/2); +var I=Math.round(Math.abs(A-D)*G.trackIncrement); +var C="1px solid "+F.event.label.lineColor; var B=this._timeline.getDocument().createElement("div"); B.style.position="absolute"; -B.style.left=C+"px"; -B.style.width=D.event.label.offsetFromLine+"px"; -B.style.height=J+"px"; -if(F>A){B.style.top=(H-J)+"px"; -B.style.borderTop=E; +B.style.left=E+"px"; +B.style.width=F.event.label.offsetFromLine+"px"; +B.style.height=I+"px"; +if(D>A){B.style.top=(H-I)+"px"; +B.style.borderTop=C; }else{B.style.top=H+"px"; -B.style.borderBottom=E; -}B.style.borderLeft=E; +B.style.borderBottom=C; +}B.style.borderLeft=C; this._lineLayer.appendChild(B); }; -Timeline.DetailedEventPainter.prototype._paintEventIcon=function(I,E,B,F,D){var H=I.getIcon(); +Timeline.DetailedEventPainter.prototype._paintEventIcon=function(J,B,C,F,E){var H=J.getIcon(); H=H!=null?H:F.icon; -var J=F.trackOffset+E*F.trackIncrement+F.trackHeight/2; -var G=Math.round(J-F.iconHeight/2); -var C=SimileAjax.Graphics.createTranslucentImage(H); +var G=F.trackOffset+B*F.trackIncrement+F.trackHeight/2; +var I=Math.round(G-F.iconHeight/2); +var D=SimileAjax.Graphics.createTranslucentImage(H); var A=this._timeline.getDocument().createElement("div"); A.style.position="absolute"; -A.style.left=B+"px"; -A.style.top=G+"px"; -A.appendChild(C); +A.style.left=C+"px"; +A.style.top=I+"px"; +A.appendChild(D); A.style.cursor="pointer"; -if(I._title!=null){A.title=I._title; +if(J._title!=null){A.title=J._title; }this._eventLayer.appendChild(A); -return{left:B,top:G,width:F.iconWidth,height:F.iconHeight,elmt:A}; +return{left:C,top:I,width:F.iconWidth,height:F.iconHeight,elmt:A}; }; -Timeline.DetailedEventPainter.prototype._paintEventLabel=function(H,I,B,F,A,J,D){var G=this._timeline.getDocument(); -var K=G.createElement("div"); +Timeline.DetailedEventPainter.prototype._paintEventLabel=function(I,J,C,F,A,G,E){var H=this._timeline.getDocument(); +var K=H.createElement("div"); K.style.position="absolute"; -K.style.left=B+"px"; +K.style.left=C+"px"; K.style.width=A+"px"; K.style.top=F+"px"; -K.style.height=J+"px"; -K.style.backgroundColor=D.event.label.backgroundColor; -SimileAjax.Graphics.setOpacity(K,D.event.label.backgroundOpacity); -this._eventLayer.appendChild(K); -var E=G.createElement("div"); -E.style.position="absolute"; -E.style.left=B+"px"; -E.style.width=A+"px"; -E.style.top=F+"px"; -E.innerHTML=I; -E.style.cursor="pointer"; -if(H._title!=null){E.title=H._title; -}var C=H.getTextColor(); -if(C==null){C=H.getColor(); -}if(C!=null){E.style.color=C; -}this._eventLayer.appendChild(E); -return{left:B,top:F,width:A,height:J,elmt:E}; -}; -Timeline.DetailedEventPainter.prototype._paintEventTape=function(L,H,E,A,C,G,I,F){var B=A-E; -var D=F.event.tape.height; -var M=I.trackOffset+H*I.trackIncrement+I.trackHeight/2; -var J=Math.round(M-D/2); -var K=this._timeline.getDocument().createElement("div"); -K.style.position="absolute"; -K.style.left=E+"px"; -K.style.width=B+"px"; -K.style.top=J+"px"; -K.style.height=D+"px"; -K.style.backgroundColor=C; -K.style.overflow="hidden"; -K.style.cursor="pointer"; -if(L._title!=null){K.title=L._title; -}SimileAjax.Graphics.setOpacity(K,G); +K.style.height=G+"px"; +K.style.backgroundColor=E.event.label.backgroundColor; +SimileAjax.Graphics.setOpacity(K,E.event.label.backgroundOpacity); this._eventLayer.appendChild(K); -return{left:E,top:J,width:B,height:D,elmt:K}; +var B=H.createElement("div"); +B.style.position="absolute"; +B.style.left=C+"px"; +B.style.width=A+"px"; +B.style.top=F+"px"; +B.innerHTML=J; +B.style.cursor="pointer"; +if(I._title!=null){B.title=I._title; +}var D=I.getTextColor(); +if(D==null){D=I.getColor(); +}if(D!=null){B.style.color=D; +}this._eventLayer.appendChild(B); +return{left:C,top:F,width:A,height:G,elmt:B}; +}; +Timeline.DetailedEventPainter.prototype._paintEventTape=function(L,B,D,A,G,C,I,H){var F=A-D; +var E=H.event.tape.height; +var K=I.trackOffset+B*I.trackIncrement+I.trackHeight/2; +var J=Math.round(K-E/2); +var M=this._timeline.getDocument().createElement("div"); +M.style.position="absolute"; +M.style.left=D+"px"; +M.style.width=F+"px"; +M.style.top=J+"px"; +M.style.height=E+"px"; +M.style.backgroundColor=G; +M.style.overflow="hidden"; +M.style.cursor="pointer"; +if(L._title!=null){M.title=L._title; +}SimileAjax.Graphics.setOpacity(M,C); +this._eventLayer.appendChild(M); +return{left:D,top:J,width:F,height:E,elmt:M}; }; Timeline.DetailedEventPainter.prototype._createHighlightDiv=function(A,C,E){if(A>=0){var D=this._timeline.getDocument(); var G=E.event; @@ -1371,37 +1371,37 @@ F.style.height=(C.height+4)+"px"; F.style.background=B; this._highlightLayer.appendChild(F); }}; -Timeline.DetailedEventPainter.prototype._onClickInstantEvent=function(B,C,A){var D=SimileAjax.DOM.getPageCoordinates(B); -this._showBubble(D.left+Math.ceil(B.offsetWidth/2),D.top+Math.ceil(B.offsetHeight/2),A); -this._fireOnSelect(A.getID()); -C.cancelBubble=true; -SimileAjax.DOM.cancelEvent(C); +Timeline.DetailedEventPainter.prototype._onClickInstantEvent=function(C,A,B){var D=SimileAjax.DOM.getPageCoordinates(C); +this._showBubble(D.left+Math.ceil(C.offsetWidth/2),D.top+Math.ceil(C.offsetHeight/2),B); +this._fireOnSelect(B.getID()); +A.cancelBubble=true; +SimileAjax.DOM.cancelEvent(A); return false; }; -Timeline.DetailedEventPainter.prototype._onClickDurationEvent=function(D,C,B){if("pageX" in C){var A=C.pageX; -var F=C.pageY; -}else{var E=SimileAjax.DOM.getPageCoordinates(D); -var A=C.offsetX+E.left; -var F=C.offsetY+E.top; -}this._showBubble(A,F,B); -this._fireOnSelect(B.getID()); -C.cancelBubble=true; -SimileAjax.DOM.cancelEvent(C); +Timeline.DetailedEventPainter.prototype._onClickDurationEvent=function(F,B,C){if("pageX" in B){var A=B.pageX; +var E=B.pageY; +}else{var D=SimileAjax.DOM.getPageCoordinates(F); +var A=B.offsetX+D.left; +var E=B.offsetY+D.top; +}this._showBubble(A,E,C); +this._fireOnSelect(C.getID()); +B.cancelBubble=true; +SimileAjax.DOM.cancelEvent(B); return false; }; Timeline.DetailedEventPainter.prototype.showBubble=function(A){var B=this._eventIdToElmt[A.getID()]; if(B){var C=SimileAjax.DOM.getPageCoordinates(B); this._showBubble(C.left+B.offsetWidth/2,C.top+B.offsetHeight/2,A); }}; -Timeline.DetailedEventPainter.prototype._showBubble=function(A,E,B){var D=document.createElement("div"); -var C=this._params.theme.event.bubble; -B.fillInfoBubble(D,this._params.theme,this._band.getLabeller()); +Timeline.DetailedEventPainter.prototype._showBubble=function(B,E,C){var D=document.createElement("div"); +var A=this._params.theme.event.bubble; +C.fillInfoBubble(D,this._params.theme,this._band.getLabeller()); SimileAjax.WindowManager.cancelPopups(); -SimileAjax.Graphics.createBubbleForContentAndPoint(D,A,E,C.width,null,C.maxHeight); +SimileAjax.Graphics.createBubbleForContentAndPoint(D,B,E,A.width,null,A.maxHeight); }; -Timeline.DetailedEventPainter.prototype._fireOnSelect=function(B){for(var A=0; -AD; -C++){var A=this._zones[C]; -if(DA.startTime){this._zones.splice(C,0,{startTime:A.startTime,endTime:D,unit:A.unit,multiple:A.multiple}); -C++; -A.startTime=D; -}if(FE; +D++){var A=this._zones[D]; +if(EA.startTime){this._zones.splice(D,0,{startTime:A.startTime,endTime:E,unit:A.unit,multiple:A.multiple}); +D++; +A.startTime=E; +}if(B=0){if(A.getTime()>this._zones[E].startTime){break; }E--; -}for(var H=C; +}for(var H=D; H<=E; H++){var G=this._zones[H]; -var J=new Date(Math.max(D.getTime(),G.startTime)); +var K=new Date(Math.max(C.getTime(),G.startTime)); var F=new Date(Math.min(A.getTime(),G.endTime)); -SimileAjax.DateTime.roundDownToInterval(J,G.unit,K,G.multiple,this._theme.firstDayOfWeek); -SimileAjax.DateTime.roundUpToInterval(F,G.unit,K,G.multiple,this._theme.firstDayOfWeek); -while(J.getTime()0)){C=A-1; -}if(!D&&(A<(this._band._zoomSteps.length-1))){C=A+1; +Timeline.LinearEther.prototype.zoom=function(D){var A=0; +var B=this._band._zoomIndex; +var C=B; +if(D&&(B>0)){C=B-1; +}if(!D&&(B<(this._band._zoomSteps.length-1))){C=B+1; }this._band._zoomIndex=C; this._interval=SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[C].unit]; this._pixelsPerInterval=this._band._zoomSteps[C].pixelsPerInterval; -B=this._band._zoomSteps[C].unit-this._band._zoomSteps[A].unit; -return B; +A=this._band._zoomSteps[C].unit-this._band._zoomSteps[B].unit; +return A; }; Timeline.HotZoneEther=function(A){this._params=A; this._interval=A.interval; this._pixelsPerInterval=A.pixelsPerInterval; this._theme=A.theme; }; -Timeline.HotZoneEther.prototype.initialize=function(H,I){this._band=H; -this._timeline=I; -this._unit=I.getUnit(); +Timeline.HotZoneEther.prototype.initialize=function(I,H){this._band=I; +this._timeline=H; +this._unit=H.getUnit(); this._zones=[{startTime:Number.NEGATIVE_INFINITY,endTime:Number.POSITIVE_INFINITY,magnify:1}]; -var B=this._params; -for(var D=0; -D0; +C0; C++){var A=this._zones[C]; -if(this._unit.compare(E,A.endTime)<0){if(this._unit.compare(E,A.startTime)>0){this._zones.splice(C,0,{startTime:A.startTime,endTime:E,magnify:A.magnify}); -C++; -A.startTime=E; -}if(this._unit.compare(F,A.endTime)<0){this._zones.splice(C,0,{startTime:E,endTime:F,magnify:G.magnify*A.magnify}); +if(this._unit.compare(F,A.endTime)<0){if(this._unit.compare(F,A.startTime)>0){this._zones.splice(C,0,{startTime:A.startTime,endTime:F,magnify:A.magnify}); C++; A.startTime=F; -E=F; +}if(this._unit.compare(B,A.endTime)<0){this._zones.splice(C,0,{startTime:F,endTime:B,magnify:G.magnify*A.magnify}); +C++; +A.startTime=B; +F=B; }else{A.magnify*=G.magnify; -E=A.endTime; +F=A.endTime; }}}}if("startsOn" in this._params){this._start=this._unit.parseFromObject(this._params.startsOn); }else{if("endsOn" in this._params){this._start=this._unit.parseFromObject(this._params.endsOn); this.shiftPixels(-this._timeline.getPixelLength()); @@ -1775,69 +1775,69 @@ Timeline.HotZoneEther.prototype.dateToPixelOffset=function(A){return this._dateD }; Timeline.HotZoneEther.prototype.pixelOffsetToDate=function(A){return this._pixelOffsetToDate(A,this._start); }; -Timeline.HotZoneEther.prototype.zoom=function(D){var B=0; -var A=this._band._zoomIndex; -var C=A; -if(D&&(A>0)){C=A-1; -}if(!D&&(A<(this._band._zoomSteps.length-1))){C=A+1; +Timeline.HotZoneEther.prototype.zoom=function(D){var A=0; +var B=this._band._zoomIndex; +var C=B; +if(D&&(B>0)){C=B-1; +}if(!D&&(B<(this._band._zoomSteps.length-1))){C=B+1; }this._band._zoomIndex=C; this._interval=SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[C].unit]; this._pixelsPerInterval=this._band._zoomSteps[C].pixelsPerInterval; -B=this._band._zoomSteps[C].unit-this._band._zoomSteps[A].unit; -return B; +A=this._band._zoomSteps[C].unit-this._band._zoomSteps[B].unit; +return A; }; -Timeline.HotZoneEther.prototype._dateDiffToPixelOffset=function(I,D){var B=this._getScale(); -var H=I; -var C=D; -var A=0; -if(this._unit.compare(H,C)<0){var G=0; -while(G=0){if(this._unit.compare(H,this._zones[G].startTime)>0){break; +while(G>=0){if(this._unit.compare(I,this._zones[G].startTime)>0){break; }G--; -}while(this._unit.compare(H,C)>0){var E=this._zones[G]; -var F=this._unit.later(C,E.startTime); -A+=(this._unit.compare(F,H)/(B/E.magnify)); -H=F; +}while(this._unit.compare(I,B)>0){var F=this._zones[G]; +var A=this._unit.later(B,F.startTime); +E+=(this._unit.compare(A,I)/(D/F.magnify)); +I=A; G--; -}}return A; +}}return E; }; -Timeline.HotZoneEther.prototype._pixelOffsetToDate=function(H,C){var G=this._getScale(); -var E=C; -if(H>0){var F=0; -while(F0){var F=0; +while(F0){var A=this._zones[F]; -var D=G/A.magnify; -if(A.endTime==Number.POSITIVE_INFINITY){E=this._unit.change(E,H*D); -H=0; -}else{var B=this._unit.compare(A.endTime,E)/D; -if(B>H){E=this._unit.change(E,H*D); -H=0; -}else{E=A.endTime; -H-=B; +}while(E>0){var A=this._zones[F]; +var H=G/A.magnify; +if(A.endTime==Number.POSITIVE_INFINITY){D=this._unit.change(D,E*H); +E=0; +}else{var C=this._unit.compare(A.endTime,D)/H; +if(C>E){D=this._unit.change(D,E*H); +E=0; +}else{D=A.endTime; +E-=C; }}F++; }}else{var F=this._zones.length-1; -while(F>=0){if(this._unit.compare(E,this._zones[F].startTime)>0){break; +while(F>=0){if(this._unit.compare(D,this._zones[F].startTime)>0){break; }F--; -}H=-H; -while(H>0){var A=this._zones[F]; -var D=G/A.magnify; -if(A.startTime==Number.NEGATIVE_INFINITY){E=this._unit.change(E,-H*D); -H=0; -}else{var B=this._unit.compare(E,A.startTime)/D; -if(B>H){E=this._unit.change(E,-H*D); -H=0; -}else{E=A.startTime; -H-=B; +}E=-E; +while(E>0){var A=this._zones[F]; +var H=G/A.magnify; +if(A.startTime==Number.NEGATIVE_INFINITY){D=this._unit.change(D,-E*H); +E=0; +}else{var C=this._unit.compare(D,A.startTime)/H; +if(C>E){D=this._unit.change(D,-E*H); +E=0; +}else{D=A.startTime; +E-=C; }}F--; -}}return E; +}}return D; }; Timeline.HotZoneEther.prototype._getScale=function(){return this._interval/this._pixelsPerInterval; }; @@ -1849,21 +1849,21 @@ Timeline.EventUtils.getNewEventID=function(){if(this._lastEventID==null){this._l }this._lastEventID+=1; return"e"+this._lastEventID; }; -Timeline.EventUtils.decodeEventElID=function(B){var D=B.split("-"); +Timeline.EventUtils.decodeEventElID=function(C){var D=C.split("-"); if(D[1]!="tl"){alert("Internal Timeline problem 101, please consult support"); return{band:null,evt:null}; -}var C=Timeline.getTimelineFromID(D[2]); -var E=C.getBand(D[3]); +}var B=Timeline.getTimelineFromID(D[2]); +var E=B.getBand(D[3]); var A=E.getEventSource.getEvent(D[4]); return{band:E,evt:A}; }; -Timeline.EventUtils.encodeEventElID=function(C,D,B,A){return B+"-tl-"+C.timelineID+"-"+D.getIndex()+"-"+A.getID(); +Timeline.EventUtils.encodeEventElID=function(B,D,C,A){return C+"-tl-"+B.timelineID+"-"+D.getIndex()+"-"+A.getID(); }; /* labellers.js */ -Timeline.GregorianDateLabeller=function(A,B){this._locale=A; -this._timeZone=B; +Timeline.GregorianDateLabeller=function(B,A){this._locale=B; +this._timeZone=A; }; Timeline.GregorianDateLabeller.monthNames=[]; Timeline.GregorianDateLabeller.dayNames=[]; @@ -1876,34 +1876,34 @@ if(B==null){B=Timeline.GregorianDateLabeller.prototype.defaultLabelInterval; }; Timeline.GregorianDateLabeller.prototype.labelPrecise=function(A){return SimileAjax.DateTime.removeTimeZoneOffset(A,this._timeZone).toUTCString(); }; -Timeline.GregorianDateLabeller.prototype.defaultLabelInterval=function(B,F){var C; -var E=false; +Timeline.GregorianDateLabeller.prototype.defaultLabelInterval=function(B,C){var D; +var F=false; B=SimileAjax.DateTime.removeTimeZoneOffset(B,this._timeZone); -switch(F){case SimileAjax.DateTime.MILLISECOND:C=B.getUTCMilliseconds(); +switch(C){case SimileAjax.DateTime.MILLISECOND:D=B.getUTCMilliseconds(); break; -case SimileAjax.DateTime.SECOND:C=B.getUTCSeconds(); +case SimileAjax.DateTime.SECOND:D=B.getUTCSeconds(); break; case SimileAjax.DateTime.MINUTE:var A=B.getUTCMinutes(); -if(A==0){C=B.getUTCHours()+":00"; -E=true; -}else{C=A; +if(A==0){D=B.getUTCHours()+":00"; +F=true; +}else{D=A; }break; -case SimileAjax.DateTime.HOUR:C=B.getUTCHours()+"hr"; +case SimileAjax.DateTime.HOUR:D=B.getUTCHours()+"hr"; break; -case SimileAjax.DateTime.DAY:C=Timeline.GregorianDateLabeller.getMonthName(B.getUTCMonth(),this._locale)+" "+B.getUTCDate(); +case SimileAjax.DateTime.DAY:D=Timeline.GregorianDateLabeller.getMonthName(B.getUTCMonth(),this._locale)+" "+B.getUTCDate(); break; -case SimileAjax.DateTime.WEEK:C=Timeline.GregorianDateLabeller.getMonthName(B.getUTCMonth(),this._locale)+" "+B.getUTCDate(); +case SimileAjax.DateTime.WEEK:D=Timeline.GregorianDateLabeller.getMonthName(B.getUTCMonth(),this._locale)+" "+B.getUTCDate(); break; case SimileAjax.DateTime.MONTH:var A=B.getUTCMonth(); -if(A!=0){C=Timeline.GregorianDateLabeller.getMonthName(A,this._locale); +if(A!=0){D=Timeline.GregorianDateLabeller.getMonthName(A,this._locale); break; -}case SimileAjax.DateTime.YEAR:case SimileAjax.DateTime.DECADE:case SimileAjax.DateTime.CENTURY:case SimileAjax.DateTime.MILLENNIUM:var D=B.getUTCFullYear(); -if(D>0){C=B.getUTCFullYear(); -}else{C=(1-D)+"BC"; -}E=(F==SimileAjax.DateTime.MONTH)||(F==SimileAjax.DateTime.DECADE&&D%100==0)||(F==SimileAjax.DateTime.CENTURY&&D%1000==0); +}case SimileAjax.DateTime.YEAR:case SimileAjax.DateTime.DECADE:case SimileAjax.DateTime.CENTURY:case SimileAjax.DateTime.MILLENNIUM:var E=B.getUTCFullYear(); +if(E>0){D=B.getUTCFullYear(); +}else{D=(1-E)+"BC"; +}F=(C==SimileAjax.DateTime.MONTH)||(C==SimileAjax.DateTime.DECADE&&E%100==0)||(C==SimileAjax.DateTime.CENTURY&&E%1000==0); break; -default:C=B.toUTCString(); -}return{text:C,emphasized:E}; +default:D=B.toUTCString(); +}return{text:D,emphasized:F}; }; @@ -2013,204 +2013,204 @@ Timeline.OriginalEventPainter.prototype.paintInstantEvent=function(B,C,D,A){if(B Timeline.OriginalEventPainter.prototype.paintDurationEvent=function(B,C,D,A){if(B.isImprecise()){this.paintImpreciseDurationEvent(B,C,D,A); }else{this.paintPreciseDurationEvent(B,C,D,A); }}; -Timeline.OriginalEventPainter.prototype.paintPreciseInstantEvent=function(M,Q,S,R){var V=this._timeline.getDocument(); -var L=M.getText(); -var E=M.getStart(); -var C=Math.round(this._band.dateToPixelOffset(E)); -var A=Math.round(C+Q.iconWidth/2); -var K=Math.round(C-Q.iconWidth/2); -var H=this._getLabelDivClassName(M); -var I=this._frc.computeSize(L,H); -var W=A+S.event.label.offsetFromLine; -var D=W+I.width; -var U=D; -var O=this._findFreeTrack(M,U); -var T=Math.round(Q.trackOffset+O*Q.trackIncrement+Q.trackHeight/2-I.height/2); -var B=this._paintEventIcon(M,O,K,Q,S,0); -var P=this._paintEventLabel(M,L,W,T,I.width,I.height,S,H,R); -var F=[B.elmt,P.elmt]; -var N=this; -var J=function(X,Y,Z){return N._onClickInstantEvent(B.elmt,Y,M); -}; -SimileAjax.DOM.registerEvent(B.elmt,"mousedown",J); -SimileAjax.DOM.registerEvent(P.elmt,"mousedown",J); -var G=this._createHighlightDiv(R,B,S,M); -if(G!=null){F.push(G); -}this._fireEventPaintListeners("paintedEvent",M,F); -this._eventIdToElmt[M.getID()]=B.elmt; -this._tracks[O]=K; +Timeline.OriginalEventPainter.prototype.paintPreciseInstantEvent=function(N,S,V,T){var W=this._timeline.getDocument(); +var L=N.getText(); +var H=N.getStart(); +var I=Math.round(this._band.dateToPixelOffset(H)); +var A=Math.round(I+S.iconWidth/2); +var C=Math.round(I-S.iconWidth/2); +var F=this._getLabelDivClassName(N); +var D=this._frc.computeSize(L,F); +var M=A+V.event.label.offsetFromLine; +var J=M+D.width; +var Q=J; +var P=this._findFreeTrack(N,Q); +var R=Math.round(S.trackOffset+P*S.trackIncrement+S.trackHeight/2-D.height/2); +var B=this._paintEventIcon(N,P,C,S,V,0); +var U=this._paintEventLabel(N,L,M,R,D.width,D.height,V,F,T); +var E=[B.elmt,U.elmt]; +var O=this; +var K=function(Y,X,Z){return O._onClickInstantEvent(B.elmt,X,N); +}; +SimileAjax.DOM.registerEvent(B.elmt,"mousedown",K); +SimileAjax.DOM.registerEvent(U.elmt,"mousedown",K); +var G=this._createHighlightDiv(T,B,V,N); +if(G!=null){E.push(G); +}this._fireEventPaintListeners("paintedEvent",N,E); +this._eventIdToElmt[N.getID()]=B.elmt; +this._tracks[P]=C; }; -Timeline.OriginalEventPainter.prototype.paintImpreciseInstantEvent=function(P,T,Y,V){var a=this._timeline.getDocument(); +Timeline.OriginalEventPainter.prototype.paintImpreciseInstantEvent=function(P,U,Z,W){var b=this._timeline.getDocument(); var N=P.getText(); -var G=P.getStart(); -var W=P.getEnd(); -var D=Math.round(this._band.dateToPixelOffset(G)); -var B=Math.round(this._band.dateToPixelOffset(W)); -var A=Math.round(D+T.iconWidth/2); -var M=Math.round(D-T.iconWidth/2); -var J=this._getLabelDivClassName(P); -var K=this._frc.computeSize(N,J); -var b=A+Y.event.label.offsetFromLine; -var E=b+K.width; -var Z=Math.max(E,B); -var R=this._findFreeTrack(P,Z); -var O=Y.event.tape.height; -var X=Math.round(T.trackOffset+R*T.trackIncrement+O); -var C=this._paintEventIcon(P,R,M,T,Y,O); -var S=this._paintEventLabel(P,N,b,X,K.width,K.height,Y,J,V); -var U=P.getColor(); -U=U!=null?U:Y.event.instant.impreciseColor; -var F=this._paintEventTape(P,R,D,B,U,Y.event.instant.impreciseOpacity,T,Y,0); -var H=[C.elmt,S.elmt,F.elmt]; +var J=P.getStart(); +var X=P.getEnd(); +var K=Math.round(this._band.dateToPixelOffset(J)); +var B=Math.round(this._band.dateToPixelOffset(X)); +var A=Math.round(K+U.iconWidth/2); +var D=Math.round(K-U.iconWidth/2); +var H=this._getLabelDivClassName(P); +var F=this._frc.computeSize(N,H); +var O=A+Z.event.label.offsetFromLine; +var L=O+F.width; +var S=Math.max(L,B); +var R=this._findFreeTrack(P,S); +var a=Z.event.tape.height; +var T=Math.round(U.trackOffset+R*U.trackIncrement+a); +var C=this._paintEventIcon(P,R,D,U,Z,a); +var Y=this._paintEventLabel(P,N,O,T,F.width,F.height,Z,H,W); +var V=P.getColor(); +V=V!=null?V:Z.event.instant.impreciseColor; +var E=this._paintEventTape(P,R,K,B,V,Z.event.instant.impreciseOpacity,U,Z,0); +var G=[C.elmt,Y.elmt,E.elmt]; var Q=this; -var L=function(c,d,e){return Q._onClickInstantEvent(C.elmt,d,P); -}; -SimileAjax.DOM.registerEvent(C.elmt,"mousedown",L); -SimileAjax.DOM.registerEvent(F.elmt,"mousedown",L); -SimileAjax.DOM.registerEvent(S.elmt,"mousedown",L); -var I=this._createHighlightDiv(V,C,Y,P); -if(I!=null){H.push(I); -}this._fireEventPaintListeners("paintedEvent",P,H); +var M=function(d,c,e){return Q._onClickInstantEvent(C.elmt,c,P); +}; +SimileAjax.DOM.registerEvent(C.elmt,"mousedown",M); +SimileAjax.DOM.registerEvent(E.elmt,"mousedown",M); +SimileAjax.DOM.registerEvent(Y.elmt,"mousedown",M); +var I=this._createHighlightDiv(W,C,Z,P); +if(I!=null){G.push(I); +}this._fireEventPaintListeners("paintedEvent",P,G); this._eventIdToElmt[P.getID()]=C.elmt; -this._tracks[R]=M; -}; -Timeline.OriginalEventPainter.prototype.paintPreciseDurationEvent=function(L,P,T,R){var W=this._timeline.getDocument(); -var K=L.getText(); -var E=L.getStart(); -var S=L.getEnd(); -var B=Math.round(this._band.dateToPixelOffset(E)); -var A=Math.round(this._band.dateToPixelOffset(S)); -var H=this._getLabelDivClassName(L); -var I=this._frc.computeSize(K,H); -var X=B; -var C=X+I.width; -var V=Math.max(C,A); -var N=this._findFreeTrack(L,V); -var U=Math.round(P.trackOffset+N*P.trackIncrement+T.event.tape.height); -var Q=L.getColor(); -Q=Q!=null?Q:T.event.duration.color; -var D=this._paintEventTape(L,N,B,A,Q,100,P,T,0); -var O=this._paintEventLabel(L,K,X,U,I.width,I.height,T,H,R); -var F=[D.elmt,O.elmt]; -var M=this; -var J=function(Y,Z,a){return M._onClickDurationEvent(D.elmt,Z,L); -}; -SimileAjax.DOM.registerEvent(D.elmt,"mousedown",J); -SimileAjax.DOM.registerEvent(O.elmt,"mousedown",J); -var G=this._createHighlightDiv(R,D,T,L); -if(G!=null){F.push(G); -}this._fireEventPaintListeners("paintedEvent",L,F); -this._eventIdToElmt[L.getID()]=D.elmt; -this._tracks[N]=B; -}; -Timeline.OriginalEventPainter.prototype.paintImpreciseDurationEvent=function(N,S,Y,V){var b=this._timeline.getDocument(); -var M=N.getText(); -var E=N.getStart(); -var T=N.getLatestStart(); -var W=N.getEnd(); -var a=N.getEarliestEnd(); -var C=Math.round(this._band.dateToPixelOffset(E)); -var G=Math.round(this._band.dateToPixelOffset(T)); -var A=Math.round(this._band.dateToPixelOffset(W)); -var H=Math.round(this._band.dateToPixelOffset(a)); -var J=this._getLabelDivClassName(N); -var K=this._frc.computeSize(M,J); -var c=G; -var B=c+K.width; -var Z=Math.max(B,A); -var P=this._findFreeTrack(N,Z); -var X=Math.round(S.trackOffset+P*S.trackIncrement+Y.event.tape.height); -var U=N.getColor(); -U=U!=null?U:Y.event.duration.color; -var R=this._paintEventTape(N,P,C,A,Y.event.duration.impreciseColor,Y.event.duration.impreciseOpacity,S,Y,0); -var D=this._paintEventTape(N,P,G,H,U,100,S,Y,1); -var Q=this._paintEventLabel(N,M,c,X,K.width,K.height,Y,J,V); -var F=[R.elmt,D.elmt,Q.elmt]; -var O=this; -var L=function(d,e,f){return O._onClickDurationEvent(D.elmt,e,N); -}; -SimileAjax.DOM.registerEvent(D.elmt,"mousedown",L); -SimileAjax.DOM.registerEvent(Q.elmt,"mousedown",L); -var I=this._createHighlightDiv(V,D,Y,N); -if(I!=null){F.push(I); -}this._fireEventPaintListeners("paintedEvent",N,F); -this._eventIdToElmt[N.getID()]=D.elmt; -this._tracks[P]=C; +this._tracks[R]=D; +}; +Timeline.OriginalEventPainter.prototype.paintPreciseDurationEvent=function(M,R,W,T){var X=this._timeline.getDocument(); +var K=M.getText(); +var G=M.getStart(); +var U=M.getEnd(); +var H=Math.round(this._band.dateToPixelOffset(G)); +var A=Math.round(this._band.dateToPixelOffset(U)); +var E=this._getLabelDivClassName(M); +var C=this._frc.computeSize(K,E); +var L=H; +var I=L+C.width; +var P=Math.max(I,A); +var O=this._findFreeTrack(M,P); +var Q=Math.round(R.trackOffset+O*R.trackIncrement+W.event.tape.height); +var S=M.getColor(); +S=S!=null?S:W.event.duration.color; +var B=this._paintEventTape(M,O,H,A,S,100,R,W,0); +var V=this._paintEventLabel(M,K,L,Q,C.width,C.height,W,E,T); +var D=[B.elmt,V.elmt]; +var N=this; +var J=function(Z,Y,a){return N._onClickDurationEvent(B.elmt,Y,M); +}; +SimileAjax.DOM.registerEvent(B.elmt,"mousedown",J); +SimileAjax.DOM.registerEvent(V.elmt,"mousedown",J); +var F=this._createHighlightDiv(T,B,W,M); +if(F!=null){D.push(F); +}this._fireEventPaintListeners("paintedEvent",M,D); +this._eventIdToElmt[M.getID()]=B.elmt; +this._tracks[O]=H; +}; +Timeline.OriginalEventPainter.prototype.paintImpreciseDurationEvent=function(O,W,b,Y){var c=this._timeline.getDocument(); +var M=O.getText(); +var I=O.getStart(); +var V=O.getLatestStart(); +var Z=O.getEnd(); +var Q=O.getEarliestEnd(); +var K=Math.round(this._band.dateToPixelOffset(I)); +var F=Math.round(this._band.dateToPixelOffset(V)); +var A=Math.round(this._band.dateToPixelOffset(Z)); +var G=Math.round(this._band.dateToPixelOffset(Q)); +var E=this._getLabelDivClassName(O); +var C=this._frc.computeSize(M,E); +var N=F; +var J=N+C.width; +var S=Math.max(J,A); +var R=this._findFreeTrack(O,S); +var T=Math.round(W.trackOffset+R*W.trackIncrement+b.event.tape.height); +var X=O.getColor(); +X=X!=null?X:b.event.duration.color; +var U=this._paintEventTape(O,R,K,A,b.event.duration.impreciseColor,b.event.duration.impreciseOpacity,W,b,0); +var B=this._paintEventTape(O,R,F,G,X,100,W,b,1); +var a=this._paintEventLabel(O,M,N,T,C.width,C.height,b,E,Y); +var D=[U.elmt,B.elmt,a.elmt]; +var P=this; +var L=function(e,d,f){return P._onClickDurationEvent(B.elmt,d,O); +}; +SimileAjax.DOM.registerEvent(B.elmt,"mousedown",L); +SimileAjax.DOM.registerEvent(a.elmt,"mousedown",L); +var H=this._createHighlightDiv(Y,B,b,O); +if(H!=null){D.push(H); +}this._fireEventPaintListeners("paintedEvent",O,D); +this._eventIdToElmt[O.getID()]=B.elmt; +this._tracks[R]=K; }; Timeline.OriginalEventPainter.prototype._encodeEventElID=function(B,A){return Timeline.EventUtils.encodeEventElID(this._timeline,this._band,B,A); }; -Timeline.OriginalEventPainter.prototype._findFreeTrack=function(E,A){var D=E.getTrackNum(); -if(D!=null){return D; +Timeline.OriginalEventPainter.prototype._findFreeTrack=function(E,D){var A=E.getTrackNum(); +if(A!=null){return A; }for(var C=0; CA){break; +if(B>D){break; }}return C; }; -Timeline.OriginalEventPainter.prototype._paintEventIcon=function(J,F,B,G,E,C){var I=J.getIcon(); +Timeline.OriginalEventPainter.prototype._paintEventIcon=function(K,B,C,G,F,D){var I=K.getIcon(); I=I!=null?I:G.icon; -var H; -if(C>0){H=G.trackOffset+F*G.trackIncrement+C+G.impreciseIconMargin; -}else{var K=G.trackOffset+F*G.trackIncrement+G.trackHeight/2; -H=Math.round(K-G.iconHeight/2); -}var D=SimileAjax.Graphics.createTranslucentImage(I); +var J; +if(D>0){J=G.trackOffset+B*G.trackIncrement+D+G.impreciseIconMargin; +}else{var H=G.trackOffset+B*G.trackIncrement+G.trackHeight/2; +J=Math.round(H-G.iconHeight/2); +}var E=SimileAjax.Graphics.createTranslucentImage(I); var A=this._timeline.getDocument().createElement("div"); -A.className=this._getElClassName("timeline-event-icon",J,"icon"); -A.id=this._encodeEventElID("icon",J); -A.style.left=B+"px"; -A.style.top=H+"px"; -A.appendChild(D); -if(J._title!=null){A.title=J._title; +A.className=this._getElClassName("timeline-event-icon",K,"icon"); +A.id=this._encodeEventElID("icon",K); +A.style.left=C+"px"; +A.style.top=J+"px"; +A.appendChild(E); +if(K._title!=null){A.title=K._title; }this._eventLayer.appendChild(A); -return{left:B,top:H,width:G.iconWidth,height:G.iconHeight,elmt:A}; -}; -Timeline.OriginalEventPainter.prototype._paintEventLabel=function(J,K,C,H,A,L,E,F,B){var I=this._timeline.getDocument(); -var G=I.createElement("div"); -G.className=F; -G.id=this._encodeEventElID("label",J); -G.style.left=C+"px"; -G.style.width=A+"px"; -G.style.top=H+"px"; -G.innerHTML=K; -if(J._title!=null){G.title=J._title; -}var D=J.getTextColor(); -if(D==null){D=J.getColor(); -}if(D!=null){G.style.color=D; -}if(E.event.highlightLabelBackground&&B>=0){G.style.background=this._getHighlightColor(B,E); -}this._eventLayer.appendChild(G); -return{left:C,top:H,width:A,height:L,elmt:G}; -}; -Timeline.OriginalEventPainter.prototype._paintEventTape=function(N,I,F,A,C,H,J,G,O){var B=A-F; -var E=G.event.tape.height; -var K=J.trackOffset+I*J.trackIncrement; -var M=this._timeline.getDocument().createElement("div"); -M.className=this._getElClassName("timeline-event-tape",N,"tape"); -M.id=this._encodeEventElID("tape"+O,N); -M.style.left=F+"px"; -M.style.width=B+"px"; -M.style.height=E+"px"; -M.style.top=K+"px"; -if(N._title!=null){M.title=N._title; -}if(C!=null){M.style.backgroundColor=C; +return{left:C,top:J,width:G.iconWidth,height:G.iconHeight,elmt:A}; +}; +Timeline.OriginalEventPainter.prototype._paintEventLabel=function(K,L,D,H,A,J,G,E,C){var I=this._timeline.getDocument(); +var B=I.createElement("div"); +B.className=E; +B.id=this._encodeEventElID("label",K); +B.style.left=D+"px"; +B.style.width=A+"px"; +B.style.top=H+"px"; +B.innerHTML=L; +if(K._title!=null){B.title=K._title; +}var F=K.getTextColor(); +if(F==null){F=K.getColor(); +}if(F!=null){B.style.color=F; +}if(G.event.highlightLabelBackground&&C>=0){B.style.background=this._getHighlightColor(C,G); +}this._eventLayer.appendChild(B); +return{left:D,top:H,width:A,height:J,elmt:B}; +}; +Timeline.OriginalEventPainter.prototype._paintEventTape=function(N,B,D,A,G,C,J,I,M){var F=A-D; +var E=I.event.tape.height; +var K=J.trackOffset+B*J.trackIncrement; +var O=this._timeline.getDocument().createElement("div"); +O.className=this._getElClassName("timeline-event-tape",N,"tape"); +O.id=this._encodeEventElID("tape"+M,N); +O.style.left=D+"px"; +O.style.width=F+"px"; +O.style.height=E+"px"; +O.style.top=K+"px"; +if(N._title!=null){O.title=N._title; +}if(G!=null){O.style.backgroundColor=G; }var L=N.getTapeImage(); -var D=N.getTapeRepeat(); -D=D!=null?D:"repeat"; -if(L!=null){M.style.backgroundImage="url("+L+")"; -M.style.backgroundRepeat=D; -}SimileAjax.Graphics.setOpacity(M,H); -this._eventLayer.appendChild(M); -return{left:F,top:K,width:B,height:E,elmt:M}; +var H=N.getTapeRepeat(); +H=H!=null?H:"repeat"; +if(L!=null){O.style.backgroundImage="url("+L+")"; +O.style.backgroundRepeat=H; +}SimileAjax.Graphics.setOpacity(O,C); +this._eventLayer.appendChild(O); +return{left:D,top:K,width:F,height:E,elmt:O}; }; Timeline.OriginalEventPainter.prototype._getLabelDivClassName=function(A){return this._getElClassName("timeline-event-label",A,"label"); }; -Timeline.OriginalEventPainter.prototype._getElClassName=function(B,A,D){var E=A.getClassName(),C=[]; -if(E){if(D){C.push(D+"-"+E+" "); -}C.push(E+" "); -}C.push(B); -return(C.join("")); +Timeline.OriginalEventPainter.prototype._getElClassName=function(D,C,A){var E=C.getClassName(),B=[]; +if(E){if(A){B.push(A+"-"+E+" "); +}B.push(E+" "); +}B.push(D); +return(B.join("")); }; -Timeline.OriginalEventPainter.prototype._getHighlightColor=function(A,C){var B=C.event.highlightColors; -return B[Math.min(A,B.length-1)]; +Timeline.OriginalEventPainter.prototype._getHighlightColor=function(A,B){var C=B.event.highlightColors; +return C[Math.min(A,C.length-1)]; }; Timeline.OriginalEventPainter.prototype._createHighlightDiv=function(A,D,F,B){var G=null; if(A>=0){var E=this._timeline.getDocument(); @@ -2228,37 +2228,37 @@ G.style.background=C; this._highlightLayer.appendChild(G); }return G; }; -Timeline.OriginalEventPainter.prototype._onClickInstantEvent=function(B,C,A){var D=SimileAjax.DOM.getPageCoordinates(B); -this._showBubble(D.left+Math.ceil(B.offsetWidth/2),D.top+Math.ceil(B.offsetHeight/2),A); -this._fireOnSelect(A.getID()); -C.cancelBubble=true; -SimileAjax.DOM.cancelEvent(C); +Timeline.OriginalEventPainter.prototype._onClickInstantEvent=function(C,A,B){var D=SimileAjax.DOM.getPageCoordinates(C); +this._showBubble(D.left+Math.ceil(C.offsetWidth/2),D.top+Math.ceil(C.offsetHeight/2),B); +this._fireOnSelect(B.getID()); +A.cancelBubble=true; +SimileAjax.DOM.cancelEvent(A); return false; }; -Timeline.OriginalEventPainter.prototype._onClickDurationEvent=function(D,C,B){if("pageX" in C){var A=C.pageX; -var F=C.pageY; -}else{var E=SimileAjax.DOM.getPageCoordinates(D); -var A=C.offsetX+E.left; -var F=C.offsetY+E.top; -}this._showBubble(A,F,B); -this._fireOnSelect(B.getID()); -C.cancelBubble=true; -SimileAjax.DOM.cancelEvent(C); +Timeline.OriginalEventPainter.prototype._onClickDurationEvent=function(F,B,C){if("pageX" in B){var A=B.pageX; +var E=B.pageY; +}else{var D=SimileAjax.DOM.getPageCoordinates(F); +var A=B.offsetX+D.left; +var E=B.offsetY+D.top; +}this._showBubble(A,E,C); +this._fireOnSelect(C.getID()); +B.cancelBubble=true; +SimileAjax.DOM.cancelEvent(B); return false; }; Timeline.OriginalEventPainter.prototype.showBubble=function(A){var B=this._eventIdToElmt[A.getID()]; if(B){var C=SimileAjax.DOM.getPageCoordinates(B); this._showBubble(C.left+B.offsetWidth/2,C.top+B.offsetHeight/2,A); }}; -Timeline.OriginalEventPainter.prototype._showBubble=function(A,E,B){var D=document.createElement("div"); -var C=this._params.theme.event.bubble; -B.fillInfoBubble(D,this._params.theme,this._band.getLabeller()); +Timeline.OriginalEventPainter.prototype._showBubble=function(B,E,C){var D=document.createElement("div"); +var A=this._params.theme.event.bubble; +C.fillInfoBubble(D,this._params.theme,this._band.getLabeller()); SimileAjax.WindowManager.cancelPopups(); -SimileAjax.Graphics.createBubbleForContentAndPoint(D,A,E,C.width,null,C.maxHeight); +SimileAjax.Graphics.createBubbleForContentAndPoint(D,B,E,A.width,null,A.maxHeight); }; -Timeline.OriginalEventPainter.prototype._fireOnSelect=function(B){for(var A=0; -A=0){var D=this._timeline.getDocument(); var G=E.event; @@ -2405,77 +2405,77 @@ break; }}}; Timeline.DefaultEventSource.prototype.loadXML=function(G,A){var C=this._getBaseURL(A); var H=G.documentElement.getAttribute("wiki-url"); -var L=G.documentElement.getAttribute("wiki-section"); -var E=G.documentElement.getAttribute("date-time-format"); -var F=this._events.getUnit().getParser(E); +var J=G.documentElement.getAttribute("wiki-section"); +var F=G.documentElement.getAttribute("date-time-format"); +var E=this._events.getUnit().getParser(F); var D=G.documentElement.firstChild; var I=false; -while(D!=null){if(D.nodeType==1){var K=""; -if(D.firstChild!=null&&D.firstChild.nodeType==3){K=D.firstChild.nodeValue; +while(D!=null){if(D.nodeType==1){var L=""; +if(D.firstChild!=null&&D.firstChild.nodeType==3){L=D.firstChild.nodeValue; }var B=(D.getAttribute("isDuration")===null&&D.getAttribute("durationEvent")===null)||D.getAttribute("isDuration")=="false"||D.getAttribute("durationEvent")=="false"; -var J=new Timeline.DefaultEventSource.Event({id:D.getAttribute("id"),start:F(D.getAttribute("start")),end:F(D.getAttribute("end")),latestStart:F(D.getAttribute("latestStart")),earliestEnd:F(D.getAttribute("earliestEnd")),instant:B,text:D.getAttribute("title"),description:K,image:this._resolveRelativeURL(D.getAttribute("image"),C),link:this._resolveRelativeURL(D.getAttribute("link"),C),icon:this._resolveRelativeURL(D.getAttribute("icon"),C),color:D.getAttribute("color"),textColor:D.getAttribute("textColor"),hoverText:D.getAttribute("hoverText"),classname:D.getAttribute("classname"),tapeImage:D.getAttribute("tapeImage"),tapeRepeat:D.getAttribute("tapeRepeat"),caption:D.getAttribute("caption"),eventID:D.getAttribute("eventID"),trackNum:D.getAttribute("trackNum")}); -J._node=D; -J.getProperty=function(M){return this._node.getAttribute(M); +var K=new Timeline.DefaultEventSource.Event({id:D.getAttribute("id"),start:E(D.getAttribute("start")),end:E(D.getAttribute("end")),latestStart:E(D.getAttribute("latestStart")),earliestEnd:E(D.getAttribute("earliestEnd")),instant:B,text:D.getAttribute("title"),description:L,image:this._resolveRelativeURL(D.getAttribute("image"),C),link:this._resolveRelativeURL(D.getAttribute("link"),C),icon:this._resolveRelativeURL(D.getAttribute("icon"),C),color:D.getAttribute("color"),textColor:D.getAttribute("textColor"),hoverText:D.getAttribute("hoverText"),classname:D.getAttribute("classname"),tapeImage:D.getAttribute("tapeImage"),tapeRepeat:D.getAttribute("tapeRepeat"),caption:D.getAttribute("caption"),eventID:D.getAttribute("eventID"),trackNum:D.getAttribute("trackNum")}); +K._node=D; +K.getProperty=function(M){return this._node.getAttribute(M); }; -J.setWikiInfo(H,L); -this._events.add(J); +K.setWikiInfo(H,J); +this._events.add(K); I=true; }D=D.nextSibling; }if(I){this._fire("onAddMany",[]); }}; -Timeline.DefaultEventSource.prototype.loadJSON=function(G,B){var D=this._getBaseURL(B); -var J=false; -if(G&&G.events){var I=("wikiURL" in G)?G.wikiURL:null; -var L=("wikiSection" in G)?G.wikiSection:null; +Timeline.DefaultEventSource.prototype.loadJSON=function(G,A){var C=this._getBaseURL(A); +var I=false; +if(G&&G.events){var H=("wikiURL" in G)?G.wikiURL:null; +var J=("wikiSection" in G)?G.wikiSection:null; var E=("dateTimeFormat" in G)?G.dateTimeFormat:null; -var H=this._events.getUnit().getParser(E); +var D=this._events.getUnit().getParser(E); for(var F=0; FG||C){D=I; -A(); -E._distributeWidths(); -}}if(!E.autoWidth){return ; +}}function F(){var H=0; +var G=A.getPixelWidth(); +if(A._autoResizing){return ; +}for(var I=0; +IG||C){D=H; +E(); +A._distributeWidths(); +}}if(!A.autoWidth){return ; }F(); }; Timeline._Impl.prototype._initialize=function(){var H=this._containerDiv; var E=H.ownerDocument; H.className=H.className.split(" ").concat("timeline-container").join(" "); -var B=(this.isHorizontal())?"horizontal":"vertical"; -H.className+=" timeline-"+B; +var C=(this.isHorizontal())?"horizontal":"vertical"; +H.className+=" timeline-"+C; while(H.firstChild){H.removeChild(H.firstChild); }var A=SimileAjax.Graphics.createTranslucentImage(Timeline.urlPrefix+(this.isHorizontal()?"images/copyright-vertical.png":"images/copyright.png")); A.className="timeline-copyright"; @@ -2853,18 +2853,18 @@ SimileAjax.DOM.registerEvent(A,"click",function(){window.location="http://www.si }); H.appendChild(A); this._bands=[]; -for(var C=0; -C0){var G=parseInt(F.substr(0,H)); -D=Math.round(G*A/100); -}else{D=parseInt(F); -}}else{D=F; -}I.setBandShiftAndWidth(C,D); -I.setViewLength(B); +if(typeof E=="string"){var H=E.indexOf("%"); +if(H>0){var A=parseInt(E.substr(0,H)); +D=Math.round(A*B/100); +}else{D=parseInt(E); +}}else{D=E; +}J.setBandShiftAndWidth(C,D); +J.setViewLength(G); C+=D; }}; -Timeline._Impl.prototype.shiftOK=function(D,B){var C=B>0,A=B<0; -if((C&&this.timeline_start==null)||(A&&this.timeline_stop==null)||(B==0)){return(true); -}var G=false; -for(var F=0; -F=this.timeline_start; -}else{E=(F==D?H.getMaxVisibleDateAfterDelta(B):H.getMaxVisibleDate())<=this.timeline_stop; -}}if(C){this.timeline_at_start=!E; +Timeline._Impl.prototype.shiftOK=function(C,B){var F=B>0,A=B<0; +if((F&&this.timeline_start==null)||(A&&this.timeline_stop==null)||(B==0)){return(true); +}var H=false; +for(var E=0; +E=this.timeline_start; +}else{D=(E==C?G.getMaxVisibleDateAfterDelta(B):G.getMaxVisibleDate())<=this.timeline_stop; +}}if(F){this.timeline_at_start=!D; this.timeline_at_stop=false; -}else{this.timeline_at_stop=!E; +}else{this.timeline_at_stop=!D; this.timeline_at_start=false; -}return(E); +}return(D); }; -Timeline._Impl.prototype.zoom=function(G,B,F,D){var C=new RegExp("^timeline-band-([0-9]+)$"); +Timeline._Impl.prototype.zoom=function(D,A,G,F){var C=new RegExp("^timeline-band-([0-9]+)$"); var E=null; -var A=C.exec(D.id); -if(A){E=parseInt(A[1]); -}if(E!=null){this._bands[E].zoom(G,B,F,D); +var B=C.exec(F.id); +if(B){E=parseInt(B[1]); +}if(E!=null){this._bands[E].zoom(D,A,G,F); }this.paint(); }; /* units.js */ Timeline.NativeDateUnit=new Object(); -Timeline.NativeDateUnit.createLabeller=function(A,B){return new Timeline.GregorianDateLabeller(A,B); +Timeline.NativeDateUnit.createLabeller=function(B,A){return new Timeline.GregorianDateLabeller(B,A); }; Timeline.NativeDateUnit.makeDefaultValue=function(){return new Date(); }; diff --git a/src/webapp/examples/local_example/README.txt b/src/webapp/examples/local_example/README.txt index c67b681..67f5750 100644 --- a/src/webapp/examples/local_example/README.txt +++ b/src/webapp/examples/local_example/README.txt @@ -11,8 +11,10 @@ any sort of web server. Installation ------------ -No installation required. Everything is loaded directly from the web. - +Install this directory of files anywhere on your computer. +You do need internet access. +No local web server is needed, Timeline library is loaded directly from +the web. Running ------- diff --git a/src/webapp/examples/test_example2/cubism2.js b/src/webapp/examples/test_example2/cubism2.js index f38e27d..555ce89 100644 --- a/src/webapp/examples/test_example2/cubism2.js +++ b/src/webapp/examples/test_example2/cubism2.js @@ -1,28 +1,40 @@ +// This data set uses attribute synonyms. The following attribute names are interchangable. +// The shorter names enable smaller load files. +// eid -- eventID +// s -- start +// e -- end +// ls -- latestStart +// ee -- earliestEnd +// d -- description +// de -- durationEvent +// t -- title, +// c -- classname + { 'dateTimeFormat': 'iso8601', 'events' : [ - {'start': '1924', - 'title': 'Barfusserkirche', - 'description': 'by Lyonel Feininger, American/German Painter, 1871-1956', + {'s': '1924', + 't': 'Barfusserkirche', + 'd': 'by Lyonel Feininger, American/German Painter, 1871-1956', 'image': 'http://images.allposters.com/images/AWI/NR096_b.jpg', 'link': 'http://www.allposters.com/-sp/Barfusserkirche-1924-Posters_i1116895_.htm' }, - {'start': '1913', - 'end': '1929', - 'title': 'Three Figures', - 'description': 'by Kasimir Malevich, Ukrainian Painter, 1878-1935', + {'s': '1913', + 'e': '1929', + 't': 'Three Figures', + 'd': 'by Kasimir Malevich, Ukrainian Painter, 1878-1935', 'image': 'http://images.allposters.com/images/BRGPOD/75857_b.jpg', 'link': 'http://www.allposters.com/-sp/Three-Figures-1913-28-Posters_i1349989_.htm' }, - {'start': '1881', - 'end': '1953', - 'title': 'Landschaft bei Montreuil', - 'description': 'by Albert Gleizes, French Painter, 1881-1953', + {'s': '1881', + 'e': '1953', + 't': 'Landschaft bei Montreuil', + 'd': 'by Albert Gleizes, French Painter, 1881-1953', 'image': 'http://images.allposters.com/images/mer/1336_b.jpg', 'link': 'http://www.allposters.com/-sp/Landschaft-bei-Montreuil-Posters_i339007_.htm', 'isDuration' : true, @@ -31,53 +43,53 @@ 'textColor' : 'green'}, - {'start': '1920', - 'title': 'Femme au Miroir', - 'description': 'by Fernand Leger, French Painter, 1881-1955', + {'s': '1920', + 't': 'Femme au Miroir', + 'd': 'by Fernand Leger, French Painter, 1881-1955', 'image': 'http://images.allposters.com/images/AWI/GMR117_b.jpg', 'link': 'http://www.allposters.com/-sp/Femme-au-Miroir-1920-Posters_i141266_.htm' }, - {'start': '1903', - 'title': 'The Old Guitarist', - 'description': 'by Pablo Picasso, Spanish Painter/Sculptor, 1881-1973', + {'s': '1903', + 't': 'The Old Guitarist', + 'd': 'by Pablo Picasso, Spanish Painter/Sculptor, 1881-1973', 'image': 'http://images.allposters.com/images/ESC/AP599_b.jpg', 'link': 'http://www.allposters.com/-sp/The-Old-Guitarist-c-1903-Posters_i328746_.htm' }, - {'start': '1882', - 'end': '1964', - 'title': 'Jour', - 'description': 'by Georges Braque, French Painter, 1882-1963', + {'s': '1882', + 'e': '1964', + 't': 'Jour', + 'd': 'by Georges Braque, French Painter, 1882-1963', 'image': 'http://images.allposters.com/images/SHD/S1041_b.jpg', 'link': 'http://www.allposters.com/-sp/Jour-Posters_i126663_.htm', 'color': 'green' }, - {'start': '1916', - 'title': 'Still Life with a White Dish', - 'description': 'by Gino Severini, Italian Painter, 1883-1966', + {'s': '1916', + 't': 'Still Life with a White Dish', + 'd': 'by Gino Severini, Italian Painter, 1883-1966', 'image': 'http://images.allposters.com/images/MCG/FS1254_b.jpg', 'link': 'http://www.allposters.com/-sp/Still-Life-with-a-White-Dish-1916-Posters_i366823_.htm' }, - {'start': '1885', - 'end': '1941', - 'title': 'Rhythm, Joie de Vivre', - 'description': 'by Robert Delaunay, French Painter, 1885-1941', + {'s': '1885', + 'e': '1941', + 't': 'Rhythm, Joie de Vivre', + 'd': 'by Robert Delaunay, French Painter, 1885-1941', 'image': 'http://imagecache2.allposters.com/images/pic/adc/10053983a_b~Rhythm-Joie-de-Vivre-Posters.jpg', 'link': 'http://www.allposters.com/-sp/Rhythm-Joie-de-Vivre-Posters_i1250641_.htm' }, - {'start': '1885', - 'end': '1925', - 'title': 'Castor Et Pollux (no stripe)', - 'description': 'by Roger de la Fresnaye, French Painter, 1885-1925', + {'s': '1885', + 'e': '1925', + 't': 'Castor Et Pollux (no stripe)', + 'd': 'by Roger de la Fresnaye, French Painter, 1885-1925', 'image': 'http://images.allposters.com/images/CORPOD/IX001463_b.jpg', 'link': 'http://www.allposters.com/-sp/Castor-Et-Pollux-Posters_i831718_.htm', 'caption': "This is the event's caption attribute.", @@ -85,43 +97,43 @@ }, - {'start': '1912', - 'title': 'Portrait of Pablo Picasso', - 'description': 'by Juan Gris, Spanish Painter/Sculptor, 1887-1927', + {'s': '1912', + 't': 'Portrait of Pablo Picasso', + 'd': 'by Juan Gris, Spanish Painter/Sculptor, 1887-1927', 'image': 'http://images.allposters.com/images/BRGPOD/156514_b.jpg', 'link': 'http://www.allposters.com/-sp/Portrait-of-Pablo-Picasso-1881-1973-1912-Posters_i1344154_.htm' }, - {'start': '1891', - 'end': '1915', - 'title': 'Portrait of Horace Brodsky', - 'description': 'by Henri Gaudier-Brzeska, French Sculptor, 1891-1915', + {'s': '1891', + 'e': '1915', + 't': 'Portrait of Horace Brodsky', + 'd': 'by Henri Gaudier-Brzeska, French Sculptor, 1891-1915', 'image': 'http://imagecache2.allposters.com/images/BRGPOD/102770_b.jpg', 'link': 'http://www.allposters.com/-sp/Portrait-of-Horace-Brodsky-Posters_i1584413_.htm' }, - {'start': '4400', - 'title': 'Barfusserkirche', - 'description': 'by Lyonel Feininger, American/German Painter, 1871-1956', + {'s': '4400', + 't': 'Barfusserkirche', + 'd': 'by Lyonel Feininger, American/German Painter, 1871-1956', 'image': 'http://images.allposters.com/images/AWI/NR096_b.jpg', 'link': 'http://www.allposters.com/-sp/Barfusserkirche-1924-Posters_i1116895_.htm' }, - {'start': '4400', - 'end': '4429', - 'title': 'Three Figures', - 'description': 'by Kasimir Malevich, Ukrainian Painter, 1878-1935', + {'s': '4400', + 'e': '4429', + 't': 'Three Figures', + 'd': 'by Kasimir Malevich, Ukrainian Painter, 1878-1935', 'image': 'http://images.allposters.com/images/BRGPOD/75857_b.jpg', 'link': 'http://www.allposters.com/-sp/Three-Figures-1913-28-Posters_i1349989_.htm' }, - {'start': '4400', - 'end': '4453', - 'title': 'Landschaft bei Montreuil', - 'description': 'by Albert Gleizes, French Painter, 1881-1953', + {'s': '4400', + 'e': '4453', + 't': 'Landschaft bei Montreuil', + 'd': 'by Albert Gleizes, French Painter, 1881-1953', 'image': 'http://images.allposters.com/images/mer/1336_b.jpg', 'link': 'http://www.allposters.com/-sp/Landschaft-bei-Montreuil-Posters_i339007_.htm', 'isDuration' : true, @@ -130,53 +142,53 @@ 'textColor' : 'green'}, - {'start': '4400', - 'title': 'Femme au Miroir', - 'description': 'by Fernand Leger, French Painter, 1881-1955', + {'s': '4400', + 't': 'Femme au Miroir', + 'd': 'by Fernand Leger, French Painter, 1881-1955', 'image': 'http://images.allposters.com/images/AWI/GMR117_b.jpg', 'link': 'http://www.allposters.com/-sp/Femme-au-Miroir-1920-Posters_i141266_.htm' }, - {'start': '4400', - 'title': 'The Old Guitarist', - 'description': 'by Pablo Picasso, Spanish Painter/Sculptor, 1881-1973', + {'s': '4400', + 't': 'The Old Guitarist', + 'd': 'by Pablo Picasso, Spanish Painter/Sculptor, 1881-1973', 'image': 'http://images.allposters.com/images/ESC/AP599_b.jpg', 'link': 'http://www.allposters.com/-sp/The-Old-Guitarist-c-1903-Posters_i328746_.htm' }, - {'start': '4400', - 'end': '4464', - 'title': 'Jour', - 'description': 'by Georges Braque, French Painter, 1882-1963', + {'s': '4400', + 'e': '4464', + 't': 'Jour', + 'd': 'by Georges Braque, French Painter, 1882-1963', 'image': 'http://images.allposters.com/images/SHD/S1041_b.jpg', 'link': 'http://www.allposters.com/-sp/Jour-Posters_i126663_.htm', 'color': 'green' }, - {'start': '4400', - 'title': 'Still Life with a White Dish', - 'description': 'by Gino Severini, Italian Painter, 1883-1966', + {'s': '4400', + 't': 'Still Life with a White Dish', + 'd': 'by Gino Severini, Italian Painter, 1883-1966', 'image': 'http://images.allposters.com/images/MCG/FS1254_b.jpg', 'link': 'http://www.allposters.com/-sp/Still-Life-with-a-White-Dish-1916-Posters_i366823_.htm' }, - {'start': '4400', - 'end': '4441', - 'title': 'Rhythm, Joie de Vivre', - 'description': 'by Robert Delaunay, French Painter, 1885-1941', + {'s': '4400', + 'e': '4441', + 't': 'Rhythm, Joie de Vivre', + 'd': 'by Robert Delaunay, French Painter, 1885-1941', 'image': 'http://imagecache2.allposters.com/images/pic/adc/10053983a_b~Rhythm-Joie-de-Vivre-Posters.jpg', 'link': 'http://www.allposters.com/-sp/Rhythm-Joie-de-Vivre-Posters_i1250641_.htm' }, - {'start': '4400', - 'end': '4425', - 'title': 'Castor Et Pollux (no stripe)', - 'description': 'by Roger de la Fresnaye, French Painter, 1885-1925', + {'s': '4400', + 'e': '4425', + 't': 'Castor Et Pollux (no stripe)', + 'd': 'by Roger de la Fresnaye, French Painter, 1885-1925', 'image': 'http://images.allposters.com/images/CORPOD/IX001463_b.jpg', 'link': 'http://www.allposters.com/-sp/Castor-Et-Pollux-Posters_i831718_.htm', 'caption': "This is the event's caption attribute.", @@ -184,35 +196,35 @@ }, - {'start': '4400', - 'title': 'Portrait of Pablo Picasso', - 'description': 'by Juan Gris, Spanish Painter/Sculptor, 1887-1927', + {'s': '4400', + 't': 'Portrait of Pablo Picasso', + 'd': 'by Juan Gris, Spanish Painter/Sculptor, 1887-1927', 'image': 'http://images.allposters.com/images/BRGPOD/156514_b.jpg', 'link': 'http://www.allposters.com/-sp/Portrait-of-Pablo-Picasso-1881-1973-1912-Posters_i1344154_.htm' }, - {'start': '4400', - 'end': '4415', - 'title': 'Portrait of Horace Brodsky', - 'description': 'by Henri Gaudier-Brzeska, French Sculptor, 1891-1915', + {'s': '4400', + 'e': '4415', + 't': 'Portrait of Horace Brodsky', + 'd': 'by Henri Gaudier-Brzeska, French Sculptor, 1891-1915', 'image': 'http://imagecache2.allposters.com/images/BRGPOD/102770_b.jpg', 'link': 'http://www.allposters.com/-sp/Portrait-of-Horace-Brodsky-Posters_i1584413_.htm' }, - {'start': '4400', - 'end': '4441', - 'title': 'Rhythm, Joie de Vivre', - 'description': 'by Robert Delaunay, French Painter, 1885-1941', + {'s': '4400', + 'e': '4441', + 't': 'Rhythm, Joie de Vivre', + 'd': 'by Robert Delaunay, French Painter, 1885-1941', 'image': 'http://imagecache2.allposters.com/images/pic/adc/10053983a_b~Rhythm-Joie-de-Vivre-Posters.jpg', 'link': 'http://www.allposters.com/-sp/Rhythm-Joie-de-Vivre-Posters_i1250641_.htm' }, - {'start': '4400', - 'end': '4425', - 'title': 'Castor Et Pollux (no stripe)', - 'description': 'by Roger de la Fresnaye, French Painter, 1885-1925', + {'s': '4400', + 'e': '4425', + 't': 'Castor Et Pollux (no stripe)', + 'd': 'by Roger de la Fresnaye, French Painter, 1885-1925', 'image': 'http://images.allposters.com/images/CORPOD/IX001463_b.jpg', 'link': 'http://www.allposters.com/-sp/Castor-Et-Pollux-Posters_i831718_.htm', 'caption': "This is the event's caption attribute.", @@ -220,18 +232,18 @@ }, - {'start': '4400', - 'title': 'Portrait of Pablo Picasso', - 'description': 'by Juan Gris, Spanish Painter/Sculptor, 1887-1927', + {'s': '4400', + 't': 'Portrait of Pablo Picasso', + 'd': 'by Juan Gris, Spanish Painter/Sculptor, 1887-1927', 'image': 'http://images.allposters.com/images/BRGPOD/156514_b.jpg', 'link': 'http://www.allposters.com/-sp/Portrait-of-Pablo-Picasso-1881-1973-1912-Posters_i1344154_.htm' }, - {'start': '4400', - 'end': '4415', - 'title': 'Portrait of Horace Brodsky', - 'description': 'by Henri Gaudier-Brzeska, French Sculptor, 1891-1915', + {'s': '4400', + 'e': '4415', + 't': 'Portrait of Horace Brodsky', + 'd': 'by Henri Gaudier-Brzeska, French Sculptor, 1891-1915', 'image': 'http://imagecache2.allposters.com/images/BRGPOD/102770_b.jpg', 'link': 'http://www.allposters.com/-sp/Portrait-of-Horace-Brodsky-Posters_i1584413_.htm' } diff --git a/src/webapp/examples/test_example2/test_example2.html b/src/webapp/examples/test_example2/test_example2.html index b82cb5b..de37a0a 100644 --- a/src/webapp/examples/test_example2/test_example2.html +++ b/src/webapp/examples/test_example2/test_example2.html @@ -168,6 +168,7 @@

Test Example 2

  • Changing the default theme
  • Loading two different event files sequentially.
  • +
  • The second dataset, cubism2, uses event attribute synonyms to reduce the size of the file.
  • Timeline starts at 1850 and ends at 4480 diff --git a/tools/excel_to_json/process.pl b/tools/excel_to_json/process.pl index 1066bb4..0b9c79b 100755 --- a/tools/excel_to_json/process.pl +++ b/tools/excel_to_json/process.pl @@ -2,6 +2,8 @@ # # This program enables the user to submit an excel file and have it # returned as a json representation +# +# Status: in development by Larry K # # Datetime Perl resources http://datetime.perl.org/?Resources