From: <tz...@us...> - 2007-02-02 08:44:48
|
Revision: 206 http://svn.sourceforge.net/zkforge/?rev=206&view=rev Author: tzgwx Date: 2007-02-02 00:44:42 -0800 (Fri, 02 Feb 2007) Log Message: ----------- Modified Paths: -------------- trunk/timelinez/src/archive/web/js/timelinez/timeline.js trunk/timelinez/src/org/zkforge/timeline/Bandinfo.java trunk/timelinez/src/org/zkforge/timeline/Timeline.java trunk/timelinez/src/org/zkforge/timeline/data/OccurEvent.java Modified: trunk/timelinez/src/archive/web/js/timelinez/timeline.js =================================================================== --- trunk/timelinez/src/archive/web/js/timelinez/timeline.js 2007-02-01 07:45:22 UTC (rev 205) +++ trunk/timelinez/src/archive/web/js/timelinez/timeline.js 2007-02-02 08:44:42 UTC (rev 206) @@ -54,36 +54,36 @@ } var bandCount=cmp.instance.getBandCount(); - cmp.instance.showLoadingMessage(); + //cmp.instance.showLoadingMessage(); for(i=0;i<bandCount;i++){ var doScroll=function(band){ if(band.currentMinVisiableDate>band.getMinVisibleDate()){ var uuid=band.uuid; var val=[ - band.getMinVisibleDate().toUTCString(),//min - band.currentMaxVisiableDate.toUTCString(),//max + band.getMinVisibleDate().toGMTString(),//min + band.currentMaxVisiableDate.toGMTString(),//max ]; band.currentMinVisiableDate=band.getMinVisibleDate(); zkau.send({uuid:uuid,cmd:"onBandScroll",data:val},5); - band._timeline.showLoadingMessage(); } if(band.currentMaxVisiableDate<band.getMaxVisibleDate()){ var uuid=band.uuid; var val=[ - band.currentMinVisiableDate.toUTCString(),//min - band.getMaxVisibleDate().toUTCString(),//max + band.currentMinVisiableDate.toGMTString(),//min + band.getMaxVisibleDate().toGMTString(),//max ]; band.currentMaxVisiableDate=band.getMaxVisibleDate(); zkau.send({uuid:uuid,cmd:"onBandScroll",data:val},5); - band._timeline.showLoadingMessage(); } }; cmp.instance.getBand(i).addOnScrollListener(doScroll); - cmp.instance.getBand(i).currentMinVisiableDate=cmp.instance.getBand(i).getMinVisibleDate(); - cmp.instance.getBand(i).currentMaxVisiableDate=cmp.instance.getBand(i).getMaxVisibleDate(); + if(cmp.instance.getBand(i).currentMinVisiableDate==null) + cmp.instance.getBand(i).currentMinVisiableDate=cmp.instance.getBand(i).getMinVisibleDate(); + if(cmp.instance.getBand(i).currentMaxVisiableDate==null) + cmp.instance.getBand(i).currentMaxVisiableDate=cmp.instance.getBand(i).getMaxVisibleDate(); var val=[ - cmp.instance.getBand(i).currentMinVisiableDate.toUTCString(),//min - cmp.instance.getBand(i).currentMaxVisiableDate.toUTCString(),//max + cmp.instance.getBand(i).currentMinVisiableDate.toGMTString(),//min + cmp.instance.getBand(i).currentMaxVisiableDate.toGMTString()//max ]; zkau.send({uuid:cmp.instance.getBand(i).uuid,cmd:"onBandScroll",data:val},5); } @@ -130,12 +130,76 @@ else cmp.orient = Timeline.VERTICAL; return true; + case "z.filter": + var matcher=value; + matcher.replace(/^\s+/, '').replace(/\s+$/, ''); + var regex=new RegExp(matcher,"i"); + var filterMatcher = function(evt) { + return (regex.test(evt._text) || regex.test(evt._description)); + }; + for(i=0;i<cmp.instance.getBandCount();i++){ + cmp.instance.getBand(i).getEventPainter().setFilterMatcher(filterMatcher); + } + cmp.instance.paint(); + return true; + + case "z.highlight": + var matchers=eval('('+value+')'); + + var regexes = []; + for (var x = 0; x < matchers.length; x++) { + var input=matchers[x]; + var text2 = input.replace(/^\s+/, '').replace(/\s+$/, ''); + if(text2.length>0) + regexes.push(new RegExp(text2, "i")); + else + regexes.push(null); + } + + var highlightMatcher = function(evt) { + + var text = evt.getText(); + var description = evt.getDescription(); + for (var x = 0; x < regexes.length; x++) { + var regex = regexes[x]; + + if (regex != null && (regex.test(text) || regex.test(description))) { + return x; + } + } + return -1; + }; + for(i=0;i<cmp.instance.getBandCount();i++){ + cmp.instance.getBand(i).getEventPainter().setHighlightMatcher(highlightMatcher); + } + cmp.instance.paint(); + return true; + case "z.clearFilter": + for(i=0;i<cmp.instance.getBandCount();i++){ + cmp.instance.getBand(i).getEventPainter().setFilterMatcher(null); + } + return true; + case "z.clearHighlight": + for(i=0;i<cmp.instance.getBandCount();i++){ + cmp.instance.getBand(i).getEventPainter().setHighlightMatcher(null); + } + return true; + + } } return false; }; - +///// +zkTimeline.showLoadingMessage=function(uuid){ + var timeline=$e(uuid); + timeline.instance.showLoadingMessage(); +}; +zkTimeline.hideLoadingMessage=function(uuid){ + var timeline=$e(uuid); + timeline.instance.hideLoadingMessage(); +}; //// zkBandInfo={}; @@ -202,12 +266,22 @@ cmp.bandinfo.uuid=cmp.id; }; +////// +zkBandInfo.loadXML = function(timeline,band,url){ + Timeline.loadXML(url, + function(xml, url) { + //for(i=0;i<timeline.bandInfos.length;i++){ + // if(timeline.bandInfos[i].eventSourceUrl==url){ + // timeline.bandInfos[i].eventSource.loadXML(xml,url); + // } + //} + band.bandinfo.eventSource.loadXML(xml,url); + }); +}; - /** Called by the server to set the attribute. */ zkBandInfo.setAttr = function (cmp, name, value) { - //alert(name+"="+value); - if (cmp) { + //alert(name+"="+value); var timeline=$e(getZKAttr(cmp,"pid")); if(timeline.instance){ switch (name) { @@ -241,85 +315,185 @@ case "z.timeZone": setZKAttr(cmp,"timeZone",value); return true; - case "z.addEvent": - //value is a JSON string + case "z.removeHighlightDecorator": + var params=eval('('+value+')'); + for(var d in cmp.bandinfo.decorators){ + if(d._id==params.id) + cmp.bandinfo.decorators.remove(d); + } + timeline.instance.paint(); + return true; + case "z.eventSourceUrl": timeline.instance.showLoadingMessage(); - var evts=eval('['+value+']'); - zkBandInfo.addMany(cmp,evts); - timeline.instance.paint(); + //timeline.instance.paint(); + + cmp.bandinfo.eventSourceUrl=value; + if(timeline.eventSources==null) timeline.eventSources={}; + if(cmp.bandinfo.eventSourceUrl) timeline.eventSources[cmp.bandinfo.eventSourceUrl]=cmp.bandinfo.eventSourceUrl; + cmp.bandinfo.eventSource.clear(); + for(i=0;i<cmp.dynaEvents.length;i++){ + var e=cmp.dynaEvents[i]; + cmp.bandinfo.eventSource.add(e); + if( cmp.bandinfo.eventPainter.getLayout()._tracks==null) + cmp.bandinfo.eventPainter.getLayout()._tracks=[];//for IE + cmp.bandinfo.eventPainter.getLayout()._layout(); + } + zkBandInfo.loadXML(timeline,cmp,value); + timeline.instance.hideLoadingMessage(); - if(evts.length>0)//scroll to new event - timeline.instance.getBand(cmp.bandinfo.bandIndex).scrollToCenter(new Date(Date.parse(evts[0].start))); return true; - case "z.requiredOccurEvents": - var evts=eval('('+value+')'); - zkBandInfo.addMany(cmp,evts); - timeline.instance.paint(); - timeline.instance.hideLoadingMessage(); - return true; - } - } - } + }//end switch + }//end if return false; }; +////// +zkBandInfo.scrollToCenter=function(uuid,dateString){ + var band=$e(uuid); + var timeline=$e(getZKAttr(band,"pid")); + var currentDate=new Date(Date.parse(dateString)); + timeline.instance.getBand(band.bandinfo.bandIndex).scrollToCenter(currentDate); +}; +////// +zkBandInfo.addOccurEvent=function(uuid,params){ + var band=$e(uuid); + var timeline=$e(getZKAttr(band,"pid")); + + var p=[]; + p[0]=params; + zkBandInfo.addManyOccurEvent(uuid,p); + +}; +///// +zkBandInfo.removeOccurEvent=function(uuid,eventId){ + var band=$e(uuid); + var timeline=$e(getZKAttr(band,"pid")); + + if(band.bandinfo.eventSource._events==null) return; + + var iter=band.bandinfo.eventSource._events.getAllIterator(); + while(iter.hasNext()){ + var e=iter.next(); + if(e==null) continue; + if(e._id=="dynaEvent"+eventId){ + band.bandinfo.eventSource._events._events.remove(e); + } + } + + timeline.instance.paint(); + +}; +zkBandInfo.parseDateTime=function(dateString){ + if(dateString==null) return null; + try { + return new Date(Date.parse(dateString)); + } catch (e) { + + return null; + } +} +//////new a event +zkBandInfo.newEvent=function(cmp,params){ + var evt=new Timeline.DefaultEventSource.Event( + zkBandInfo.parseDateTime(params.start), + zkBandInfo.parseDateTime(params.end), + zkBandInfo.parseDateTime(params.latestStart), + zkBandInfo.parseDateTime(params.earliestEnd), + params.duration, + params.text, + params.description, + cmp.eventSource._resolveRelativeURL(params.image, ""), + cmp.eventSource._resolveRelativeURL(params.link, ""), + cmp.eventSource._resolveRelativeURL(params.icon, ""), + params.color, + params.textColor + ); + evt._id="dynaEvent"+params.id; + //alert(evt._id); + return evt; +}; //add a event to band -zkBandInfo.addMany=function(cmp,data){ +zkBandInfo.addManyOccurEvent=function(uuid,data){ + var band=$e(uuid); + var timeline=$e(getZKAttr(band,"pid")); if(data.length==0) return; + timeline.instance.showLoadingMessage(); var events=[]; + if(band.dynaEvents==null) band.dynaEvents=[]; for(i=0;i<data.length;i++){ - var evt=new Timeline.DefaultEventSource.Event( - new Date(Date.parse(data[i].start)), - new Date(Date.parse(data[i].end)), - new Date(Date.parse(data[i].latestStart)), - new Date(Date.parse(data[i].earliestEnd)), - data[i].duration, - data[i].text, - data[i].description, - cmp.eventSource._resolveRelativeURL(data[i].image, ""), - cmp.eventSource._resolveRelativeURL(data[i].link, ""), - cmp.eventSource._resolveRelativeURL(data[i].icon, ""), - data[i].color, - data[i].textColor - ); - evt._bindings = data[i]; - evt.getProperty = function(name) { - return this._bindings[name]; - }; + var evt=zkBandInfo.newEvent(band,data[i]); + //band.dynaEvents[band.dynaEvents.length]=zkBandInfo.newEvent(band,data[i]); + band.dynaEvents[band.dynaEvents.length]=evt; events[events.length]=evt; } - cmp.bandinfo.eventSource.addMany(events); - cmp.bandinfo.eventPainter.getLayout()._layout(); + //alert(events); + band.bandinfo.eventSource.addMany(events); + if( band.bandinfo.eventPainter.getLayout()._tracks==null) + band.bandinfo.eventPainter.getLayout()._tracks=[];//for IE + band.bandinfo.eventPainter.getLayout()._layout(); + timeline.instance.hideLoadingMessage(); //return evt; }; -//add a event to band -zkBandInfo.addEvent=function(cmp,data){ - //alert("call addEvent"); - var evt=new Timeline.DefaultEventSource.Event( - new Date(Date.parse(data.start)), - new Date(Date.parse(data.end)), - new Date(Date.parse(data.latestStart)), - new Date(Date.parse(data.earliestEnd)), - data.duration, - data.text, - data.description, - cmp.eventSource._resolveRelativeURL(data.image, ""), - cmp.eventSource._resolveRelativeURL(data.link, ""), - cmp.eventSource._resolveRelativeURL(data.icon, ""), - data.color, - data.textColor - ); - evt._bindings = data; - evt.getProperty = function(name) { - return this._bindings[name]; - }; - cmp.bandinfo.eventSource.add(evt); - cmp.bandinfo.eventPainter.getLayout()._layout(); - //var events=[]; - //events[events.length]=evt; - //cmp.bandinfo.eventSource.addMany(events); - //return evt; +////// +zkBandInfo.addHighlightDecorator=function(uuid,params){ + var band=$e(uuid); + var timeline=$e(getZKAttr(band,"pid")); + + if(band.bandinfo.decorators==null) { + band.bandinfo.decorators=[]; + timeline.instance.getBand(band.bandinfo.bandIndex)._decorators=band.bandinfo.decorators; + } + if(params.HighlightDecoratorName=="SpanHighlightDecorator"){ + var shd=new Timeline.SpanHighlightDecorator({ + startDate: params.startDate, + endDate: params.endDate, + color: params.color, + opacity: parseInt(params.opacity), + startLabel: params.startLabel, + endLabel: params.endLabel, + theme: Timeline.getDefaultTheme() + }); + //alert(shd._id); + band.bandinfo.decorators[band.bandinfo.decorators.length]=shd; + shd.initialize(timeline.instance.getBand(band.bandinfo.bandIndex),timeline.instance); + shd._id=params.id; + //shd.paint(); + timeline.instance.paint(); + }else{ + var phd= new Timeline.PointHighlightDecorator({ + date: params.date, + color: params.color, + opacity: parseInt(params.opacity), + theme: Timeline.getDefaultTheme() + }); + band.bandinfo.decorators[band.bandinfo.decorators.length]=phd; + phd.initialize(timeline.instance.getBand(band.bandinfo.bandIndex),timeline.instance); + phd._id=params.id; + //phd.paint(); + timeline.instance.paint(); + }//end if + + }; + +//////// +zkBandInfo.removeHighlightDecorator=function(uuid,decoratorId){ + var band=$e(uuid); + var timeline=$e(getZKAttr(band,"pid")); + if(band.bandinfo.decorators==null) return; + for(i=0;i<band.bandinfo.decorators.length;i++){ + var d=band.bandinfo.decorators[i]; + if(d._id==decoratorId){ + band.bandinfo.decorators.remove(d); + //timeline.instance.getBand(band.bandinfo.bandIndex)._decorators.remove(d); + } + } + timeline.instance.getBand(band.bandinfo.bandIndex)._decorators=[]; + //timeline.instance.getBand(band.bandinfo.bandIndex).paint(); + timeline.instance.paint(); +}; + + //// zkHotZone={}; Modified: trunk/timelinez/src/org/zkforge/timeline/Bandinfo.java =================================================================== --- trunk/timelinez/src/org/zkforge/timeline/Bandinfo.java 2007-02-01 07:45:22 UTC (rev 205) +++ trunk/timelinez/src/org/zkforge/timeline/Bandinfo.java 2007-02-02 08:44:42 UTC (rev 206) @@ -1,27 +1,33 @@ package org.zkforge.timeline; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.TimeZone; import org.json.simple.JSONArray; import org.zkforge.timeline.data.OccurEvent; +import org.zkforge.timeline.decorator.HighlightDecorator; import org.zkforge.timeline.impl.TimelineComponent; import org.zkforge.timeline.util.OccurEventComparator; import org.zkforge.timeline.util.TimelineUtil; import org.zkoss.lang.Objects; import org.zkoss.xml.HTMLs; +import org.zkoss.zk.au.AuScript; import org.zkoss.zk.au.Command; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.UiException; import org.zkoss.zk.ui.WrongValueException; public class Bandinfo extends TimelineComponent { - private List _events = new ArrayList(); + // private List decorators = new ArrayList(); + private OccurEventComparator oec = new OccurEventComparator(); private String _local; @@ -49,15 +55,6 @@ private String _eventSourceUrl; public Bandinfo() { - OccurEvent e1 = new OccurEvent(); - Date d = new Date(Date.parse("May 28 2006 09:00:00 GMT")); - e1.setText("lazy-load data"); - e1.setStart(d); - e1.setEnd(d); - e1.setDuration(true); - OccurEventDecorator oed = new OccurEventDecorator(e1); - oed.setShow(false); - _events.add(oed); } @@ -290,16 +287,23 @@ public void addOccurEvent(OccurEvent event) { // if (!Objects.equals(event, _event)) { // _event = event; - OccurEventDecorator oed = new OccurEventDecorator(event); + if (event == null) + return; - _events.add(oed); - // Collections.sort(_events, oed); - smartUpdate("z.addEvent", event.toString()); - oed.setShow(true); + response("addOccurEvent" + event.getId(), new AuScript(this, + "zkBandInfo.addOccurEvent(\"" + getUuid() + "\"" + "," + + event.toString() + ")")); // } } + public void removeOccurEvent(OccurEvent event) { + + response("removeOccurEvent" + event.getId(), new AuScript(this, + "zkBandInfo.removeOccurEvent(\"" + getUuid() + "\"" + "," + + "\"" + event.getId() + "\")")); + } + // -- Component --// public String getEventSourceUrl() { @@ -325,23 +329,62 @@ getParent().invalidate(); } - public void transferOccureEvents(Date min, Date max) { - Iterator iter = _events.iterator(); + public void addManyOccureEvents(ArrayList events) { + if (events == null) + return; + Iterator iter = events.iterator(); JSONArray list = new JSONArray(); - System.out.println("min=" + min.toString()); - System.out.println("max=" + max.toString()); while (iter.hasNext()) { - OccurEventDecorator oed = (OccurEventDecorator) iter.next(); - //System.out.println(oed.getEvent().getStart().toString()); - if (oed.getEvent().isInRange(min, max) && !(oed.isShow())) { - list.add(oed.getEvent()); - oed.setShow(true); - } + OccurEvent e = (OccurEvent) iter.next(); + list.add(e); } - System.out.println(list); - smartUpdate("z.requiredOccurEvents", list.toString()); + // System.out.println(list); + + response("addManyOccurEvent" + events.hashCode(), new AuScript(this, + "zkBandInfo.addManyOccurEvent(\"" + getUuid() + "\"" + "," + + list.toString() + ")")); + } + public void addHighlightDecorator(HighlightDecorator hd) { + // decorators.add(hd); + if (hd == null) + return; + response("addHighlightDecorator" + hd.getId(), new AuScript(this, + "zkBandInfo.addHighlightDecorator(\"" + getUuid() + "\"" + "," + + hd.toString() + ")")); + } + + public void removeHighlightDecorator(HighlightDecorator hd) { + // decorators.remove(hd); + if (hd == null) + return; + response("removeHighlightDecorator" + hd.getId(), new AuScript(this, + "zkBandInfo.removeHighlightDecorator(\"" + getUuid() + "\"" + + "," + hd.getId() + ")")); + // smartUpdate("z.removeHighlightDecorator", hd.getId()); + //invalidate(); + } + + public void showLoadingMessage(boolean show) { + if (show) { + response("showLoadingMessage", new AuScript(this, + "zkTimeline.showLoadingMessage(\"" + getParent().getUuid() + + "\"" + ")")); + } else { + response("hideLoadingMessage", new AuScript(this, + "zkTimeline.hideLoadingMessage(\"" + getParent().getUuid() + + "\"" + ")")); + } + + } + + public void scrollToCenter(Date date) { + response("scrollToCenter", new AuScript(this, + "zkBandInfo.scrollToCenter(\"" + getUuid() + "\"" + ",\"" + + date.toString() + "\")")); + } + static { new BandScrollCommand("onBandScroll", Command.IGNORE_OLD_EQUIV); } Modified: trunk/timelinez/src/org/zkforge/timeline/Timeline.java =================================================================== --- trunk/timelinez/src/org/zkforge/timeline/Timeline.java 2007-02-01 07:45:22 UTC (rev 205) +++ trunk/timelinez/src/org/zkforge/timeline/Timeline.java 2007-02-02 08:44:42 UTC (rev 206) @@ -1,5 +1,6 @@ package org.zkforge.timeline; +import org.json.simple.JSONArray; import org.zkforge.timeline.impl.TimelineComponent; import org.zkoss.lang.Objects; import org.zkoss.zk.ui.Component; @@ -77,8 +78,22 @@ } } - - public void reLayout(){ + + public void reLayout() { // } + + public void performFiltering(String filterText) { + + smartUpdate("z.filter", filterText); + } + + public void performHighlitht(String highlightText[]) { + JSONArray matchers=new JSONArray(); + for(int i=0;i<highlightText.length;i++){ + matchers.add(highlightText[i]); + } + System.out.println(matchers.toString()); + smartUpdate("z.highlight", matchers.toString()); + } } Modified: trunk/timelinez/src/org/zkforge/timeline/data/OccurEvent.java =================================================================== --- trunk/timelinez/src/org/zkforge/timeline/data/OccurEvent.java 2007-02-01 07:45:22 UTC (rev 205) +++ trunk/timelinez/src/org/zkforge/timeline/data/OccurEvent.java 2007-02-02 08:44:42 UTC (rev 206) @@ -5,40 +5,51 @@ import org.json.simple.JSONObject; public class OccurEvent { + private static int count = 0; + @Override public String toString() { // TODO Auto-generated method stub JSONObject json = new JSONObject(); - json.put("start", _start.toString()); - json.put("end", _end.toString()); - json.put("latestStart", _latestStart.toString()); - json.put("earliestEnd", _earliestEnd.toString()); - json.put("text", _text); + json.put("id", _id); + if (_start != null) + json.put("start", _start.toString()); + if (_end != null) + json.put("end", _end.toString()); + if (_latestStart != null) + json.put("latestStart", _latestStart.toString()); + if (_earliestEnd != null) + json.put("earliestEnd", _earliestEnd.toString()); json.put("duration", _duration); - json.put("text", _text); - json.put("description", _description); - json.put("image", _imageUrl); - json.put("link", _linkUrl); + if (_text != null) + json.put("text", _text); + if (_description != null) + json.put("description", _description); + if (_imageUrl != null) + json.put("image", _imageUrl); + if (_linkUrl != null) + json.put("link", _linkUrl); if (_iconUrl != null) json.put("icon", _iconUrl); - else - json.put("icon", null); - json.put("color", _color); - json.put("textColor", _textColor); + + if (_color != null) + json.put("color", _color); + if (_textColor != null) + json.put("textColor", _textColor); return json.toString(); } private Date _start = new Date(); - private Date _end = new Date(); + private Date _end = null; - private Date _latestStart = new Date(); + private Date _latestStart = null; - private Date _earliestEnd = new Date(); + private Date _earliestEnd = null; - private String _text = "\xB2\xE2\xCA\xD4\xCA\xFD\xBE\xDD"; + private String _text = ""; - private String _description = "\xB2\xE2\xCA\xD4\xCA\xFD\xBE\xDD"; + private String _description = ""; private String _imageUrl = ""; @@ -50,10 +61,12 @@ private boolean _duration = true; - private String _color = "#fff"; + private String _color = null; - private String _textColor = "#000"; + private String _textColor = null; + private int _id = count++; + public String getColor() { return _color; } @@ -164,4 +177,8 @@ return false; } + public String getId() { + return String.valueOf(_id); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |