function Line(opts){ opts=opts||{}; this.id=null; this.smpTime=opts.smpTime; this.color="#000000"; this.title=null; this.weight=1; this.type=opts.type||"GT"; this.xUnit=opts.xUnit||"m"; this.yUnit=opts.yUnit||"kN"; this.xMin=null; this.xMax=null; this.yMin=null; this.yMax=null; this.xProjs=null; this.yProjs=null; this.datas=null; this.yOrigMax=null; this.yOrigMin=null; this.turnX=null; this.turnIndex=null; this.startUp=true; this.upColor="#0000ff"; this.downColor="#00ff00"; this.colorAry=[]; this.yUpMaxProj=null; this.yDownMaxProj=null; this.balance=null; this.stroke=null; } Line.prototype={ setData:function(xVals,yVals){ this.xProjs=xVals; this.yProjs=yVals; this.yMax=yVals[0]; this.yMin=yVals[0]; this.xMax=xVals[0]; this.xMin=xVals[0]; this.datas=[]; this.datas.push([xVals[0],yVals[0]]); var upIndex,dwnIndex; for (var i=1,len=xVals.length,len2=yVals.length;ithis.yMax){ this.yMax=yVals[i]; } if(yVals[i]=this.xMax){ //增加或=,表明停顿区域算入开始方向 this.xMax=xVals[i]; upIndex=i; } if(xVals[i]<=this.xMin){ this.xMin=xVals[i]; dwnIndex=i; } } //闭合曲线 this.datas.push([xVals[0],yVals[0]]); this.stroke=Math.round((this.xMax- this.xMin) * 100) / 100; var tempStroke=Math.floor(this.stroke); if(this.stroke-tempStroke<0.05){ this.stroke=tempStroke; } var tempXMax=Math.floor(this.xMax); this.xMax= (this.xMax- tempXMax) >= 0.05?this.xMaxProj:tempXMax; this.yOrigMax=this.yMax; this.yOrigMin=this.yMin; this.parseUpDwnMax(upIndex,dwnIndex); this.countBalance(); }, parseUpDwnMax:function(upIdx,dwnIdx){ this.startUp = (this.xMax- this.xProjs[0]) > (this.xProjs[0] - this.xMin); if (this.startUp) { this.colorAry=[this.upColor,this.downColor]; } else { this.colorAry=[this.downColor,this.upColor]; } this.turnIndex=this.startUp?upIdx:dwnIdx; if(this.type=="GT"){ return; } var tempMax1=-1000; var tempMax2=-1000; for(var i=0,len=this.xProjs.length,len2=this.yProjs.length;i