12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["jeus.Chart"]){dojo._hasResource["jeus.Chart"]=true;dojo.provide("jeus.Chart");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.require("dojox.charting.Chart2D");dojo.require("dojox.charting.themes.Minty");dojo.require("dojo.date.locale");dojo.declare("jeus.StatisticChart",[dijit._Widget,dijit._Templated],{templateString:"<div><div dojoAttachPoint=\"graphNode\" class=\"statistic_chart\"></div><div dojoAttachPoint=\"legendNode\" class=\"statistic_chart_legend\"></div><div dojoAttachPoint=\"graphItemChoiceNode\" class=\"statistic_chart_choice\"></div></div>",url:"",objectName:"",name:"",interval:3000,statistic:"",color:{"UpperBound":"blue","LowerBound":"red","HighWaterMark":"green","LowWaterMark":"gray","Current":"black","Count":"black","MaxTime":"blue","MinTime":"red","TotalTime":"green"},limit:200,startTime:0,vmin:0,vmax:0,postMixInProperties:function(){this.inherited(arguments);if(this.statistic=="BoundedRangeStatistic"){this.series=["UpperBound","LowerBound","HighWaterMark","LowWaterMark","Current"];}else{if(this.statistic=="RangeStatistic"){this.series=["HighWaterMark","LowWaterMark","Current"];}else{if(this.statistic=="BoundaryStatistic"){this.series=["UpperBound","LowerBound"];}else{if(this.statistic=="CountStatistic"){this.series=["Count"];}else{if(this.statistic=="TimeStatistic"){this.series=["Count","MaxTime","MinTime","TotalTime"];}else{}}}}}this.data=[];dojo.xhrGet({url:this.url,handleAs:"json",content:{objectName:this.objectName,name:this.name},sync:true,load:dojo.hitch(this,function(_1,_2){dojo.forEach(this.series,function(_3){this.data[_3]=[];this.data[_3].push(_1[_3]);this.startTime=_1[_3].x;},this);})});},postCreate:function(){var _4="<div>Select: </div><ul>";dojo.forEach(this.series,function(_5){_4+="<li style=\"color:"+this.color[_5]+";\" ><input type=\"checkbox\" checked=\"checked\" value=\""+_5+"\" />"+_5+"</li>";},this);_4+="</ul>";this.graphItemChoiceNode.innerHTML=_4;this._chart=new dojox.charting.Chart2D(this.graphNode);this._chart.setTheme(dojox.charting.themes.Minty);this._updateXAxis();this._updateYAxis();this._chart.addPlot("default",{tension:2});for(var _6 in this.data){this._chart.addSeries(_6,this.data[_6],{stroke:this.color[_6]});}dojo.query("input",this.graphItemChoiceNode).forEach(function(_7){this.connect(_7,"onclick","_onClick");},this);this._chart.render();this.timer=setInterval(dojo.hitch(this,"_refresh"),this.interval);},_updateXAxis:function(){this._chart.addAxis("x",{fixLower:"minor",min:this.startTime,max:this.startTime+this.limit*this.interval,labelFunc:function(_8,_9,_a){return dojo.date.locale.format(new Date(_9),{selector:"time",formatLength:"short",timePattern:"HH:mm:ss"});},majorTick:{stroke:"black",length:5},minorTick:{stroke:"gray",length:3}});},_updateYAxis:function(){var _b=Math.max(10,parseInt((this.vmax-this.vmin)/10));this._chart.addAxis("y",{vertical:true,fixLower:"minor",min:Math.max(-1,this.vmin-_b),max:this.vmax+_b,majorTick:{stroke:"black",length:5},minorTick:{stroke:"gray",length:3}});},_refresh:function(){dojo.xhrGet({url:this.url,handleAs:"json",content:{objectName:this.objectName,name:this.name},load:dojo.hitch(this,"_refreshRender")});},_refreshRender:function(_c){if(!!_c){var _d=false;for(var _e in this.data){var d=this.data[_e];while(d.length>=this.limit){d.shift();_d=true;}d.push(_c[_e]);}if(_d){this.startTime=this.data[this.series[0]][0].x;this._updateXAxis();}}var _f=this.vmin;var _10=this.vmax;var _11=false;for(var _e in this.data){var d=this.data[_e];if(dojo.some(this.series,function(src){return src==_e;})){this._chart.updateSeries(_e,d);if(!_11){this.vmin=d[0].y;this.vmax=d[0].y;_11=true;}dojo.forEach(d,function(src){this.vmin=Math.min(src.y,this.vmin);this.vmax=Math.max(src.y,this.vmax);},this);}else{this._chart.updateSeries(_e,[]);}}if(_f!=this.vmin||_10!=this.vmax){this._updateYAxis();}this._chart.render();},_onClick:function(evt){this.series=dojo.query("input",this.graphItemChoiceNode).filter(function(src){return src.checked;}).map(function(src){return src.value;});this._refreshRender();},uninitialize:function(){clearInterval(this.timer);this.timer=null;this._chart.destroy(true);return this.inherited(arguments);}});}
|