X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-combined.js;h=cd7fdb71147d88c12ac4c0ec0f8799ba3edbd02c;hb=64c7f18ba9837e743449ba9849db1faad16a9410;hp=dfd995a5ba378f43d2418fd65f187019b74977a1;hpb=6372d4330706b5efa654df04c0c491803a140671;p=dygraphs.git diff --git a/dygraph-combined.js b/dygraph-combined.js index dfd995a..cd7fdb7 100644 --- a/dygraph-combined.js +++ b/dygraph-combined.js @@ -4602,6 +4602,7 @@ PlotKit.Canvas.__new__(); MochiKit.Base._exportSymbols(this,PlotKit.Canvas); +Date.ext={};Date.ext.util={};Date.ext.util.xPad=function(x,pad,r){if(typeof (r)=="undefined"){r=10}for(;parseInt(x,10)1;r/=10){x=pad.toString()+x}return x.toString()};Date.prototype.locale="en-GB";if(document.getElementsByTagName("html")&&document.getElementsByTagName("html")[0].lang){Date.prototype.locale=document.getElementsByTagName("html")[0].lang}Date.ext.locales={};Date.ext.locales.en={a:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],A:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],b:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],B:["January","February","March","April","May","June","July","August","September","October","November","December"],c:"%a %d %b %Y %T %Z",p:["AM","PM"],P:["am","pm"],x:"%d/%m/%y",X:"%T"};Date.ext.locales["en-US"]=Date.ext.locales.en;Date.ext.locales["en-US"].c="%a %d %b %Y %r %Z";Date.ext.locales["en-US"].x="%D";Date.ext.locales["en-US"].X="%r";Date.ext.locales["en-GB"]=Date.ext.locales.en;Date.ext.locales["en-AU"]=Date.ext.locales["en-GB"];Date.ext.formats={a:function(d){return Date.ext.locales[d.locale].a[d.getDay()]},A:function(d){return Date.ext.locales[d.locale].A[d.getDay()]},b:function(d){return Date.ext.locales[d.locale].b[d.getMonth()]},B:function(d){return Date.ext.locales[d.locale].B[d.getMonth()]},c:"toLocaleString",C:function(d){return Date.ext.util.xPad(parseInt(d.getFullYear()/100,10),0)},d:["getDate","0"],e:["getDate"," "],g:function(d){return Date.ext.util.xPad(parseInt(Date.ext.util.G(d)/100,10),0)},G:function(d){var y=d.getFullYear();var V=parseInt(Date.ext.formats.V(d),10);var W=parseInt(Date.ext.formats.W(d),10);if(W>V){y++}else{if(W===0&&V>=52){y--}}return y},H:["getHours","0"],I:function(d){var I=d.getHours()%12;return Date.ext.util.xPad(I===0?12:I,0)},j:function(d){var ms=d-new Date(""+d.getFullYear()+"/1/1 GMT");ms+=d.getTimezoneOffset()*60000;var doy=parseInt(ms/60000/60/24,10)+1;return Date.ext.util.xPad(doy,0,100)},m:function(d){return Date.ext.util.xPad(d.getMonth()+1,0)},M:["getMinutes","0"],p:function(d){return Date.ext.locales[d.locale].p[d.getHours()>=12?1:0]},P:function(d){return Date.ext.locales[d.locale].P[d.getHours()>=12?1:0]},S:["getSeconds","0"],u:function(d){var dow=d.getDay();return dow===0?7:dow},U:function(d){var doy=parseInt(Date.ext.formats.j(d),10);var rdow=6-d.getDay();var woy=parseInt((doy+rdow)/7,10);return Date.ext.util.xPad(woy,0)},V:function(d){var woy=parseInt(Date.ext.formats.W(d),10);var dow1_1=(new Date(""+d.getFullYear()+"/1/1")).getDay();var idow=woy+(dow1_1>4||dow1_1<=1?0:1);if(idow==53&&(new Date(""+d.getFullYear()+"/12/31")).getDay()<4){idow=1}else{if(idow===0){idow=Date.ext.formats.V(new Date(""+(d.getFullYear()-1)+"/12/31"))}}return Date.ext.util.xPad(idow,0)},w:"getDay",W:function(d){var doy=parseInt(Date.ext.formats.j(d),10);var rdow=7-Date.ext.formats.u(d);var woy=parseInt((doy+rdow)/7,10);return Date.ext.util.xPad(woy,0,10)},y:function(d){return Date.ext.util.xPad(d.getFullYear()%100,0)},Y:"getFullYear",z:function(d){var o=d.getTimezoneOffset();var H=Date.ext.util.xPad(parseInt(Math.abs(o/60),10),0);var M=Date.ext.util.xPad(o%60,0);return(o>0?"-":"+")+H+M},Z:function(d){return d.toString().replace(/^.*\(([^)]+)\)$/,"$1")},"%":function(d){return"%"}};Date.ext.aggregates={c:"locale",D:"%m/%d/%y",h:"%b",n:"\n",r:"%I:%M:%S %p",R:"%H:%M",t:"\t",T:"%H:%M:%S",x:"locale",X:"locale"};Date.ext.aggregates.z=Date.ext.formats.z(new Date());Date.ext.aggregates.Z=Date.ext.formats.Z(new Date());Date.ext.unsupported={};Date.prototype.strftime=function(fmt){if(!(this.locale in Date.ext.locales)){if(this.locale.replace(/-[a-zA-Z]+$/,"") in Date.ext.locales){this.locale=this.locale.replace(/-[a-zA-Z]+$/,"")}else{this.locale="en-GB"}}var d=this;while(fmt.match(/%[cDhnrRtTxXzZ]/)){fmt=fmt.replace(/%([cDhnrRtTxXzZ])/g,function(m0,m1){var f=Date.ext.aggregates[m1];return(f=="locale"?Date.ext.locales[d.locale][m1]:f)})}var str=fmt.replace(/%([aAbBCdegGHIjmMpPSuUVwWyY%])/g,function(m0,m1){var f=Date.ext.formats[m1];if(typeof (f)=="string"){return d[f]()}else{if(typeof (f)=="function"){return f.call(d,d)}else{if(typeof (f)=="object"&&typeof (f[0])=="string"){return Date.ext.util.xPad(d[f[0]](),f[1])}else{return m1}}}});d=null;return str}; DateGraphLayout=function(_1){ PlotKit.Layout.call(this,"line",_1); }; @@ -4648,8 +4649,6 @@ this.options.drawBackground=false; }; DateGraphCanvasRenderer.prototype=new PlotKit.CanvasRenderer(); DateGraphCanvasRenderer.prototype.render=function(){ -this._renderLineChart(); -this._renderLineAxis(); var ctx=this.element.getContext("2d"); if(this.options.drawYGrid){ var _14=this.layout.yticks; @@ -4681,6 +4680,8 @@ ctx.closePath(); ctx.stroke(); } } +this._renderLineChart(); +this._renderLineAxis(); }; DateGraphCanvasRenderer.prototype._renderLineChart=function(){ var _17=this.element.getContext("2d"); @@ -4782,6 +4783,7 @@ DateGraph.DEFAULT_WIDTH=480; DateGraph.DEFAULT_HEIGHT=320; DateGraph.DEFAULT_STROKE_WIDTH=1; DateGraph.AXIS_LINE_WIDTH=0.3; +DateGraph.DEFAULT_ATTRS={highlightCircleSize:3,pixelsPerXLabel:60,pixelsPerYLabel:30,labelsDivWidth:250,labelsDivStyles:{}}; DateGraph.prototype.__init__=function(div,_52,_53,_54){ this.maindiv_=div; this.labels_=_53; @@ -4798,14 +4800,18 @@ this.valueRange_=_54.valueRange||null; this.labelsSeparateLines=_54.labelsSeparateLines||false; this.labelsDiv_=_54.labelsDiv||null; this.labelsKMB_=_54.labelsKMB||false; -this.minTickSize_=_54.minTickSize||0; this.xValueParser_=_54.xValueParser||DateGraph.prototype.dateParser; this.xValueFormatter_=_54.xValueFormatter||DateGraph.prototype.dateString_; this.xTicker_=_54.xTicker||DateGraph.prototype.dateTicker; this.sigma_=_54.sigma||2; this.wilsonInterval_=_54.wilsonInterval||true; this.customBars_=_54.customBars||false; -this.attrs_=_54; +this.attrs_={}; +MochiKit.Base.update(this.attrs_,DateGraph.DEFAULT_ATTRS); +MochiKit.Base.update(this.attrs_,_54); +if(typeof this.attrs_.pixelsPerXLabel=="undefined"){ +this.attrs_.pixelsPerXLabel=60; +} this.labelsFromCSV_=(this.labels_==null); if(this.labels_==null){ this.labels_=[]; @@ -4872,8 +4878,9 @@ this.colors_.push(MochiKit.Color.Color.fromString(_65)); }; DateGraph.prototype.createStatusMessage_=function(){ if(!this.labelsDiv_){ -var _66=250; +var _66=this.attrs_.labelsDivWidth; var _67={"style":{"position":"absolute","fontSize":"14px","zIndex":10,"width":_66+"px","top":"0px","left":this.width_-_66+"px","background":"white","textAlign":"left","overflow":"hidden"}}; +MochiKit.Base.update(_67["style"],this.attrs_.labelsDivStyles); this.labelsDiv_=MochiKit.DOM.DIV(_67); MochiKit.DOM.appendChildNodes(this.graphDiv,this.labelsDiv_); } @@ -5029,7 +5036,7 @@ if(_105[i].xval==_106){ _111.push(_105[i]); } } -var _112=3; +var _112=this.attrs_.highlightCircleSize; var ctx=this.canvas_.getContext("2d"); if(this.previousVerticalX_>=0){ var px=this.previousVerticalX_; @@ -5064,14 +5071,15 @@ var ctx=this.canvas_.getContext("2d"); ctx.clearRect(0,0,this.width_,this.height_); this.labelsDiv_.innerHTML=""; }; -DateGraph.prototype.hmsString_=function(date){ -var _118=function(x){ +DateGraph.zeropad=function(x){ if(x<10){ return "0"+x; }else{ return ""+x; } }; +DateGraph.prototype.hmsString_=function(date){ +var _118=DateGraph.zeropad; var d=new Date(date); if(d.getSeconds()){ return _118(d.getHours())+":"+_118(d.getMinutes())+":"+_118(d.getSeconds()); @@ -5084,13 +5092,7 @@ return _118(d.getHours()); } }; DateGraph.prototype.dateString_=function(date){ -var _120=function(x){ -if(x<10){ -return "0"+x; -}else{ -return ""+x; -} -}; +var _120=DateGraph.zeropad; var d=new Date(date); var year=""+d.getFullYear(); var _122=_120(d.getMonth()+1); @@ -5124,161 +5126,217 @@ endDate=this.rawData_[this.rawData_.length-1][0]; var _130=this.xTicker_(_129,endDate); this.layout_.updateOptions({xTicks:_130}); }; -DateGraph.prototype.dateTicker=function(_131,_132){ -var _133=24*60*60*1000; -_131=_131/_133; -_132=_132/_133; -var _134=_132-_131; -var _135=[]; -var _136=false; -var _137=1; -if(_134>30*366){ -_136=true; -_135=["Jan"]; -_137=10; +DateGraph.SECONDLY=0; +DateGraph.TEN_SECONDLY=1; +DateGraph.THIRTY_SECONDLY=2; +DateGraph.MINUTELY=3; +DateGraph.TEN_MINUTELY=4; +DateGraph.THIRTY_MINUTELY=5; +DateGraph.HOURLY=6; +DateGraph.SIX_HOURLY=7; +DateGraph.DAILY=8; +DateGraph.WEEKLY=9; +DateGraph.MONTHLY=10; +DateGraph.QUARTERLY=11; +DateGraph.BIANNUAL=12; +DateGraph.ANNUAL=13; +DateGraph.DECADAL=14; +DateGraph.NUM_GRANULARITIES=15; +DateGraph.SHORT_SPACINGS=[]; +DateGraph.SHORT_SPACINGS[DateGraph.SECONDLY]=1000*1; +DateGraph.SHORT_SPACINGS[DateGraph.TEN_SECONDLY]=1000*10; +DateGraph.SHORT_SPACINGS[DateGraph.THIRTY_SECONDLY]=1000*30; +DateGraph.SHORT_SPACINGS[DateGraph.MINUTELY]=1000*60; +DateGraph.SHORT_SPACINGS[DateGraph.TEN_MINUTELY]=1000*60*10; +DateGraph.SHORT_SPACINGS[DateGraph.THIRTY_MINUTELY]=1000*60*30; +DateGraph.SHORT_SPACINGS[DateGraph.HOURLY]=1000*3600; +DateGraph.SHORT_SPACINGS[DateGraph.HOURLY]=1000*3600*6; +DateGraph.SHORT_SPACINGS[DateGraph.DAILY]=1000*86400; +DateGraph.SHORT_SPACINGS[DateGraph.WEEKLY]=1000*604800; +DateGraph.prototype.NumXTicks=function(_131,_132,_133){ +if(_133=DateGraph.DAILY){ +_142.push({v:t,label:new Date(t+3600*1000).strftime(_144)}); }else{ -if(_134>4*366){ -_135=["Jan"]; -_136=true; +_142.push({v:t,label:this.hmsString_(t)}); +} +} }else{ -if(_134>366){ -_135=this.quarters; -_136=true; +var _146; +var _147=1; +if(_141==DateGraph.MONTHLY){ +_146=[0,1,2,3,4,5,6,7,8,9,10,11,12]; }else{ -if(_134>40){ -_135=this.months; -_136=true; +if(_141==DateGraph.QUARTERLY){ +_146=[0,3,6,9]; }else{ -if(_134>10){ -for(var week=_131-14;week<_132+14;week+=7){ -_135.push(week*_133); -} +if(_141==DateGraph.BIANNUAL){ +_146=[0,6]; }else{ -if(_134>1){ -for(var day=_131-14;day<_132+14;day+=1){ -_135.push(day*_133); -} +if(_141==DateGraph.ANNUAL){ +_146=[0]; }else{ -for(var hour=Math.floor(_131-1)*24;hour<(_132+1)*24;hour+=1){ -_135.push(hour*60*60*1000); -} +if(_141==DateGraph.DECADAL){ +_146=[0]; +_147=10; } } } } } +var _148=new Date(_139).getFullYear(); +var _149=new Date(_140).getFullYear(); +var _150=DateGraph.zeropad; +for(var i=_148;i<=_149;i++){ +if(i%_147!=0){ +continue; } -var _140=[]; -if(_136){ -var _141=1900+(new Date(_131*_133)).getYear(); -var _142=1900+(new Date(_132*_133)).getYear(); -for(var i=_141;i<=_142;i++){ -if(i%_137!=0){ +for(var j=0;j<_146.length;j++){ +var _151=i+"/"+_150(1+_146[j])+"/01"; +var t=Date.parse(_151); +if(t<_139||t>_140){ continue; } -for(var j=0;j<_135.length;j++){ -var date=Date.parse(_135[j]+" 1, "+i); -_140.push({label:_135[j]+"'"+(""+i).substr(2,2),v:date}); +_142.push({v:t,label:new Date(t).strftime("%b %y")}); } } -}else{ -for(var i=0;i<_135.length;i++){ -var d=new Date(_135[i]); -var frac=d.getHours()*3600+d.getMinutes()*60+d.getSeconds(); -var _143; -if(frac==0){ -var year=d.getFullYear().toString(); -var _143=this.months[d.getMonth()]+d.getDate(); -_143+="'"+year.substr(year.length-2,2); -}else{ -_143=this.hmsString_(d); } -_140.push({label:_143,v:d}); +return _142; +}; +DateGraph.prototype.dateTicker=function(_152,_153){ +var _154=-1; +for(var i=0;i=this.attrs_.pixelsPerXLabel){ +_154=i; +break; } } -return _140; +if(_154>=0){ +return this.GetXAxis(_152,_153,_154); +}else{ +} }; DateGraph.prototype.numericTicks=function(minV,maxV){ -var _146; -if(maxV<=0){ -_146=1; -}else{ -_146=Math.pow(10,Math.floor(Math.log(maxV)/Math.log(10))); +var _158=[1,2,5]; +var _159,low_val,high_val,nTicks; +for(var i=-10;i<50;i++){ +var _160=Math.pow(10,i); +for(var j=0;j<_158.length;j++){ +_159=_160*_158[j]; +low_val=Math.floor(minV/_159)*_159; +high_val=Math.ceil(maxV/_159)*_159; +nTicks=(high_val-low_val)/_159; +var _161=this.height_/nTicks; +if(_161>this.attrs_.pixelsPerYLabel){ +break; } -var _147=(maxV-minV)/_146; -while(2*_147<20){ -_147*=2; } -if((maxV-minV)/_147this.attrs_.pixelsPerYLabel){ +break; +} } -var _148=[]; -for(var i=0;i<=_147;i++){ -var _149=minV+i*(maxV-minV)/_147; -var _150=this.round_(_149,2); +var _162=[]; +for(var i=0;i=k*k*k){ -_150=this.round_(_149/(k*k*k),1)+"B"; +if(_163>=k*k*k){ +_164=this.round_(_163/(k*k*k),1)+"B"; }else{ -if(_149>=k*k){ -_150=this.round_(_149/(k*k),1)+"M"; +if(_163>=k*k){ +_164=this.round_(_163/(k*k),1)+"M"; }else{ -if(_149>=k){ -_150=this.round_(_149/k,1)+"K"; +if(_163>=k){ +_164=this.round_(_163/k,1)+"K"; } } } } -_148.push({label:_150,v:_149}); +_162.push({label:_164,v:_163}); } -return _148; +return _162; }; DateGraph.prototype.addYTicks_=function(minY,maxY){ -var _154=this.numericTicks(minY,maxY); -this.layout_.updateOptions({yAxis:[minY,maxY],yTicks:_154}); +var _168=this.numericTicks(minY,maxY); +this.layout_.updateOptions({yAxis:[minY,maxY],yTicks:_168}); }; DateGraph.prototype.drawGraph_=function(data){ var maxY=null; this.layout_.removeAllDatasets(); for(var i=1;i=low&&_155[k][0]<=high){ -_159.push(_155[k]); -var y=bars?_155[k][1][0]:_155[k][1]; +var _173=[]; +for(var k=0;k<_169.length;k++){ +if(_169[k][0]>=low&&_169[k][0]<=high){ +_173.push(_169[k]); +var y=bars?_169[k][1][0]:_169[k][1]; if(maxY==null||y>maxY){ maxY=y; } } } -_155=_159; +_169=_173; }else{ -for(var j=0;j<_155.length;j++){ -var y=bars?_155[j][1][0]:_155[j][1]; +for(var j=0;j<_169.length;j++){ +var y=bars?_169[j][1][0]:_169[j][1]; if(maxY==null||y>maxY){ -maxY=bars?y+_155[j][1][1]:y; +maxY=bars?y+_169[j][1][1]:y; } } } if(bars){ var vals=[]; -for(var j=0;j<_155.length;j++){ -vals[j]=[_155[j][0],_155[j][1][0],_155[j][1][1],_155[j][1][2]]; +for(var j=0;j<_169.length;j++){ +vals[j]=[_169[j][0],_169[j][1][0],_169[j][1][1],_169[j][1][2]]; } this.layout_.addDataset(this.labels_[i-1],vals); }else{ -this.layout_.addDataset(this.labels_[i-1],_155); +this.layout_.addDataset(this.labels_[i-1],_169); } } if(this.valueRange_!=null){ @@ -5287,9 +5345,6 @@ this.addYTicks_(this.valueRange_[0],this.valueRange_[1]); maxY*=1.1; if(maxY<=0){ maxY=1; -}else{ -var _161=Math.pow(10,Math.floor(Math.log(maxY)/Math.log(10))); -maxY=_161*Math.ceil(maxY/_161); } this.addYTicks_(0,maxY); } @@ -5299,44 +5354,44 @@ this.plotter_.clear(); this.plotter_.render(); this.canvas_.getContext("2d").clearRect(0,0,this.canvas_.width,this.canvas_.height); }; -DateGraph.prototype.rollingAverage=function(_162,_163){ -if(_162.length<2){ -return _162; +DateGraph.prototype.rollingAverage=function(_175,_176){ +if(_175.length<2){ +return _175; } -var _163=Math.min(_163,_162.length-1); -var _164=[]; -var _165=this.sigma_; +var _176=Math.min(_176,_175.length-1); +var _177=[]; +var _178=this.sigma_; if(this.fractions_){ var num=0; var den=0; var mult=100; -for(var i=0;i<_162.length;i++){ -num+=_162[i][1][0]; -den+=_162[i][1][1]; -if(i-_163>=0){ -num-=_162[i-_163][1][0]; -den-=_162[i-_163][1][1]; -} -var date=_162[i][0]; -var _168=den?num/den:0; +for(var i=0;i<_175.length;i++){ +num+=_175[i][1][0]; +den+=_175[i][1][1]; +if(i-_176>=0){ +num-=_175[i-_176][1][0]; +den-=_175[i-_176][1][1]; +} +var date=_175[i][0]; +var _181=den?num/den:0; if(this.errorBars_){ if(this.wilsonInterval_){ if(den){ -var p=_168<0?0:_168,n=den; -var pm=_165*Math.sqrt(p*(1-p)/n+_165*_165/(4*n*n)); -var _171=1+_165*_165/den; -var low=(p+_165*_165/(2*den)-pm)/_171; -var high=(p+_165*_165/(2*den)+pm)/_171; -_164[i]=[date,[p*mult,(p-low)*mult,(high-p)*mult]]; +var p=_181<0?0:_181,n=den; +var pm=_178*Math.sqrt(p*(1-p)/n+_178*_178/(4*n*n)); +var _184=1+_178*_178/den; +var low=(p+_178*_178/(2*den)-pm)/_184; +var high=(p+_178*_178/(2*den)+pm)/_184; +_177[i]=[date,[p*mult,(p-low)*mult,(high-p)*mult]]; }else{ -_164[i]=[date,[0,0,0]]; +_177[i]=[date,[0,0,0]]; } }else{ -var _172=den?_165*Math.sqrt(_168*(1-_168)/den):1; -_164[i]=[date,[mult*_168,mult*_172,mult*_172]]; +var _185=den?_178*Math.sqrt(_181*(1-_181)/den):1; +_177[i]=[date,[mult*_181,mult*_185,mult*_185]]; } }else{ -_164[i]=[date,mult*_168]; +_177[i]=[date,mult*_181]; } } }else{ @@ -5344,132 +5399,165 @@ if(this.customBars_){ var low=0; var mid=0; var high=0; -var _174=0; -for(var i=0;i<_162.length;i++){ -var data=_162[i][1]; +var _187=0; +for(var i=0;i<_175.length;i++){ +var data=_175[i][1]; var y=data[1]; -_164[i]=[_162[i][0],[y,y-data[0],data[2]-y]]; +_177[i]=[_175[i][0],[y,y-data[0],data[2]-y]]; low+=data[0]; mid+=y; high+=data[2]; -_174+=1; -if(i-_163>=0){ -var prev=_162[i-_163]; +_187+=1; +if(i-_176>=0){ +var prev=_175[i-_176]; low-=prev[1][0]; mid-=prev[1][1]; high-=prev[1][2]; -_174-=1; +_187-=1; } -_164[i]=[_162[i][0],[1*mid/_174,1*(mid-low)/_174,1*(high-mid)/_174]]; +_177[i]=[_175[i][0],[1*mid/_187,1*(mid-low)/_187,1*(high-mid)/_187]]; } }else{ -var _176=Math.min(_163-1,_162.length-2); +var _189=Math.min(_176-1,_175.length-2); if(!this.errorBars_){ -for(var i=0;i<_176;i++){ +for(var i=0;i<_189;i++){ var sum=0; for(var j=0;j