hqchart 1.1.13009 → 1.1.13016

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4094,7 +4094,20 @@ this.Draw=function(){this.IconRect=[];if(!this.IsShow||this.ChartFrame.IsMinSize
4094
4094
  {yText-=item.Line.Offset[1];yPrice+=item.Line.Offset[0];}else if(yText<yPrice){yText+=item.Line.Offset[1];yPrice-=item.Line.Offset[0];}}this.Canvas.save();if(item.Line.Dash)this.Canvas.setLineDash(item.Line.Dash);//虚线
4095
4095
  if(item.Line.Width>0)this.Canvas.lineWidth=item.Line.Width;//线宽
4096
4096
  this.Canvas.strokeStyle=item.Line.Color;this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(yText,ToFixedPoint(x));this.Canvas.lineTo(yPrice,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yText);this.Canvas.lineTo(ToFixedPoint(x),yPrice);}this.Canvas.stroke();this.Canvas.restore();}}}};this.GetTooltipData=function(x,y,tooltip){if(!IFrameSplitOperator.IsNonEmptyArray(this.IconRect))return false;for(var i=0;i<this.IconRect.length;++i){var item=this.IconRect[i];if(!item.Rect)continue;var rect=item.Rect;this.Canvas.beginPath();this.Canvas.rect(rect.X,rect.Y,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){JSConsole.Chart.Log('[ChartMultiSVGIcon::GetTooltipData] icon ',item);tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=4;//指标
4097
- return true;}}return false;};this.GetMaxMin=function(){var range={Min:null,Max:null};var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Icon){var item=this.Icon[i];if(item.Index>=start&&item.Index<end){if(range.Max==null)range.Max=item.Value;else if(range.Max<item.Value)range.Max=item.Value;if(range.Min==null)range.Min=item.Value;else if(range.Min>item.Value)range.Min=item.Value;}}return range;};}// 多dom节点
4097
+ return true;}}return false;};this.GetMaxMin=function(){var range={Min:null,Max:null};var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Icon){var item=this.Icon[i];if(item.Index>=start&&item.Index<end){if(range.Max==null)range.Max=item.Value;else if(range.Max<item.Value)range.Max=item.Value;if(range.Min==null)range.Min=item.Value;else if(range.Min>item.Value)range.Min=item.Value;}}return range;};}//图标集合(2.0) 支持横屏
4098
+ function ChartMultiSVGIconV2(){this.newMethod=IChartPainting;//派生
4099
+ this.newMethod();delete this.newMethod;this.ClassName="ChartMultiSVGIconV2";this.AryIcon;//[ {Index:, Value:, Symbol:, Color:, Baseline:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 } } ]
4100
+ this.IconSize={Max:g_JSChartResource.DRAWICON.Icon.MaxSize,Min:g_JSChartResource.DRAWICON.Icon.MinSize,//图标的最大最小值
4101
+ Zoom:{Type:g_JSChartResource.DRAWICON.Icon.Zoom.Type,Value:g_JSChartResource.DRAWICON.Icon.Zoom.Value//放大倍数
4102
+ }};this.Family;this.Color=g_JSChartResource.DefaultTextColor;this.IsHScreen=false;this.IconRect=[];//0=序号,1=区域
4103
+ this.MapCache=null;//key=date/date-time value={ Data:[] }
4104
+ this.BuildKey=function(item){if(IFrameSplitOperator.IsNumber(item.Time))return item.Date+'-'+item.Time;else return item.Date;};this.BuildCacheData=function(){var mapData=new _map2.default();this.MapCache=mapData;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon))return;for(var i=0;i<this.AryIcon.length;++i){var item=this.AryIcon[i];var key=this.BuildKey(item);if(mapData.has(key)){var mapItem=mapData.get(key);mapItem.Data.push(item);}else{mapData.set(key,{Data:[item]});}}};this.Draw=function(){this.IconRect=[];if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;//k线数据
4105
+ if(!this.Family)return;if(!this.MapCache||this.MapCache.size<=0)return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var xPointCount=this.ChartFrame.XPointCount;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var isMinute=this.IsMinuteFrame();var border=this.GetBorder();if(this.IsHScreen){var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var chartLeft=border.TopEx;}else{var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var chartLeft=border.LeftEx;}var fontSize=this.GetDynamicIconSize(dataWidth,distanceWidth,this.IconSize.Max,this.IconSize.Min,this.IconSize.Zoom);this.Canvas.font=fontSize+'px '+this.Family;var drawInfo={Left:chartLeft,Right:chartright,FontSize:fontSize,DataWidth:dataWidth,DistanceWidth:distanceWidth};for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}this.DrawItem(mapItem,kItem,x,drawInfo);}};this.GetKValue=function(kItem,valueName){switch(valueName){case"HIGH":case"H":return kItem.High;case"L":case"LOW":return kItem.Low;case"C":case"CLOSE":return kItem.Close;case"O":case"OPEN":return KItem.Open;default:return null;}};this.DrawItem=function(groupItem,kItem,x,drawInfo){if(!IFrameSplitOperator.IsNonEmptyArray(groupItem.Data))return;var fontSize=drawInfo.FontSize;var left=drawInfo.Left,right=drawInfo.Right;var dataWidth=drawInfo.DataWidth;//var distanceWidth=drawInfo.DistanceWidth;
4106
+ for(var i=0;i<groupItem.Data.length;++i){var item=groupItem.Data[i];var value=item.Value;if(IFrameSplitOperator.IsString(item.Value))value=this.GetKValue(kItem,item.Value);if(!IFrameSplitOperator.IsNumber(value))continue;var y=this.ChartFrame.GetYFromData(item.Value,false);if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.Color;var textWidth=this.Canvas.measureText(item.Symbol).width;this.Canvas.textAlign='center';var rtIcon=new Rect(x-fontSize/2,y-fontSize/2,fontSize,fontSize);if(x+textWidth/2>=right){this.Canvas.textAlign='right';x+=dataWidth/2;rtIcon.X=x-fontSize;}else if(x-textWidth/2<left){this.Canvas.textAlign='left';x-=dataWidth/2;rtIcon.X=x;}if(item.Baseline==1){this.Canvas.textBaseline='top';rtIcon.Y=y;}else if(item.Baseline==2){this.Canvas.textBaseline='bottom';rtIcon.Y=y-fontSize;}else{this.Canvas.textBaseline='middle';rtIcon.Y=y-fontSize/2;}if(this.IsHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(item.Symbol,0,0);this.Canvas.restore();}else{if(IFrameSplitOperator.IsNumber(item.YMove))y+=item.YMove;this.Canvas.fillText(item.Symbol,x,y);if(item.Text)this.IconRect.push({Rect:rtIcon,Item:item,KItem:kItem});}if(item.Line){var price=item.Line.KData=="H"?kItem.High:kItem.Low;var yPrice=this.ChartFrame.GetYFromData(price,false);var yText=y;if(Array.isArray(item.Line.Offset)&&item.Line.Offset.length==2){if(yText>yPrice)//文字在下方
4107
+ {yText-=item.Line.Offset[1];yPrice+=item.Line.Offset[0];}else if(yText<yPrice){yText+=item.Line.Offset[1];yPrice-=item.Line.Offset[0];}}this.Canvas.save();if(item.Line.Dash)this.Canvas.setLineDash(item.Line.Dash);//虚线
4108
+ if(item.Line.Width>0)this.Canvas.lineWidth=item.Line.Width;//线宽
4109
+ this.Canvas.strokeStyle=item.Line.Color;this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(yText,ToFixedPoint(x));this.Canvas.lineTo(yPrice,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yText);this.Canvas.lineTo(ToFixedPoint(x),yPrice);}this.Canvas.stroke();this.Canvas.restore();}}};this.GetTooltipData=function(x,y,tooltip){if(!IFrameSplitOperator.IsNonEmptyArray(this.IconRect))return false;for(var i=0;i<this.IconRect.length;++i){var item=this.IconRect[i];if(!item.Rect)continue;var rect=item.Rect;this.Canvas.beginPath();this.Canvas.rect(rect.X,rect.Y,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){JSConsole.Chart.Log('[ChartMultiSVGIconV2::GetTooltipData] icon ',item);tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=4;//指标
4110
+ return true;}}return false;};this.GetMaxMin=function(){this.IsHScreen=this.ChartFrame.IsHScreen===true;var range={Min:null,Max:null};if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return range;if(!this.MapCache||this.MapCache.size<=0)return;var xPointCount=this.ChartFrame.XPointCount;for(var i=this.Data.DataOffset,j=0,k=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var kItem=this.Data.Data[i];var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data))continue;for(k=0;k<mapItem.Data.length;++k){var item=mapItem.Data[k];var value=item.Value;if(IFrameSplitOperator.IsString(item.Value))value=this.GetKValue(kItem,item.Value);if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null)range.Max=value;else if(range.Max<value)range.Max=value;if(range.Min==null)range.Min=value;else if(range.Min>value)range.Min=value;}}return range;};}// 多dom节点
4098
4111
  function ChartMultiHtmlDom(){this.newMethod=IChartPainting;//派生
4099
4112
  this.newMethod();delete this.newMethod;this.ClassName="ChartMultiHtmlDom";this.Texts=[];//[ {Index:, Value:, Text: ] Text=dom内容
4100
4113
  this.IsHScreen=false;//是否横屏
@@ -5656,6 +5669,7 @@ this.OnlyMoveXIndex=false;//只能在X轴刻度上移动
5656
5669
  this.IsSupportMagnet=false;//是否支持磁吸
5657
5670
  this.EnableMoveCheck=true;//允许移动时监测是否超出边界
5658
5671
  this.IsDrawFirst=false;this.IsShowYCoordinate=false;//是否在Y轴显示点的刻度
5672
+ this.IsShow=true;//是否显示
5659
5673
  this.LineColor=g_JSChartResource.DrawPicture.LineColor[0];//线段颜色
5660
5674
  //this.LineColor="#1e90ff"; //线段颜色,input type="color" 不支持rgb和rgba 的格式
5661
5675
  this.LineWidth=2;//线段宽度
@@ -5715,7 +5729,7 @@ this.ExportBaseData=function(){var data={ClassName:this.ClassName,Guid:this.Guid
5715
5729
  if(this.FontOption){data.FontOption={};this.SetFont(data.FontOption,this.FontOption);//字体也导出
5716
5730
  }return data;};this.IsFrameMinSize=function()//框架是否是最小化模式
5717
5731
  {return this.Frame&&this.Frame.IsMinSize;};this.PointRange=function(aryPoint){if(!IFrameSplitOperator.IsNonEmptyArray(aryPoint))return null;if(aryPoint.length==1){var data={Points:[{X:aryPoint[0].X,Y:aryPoint[0].Y}]};return data;}else{var xMax=aryPoint[0].X;var xMin=xMax;var yMax=aryPoint[0].Y;var yMin=yMax;var aryData=[{X:aryPoint[0].X,Y:aryPoint[0].Y}];for(var i=1;i<aryPoint.length;++i){if(xMax<aryPoint[i].X)xMax=aryPoint[i].X;if(xMin>aryPoint[i].X)xMin=aryPoint[i].X;if(yMax<aryPoint[i].Y)yMax=aryPoint[i].Y;if(yMin>aryPoint[i].Y)yMin=aryPoint[i].Y;aryData.push({X:aryPoint[i].X,Y:aryPoint[i].Y});}var data={X:{Max:{X:xMax},Min:{X:xMin}},Y:{Max:{Y:yMax},Min:{Y:yMin}},Points:aryData//所有的点
5718
- };return data;}};this.GetXYCoordinate_default=function(){if(this.IsFrameMinSize())return null;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});return this.PointRange(drawPoint);};this.GetXYCoordinate=function(){return null;};this.CopyData_default=function(){if(!this.Frame)return null;var data=this.ExportStorageData();if(!data)return null;var dataOffset=0;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame"){}else{var kData=this.Frame.Data;if(!kData)return null;dataOffset=kData.DataOffset;}var height=this.Frame.ChartBorder.GetHeight();var yFirst=this.Frame.ChartBorder.GetBottomEx()-this.Point[0].Y;for(var i=0;i<data.Value.length;++i){var item=data.Value[i];var itemPoint=this.Point[i];item.XIndex=item.XValue-dataOffset+1;if(i==0){item.XOffset=0;item.YOffset=0;}else{var preItem=data.Value[i-1];var prePoint=this.Point[i-1];item.XOffset=item.XValue-preItem.XValue;item.YOffset=itemPoint.Y-prePoint.Y;}}data.DataOffset=dataOffset;data.YFristScale=yFirst/height;data.Height=height;//Y轴最大-最小差值
5732
+ };return data;}};this.GetXYCoordinate_default=function(){if(this.IsFrameMinSize())return null;if(!this.IsShow)return null;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});return this.PointRange(drawPoint);};this.GetXYCoordinate=function(){return null;};this.CopyData_default=function(){if(!this.Frame)return null;var data=this.ExportStorageData();if(!data)return null;var dataOffset=0;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame"){}else{var kData=this.Frame.Data;if(!kData)return null;dataOffset=kData.DataOffset;}var height=this.Frame.ChartBorder.GetHeight();var yFirst=this.Frame.ChartBorder.GetBottomEx()-this.Point[0].Y;for(var i=0;i<data.Value.length;++i){var item=data.Value[i];var itemPoint=this.Point[i];item.XIndex=item.XValue-dataOffset+1;if(i==0){item.XOffset=0;item.YOffset=0;}else{var preItem=data.Value[i-1];var prePoint=this.Point[i-1];item.XOffset=item.XValue-preItem.XValue;item.YOffset=itemPoint.Y-prePoint.Y;}}data.DataOffset=dataOffset;data.YFristScale=yFirst/height;data.Height=height;//Y轴最大-最小差值
5719
5733
  return data;};this.SetFont=function(destFont,srcFont){if(!srcFont)return;if(!destFont)return;if(srcFont.Family)destFont.Family=srcFont.Family;if(srcFont.Weight)destFont.Weight=srcFont.Weight;if(srcFont.Style)destFont.Style=srcFont.Style;if(IFrameSplitOperator.IsNumber(srcFont.Size))destFont.Size=srcFont.Size;};this.GetFontString=function(fontOption){var defaultFont=16*GetDevicePixelRatio()+"px 微软雅黑";if(!fontOption||!fontOption.Family||!IFrameSplitOperator.IsPlusNumber(fontOption.Size))return defaultFont;var font='';if(fontOption.Color)font+=fontOption.Color+' ';if(fontOption.Style)font+=fontOption.Style+' ';if(fontOption.Weight)font+=fontOption.Weight+' ';font+=fontOption.Size*GetDevicePixelRatio()+'px ';font+=fontOption.Family;return font;};//获得多行文本
5720
5734
  this.GetMultiLineText=function(text,maxWidth,font,option){if(font)this.Canvas.font=font;var textWidth=this.Canvas.measureText(text).width;if(textWidth<=maxWidth)return{AryText:[{Text:text}]};var singleWidth=this.Canvas.measureText("擎").width;var estimateCount=parseInt(maxWidth/singleWidth);//预估个数
5721
5735
  var endPos=0;var aryText=[];while(endPos<text.length-1){var count=estimateCount;var pos=endPos+count;if(pos>=text.length){pos=text.length-1;count=pos-endPos;}var subText=text.slice(endPos,endPos+count);var textWidth=this.Canvas.measureText(subText).width;if(textWidth>maxWidth){for(var i=count;i>=0;--i){subText=text.slice(endPos,endPos+i);textWidth=this.Canvas.measureText(subText).width;if(textWidth<maxWidth){aryText.push({Text:subText});endPos+=i;break;}}}else if(textWidth<maxWidth){var bFind=false;for(var i=count;i+endPos<=text.length;++i){subText=text.slice(endPos,endPos+i);textWidth=this.Canvas.measureText(subText).width;if(textWidth>maxWidth){subText=text.slice(endPos,endPos+i-1);aryText.push({Text:subText});endPos+=i-1;bFind=true;break;}}if(!bFind){aryText.push({Text:subText});endPos=text.length-1;}}else{aryText.push({Text:subText});endPos+=count;}}return{AryText:aryText};};this.CloneArrayText=function(aryText){if(!IFrameSplitOperator.IsNonEmptyArray(aryText))return[];var aryValue=[];for(var i=0;i<aryText.length;++i){var item=aryText[i];if(!item)continue;aryValue.push({Text:item.Text});}return aryValue;};//计算角度
@@ -5743,7 +5757,7 @@ IChartDrawPicture.RegisterIonFont=function(obj){if(!obj.Name||!obj.Text||!obj.Fa
5743
5757
  {var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var chartDraw=item.Create();//TODO:后面都放到每一个SetOptin里面
5744
5758
  if(obj.Period>=0)chartDraw.Period=obj.Period;if(obj.Right>=0)chartDraw.Right=obj.Right;if(obj.Guid)chartDraw.Guid=obj.Guid;if(obj.Symbol)chartDraw.Symbol=obj.Symbol;if(obj.Value)chartDraw.Value=obj.Value;if(obj.Text)chartDraw.Text=obj.Text;if(obj.LineColor)chartDraw.LineColor=obj.LineColor;if(obj.AreaColor)chartDraw.AreaColor=obj.AreaColor;if(obj.FontOption)chartDraw.FontOption=obj.FontOption;if(obj.Label)chartDraw.Label=obj.Label;if(obj.LineWidth>0)chartDraw.LineWidth=obj.LineWidth;if(obj.EnableMove===false)chartDraw.EnableMove=obj.EnableMove;if(IFrameSplitOperator.IsBool(obj.EnableSave))chartDraw.EnableSave=obj.EnableSave;if(IFrameSplitOperator.IsNumber(obj.ChannelWidth))chartDraw.ChannelWidth=obj.ChannelWidth;if(IFrameSplitOperator.IsBool(obj.IsShowYCoordinate))chartDraw.IsShowYCoordinate=obj.IsShowYCoordinate;if(chartDraw.SetOption)chartDraw.SetOption(obj);return chartDraw;};//画图工具-线段
5745
5759
  function ChartDrawPictureLine(){this.newMethod=IChartDrawPicture;//派生
5746
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.IsShowYCoordinate=false;this.CopyData=this.CopyData_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();/*
5760
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.IsShowYCoordinate=false;this.CopyData=this.CopyData_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();/*
5747
5761
  if (this.IsSelected)
5748
5762
  {
5749
5763
  this.Canvas.strokeStyle='rgba(255,0,0,0.5)';
@@ -5751,7 +5765,7 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureLine';thi
5751
5765
  this.Canvas.stroke();
5752
5766
  }
5753
5767
  */var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
5754
- this.Canvas.restore();};this.GetYCoordinatePoint=function(){if(this.IsFrameMinSize())return null;if(this.Status<2)return null;if(!this.Point.length||!this.Frame)return null;if(this.Status!=10)return null;//完成
5768
+ this.Canvas.restore();};this.GetYCoordinatePoint=function(){if(this.IsFrameMinSize())return null;if(!this.IsShow)return null;if(this.Status<2)return null;if(!this.Point.length||!this.Frame)return null;if(this.Status!=10)return null;//完成
5755
5769
  var aryPoint=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var y=this.Frame.GetYFromData(item.YValue,false);aryPoint.push({Y:y,YValue:item.YValue,Item:item,Color:this.PointColor});}return aryPoint;};}//画图工具-涂鸦线段 Y轴关联数值, X轴不关联
5756
5770
  function ChartDrawGraffitiLine(){this.newMethod=IChartDrawPicture;//派生
5757
5771
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawGraffitiLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=null;this.PointCount=2;//画点的个数
@@ -5761,7 +5775,7 @@ this.ValueToPoint=function(){if(!this.Frame)return false;var isHScreen=this.Fram
5761
5775
  {};this.CalculateDrawPoint=function(option){if(this.Status<2)return null;if(!this.Point.length||!this.Frame)return null;var drawPoint=[];if(this.Status==10){var isHScreen=this.Frame.IsHScreen;for(var i in this.Value){var item=this.Value[i];var pt=new Point();if(isHScreen)//横屏X,Y对调
5762
5776
  {pt.Y=item.XValue;pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=item.XValue;pt.Y=this.Frame.GetYFromData(item.YValue,false);}drawPoint.push(pt);}}else{drawPoint=this.Point;}return drawPoint;};//坐标是否在点上 返回在第几个点上
5763
5777
  this.IsPointInXYValue=function(x,y,option){if(!this.Frame)return-1;if(!this.Value)return-1;var radius=5;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))radius+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))radius+=this.Option.Zoom;var isHScreen=this.Frame.IsHScreen;radius*=GetDevicePixelRatio();for(var i=0;i<this.Value.length;++i)//是否在点上
5764
- {var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=item.XValue;pt.X==this.Frame.GetYFromData(item.YValue);}else{pt.X=item.XValue;pt.Y=this.Frame.GetYFromData(item.YValue);}this.Canvas.beginPath();this.Canvas.arc(pt.X,pt.Y,radius,0,360);if(this.Canvas.isPointInPath(x,y))return i;}return-1;};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();/*
5778
+ {var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=item.XValue;pt.X==this.Frame.GetYFromData(item.YValue);}else{pt.X=item.XValue;pt.Y=this.Frame.GetYFromData(item.YValue);}this.Canvas.beginPath();this.Canvas.arc(pt.X,pt.Y,radius,0,360);if(this.Canvas.isPointInPath(x,y))return i;}return-1;};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();/*
5765
5779
  if (this.IsSelected)
5766
5780
  {
5767
5781
  this.Canvas.strokeStyle='rgba(255,0,0,0.5)';
@@ -5773,7 +5787,7 @@ this.Canvas.restore();};}//画图工具-箭头线
5773
5787
  function ChartDrawArrowLine(){this.newMethod=IChartDrawPicture;//派生
5774
5788
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawArrowLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.ArrawLineWidth=5;this.ArrawLength=15;//三角斜边长度
5775
5789
  this.ArrawAngle=35;//三角斜边一直线夹角
5776
- this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];//计算箭头
5790
+ this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];//计算箭头
5777
5791
  var theta=this.ArrawAngle;//三角斜边一直线夹角
5778
5792
  var headlen=this.ArrawLength;//三角斜边长度
5779
5793
  var angle=Math.atan2(ptStart.Y-ptEnd.Y,ptStart.X-ptEnd.X)*180/Math.PI,angle1=(angle+theta)*Math.PI/180,angle2=(angle-theta)*Math.PI/180,topX=headlen*Math.cos(angle1),topY=headlen*Math.sin(angle1),botX=headlen*Math.cos(angle2),botY=headlen*Math.sin(angle2);this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.Canvas.beginPath();var arrowX=ptEnd.X+topX;var arrowY=ptEnd.Y+topY;this.Canvas.moveTo(arrowX,arrowY);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);arrowX=ptEnd.X+botX;arrowY=ptEnd.Y+botY;this.Canvas.lineTo(arrowX,arrowY);this.Canvas.lineWidth=this.ArrawLineWidth*GetDevicePixelRatio();this.Canvas.stroke();this.RestoreLineWidth();/*
@@ -5787,12 +5801,12 @@ var angle=Math.atan2(ptStart.Y-ptEnd.Y,ptStart.X-ptEnd.X)*180/Math.PI,angle1=(an
5787
5801
  this.Canvas.restore();};}//画图工具-射线
5788
5802
  function ChartDrawPictureHaflLine(){this.newMethod=IChartDrawPicture;//派生
5789
5803
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureHaflLine';this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.FullLine;this.IsPointIn=function(x,y,option){var result=this.IsPointIn_XYValue_Line(x,y,option);if(result>=0)return result;if(!this.FullLine)return result;var ptStart=this.FullLine.Start;var ptEnd=this.FullLine.End;var pixel=GetDevicePixelRatio();var lineWidth=5*pixel;this.Canvas.beginPath();if(ptStart.X==ptEnd.X)//竖线
5790
- {this.Canvas.moveTo(ptStart.X-lineWidth,ptStart.Y);this.Canvas.lineTo(ptStart.X+lineWidth,ptStart.Y);this.Canvas.lineTo(ptEnd.X+lineWidth,ptEnd.Y);this.Canvas.lineTo(ptEnd.X-lineWidth,ptEnd.Y);}else{this.Canvas.moveTo(ptStart.X,ptStart.Y+lineWidth);this.Canvas.lineTo(ptStart.X,ptStart.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y+lineWidth);}this.Canvas.closePath();if(this.Canvas.isPointInPath(x,y))return 100;return result;};this.Draw=function(){this.LinePoint=[];this.FullLine=null;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});if(!drawPoint||drawPoint.length!=2)return;var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.moveTo(drawPoint[0].X,drawPoint[0].Y);this.Canvas.lineTo(drawPoint[1].X,drawPoint[1].Y);var endPoint=this.CalculateExtendLineEndPoint(drawPoint);this.Canvas.lineTo(endPoint.X,endPoint.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
5804
+ {this.Canvas.moveTo(ptStart.X-lineWidth,ptStart.Y);this.Canvas.lineTo(ptStart.X+lineWidth,ptStart.Y);this.Canvas.lineTo(ptEnd.X+lineWidth,ptEnd.Y);this.Canvas.lineTo(ptEnd.X-lineWidth,ptEnd.Y);}else{this.Canvas.moveTo(ptStart.X,ptStart.Y+lineWidth);this.Canvas.lineTo(ptStart.X,ptStart.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y+lineWidth);}this.Canvas.closePath();if(this.Canvas.isPointInPath(x,y))return 100;return result;};this.Draw=function(){this.LinePoint=[];this.FullLine=null;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});if(!drawPoint||drawPoint.length!=2)return;var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.moveTo(drawPoint[0].X,drawPoint[0].Y);this.Canvas.lineTo(drawPoint[1].X,drawPoint[1].Y);var endPoint=this.CalculateExtendLineEndPoint(drawPoint);this.Canvas.lineTo(endPoint.X,endPoint.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
5791
5805
  this.Canvas.restore();this.FullLine={Start:drawPoint[0],End:endPoint};};}// 画图工具-水平线 支持横屏
5792
5806
  function ChartDrawPictureHorizontalLine(){this.newMethod=IChartDrawPicture;//派生
5793
5807
  this.newMethod();delete this.newMethod;this.Super_SetOption=this.SetOption;//父类函数
5794
5808
  this.Super_ExportStorageData=this.ExportStorageData;this.Label;//{Text:文本, Position: 0=左, 1=右 }
5795
- this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.Label)this.Label=option.Label;}};this.ExportStorageData=function(){var storageData;if(this.Super_ExportStorageData){storageData=this.Super_ExportStorageData();if(this.Label)storageData.Label=this.Label;}return storageData;};this.PointCount=1;this.ClassName='ChartDrawPictureHorizontalLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.GetXYCoordinate=function(){if(this.IsFrameMinSize())return null;var drawPoint=this.CalculateDrawPoint();return this.PointRange(drawPoint);};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=1)return;if(!this.Frame)return;if(this.Value.length!=1)return;if(!this.IsYValueInFrame(this.Value[0].YValue))return null;var isHScreen=this.Frame.IsHScreen;var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();if(isHScreen){left=this.Frame.ChartBorder.GetTop();right=this.Frame.ChartBorder.GetBottom();}this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(drawPoint[0].X,left);this.Canvas.lineTo(drawPoint[0].X,right);}else{this.Canvas.moveTo(left,drawPoint[0].Y);this.Canvas.lineTo(right,drawPoint[0].Y);}this.Canvas.stroke();this.RestoreLineWidth();var line={Start:new Point(),End:new Point()};if(isHScreen){line.Start.X=drawPoint[0].X;line.Start.Y=left;line.End.X=drawPoint[0].X;line.End.Y=right;}else{line.Start.X=left;line.Start.Y=drawPoint[0].Y;line.End.X=right;line.End.Y=drawPoint[0].Y;}this.LinePoint.push(line);//画点
5809
+ this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.Label)this.Label=option.Label;}};this.ExportStorageData=function(){var storageData;if(this.Super_ExportStorageData){storageData=this.Super_ExportStorageData();if(this.Label)storageData.Label=this.Label;}return storageData;};this.PointCount=1;this.ClassName='ChartDrawPictureHorizontalLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.GetXYCoordinate=function(){if(this.IsFrameMinSize())return null;var drawPoint=this.CalculateDrawPoint();return this.PointRange(drawPoint);};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=1)return;if(!this.Frame)return;if(this.Value.length!=1)return;if(!this.IsYValueInFrame(this.Value[0].YValue))return null;var isHScreen=this.Frame.IsHScreen;var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();if(isHScreen){left=this.Frame.ChartBorder.GetTop();right=this.Frame.ChartBorder.GetBottom();}this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(drawPoint[0].X,left);this.Canvas.lineTo(drawPoint[0].X,right);}else{this.Canvas.moveTo(left,drawPoint[0].Y);this.Canvas.lineTo(right,drawPoint[0].Y);}this.Canvas.stroke();this.RestoreLineWidth();var line={Start:new Point(),End:new Point()};if(isHScreen){line.Start.X=drawPoint[0].X;line.Start.Y=left;line.End.X=drawPoint[0].X;line.End.Y=right;}else{line.Start.X=left;line.Start.Y=drawPoint[0].Y;line.End.X=right;line.End.Y=drawPoint[0].Y;}this.LinePoint.push(line);//画点
5796
5810
  this.DrawPoint(drawPoint);//显示价格
5797
5811
  this.LineText(drawPoint[0]);/*
5798
5812
  this.Canvas.fillStyle=this.LineColor;
@@ -5848,7 +5862,7 @@ this.ColseButtonSize=0;this.SettingButtonSize=0;this.ButtonBGWidth=0;this.SetOpt
5848
5862
  return this.PointRange(drawPoint);
5849
5863
  }
5850
5864
  */this.IsDrawMain=function()//选中绘制在动态绘图上, 没有选中绘制在背景上
5851
- {if(!this.GetActiveDrawPicture)return true;var active=this.GetActiveDrawPicture();if(active.Select.Guid==this.Guid)return false;return true;};this.MainDraw=function(){this.Draw();};this.Draw=function(moveonPoint,mouseStatus){this.LinePoint=[];this.AryButton=[];this.ColseButtonSize=0;this.SettingButtonSize=0;this.ButtonBGWidth=0;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=1)return;if(!this.Frame)return;if(this.Value.length!=1)return;if(!this.IsYValueInFrame(this.Value[0].YValue))return null;var isHScreen=this.Frame.IsHScreen;var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();if(isHScreen){left=this.Frame.ChartBorder.GetTop();right=this.Frame.ChartBorder.GetBottom();}this.ClipFrame();//画线段
5865
+ {if(!this.GetActiveDrawPicture)return true;var active=this.GetActiveDrawPicture();if(active.Select.Guid==this.Guid)return false;return true;};this.MainDraw=function(){this.Draw();};this.Draw=function(moveonPoint,mouseStatus){this.LinePoint=[];this.AryButton=[];this.ColseButtonSize=0;this.SettingButtonSize=0;this.ButtonBGWidth=0;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=1)return;if(!this.Frame)return;if(this.Value.length!=1)return;if(!this.IsYValueInFrame(this.Value[0].YValue))return null;var isHScreen=this.Frame.IsHScreen;var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();if(isHScreen){left=this.Frame.ChartBorder.GetTop();right=this.Frame.ChartBorder.GetBottom();}this.ClipFrame();//画线段
5852
5866
  this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(drawPoint[0].X,left);this.Canvas.lineTo(drawPoint[0].X,right);}else{this.Canvas.moveTo(left,ToFixedPoint(drawPoint[0].Y));this.Canvas.lineTo(right,ToFixedPoint(drawPoint[0].Y));}this.Canvas.stroke();this.RestoreLineWidth();var line={Start:new Point(),End:new Point()};if(isHScreen){line.Start.X=drawPoint[0].X;line.Start.Y=left;line.End.X=drawPoint[0].X;line.End.Y=right;}else{line.Start.X=left;line.Start.Y=drawPoint[0].Y;line.End.X=right;line.End.Y=drawPoint[0].Y;}this.LinePoint.push(line);var labInfo;if(this.GetLabelCallback)labInfo=this.GetLabelCallback(this);//描述信息
5853
5867
  if(labInfo)this.DrawLab(labInfo,drawPoint[0].Y);//画中心点
5854
5868
  var xCenter=left+(right-left)/2;var point={X:xCenter,Y:drawPoint[0].Y};this.DrawPoint([point]);this.Canvas.restore();var rtDraw={};//显示价格
@@ -5868,10 +5882,10 @@ if(labInfo.BGColor){this.Canvas.fillStyle=labInfo.BGColor;var rtTop=drawTop;this
5868
5882
  }
5869
5883
  */left=rtButton.Right+this.ButtonSpace;}if(this.Button.CloseIcon){var rtButton={Left:left,Top:drawTop,Width:this.ColseButtonSize,Height:drawHeight};rtButton.Right=rtButton.Left+rtButton.Width;rtButton.Bottom=rtButton.Top+rtButton.Height;var yCenter=rtButton.Top+rtButton.Height/2;var xCenter=rtButton.Left+rtButton.Width/2;var icon=this.Button.CloseIcon;this.Canvas.font=icon.Size*pixelRatio+'px '+icon.Family;this.Canvas.textAlign="center";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=icon.Color;this.Canvas.fillText(this.Button.CloseIcon.Text,xCenter,yCenter);this.AryButton.push({Rect:rtButton,ID:JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE});left=rtButton.Right;}rtDraw.Right=rtBG.Right;};this.PtInButtons=function(x,y){for(var i=0;i<this.AryButton.length;++i){var item=this.AryButton[i];if(!item.Rect)continue;var rect=item.Rect;this.Canvas.beginPath();this.Canvas.rect(rect.Left,rect.Top,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){return{ID:item.ID,Rect:rect};}}return null;};}//趋势线
5870
5884
  function ChartDrawPictureTrendLine(){this.newMethod=IChartDrawPicture;//派生
5871
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureTrendLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});if(!drawPoint||drawPoint.length!=2)return;var ptStart=drawPoint[0];var ptEnd=drawPoint[1];var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.moveTo(extendLine.Start.X,extendLine.Start.Y);this.Canvas.lineTo(extendLine.End.X,extendLine.End.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
5885
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureTrendLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});if(!drawPoint||drawPoint.length!=2)return;var ptStart=drawPoint[0];var ptEnd=drawPoint[1];var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.moveTo(extendLine.Start.X,extendLine.Start.Y);this.Canvas.lineTo(extendLine.End.X,extendLine.End.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
5872
5886
  this.Canvas.restore();};}//画图工具-矩形
5873
5887
  function ChartDrawPictureRect(){this.newMethod=IChartDrawPicture;//派生
5874
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureRect';this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.rect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);this.Canvas.stroke();this.RestoreLineWidth();//透明背景
5888
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureRect';this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.rect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);this.Canvas.stroke();this.RestoreLineWidth();//透明背景
5875
5889
  this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.fillRect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);this.Canvas.restore();//画点
5876
5890
  this.DrawPoint(drawPoint);};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
5877
5891
  this.IsPointIn=function(x,y,option){if(this.IsFrameMinSize())return-1;if(!this.Frame||this.Status!=10)return-1;var data=this.Frame.Data;if(!data)return-1;var nIndex=this.IsPointInXYValue(x,y,option);if(nIndex>=0)return nIndex;var aryPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!aryPoint||aryPoint.length!=2)return-1;//是否在矩形边框上
@@ -5879,7 +5893,7 @@ var linePoint=[{X:aryPoint[0].X,Y:aryPoint[0].Y},{X:aryPoint[1].X,Y:aryPoint[0].
5879
5893
  this.IsPointInLine=function(aryPoint,x,y,option){var radius=5;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))radius+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))radius+=this.Option.Zoom;var pixel=GetDevicePixelRatio();radius*=pixel;this.Canvas.beginPath();this.Canvas.moveTo(aryPoint[0].X,aryPoint[0].Y+radius);this.Canvas.lineTo(aryPoint[0].X,aryPoint[0].Y-radius);this.Canvas.lineTo(aryPoint[1].X,aryPoint[1].Y-radius);this.Canvas.lineTo(aryPoint[1].X,aryPoint[1].Y+radius);this.Canvas.closePath();if(this.Canvas.isPointInPath(x,y))return true;};//垂直线段
5880
5894
  this.IsPointInLine2=function(aryPoint,x,y,option){var radius=5;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))radius+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))radius+=this.Option.Zoom;var pixel=GetDevicePixelRatio();radius*=pixel;this.Canvas.beginPath();this.Canvas.moveTo(aryPoint[0].X-radius,aryPoint[0].Y);this.Canvas.lineTo(aryPoint[0].X+radius,aryPoint[0].Y);this.Canvas.lineTo(aryPoint[1].X+radius,aryPoint[1].Y);this.Canvas.lineTo(aryPoint[1].X-radius,aryPoint[1].Y);this.Canvas.closePath();if(this.Canvas.isPointInPath(x,y))return true;};}//画图工具-弧形
5881
5895
  function ChartDrawPictureArc(){this.newMethod=IChartDrawPicture;//派生
5882
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureArc';this.Draw=function(){if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=2)return;this.ClipFrame();//this.Canvas.beginPath();
5896
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureArc';this.Draw=function(){if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=2)return;this.ClipFrame();//this.Canvas.beginPath();
5883
5897
  //this.Canvas.rect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);
5884
5898
  this.SetLineWidth();if(drawPoint[0].X<drawPoint[1].X&&drawPoint[0].Y>drawPoint[1].Y)// 第一象限
5885
5899
  {var a=drawPoint[1].X-drawPoint[0].X;var b=drawPoint[0].Y-drawPoint[1].Y;var step=a>b?1/a:1/b;var xcenter=drawPoint[0].X;var ycenter=drawPoint[1].Y;this.Canvas.beginPath();this.Canvas.moveTo(drawPoint[0].X,drawPoint[0].Y);for(var i=1.5*Math.PI;i<2*Math.PI;i+=step){this.Canvas.lineTo(xcenter+a*Math.cos(i),ycenter+b*Math.sin(i)*-1);}for(var j=0;j<=0.5*Math.PI;j+=step){this.Canvas.lineTo(xcenter+a*Math.cos(j),ycenter+b*Math.sin(j)*-1);}}else if(drawPoint[0].X>drawPoint[1].X&&drawPoint[0].Y>drawPoint[1].Y)// 第二象限
@@ -5896,7 +5910,7 @@ var ArcPoint=[{X:aryPoint[0].X,Y:aryPoint[0].Y},{X:aryPoint[1].X,Y:aryPoint[1].Y
5896
5910
  {var a=aryPoint[0].X-aryPoint[1].X;var b=aryPoint[1].Y-aryPoint[0].Y;var step=a>b?1/a:1/b;var ainer=a*0.8;var biner=b*0.8;var stepiner=ainer>biner?1/ainer:1/biner;var xcenter=aryPoint[0].X;var ycenter=aryPoint[1].Y;this.Canvas.beginPath();this.Canvas.moveTo(aryPoint[0].X,aryPoint[0].Y);for(var i=0.5*Math.PI;i<=1.5*Math.PI;i+=step){this.Canvas.lineTo(xcenter+a*Math.cos(i),ycenter+b*Math.sin(i)*-1);}for(var j=1.5*Math.PI;j>=0.5*Math.PI;j-=stepiner){this.Canvas.lineTo(xcenter+ainer*Math.cos(j),ycenter+biner*Math.sin(j)*-1);}this.Canvas.closePath();}else if(aryPoint[0].X<aryPoint[1].X&&aryPoint[0].Y<aryPoint[1].Y)// 第四象限
5897
5911
  {var a=aryPoint[1].X-aryPoint[0].X;var b=aryPoint[1].Y-aryPoint[0].Y;var step=a>b?1/a:1/b;var ainer=a*0.8;var biner=b*0.8;var stepiner=ainer>biner?1/ainer:1/biner;var xcenter=aryPoint[1].X;var ycenter=aryPoint[0].Y;this.Canvas.beginPath();this.Canvas.moveTo(aryPoint[0].X,aryPoint[0].Y);for(var i=Math.PI;i<=2*Math.PI;i+=step){this.Canvas.lineTo(xcenter+a*Math.cos(i),ycenter+b*Math.sin(i)*-1);}for(var j=2*Math.PI;j>=Math.PI;j-=stepiner){this.Canvas.lineTo(xcenter+ainer*Math.cos(j),ycenter+biner*Math.sin(j)*-1);}this.Canvas.closePath();}if(this.Canvas.isPointInPath(x,y))return true;else return false;};}//M头W底 支持横屏
5898
5912
  function ChartDrawPictureWaveMW(){this.newMethod=IChartDrawPicture;//派生
5899
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureWaveMW';this.PointCount=5;this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.IsHScreen=false;this.Draw=function(){this.LinePoint=[];if(!this.Frame)return;if(this.IsFrameMinSize())return;this.IsHScreen=this.Frame.IsHScreen;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;//var points=drawPoint.slice(0);
5913
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureWaveMW';this.PointCount=5;this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.IsHScreen=false;this.Draw=function(){this.LinePoint=[];if(!this.Frame)return;if(this.IsFrameMinSize())return;if(!this.IsShow)return;this.IsHScreen=this.Frame.IsHScreen;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;//var points=drawPoint.slice(0);
5900
5914
  this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.CalculateLines(drawPoint);this.SetLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
5901
5915
  this.Canvas.restore();};this.CalculateLines=function(points){if(!this.Frame)return;if(points.length<2)return;if(this.Status==2){var line={Start:new Point(),End:new Point()};line.Start.Y=points[0].Y;line.Start.X=points[0].X;line.End.Y=points[1].Y;line.End.X=points[1].X;this.LinePoint.push(line);var xMove=points[1].X-points[0].X;var yMove=points[1].Y-points[0].Y;line={Start:new Point(),End:new Point()};if(this.IsHScreen){line.Start.Y=points[1].Y;line.Start.X=points[1].X;line.End.Y=points[1].Y+yMove;line.End.X=points[0].X;}else{line.Start.Y=points[1].Y;line.Start.X=points[1].X;line.End.Y=points[0].Y;line.End.X=points[1].X+xMove;}this.LinePoint.push(line);var ptStart=line.End;var newPt=new Point();newPt.X=ptStart.X;newPt.Y=ptStart.Y;this.Point[2]=newPt;line={Start:new Point(),End:new Point()};if(this.IsHScreen){line.Start.Y=ptStart.Y;line.Start.X=ptStart.X;line.End.Y=ptStart.Y+yMove;line.End.X=points[1].X;}else{line.Start.Y=ptStart.Y;line.Start.X=ptStart.X;line.End.Y=points[1].Y;line.End.X=ptStart.X+xMove;}this.LinePoint.push(line);var ptStart=line.End;var newPt=new Point();newPt.X=ptStart.X;newPt.Y=ptStart.Y;this.Point[3]=newPt;line={Start:new Point(),End:new Point()};if(this.IsHScreen){line.Start.Y=ptStart.Y;line.Start.X=ptStart.X;line.End.Y=ptStart.Y+yMove;line.End.X=points[0].X;}else{line.Start.Y=ptStart.Y;line.Start.X=ptStart.X;line.End.Y=points[0].Y;line.End.X=ptStart.X+xMove;}this.LinePoint.push(line);var ptStart=line.End;var newPt=new Point();newPt.X=ptStart.X;newPt.Y=ptStart.Y;this.Point[4]=newPt;this.PointCount=this.Point.length;}else if(points.length==5){var line={Start:new Point(),End:new Point()};line.Start.Y=points[0].Y;line.Start.X=points[0].X;line.End.Y=points[1].Y;line.End.X=points[1].X;this.LinePoint.push(line);var line={Start:new Point(),End:new Point()};line.Start.Y=points[1].Y;line.Start.X=points[1].X;line.End.Y=points[2].Y;line.End.X=points[2].X;this.LinePoint.push(line);var line={Start:new Point(),End:new Point()};line.Start.Y=points[2].Y;line.Start.X=points[2].X;line.End.Y=points[3].Y;line.End.X=points[3].X;this.LinePoint.push(line);var line={Start:new Point(),End:new Point()};line.Start.Y=points[3].Y;line.Start.X=points[3].X;line.End.Y=points[4].Y;line.End.X=points[4].X;this.LinePoint.push(line);}};}//头肩 头肩顶(Head and shoulders top)以及头肩底(Head and shoulders bottom)两种形态
5902
5916
  //支持横屏
@@ -5905,13 +5919,13 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawHeadShouldersBT'
5905
5919
  function ChartDrawPictureParallelLines(){this.newMethod=IChartDrawPicture;//派生
5906
5920
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureParallelLines';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.PointCount=3;this.LastPoint;//中心线
5907
5921
  this.CenterLine={LineDash:[2*GetDevicePixelRatio(),3*GetDevicePixelRatio()],Line:null,IsShow:false};this.Super_SetOption=this.SetOption;//父类函数
5908
- this.Super_ExportStorageData=this.ExportStorageData;this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.CenterLine){var item=option.CenterLine;if(IFrameSplitOperator.IsNonEmptyArray(item.LineDash))this.CenterLine.LineDash=item.LineDash.slice(0);if(IFrameSplitOperator.IsBool(item.IsShow))this.CenterLine.IsShow=item.IsShow;}}};this.ExportStorageData=function(){var storageData;if(this.Super_ExportStorageData){storageData=this.Super_ExportStorageData();if(this.CenterLine){storageData.CenterLine={IsShow:this.CenterLine.IsShow,LineDash:this.CenterLine.LineDash.slice(0)};}}return storageData;};this.Draw=function(){this.LinePoint=[];this.CenterLine.Line=null;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});//不检测x,y
5922
+ this.Super_ExportStorageData=this.ExportStorageData;this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.CenterLine){var item=option.CenterLine;if(IFrameSplitOperator.IsNonEmptyArray(item.LineDash))this.CenterLine.LineDash=item.LineDash.slice(0);if(IFrameSplitOperator.IsBool(item.IsShow))this.CenterLine.IsShow=item.IsShow;}}};this.ExportStorageData=function(){var storageData;if(this.Super_ExportStorageData){storageData=this.Super_ExportStorageData();if(this.CenterLine){storageData.CenterLine={IsShow:this.CenterLine.IsShow,LineDash:this.CenterLine.LineDash.slice(0)};}}return storageData;};this.Draw=function(){this.LinePoint=[];this.CenterLine.Line=null;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});//不检测x,y
5909
5923
  if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);var points=drawPoint.slice(0);this.CalculateLines(points);this.ClipFrame();this.DrawArea();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}if(this.CenterLine.IsShow&&this.CenterLine.Line){var item=this.CenterLine.Line;this.Canvas.setLineDash(this.CenterLine.LineDash);this.DrawLine(item.Start,item.End);this.Canvas.setLineDash([]);}this.DrawPoint(points);//画点
5910
5924
  this.Canvas.restore();};this.SetLastPoint=function(obj){this.LastPoint={X:obj.X,Y:obj.Y};};this.DrawArea=function(){if(this.LinePoint.length!=2)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(this.LinePoint[0].Start.X,this.LinePoint[0].Start.Y);this.Canvas.lineTo(this.LinePoint[0].End.X,this.LinePoint[0].End.Y);this.Canvas.lineTo(this.LinePoint[1].End.X,this.LinePoint[1].End.Y);this.Canvas.lineTo(this.LinePoint[1].Start.X,this.LinePoint[1].Start.Y);this.Canvas.closePath();this.Canvas.fill();};this.CalculateLines=function(points){if(this.PointStatus==2&&this.LastPoint){var pt=new Point();pt.X=this.LastPoint.X;pt.Y=this.LastPoint.Y;points[2]=pt;}if(points.length==2){var linePoint=this.CalculateExtendLinePoint(points[0],points[1]);this.LinePoint.push(linePoint);}else if(points.length==3){var linePoint=this.CalculateExtendLinePoint(points[0],points[1]);this.LinePoint.push(linePoint);//计算平行线
5911
5925
  var xMove=points[2].X-points[1].X;var yMove=points[2].Y-points[1].Y;var ptStart=new Point();var ptEnd=new Point();ptStart.X=points[0].X+xMove;ptStart.Y=points[0].Y+yMove;ptEnd.X=points[1].X+xMove;ptEnd.Y=points[1].Y+yMove;linePoint=this.CalculateExtendLinePoint(ptStart,ptEnd);this.LinePoint.push(linePoint);//中心线
5912
5926
  var ptStart=new Point();var ptEnd=new Point();ptStart.X=points[0].X+xMove/2;ptStart.Y=points[0].Y+yMove/2;ptEnd.X=points[1].X+xMove/2;ptEnd.Y=points[1].Y+yMove/2;linePoint=this.CalculateExtendLinePoint(ptStart,ptEnd);this.CenterLine.Line=linePoint;}};}//FlatTop/Bottom
5913
5927
  function ChartDrawFlatTop(){this.newMethod=IChartDrawPicture;//派生
5914
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawFlatTop';this.IsPointIn=this.IsPointIn_XYValue_Line;this.PointCount=3;this.LastPoint;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);var points=drawPoint.slice(0);this.CalculateLines(points);this.ClipFrame();for(var i=0;i<this.LinePoint.length;++i){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}this.DrawArea();this.DrawPoint(points);//画点
5928
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawFlatTop';this.IsPointIn=this.IsPointIn_XYValue_Line;this.PointCount=3;this.LastPoint;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);var points=drawPoint.slice(0);this.CalculateLines(points);this.ClipFrame();for(var i=0;i<this.LinePoint.length;++i){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}this.DrawArea();this.DrawPoint(points);//画点
5915
5929
  this.Canvas.restore();};this.SetLastPoint=function(obj){this.LastPoint={X:obj.X,Y:obj.Y};};this.DrawArea=function(){if(this.LinePoint.length!=2)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(this.LinePoint[0].Start.X,this.LinePoint[0].Start.Y);this.Canvas.lineTo(this.LinePoint[0].End.X,this.LinePoint[0].End.Y);this.Canvas.lineTo(this.LinePoint[1].End.X,this.LinePoint[1].End.Y);this.Canvas.lineTo(this.LinePoint[1].Start.X,this.LinePoint[1].Start.Y);this.Canvas.closePath();this.Canvas.fill();};this.CalculateLines=function(points){if(this.PointStatus==2&&this.LastPoint){var ptSecond=points[1];var pt=new Point();pt.X=ptSecond.X;pt.Y=this.LastPoint.Y;points[2]=pt;}if(points.length==2){this.LinePoint.push({Start:points[0],End:points[1]});}else if(points.length==3){this.LinePoint.push({Start:points[0],End:points[1]});//计算水平线
5916
5930
  var ptThrid=points[2];ptThrid.X=points[1].X;var ptStart={X:points[0].X,Y:ptThrid.Y};var ptEnd={X:points[1].X,Y:ptThrid.Y};this.LinePoint.push({Start:ptStart,End:ptEnd});}};}//Disjont Channel
5917
5931
  function ChartDrawDisjontChannel(){this.newMethod=ChartDrawFlatTop;//派生
@@ -5931,7 +5945,7 @@ for(var i=0;i<this.Value.length&&i<2;++i){var item=this.Value[i];storageData.Val
5931
5945
  this.CalculateDrawPoint=function(){if(this.Status<2)return null;if(!this.Point.length||!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;var drawPoint=[];if(this.Status==10)//完成
5932
5946
  {for(var i=0;i<2;++i){var item=this.Value[i];var pt=new Point();pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);drawPoint.push(pt);}}else{for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var pt=new Point();pt.X=item.X;pt.Y=item.Y;drawPoint.push(pt);}}if(drawPoint.length>=2){var linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y;this.LinePoint.push(linePoint);if(drawPoint.length==3||this.Status==10){var x=linePoint.End.X-linePoint.Start.X;var y=linePoint.End.Y-linePoint.Start.Y;var angle=Math.atan(Math.abs(x/y));var yMove=this.ChannelWidth/Math.sin(angle);//JSConsole.Chart.Log('[ChartDrawPictureParallelChannel::CalculateDrawPoint]',xMove);
5933
5947
  linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y-yMove;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y-yMove;this.LinePoint.push(linePoint);var ptCenter=new Point();ptCenter.X=linePoint.Start.X+(linePoint.End.X-linePoint.Start.X)/2;ptCenter.Y=linePoint.Start.Y+(linePoint.End.Y-linePoint.Start.Y)/2;drawPoint[2]=ptCenter;this.Point[2]=ptCenter;var xValue=parseInt(this.Frame.GetXData(ptCenter.X))+data.DataOffset;var yValue=this.Frame.GetYData(ptCenter.Y);this.Value[2]={XValue:xValue,YValue:yValue};this.PointCount=this.Point.length;//完成以后是3个点
5934
- linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y-yMove/2;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y-yMove/2;this.CenterLine.Line=linePoint;}}return drawPoint;};this.DrawArea=function(pt,pt2,pt3,pt4){this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(pt.X,pt.Y);this.Canvas.lineTo(pt2.X,pt2.Y);this.Canvas.lineTo(pt3.X,pt3.Y);this.Canvas.lineTo(pt4.X,pt4.Y);this.Canvas.closePath();this.Canvas.fill();};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();if(this.LinePoint.length==2){this.DrawArea(this.LinePoint[0].Start,this.LinePoint[0].End,this.LinePoint[1].End,this.LinePoint[1].Start);}for(var i=0;i<this.LinePoint.length;++i){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}if(this.CenterLine.IsShow&&this.CenterLine.Line){var item=this.CenterLine.Line;this.Canvas.setLineDash(this.CenterLine.LineDash);this.DrawLine(item.Start,item.End);this.Canvas.setLineDash([]);}this.Canvas.restore();this.DrawPoint(drawPoint);//画点
5948
+ linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y-yMove/2;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y-yMove/2;this.CenterLine.Line=linePoint;}}return drawPoint;};this.DrawArea=function(pt,pt2,pt3,pt4){this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(pt.X,pt.Y);this.Canvas.lineTo(pt2.X,pt2.Y);this.Canvas.lineTo(pt3.X,pt3.Y);this.Canvas.lineTo(pt4.X,pt4.Y);this.Canvas.closePath();this.Canvas.fill();};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();if(this.LinePoint.length==2){this.DrawArea(this.LinePoint[0].Start,this.LinePoint[0].End,this.LinePoint[1].End,this.LinePoint[1].Start);}for(var i=0;i<this.LinePoint.length;++i){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}if(this.CenterLine.IsShow&&this.CenterLine.Line){var item=this.CenterLine.Line;this.Canvas.setLineDash(this.CenterLine.LineDash);this.DrawLine(item.Start,item.End);this.Canvas.setLineDash([]);}this.Canvas.restore();this.DrawPoint(drawPoint);//画点
5935
5949
  };//xStep,yStep 移动的偏移量
5936
5950
  this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==100)//整体移动
5937
5951
  {for(var i=0;i<this.Point.length;++i){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(this.MovePointIndex==0||this.MovePointIndex==1){if(this.MovePointIndex<this.Point.length){this.Point[this.MovePointIndex].X+=xStep;this.Point[this.MovePointIndex].Y+=yStep;}}else if(this.MovePointIndex==2)//宽度的点要计算
@@ -5947,7 +5961,7 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureText';thi
5947
5961
  //this.FontOption={ Family:'iconfont', Size:20, Weight:null, Style:null }; //Weight(bold 粗体), Style(italic)
5948
5962
  this.TextRect=null;//文字区域
5949
5963
  this.IsInitialized=false;//是否初始化了
5950
- this.SettingMenu;this.HQChart;this.SetOption=function(option){if(!option)return;if(option.LineColor)this.LineColor=option.LineColor;if(option.Text)this.Text=option.Text;if(option.FontOption)this.FontOption=option.FontOption;};this.Draw=function(textFont){this.TextRect=null;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=1)return;this.ClipFrame();this.Canvas.fillStyle=this.LineColor;this.Canvas.textAlign="center";this.Canvas.textBaseline="bottom";this.Canvas.font=this.GetTextFont();this.Canvas.fillText(this.Text,drawPoint[0].X,drawPoint[0].Y);var textWidth=this.Canvas.measureText(this.Text).width;var textHeight=this.FontOption.Size*GetDevicePixelRatio();this.TextRect={};this.TextRect.Left=drawPoint[0].X-textWidth/2;this.TextRect.Top=drawPoint[0].Y-textHeight;this.TextRect.Width=textWidth;this.TextRect.Height=textHeight;//this.Canvas.strokeRect(this.TextRect.Left,this.TextRect.Top,this.TextRect.Width,this.TextRect.Height);
5964
+ this.SettingMenu;this.HQChart;this.SetOption=function(option){if(!option)return;if(option.LineColor)this.LineColor=option.LineColor;if(option.Text)this.Text=option.Text;if(option.FontOption)this.FontOption=option.FontOption;};this.Draw=function(textFont){this.TextRect=null;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=1)return;this.ClipFrame();this.Canvas.fillStyle=this.LineColor;this.Canvas.textAlign="center";this.Canvas.textBaseline="bottom";this.Canvas.font=this.GetTextFont();this.Canvas.fillText(this.Text,drawPoint[0].X,drawPoint[0].Y);var textWidth=this.Canvas.measureText(this.Text).width;var textHeight=this.FontOption.Size*GetDevicePixelRatio();this.TextRect={};this.TextRect.Left=drawPoint[0].X-textWidth/2;this.TextRect.Top=drawPoint[0].Y-textHeight;this.TextRect.Width=textWidth;this.TextRect.Height=textHeight;//this.Canvas.strokeRect(this.TextRect.Left,this.TextRect.Top,this.TextRect.Width,this.TextRect.Height);
5951
5965
  this.Canvas.restore();if(this.IsInitialized===false){this.SetTextOption();this.IsInitialized=true;}};//根据设置动态生成字体
5952
5966
  this.GetTextFont=function(){var defaultFont=16*GetDevicePixelRatio()+"px 微软雅黑";if(!this.FontOption||!this.FontOption.Family||this.FontOption.Size<=0)return defaultFont;var font='';if(this.FontOption.Color)font+=this.FontOption.Color+' ';if(this.FontOption.Style)font+=this.FontOption.Style+' ';if(this.FontOption.Weight)font+=this.FontOption.Weight+' ';if(this.FontOption.Size>=0)font+=this.FontOption.Size*GetDevicePixelRatio()+'px ';font+=this.FontOption.Family;return font;};this.SetTextOption=function(){JSConsole.Chart.Log('[ChartDrawPictureText::SetTextOption]');//创建div设置窗口
5953
5967
  if(!this.SettingMenu)this.SettingMenu=new ChartPictureTextSettingMenu(this.Frame.ChartBorder.UIElement.parentNode);this.SettingMenu.ChartPicture=this;this.SettingMenu.HQChart=this.HQChart;this.SettingMenu.Position={Left:this.TextRect.Left+this.TextRect.Width,Top:this.TextRect.Top};this.SettingMenu.DoModal();};this.IsPointIn=function(x,y){if(!this.Frame||this.Status!=10)return-1;var data=this.Frame.Data;if(!data)return-1;if(!this.TextRect)return-1;this.Canvas.beginPath();this.Canvas.rect(this.TextRect.Left,this.TextRect.Top,this.TextRect.Width,this.TextRect.Height);if(this.Canvas.isPointInPath(x,y))return 100;return-1;};}//iconfont 图片
@@ -5956,11 +5970,11 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureIconFont'
5956
5970
  this.Text='\uE606';this.FontOption={Family:'iconfont',Size:24};//Weight(bold 粗体), Style(italic)
5957
5971
  this.TextRect=null;//文字区域
5958
5972
  this.SettingMenu;this.Angle=0;//旋转角度
5959
- this.SetOption=function(option){if(!option)return;if(option.LineColor)this.LineColor=option.LineColor;if(option.FontOption&&option.FontOption.Size>0)this.FontOption.Size=option.FontOption.Size;if(IFrameSplitOperator.IsNumber(option.Angle))this.Angle=option.Angle;};this.Draw=function(){this.TextRect=null;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=1)return;var font=this.GetTextFont();if(!font)return;this.ClipFrame();var isHScreen=this.Frame.IsHScreen;var pixel=GetDevicePixelRatio();this.Canvas.fillStyle=this.LineColor;this.Canvas.textAlign="center";this.Canvas.textBaseline="middle";this.Canvas.font=font;if(isHScreen){this.Canvas.translate(drawPoint[0].X,drawPoint[0].Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(this.Text,0,0);}else{if(this.Angle!=0){this.Canvas.translate(drawPoint[0].X,drawPoint[0].Y);this.Canvas.rotate(this.Angle*(Math.PI/180));this.Canvas.fillText(this.Text,0,0);}else{this.Canvas.fillText(this.Text,drawPoint[0].X,drawPoint[0].Y);}}var textWidth=this.Canvas.measureText(this.Text).width;this.TextRect={};this.TextRect.Left=drawPoint[0].X-textWidth/2;this.TextRect.Top=drawPoint[0].Y-this.FontOption.Size*pixel;this.TextRect.Width=textWidth;this.TextRect.Height=this.FontOption.Size*pixel;//this.Canvas.strokeRect(this.TextRect.Left,this.TextRect.Top,this.TextRect.Width,this.TextRect.Height);
5973
+ this.SetOption=function(option){if(!option)return;if(option.LineColor)this.LineColor=option.LineColor;if(option.FontOption&&option.FontOption.Size>0)this.FontOption.Size=option.FontOption.Size;if(IFrameSplitOperator.IsNumber(option.Angle))this.Angle=option.Angle;};this.Draw=function(){this.TextRect=null;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=1)return;var font=this.GetTextFont();if(!font)return;this.ClipFrame();var isHScreen=this.Frame.IsHScreen;var pixel=GetDevicePixelRatio();this.Canvas.fillStyle=this.LineColor;this.Canvas.textAlign="center";this.Canvas.textBaseline="middle";this.Canvas.font=font;if(isHScreen){this.Canvas.translate(drawPoint[0].X,drawPoint[0].Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(this.Text,0,0);}else{if(this.Angle!=0){this.Canvas.translate(drawPoint[0].X,drawPoint[0].Y);this.Canvas.rotate(this.Angle*(Math.PI/180));this.Canvas.fillText(this.Text,0,0);}else{this.Canvas.fillText(this.Text,drawPoint[0].X,drawPoint[0].Y);}}var textWidth=this.Canvas.measureText(this.Text).width;this.TextRect={};this.TextRect.Left=drawPoint[0].X-textWidth/2;this.TextRect.Top=drawPoint[0].Y-this.FontOption.Size*pixel;this.TextRect.Width=textWidth;this.TextRect.Height=this.FontOption.Size*pixel;//this.Canvas.strokeRect(this.TextRect.Left,this.TextRect.Top,this.TextRect.Width,this.TextRect.Height);
5960
5974
  this.Canvas.restore();};//根据设置动态生成字体
5961
5975
  this.GetTextFont=function(){if(!this.FontOption||!this.FontOption.Family||this.FontOption.Size<=0)return null;var font='';if(this.FontOption.Size>=0)font+=this.FontOption.Size*GetDevicePixelRatio()+'px ';font+=this.FontOption.Family;return font;};this.IsPointIn=function(x,y){if(!this.Frame||this.Status!=10)return-1;var data=this.Frame.Data;if(!data)return-1;if(!this.TextRect)return-1;var offset=0;if(this.Option&&this.Option.Zoom>=1){offset=this.Option.Zoom*GetDevicePixelRatio();}this.Canvas.beginPath();this.Canvas.rect(this.TextRect.Left-offset,this.TextRect.Top-offset,this.TextRect.Width+offset*2,this.TextRect.Height+offset*2);if(this.Canvas.isPointInPath(x,y))return 100;return-1;};}//江恩角度线(Gann Fan),亦又称作甘氏线的
5962
5976
  function ChartDrawPictureGannFan(){this.newMethod=IChartDrawPicture;//派生
5963
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureGannFan';this.IsPointIn=this.IsPointIn_XYValue_Line;this.LinePoint=[];this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();var quadrant=this.GetQuadrant(drawPoint[0],drawPoint[1]);this.SetLineWidth();if(quadrant===1||quadrant===4){this.CalculateLines(drawPoint[0],drawPoint[1],quadrant);this.DrawArea();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End,item.IsDottedLine);}for(var i in this.LinePoint){var item=this.LinePoint[i];if(item.Text&&item.PtEnd)this.DrawTitle(item.PtEnd,item.Text);}}else{this.DrawLine(drawPoint[0],drawPoint[1],false);}this.RestoreLineWidth();this.Canvas.restore();this.DrawPoint(drawPoint);//画点
5977
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureGannFan';this.IsPointIn=this.IsPointIn_XYValue_Line;this.LinePoint=[];this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();var quadrant=this.GetQuadrant(drawPoint[0],drawPoint[1]);this.SetLineWidth();if(quadrant===1||quadrant===4){this.CalculateLines(drawPoint[0],drawPoint[1],quadrant);this.DrawArea();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End,item.IsDottedLine);}for(var i in this.LinePoint){var item=this.LinePoint[i];if(item.Text&&item.PtEnd)this.DrawTitle(item.PtEnd,item.Text);}}else{this.DrawLine(drawPoint[0],drawPoint[1],false);}this.RestoreLineWidth();this.Canvas.restore();this.DrawPoint(drawPoint);//画点
5964
5978
  };//获取在第几象限
5965
5979
  this.GetQuadrant=function(ptStart,ptEnd){if(ptStart.X<ptEnd.X&&ptStart.Y>ptEnd.Y)return 1;else if(ptStart.X<ptEnd.X&&ptStart.Y>ptEnd.Y)return 2;else if(ptStart.X<ptEnd.X&&ptStart.Y<ptEnd.Y)return 4;else return 3;};//isDotline 是否是虚线
5966
5980
  this.DrawLine=function(ptStart,ptEnd,isDottedline){if(isDottedline)this.Canvas.setLineDash([5,10]);this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();if(isDottedline)this.Canvas.setLineDash([]);};this.DrawTitle=function(pt,text){this.Canvas.fillStyle=this.LineColor;this.Canvas.textAlign="left";this.Canvas.textBaseline="bottom";this.Canvas.font=this.Font;this.Canvas.fillText(text,pt.X,pt.Y);};this.DrawArea=function(){var lineStart=null,lineEnd=null;for(var i in this.LinePoint){var item=this.LinePoint[i];if(item.Text=='1:8')lineStart=this.LinePoint[i];else if(item.Text=='8:1')lineEnd=this.LinePoint[i];}if(!lineStart||!lineEnd)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(lineStart.End.X,lineStart.End.Y);this.Canvas.lineTo(lineStart.Start.X,lineStart.Start.Y);this.Canvas.lineTo(lineEnd.End.X,lineEnd.End.Y);this.Canvas.closePath();this.Canvas.fill();};//计算线段
@@ -5989,14 +6003,14 @@ function ChartDrawPictureResistanceLine(){this.newMethod=ChartDrawPictureGannFan
5989
6003
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureResistanceLine';//计算线段
5990
6004
  this.CalculateLines=function(ptStart,ptEnd,quadrant){if(!this.Frame)return false;var top=this.Frame.ChartBorder.GetTopEx();var right=this.Frame.ChartBorder.GetRight();var bottom=this.Frame.ChartBorder.GetBottom();var SPLIT_LINE_VALUE=[1.0/3,2.0/3];var SPLIT_LINE_Y_TITLE=["3:1","3:2"];var ptLineStart=new Point();var ptLineEnd=new Point();ptLineStart.X=ptStart.X;ptLineStart.Y=ptStart.Y;ptLineEnd.X=ptEnd.X;ptLineEnd.Y=ptEnd.Y;var lineWidth=Math.abs(ptStart.X-ptEnd.X);var lineHeight=Math.abs(ptStart.Y-ptEnd.Y);if(quadrant===1){var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);var line={Start:ptLineStart,End:extendLine.Start,IsDottedLine:false,PtEnd:ptLineEnd,Text:'1:1'};this.LinePoint.push(line);for(var i in SPLIT_LINE_VALUE){if(lineHeight>5){line={Start:ptLineStart,End:null,IsDottedLine:false,PtEnd:new Point(),Text:SPLIT_LINE_Y_TITLE[i]};line.PtEnd.Y=ptStart.Y-lineHeight*SPLIT_LINE_VALUE[i];line.PtEnd.X=ptEnd.X;var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);line.End=extendLine.Start;this.LinePoint.push(line);}}}else if(quadrant==4){var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);var line={Start:ptLineStart,End:extendLine.End,IsDottedLine:false,PtEnd:ptLineEnd,Text:'1:1'};this.LinePoint.push(line);for(var i in SPLIT_LINE_VALUE){if(lineHeight>5){line={Start:ptLineStart,End:null,IsDottedLine:false,PtEnd:new Point(),Text:SPLIT_LINE_Y_TITLE[i]};line.PtEnd.Y=ptStart.Y+lineHeight*SPLIT_LINE_VALUE[i];line.PtEnd.X=ptEnd.X;var extendLine=this.CalculateExtendLinePoint(line.Start,line.PtEnd);line.End=extendLine.End;this.LinePoint.push(line);}}}else return false;return true;};this.DrawArea=function(){var lineStart=null,lineEnd=null;for(var i in this.LinePoint){var item=this.LinePoint[i];if(item.Text=='1:1')lineStart=this.LinePoint[i];else if(item.Text=='3:1')lineEnd=this.LinePoint[i];}if(!lineStart||!lineEnd)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(lineStart.End.X,lineStart.End.Y);this.Canvas.lineTo(lineStart.Start.X,lineStart.Start.Y);this.Canvas.lineTo(lineEnd.End.X,lineEnd.End.Y);this.Canvas.closePath();this.Canvas.fill();};}//黄金分割线
5991
6005
  function ChartDrawPictureGoldenSection(){this.newMethod=IChartDrawPicture;//派生
5992
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureGoldenSection';this.IsPointIn=this.IsPointIn_XYValue_Line;this.Font=14*GetDevicePixelRatio()+"px 微软雅黑";this.GetSectionData=function(){var GOLDEN_SECTION_DATA=[0,0.236,0.382,0.5,0.618,0.80,1,1.236,1.382,1.5,1.618,1.8,2];return GOLDEN_SECTION_DATA;};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint)return;if(drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.CalculateLines(drawPoint[0],drawPoint[1]);this.ClipFrame();this.SetLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End,item.IsDottedLine);}this.RestoreLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];if(item.Text)this.DrawTitle(item.Start,item.Text);}this.DrawPoint(drawPoint);//画点
6006
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureGoldenSection';this.IsPointIn=this.IsPointIn_XYValue_Line;this.Font=14*GetDevicePixelRatio()+"px 微软雅黑";this.GetSectionData=function(){var GOLDEN_SECTION_DATA=[0,0.236,0.382,0.5,0.618,0.80,1,1.236,1.382,1.5,1.618,1.8,2];return GOLDEN_SECTION_DATA;};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint)return;if(drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.CalculateLines(drawPoint[0],drawPoint[1]);this.ClipFrame();this.SetLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End,item.IsDottedLine);}this.RestoreLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];if(item.Text)this.DrawTitle(item.Start,item.Text);}this.DrawPoint(drawPoint);//画点
5993
6007
  this.Canvas.restore();};this.CalculateHSCreenLines=function(ptStart,ptEnd){var sectionData=this.GetSectionData();var left=this.Frame.ChartBorder.GetTop();var right=this.Frame.ChartBorder.GetBottom();var lineHeight=ptStart.X-ptEnd.X;for(var i=0;i<sectionData.length;++i){var yMove=lineHeight*sectionData[i];var line={Start:new Point(),End:new Point()};line.Start.X=ptStart.X-yMove;line.Start.Y=left;line.End.X=ptStart.X-yMove;line.End.Y=right;var text='';if(i==0)text='Base ';else text=(sectionData[i]*100).toFixed(2)+'% ';var yValue=this.Frame.GetYData(line.Start.X);text+=yValue.toFixed(2);line.Text=text;this.LinePoint.push(line);}};this.CalculateLines=function(ptStart,ptEnd){if(this.Frame.IsHScreen){this.CalculateHSCreenLines(ptStart,ptEnd);return;}var sectionData=this.GetSectionData();var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();var lineHeight=ptStart.Y-ptEnd.Y;for(var i=0;i<sectionData.length;++i){var yMove=lineHeight*sectionData[i];var line={Start:new Point(),End:new Point()};line.Start.Y=ptStart.Y-yMove;line.Start.X=left;line.End.Y=ptStart.Y-yMove;line.End.X=right;var text='';if(i==0)text='Base ';else text=(sectionData[i]*100).toFixed(2)+'% ';var yValue=this.Frame.GetYData(line.Start.Y);text+=yValue.toFixed(2);line.Text=text;this.LinePoint.push(line);}};this.DrawLine=function(ptStart,ptEnd){this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();};this.DrawTitle=function(pt,text){this.Canvas.fillStyle=this.LineColor;this.Canvas.textAlign="left";this.Canvas.textBaseline="bottom";this.Canvas.font=this.Font;if(this.Frame.IsHScreen){this.Canvas.save();this.Canvas.translate(pt.X,pt.Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{this.Canvas.fillText(text,pt.X,pt.Y);}};}//百分比线
5994
6008
  function ChartDrawPicturePercentage(){this.newMethod=ChartDrawPictureGoldenSection;//派生
5995
6009
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPicturePercentage';this.GetSectionData=function(){var GOLDEN_SECTION_DATA=[0,0.25,0.333,0.50,1];return GOLDEN_SECTION_DATA;};}//波段线
5996
6010
  function ChartDrawPictureWaveBand(){this.newMethod=ChartDrawPictureGoldenSection;//派生
5997
6011
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureWaveBand';this.GetSectionData=function(){var GOLDEN_SECTION_DATA=[0,0.125,0.25,0.375,0.50,0.625,0.75,0.875,1];return GOLDEN_SECTION_DATA;};}//三角形
5998
6012
  function ChartDrawPictureTriangle(){this.newMethod=IChartDrawPicture;//派生
5999
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureTriangle';this.PointCount=3;this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.LastPoint;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;var points=drawPoint.slice(0);this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.CalculateLines(points);for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}this.DrawArea(points);this.DrawPoint(points);//画点
6013
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureTriangle';this.PointCount=3;this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.LastPoint;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;var points=drawPoint.slice(0);this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.CalculateLines(points);for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}this.DrawArea(points);this.DrawPoint(points);//画点
6000
6014
  this.DrawTitle(points);this.Canvas.restore();};this.DrawArea=function(points){if(points.length!=3)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(points[0].X,points[0].Y);this.Canvas.lineTo(points[1].X,points[1].Y);this.Canvas.lineTo(points[2].X,points[2].Y);this.Canvas.lineTo(points[0].X,points[0].Y);this.Canvas.closePath();this.Canvas.fill();};//显示角度数据
6001
6015
  this.DrawTitle=function(points){if(this.Status!=10)return;//拖拽完成以后才显示角度数据
6002
6016
  //输出3个点的角度
@@ -6008,7 +6022,7 @@ this.DrawTitle=function(points){if(this.Status!=10)return;//拖拽完成以后
6008
6022
  this.Canvas.fillText('∠60',points[0].X,points[0].Y);
6009
6023
  */};this.SetLastPoint=function(obj){this.LastPoint={X:obj.X,Y:obj.Y};};this.CalculateLines=function(points){if(this.PointStatus==2&&this.LastPoint){var pt=new Point();pt.X=this.LastPoint.X;pt.Y=this.LastPoint.Y;points[2]=pt;}if(points.length===2){var line={Start:new Point(),End:new Point()};line.Start.Y=points[0].Y;line.Start.X=points[0].X;line.End.Y=points[1].Y;line.End.X=points[1].X;this.LinePoint.push(line);}else if(points.length===3){var line={Start:new Point(),End:new Point()};line.Start.Y=points[0].Y;line.Start.X=points[0].X;line.End.Y=points[1].Y;line.End.X=points[1].X;this.LinePoint.push(line);line={Start:new Point(),End:new Point()};line.Start.Y=points[1].Y;line.Start.X=points[1].X;line.End.Y=points[2].Y;line.End.X=points[2].X;this.LinePoint.push(line);line={Start:new Point(),End:new Point()};line.Start.Y=points[2].Y;line.Start.X=points[2].X;line.End.Y=points[0].Y;line.End.X=points[0].X;this.LinePoint.push(line);}};}//对称角度
6010
6024
  function ChartDrawPictureSymmetryAngle(){this.newMethod=IChartDrawPicture;//派生
6011
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureSymmetryAngle';this.PointCount=2;this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;//var points=drawPoint.slice(0);
6025
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureSymmetryAngle';this.PointCount=2;this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;//var points=drawPoint.slice(0);
6012
6026
  this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.CalculateLines(drawPoint);for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}this.DrawArea();this.DrawPoint(drawPoint);//画点
6013
6027
  this.DrawTitle(drawPoint);this.Canvas.restore();};this.CalculateLines=function(points){if(points.length!=2)return;if(!this.Frame)return;var line={Start:new Point(),End:new Point()};line.Start.Y=points[0].Y;line.Start.X=points[0].X;line.End.Y=points[1].Y;line.End.X=points[1].X;this.LinePoint.push(line);line={Start:new Point(),End:new Point()};line.Start.Y=points[0].Y;line.Start.X=points[0].X;line.End.Y=points[1].Y;line.End.X=points[0].X;this.LinePoint.push(line);var xMove=points[0].X-points[1].X;line={Start:new Point(),End:new Point()};line.Start.Y=points[0].Y;line.Start.X=points[0].X;line.End.Y=points[1].Y;line.End.X=points[0].X+xMove;this.LinePoint.push(line);};this.DrawArea=function(){if(this.LinePoint.length!=3)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(this.LinePoint[0].Start.X,this.LinePoint[0].Start.Y);this.Canvas.lineTo(this.LinePoint[0].End.X,this.LinePoint[0].End.Y);this.Canvas.lineTo(this.LinePoint[2].End.X,this.LinePoint[2].End.Y);this.Canvas.moveTo(this.LinePoint[0].Start.X,this.LinePoint[0].Start.Y);this.Canvas.closePath();this.Canvas.fill();};//显示角度数据
6014
6028
  this.DrawTitle=function(points){if(this.Status!=10)return;//拖拽完成以后才显示角度数据
@@ -6021,17 +6035,17 @@ this.DrawTitle=function(points){if(this.Status!=10)return;//拖拽完成以后
6021
6035
  this.Canvas.fillText('∠60',points[0].X,points[0].Y);
6022
6036
  */};}//圆
6023
6037
  function ChartDrawPictureCircle(){this.newMethod=IChartDrawPicture;//派生
6024
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureCircle';this.PointCount=2;this.CircleData;this.GetXYCoordinate=this.GetXYCoordinate_default;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();var x=drawPoint[0].X-drawPoint[1].X;var y=drawPoint[0].Y-drawPoint[1].Y;var r=Math.sqrt(x*x+y*y);this.Canvas.fillStyle=this.AreaColor;this.Canvas.strokeStyle=this.LineColor;this.DrawLine(drawPoint[0],drawPoint[1]);this.Canvas.beginPath();this.Canvas.arc(drawPoint[0].X,drawPoint[0].Y,r,0,2*Math.PI);this.Canvas.stroke();this.Canvas.fill();this.CircleData={X:drawPoint[0].X,Y:drawPoint[0].Y,R:r};this.DrawPoint(drawPoint);//画点
6038
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureCircle';this.PointCount=2;this.CircleData;this.GetXYCoordinate=this.GetXYCoordinate_default;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();var x=drawPoint[0].X-drawPoint[1].X;var y=drawPoint[0].Y-drawPoint[1].Y;var r=Math.sqrt(x*x+y*y);this.Canvas.fillStyle=this.AreaColor;this.Canvas.strokeStyle=this.LineColor;this.DrawLine(drawPoint[0],drawPoint[1]);this.Canvas.beginPath();this.Canvas.arc(drawPoint[0].X,drawPoint[0].Y,r,0,2*Math.PI);this.Canvas.stroke();this.Canvas.fill();this.CircleData={X:drawPoint[0].X,Y:drawPoint[0].Y,R:r};this.DrawPoint(drawPoint);//画点
6025
6039
  this.Canvas.restore();};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
6026
6040
  this.IsPointIn=function(x,y,option){if(this.IsFrameMinSize())return-1;if(this.Status!=10)return-1;var value=this.IsPointInXYValue(x,y,option);if(value>=0)return value;if(this.CircleData&&this.CircleData.R>8){var triangleX=this.CircleData.X-x;var triangleY=this.CircleData.Y-y;var r=Math.sqrt(triangleX*triangleX+triangleY*triangleY);//计算直径
6027
6041
  if(r<this.CircleData.R&&r>this.CircleData.R-8)return 100;}return-1;};}//四边形
6028
6042
  function ChartDrawPictureQuadrangle(){this.newMethod=IChartDrawPicture;//派生
6029
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureQuadrangle';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.PointCount=3;this.LastPoint;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);var points=drawPoint.slice(0);this.CalculateLines(points);this.ClipFrame();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}this.DrawArea();this.DrawPoint(points);//画点
6043
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureQuadrangle';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.PointCount=3;this.LastPoint;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);var points=drawPoint.slice(0);this.CalculateLines(points);this.ClipFrame();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}this.DrawArea();this.DrawPoint(points);//画点
6030
6044
  this.Canvas.restore();};this.SetLastPoint=function(obj){this.LastPoint={X:obj.X,Y:obj.Y};};this.DrawArea=function(){if(this.LinePoint.length!=4)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(this.LinePoint[0].Start.X,this.LinePoint[0].Start.Y);this.Canvas.lineTo(this.LinePoint[0].End.X,this.LinePoint[0].End.Y);this.Canvas.lineTo(this.LinePoint[1].End.X,this.LinePoint[1].End.Y);this.Canvas.lineTo(this.LinePoint[2].End.X,this.LinePoint[2].End.Y);this.Canvas.closePath();this.Canvas.fill();};this.CalculateLines=function(points){if(this.PointStatus==2&&this.LastPoint){var pt=new Point();pt.X=this.LastPoint.X;pt.Y=this.LastPoint.Y;points[2]=pt;}if(points.length==2){var linePoint=this.CreateLineData(points[0],points[1]);this.LinePoint.push(linePoint);}else if(points.length==3){var linePoint=this.CreateLineData(points[0],points[1]);this.LinePoint.push(linePoint);var linePoint=this.CreateLineData(points[1],points[2]);this.LinePoint.push(linePoint);//计算平行线
6031
6045
  var xMove=points[2].X-points[1].X;var yMove=points[2].Y-points[1].Y;var pt4=new Point();//第4个点的坐标
6032
6046
  pt4.X=points[0].X+xMove;pt4.Y=points[0].Y+yMove;var linePoint=this.CreateLineData(points[2],pt4);this.LinePoint.push(linePoint);var linePoint=this.CreateLineData(pt4,points[0]);this.LinePoint.push(linePoint);}};}//斐波那契周期线
6033
6047
  function ChartDrawPictureFibonacci(){this.newMethod=IChartDrawPicture;//派生
6034
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureFibonacci';this.PointCount=1;this.Font=14*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint)return;this.CalculateLines();if(this.LinePoint.length<=0)return;this.ClipFrame();this.SetLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);this.DrawTitle(item.Start,item.Title);}this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6048
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureFibonacci';this.PointCount=1;this.Font=14*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint)return;this.CalculateLines();if(this.LinePoint.length<=0)return;this.ClipFrame();this.SetLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);this.DrawTitle(item.Start,item.Title);}this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6035
6049
  this.Canvas.restore();};this.DrawTitle=function(pt,text){this.Canvas.fillStyle=this.LineColor;this.Canvas.textAlign="left";this.Canvas.textBaseline="top";this.Canvas.font=this.Font;if(this.Frame.IsHScreen){this.Canvas.save();this.Canvas.translate(pt.X,pt.Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,2,10);this.Canvas.restore();}else{this.Canvas.fillText(text,pt.X+2,pt.Y+10);}};this.CalculateHSCreenLines=function(){var data=this.Frame.Data;if(!data)return;var xStart=null;if(this.Status==10){if(this.Value.length!=1)return;xStart=this.Value[0].XValue;}else{if(this.Point.length!=1)return;xStart=parseInt(this.Frame.GetXData(this.Point[0].Y))+data.DataOffset;}var top=this.Frame.ChartBorder.GetRightEx();var bottom=this.Frame.ChartBorder.GetLeftEx();var showCount=this.Frame.XPointCount;var LINE_DATA=[1,2,3,5,8,13,21,34,55,89,144,233];for(var i=0;i<LINE_DATA.length;++i){var xValue=xStart+LINE_DATA[i];var dataIndex=xValue-data.DataOffset;if(dataIndex<0||dataIndex>=showCount)continue;var x=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);var line={Start:new Point(),End:new Point(),Title:LINE_DATA[i]};line.Start.X=top;line.Start.Y=x;line.End.X=bottom;line.End.Y=x;this.LinePoint.push(line);}};this.CalculateLines=function(){if(this.Status<2)return;if(!this.Frame)return;var data=this.Frame.Data;if(!data)return;if(this.Frame.IsHScreen){this.CalculateHSCreenLines();return;}var xStart=null;if(this.Status==10){if(this.Value.length!=1)return;xStart=this.Value[0].XValue;}else{if(this.Point.length!=1)return;xStart=parseInt(this.Frame.GetXData(this.Point[0].X))+data.DataOffset;}var top=this.Frame.ChartBorder.GetTopEx();var bottom=this.Frame.ChartBorder.GetBottom();var showCount=this.Frame.XPointCount;var LINE_DATA=[1,2,3,5,8,13,21,34,55,89,144,233];for(var i=0;i<LINE_DATA.length;++i){var xValue=xStart+LINE_DATA[i];var dataIndex=xValue-data.DataOffset;if(dataIndex<0||dataIndex>=showCount)continue;var x=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);var line={Start:new Point(),End:new Point(),Title:LINE_DATA[i]};line.Start.Y=top;line.Start.X=x;line.End.Y=bottom;line.End.X=x;this.LinePoint.push(line);}};}//线性回归
6036
6050
  function ChartDrawLinearRegression(option){this.newMethod=IChartDrawPicture;//派生
6037
6051
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawLinearRegression';this.PointCount=2;this.IsPointIn=this.IsPointIn_XYValue_Line;this.ChartBorder;this.Lines=[];//回归线 { XValue:, YValue: }
@@ -6041,7 +6055,7 @@ this.ExtendLineDash=[5,5];//延长线虚线
6041
6055
  this.MaxPoint;this.MinPoint;if(option){if(option.IsShowMaxMinLine==true)this.IsShowMaxMinLine=true;if(option.IsShowExtendLine==true)this.IsShowExtendLine=true;}//导入
6042
6056
  this.ImportStorageData=function(storageData){if(storageData.IsShowMaxMinLine==true)this.IsShowMaxMinLine=true;if(storageData.IsShowExtendLine==true)this.IsShowExtendLine=true;if(storageData.Lines)this.Lines=storageData.Lines;if(storageData.MaxPoint&&storageData.MinPoint){this.MaxPoint=storageData.MaxPoint;this.MinPoint=storageData.MinPoint;}};//导出
6043
6057
  this.Super_ExportStorageData=this.ExportStorageData;this.ExportStorageData=function(){var storageData;if(this.Super_ExportStorageData){storageData=this.Super_ExportStorageData();storageData.IsShowMaxMinLine=this.IsShowMaxMinLine;storageData.IsShowExtendLine=this.IsShowExtendLine;storageData.Lines=this.Lines;if(this.IsShowMaxMinLine){storageData.MaxPoint=this.MaxPoint;storageData.MinPoint=this.MinPoint;}}return storageData;};this.PointToValue_Backup=this.PointToValue;this.PointToValue=function(){//拖拽完成 把点移动到线段头尾
6044
- this.Point[0]={X:this.Lines[0].X,Y:this.Lines[0].Y};this.Point[1]={X:this.Lines[this.Lines.length-1].X,Y:this.Lines[this.Lines.length-1].Y};this.PointToValue_Backup();};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2){if(this.Status==10){this.ClipFrame();this.ChartBorder=this.Frame.ChartBorder;this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.DrawLinearLines();this.RestoreLineWidth();this.Canvas.restore();}return;}this.ClipFrame();this.ChartBorder=this.Frame.ChartBorder;//0=开始画 1=完成第1个点 2=完成第2个点 3=完成第3个点 10=完成 20=移动)
6058
+ this.Point[0]={X:this.Lines[0].X,Y:this.Lines[0].Y};this.Point[1]={X:this.Lines[this.Lines.length-1].X,Y:this.Lines[this.Lines.length-1].Y};this.PointToValue_Backup();};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2){if(this.Status==10){this.ClipFrame();this.ChartBorder=this.Frame.ChartBorder;this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.DrawLinearLines();this.RestoreLineWidth();this.Canvas.restore();}return;}this.ClipFrame();this.ChartBorder=this.Frame.ChartBorder;//0=开始画 1=完成第1个点 2=完成第2个点 3=完成第3个点 10=完成 20=移动)
6045
6059
  this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;var ptStart=drawPoint[0];var ptEnd=drawPoint[1];if(this.Status==10){this.DrawLinearLines();}else{var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();var kPoint=this.PointToKLine([ptStart,ptEnd]);//JSConsole.Chart.Log('[ChartDrawLinearRegression::Draw] kPoint', kPoint);
6046
6060
  var linear=this.Calculate(kPoint);//JSConsole.Chart.Log('[ChartDrawLinearRegression::Draw] linear', linear);
6047
6061
  this.Lines=linear.Points;this.MaxPoint=linear.Max;this.MinPoint=linear.Min;this.DrawLinearLines();this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,top);this.Canvas.lineTo(ptStart.X,bottom);this.Canvas.moveTo(ptEnd.X,top);this.Canvas.lineTo(ptEnd.X,bottom);this.Canvas.stroke();}this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
@@ -6060,22 +6074,22 @@ this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath
6060
6074
  this.Canvas.textBaseline='bottom';this.Canvas.textAlign='left';this.Canvas.font=this.Font;if(this.TitleColor){this.Canvas.fillStyle=this.TitleColor;}else if(IFrameSplitOperator.IsNumber(kDataInfo.Increase)){if(kDataInfo.Increase>0)this.Canvas.fillStyle=g_JSChartResource.UpTextColor;else if(kDataInfo.Increase<0)this.Canvas.fillStyle=g_JSChartResource.DownTextColor;else this.Canvas.fillStyle=g_JSChartResource.UnchagneTextColor;}else{this.Canvas.fillStyle=g_JSChartResource.UnchagneTextColor;}var offset=3*GetDevicePixelRatio();var xText=ptStart.X;var yText=ptStart.Y;if(this.IsHScreen){this.Canvas.translate(xText+offset,yText+offset);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(title,0,0);}else{this.Canvas.fillText(title,xText+offset,yText-offset);}this.Canvas.restore();};this.Calculate=function(kPoint){var startPoint=kPoint[0];var endPoint=kPoint[1];if(startPoint.XValue>endPoint.XValue){startPoint=kPoint[1];endPoint=kPoint[0];}var data=this.Frame.Data.Data;var open,high,low,yClose,close;var count=0;for(var i=startPoint.XValue;i<=endPoint.XValue;++i,++count){var item=data[i];if(count==0){yClose=item.YClose;open=item.Open;close=item.Close;low=item.Low;high=item.High;}else{close=item.Close;if(low>item.Low)low=item.Low;if(high<item.High)high=item.High;}}if(!IFrameSplitOperator.IsPlusNumber(yClose))//前收盘无效, 取上一个交易日的收盘价
6061
6075
  {var index=startPoint.XValue-1;if(index>=0&&index<data.length)yClose=data[index].Close;}var result={YClose:yClose,Open:open,High:high,Low:low,Close:close,Count:count};if(IFrameSplitOperator.IsPlusNumber(yClose)){result.Increase=(close-yClose)/yClose*100;result.Risefall=close-yClose;}return result;};}//画图工具-标价线 支持横屏
6062
6076
  function ChartDrawPriceLine(){this.newMethod=IChartDrawPicture;//派生
6063
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPriceLine';this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.PointCount=1;this.IsPointIn=this.IsPointIn_XYValue_Line;this.IsHScreen=false;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=1)return;this.IsHScreen=this.Frame.IsHScreen;var ptStart=drawPoint[0];var chartBorder=this.Frame.ChartBorder;if(this.IsHScreen){var left=chartBorder.GetLeftEx();var right=chartBorder.GetRightEx();if(ptStart.X<left||ptStart.X>right)return;var bottom=chartBorder.GetBottom();var ptEnd={X:ptStart.X,Y:bottom};var price=this.Frame.GetYData(ptStart.X,false);}else{var bottom=chartBorder.GetBottomEx();var top=chartBorder.GetTopEx();if(ptStart.Y<top||ptStart.Y>bottom)return;var right=chartBorder.GetRight();var ptEnd={X:right,Y:ptStart.Y};var price=this.Frame.GetYData(ptStart.Y,false);}this.ClipFrame();this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
6077
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPriceLine';this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.PointCount=1;this.IsPointIn=this.IsPointIn_XYValue_Line;this.IsHScreen=false;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=1)return;this.IsHScreen=this.Frame.IsHScreen;var ptStart=drawPoint[0];var chartBorder=this.Frame.ChartBorder;if(this.IsHScreen){var left=chartBorder.GetLeftEx();var right=chartBorder.GetRightEx();if(ptStart.X<left||ptStart.X>right)return;var bottom=chartBorder.GetBottom();var ptEnd={X:ptStart.X,Y:bottom};var price=this.Frame.GetYData(ptStart.X,false);}else{var bottom=chartBorder.GetBottomEx();var top=chartBorder.GetTopEx();if(ptStart.Y<top||ptStart.Y>bottom)return;var right=chartBorder.GetRight();var ptEnd={X:right,Y:ptStart.Y};var price=this.Frame.GetYData(ptStart.Y,false);}this.ClipFrame();this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
6064
6078
  this.Canvas.textBaseline='bottom';this.Canvas.textAlign='left';this.Canvas.fillStyle=this.LineColor;this.Canvas.font=this.Font;var offset=2*GetDevicePixelRatio();var xText=ptStart.X;var yText=ptStart.Y;if(this.IsHScreen){this.Canvas.translate(xText+offset,yText+offset);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(price.toFixed(2),0,0);}else{this.Canvas.fillText(price.toFixed(2),xText+offset,yText-offset);}this.Canvas.restore();};}//画图工具-标价线2 支持横屏
6065
6079
  function ChartDrawPriceLineV2(){this.newMethod=IChartDrawPicture;//派生
6066
6080
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPriceLineV2';this.Font=12*GetDevicePixelRatio()+"px 微软雅黑";this.PointCount=1;this.IsPointIn=this.IsPointIn_XYValue_Line;this.IsHScreen=false;this.LineWidth=1;this.IsDrawFirst=true;this.TextColor="rgb(255,255,255)";this.Title;//标题
6067
6081
  this.Super_SetOption=this.SetOption;//父类函数
6068
- this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.TextColor)this.TextColor=option.TextColor;if(option.Title)this.Title=option.Title;}};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=1)return;if(!this.IsYValueInFrame(this.Value[0].YValue))return;this.IsHScreen=this.Frame.IsHScreen;var chartBorder=this.Frame.ChartBorder;var border=this.Frame.GetBorder();if(this.IsHScreen){var left=border.LeftEx;var right=border.RightEx;var bottom=border.Bottom;var top=border.Top;var ptStart={X:drawPoint[0].X,Y:top};if(ptStart.X<left||ptStart.X>right)return;var ptEnd={X:drawPoint[0].X,Y:bottom};var price=this.Frame.GetYData(ptStart.X,false);}else{var bottom=border.BottomEx;var top=border.TopTitle;var left=border.Left;var right=border.Right;var ptStart={X:left,Y:drawPoint[0].Y};if(ptStart.Y<top||ptStart.Y>bottom)return;var ptEnd={X:right,Y:drawPoint[0].Y};var price=this.Frame.GetYData(ptStart.Y,false);}//this.ClipFrame();
6082
+ this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.TextColor)this.TextColor=option.TextColor;if(option.Title)this.Title=option.Title;}};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=1)return;if(!this.IsYValueInFrame(this.Value[0].YValue))return;this.IsHScreen=this.Frame.IsHScreen;var chartBorder=this.Frame.ChartBorder;var border=this.Frame.GetBorder();if(this.IsHScreen){var left=border.LeftEx;var right=border.RightEx;var bottom=border.Bottom;var top=border.Top;var ptStart={X:drawPoint[0].X,Y:top};if(ptStart.X<left||ptStart.X>right)return;var ptEnd={X:drawPoint[0].X,Y:bottom};var price=this.Frame.GetYData(ptStart.X,false);}else{var bottom=border.BottomEx;var top=border.TopTitle;var left=border.Left;var right=border.Right;var ptStart={X:left,Y:drawPoint[0].Y};if(ptStart.Y<top||ptStart.Y>bottom)return;var ptEnd={X:right,Y:drawPoint[0].Y};var price=this.Frame.GetYData(ptStart.Y,false);}//this.ClipFrame();
6069
6083
  this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(ptStart.X),ToFixedPoint(ptStart.Y));this.Canvas.lineTo(ToFixedPoint(ptEnd.X),ToFixedPoint(ptEnd.Y));this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);var pixelTatio=GetDevicePixelRatio();this.Canvas.font=this.Font;var offset=2*pixelTatio;var xText=ptEnd.X;var yText=ptEnd.Y;this.Canvas.textBaseline='middle';this.Canvas.textAlign='left';var textHeight=this.GetFontHeight();var text=price.toFixed(2);var textWidth=this.Canvas.measureText(text).width+2*offset;if(this.IsHScreen){if(chartBorder.Bottom>10){var rtBG={Left:xText-textHeight/2,Top:yText,Width:textHeight,Height:textWidth};}else//框架内部显示
6070
6084
  {yText=yText-textWidth;var rtBG={Left:xText-textHeight/2,Top:yText,Width:textHeight,Height:textWidth};}this.Canvas.fillStyle=this.LineColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);this.Canvas.save();this.Canvas.translate(xText,yText+1*pixelTatio);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,0,0);this.Canvas.restore();if(this.Title){var textWidth=this.Canvas.measureText(this.Title).width+2*pixelTatio;if(chartBorder.Bottom>10){var rtTitle={Left:rtBG.Left,Top:bottom-textWidth-1*pixelTatio,Width:textHeight,Height:textWidth};}else{var rtTitle={Left:rtBG.Left,Top:rtBG.Top-textWidth-1*pixelTatio,Width:textHeight,Height:textWidth};}this.Canvas.fillStyle=this.LineColor;this.Canvas.fillRect(rtTitle.Left,rtTitle.Top,rtTitle.Width,rtTitle.Height);this.Canvas.save();this.Canvas.translate(xText,rtTitle.Top+1*pixelTatio);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(this.Title,0,0);this.Canvas.restore();}}else{if(chartBorder.Right>10){var rtBG={Left:xText,Top:yText-textHeight/2-1*pixelTatio,Width:textWidth,Height:textHeight};if(rtBG.Left+rtBG.Width>border.ChartWidth)rtBG.Left=border.ChartWidth-rtBG.Width-2*pixelTatio;}else//框架内部显示
6071
6085
  {var rtBG={Left:xText-textWidth,Top:yText-textHeight/2-1*pixelTatio,Width:textWidth,Height:textHeight};}this.Canvas.fillStyle=this.LineColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,rtBG.Left+offset,yText);if(this.Title){var textWidth=this.Canvas.measureText(this.Title).width+2*pixelTatio;if(chartBorder.Right>10){var rtTitle={Left:right-textWidth-1*pixelTatio,Top:rtBG.Top,Width:textWidth,Height:textHeight};if(rtBG.Left!=right)rtTitle.Left=rtBG.Left-textWidth-1*pixelTatio;}else{var rtTitle={Left:rtBG.Left-textWidth,Top:rtBG.Top,Width:textWidth,Height:textHeight};}this.Canvas.fillStyle=this.LineColor;this.Canvas.fillRect(rtTitle.Left,rtTitle.Top,rtTitle.Width,rtTitle.Height);this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(this.Title,rtTitle.Left+1*pixelTatio,yText);}}};this.DrawPrice=function(){};}//画图工具-竖线 支持横屏
6072
6086
  function ChartDrawVerticalLine(){this.newMethod=IChartDrawPicture;//派生
6073
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawVerticalLine';this.PointCount=1;this.IsPointIn=this.IsPointIn_XYValue_Line;this.IsHScreen=false;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.Frame||!this.Frame.Data)return;var data=this.Frame.Data;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=1)return;this.IsHScreen=this.Frame.IsHScreen;var pt=drawPoint[0];var chartBorder=this.Frame.ChartBorder;if(this.IsHScreen){var xValue=Math.round(this.Frame.GetXData(pt.Y,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var yLine=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);yLine=ToFixedPoint2(this.LineWidth,yLine);var left=chartBorder.GetLeftEx();var right=chartBorder.GetRightEx();var ptStart={X:left,Y:yLine};var ptEnd={X:right,Y:yLine};}else{var xValue=Math.round(this.Frame.GetXData(pt.X,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var xLine=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);xLine=ToFixedPoint2(this.LineWidth,xLine);var top=chartBorder.GetTopEx();var bottom=chartBorder.GetBottomEx();var ptStart={X:xLine,Y:top};var ptEnd={X:xLine,Y:bottom};}this.ClipFrame();this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);if(this.Status==10)this.DrawPoint(drawPoint);//画点
6087
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawVerticalLine';this.PointCount=1;this.IsPointIn=this.IsPointIn_XYValue_Line;this.IsHScreen=false;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;if(!this.Frame||!this.Frame.Data)return;var data=this.Frame.Data;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=1)return;this.IsHScreen=this.Frame.IsHScreen;var pt=drawPoint[0];var chartBorder=this.Frame.ChartBorder;if(this.IsHScreen){var xValue=Math.round(this.Frame.GetXData(pt.Y,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var yLine=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);yLine=ToFixedPoint2(this.LineWidth,yLine);var left=chartBorder.GetLeftEx();var right=chartBorder.GetRightEx();var ptStart={X:left,Y:yLine};var ptEnd={X:right,Y:yLine};}else{var xValue=Math.round(this.Frame.GetXData(pt.X,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var xLine=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);xLine=ToFixedPoint2(this.LineWidth,xLine);var top=chartBorder.GetTopEx();var bottom=chartBorder.GetBottomEx();var ptStart={X:xLine,Y:top};var ptEnd={X:xLine,Y:bottom};}this.ClipFrame();this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);if(this.Status==10)this.DrawPoint(drawPoint);//画点
6074
6088
  this.Canvas.restore();};}//画图工具-波浪尺
6075
6089
  function ChartDrawWaveRuler(){this.newMethod=IChartDrawPicture;//派生
6076
6090
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawWaveRuler';this.PointCount=3;this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.LastPoint;this.LinePoint;this.ScaleRuler=g_JSChartResource.ChartDrawWaveRuler.ScaleRuler;this.RulerWidth=g_JSChartResource.ChartDrawWaveRuler.RulerWidth;;//刻度尺长度
6077
6091
  this.RulerLineWidth=g_JSChartResource.ChartDrawWaveRuler.RulerLineWidth;this.MaxScaleRuler=g_JSChartResource.ChartDrawWaveRuler.MaxScaleRuler;//尺子最大的高度比
6078
- this.Font=g_JSChartResource.ChartDrawWaveRuler.MaxScaleRuler;this.IsHScreen=false;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.IsHScreen=this.Frame.IsHScreen;this.CalculateLines(drawPoint);this.ClipFrame();this.SetLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}//绘制波浪信息
6092
+ this.Font=g_JSChartResource.ChartDrawWaveRuler.MaxScaleRuler;this.IsHScreen=false;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.IsHScreen=this.Frame.IsHScreen;this.CalculateLines(drawPoint);this.ClipFrame();this.SetLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}//绘制波浪信息
6079
6093
  if(drawPoint.length==3)this.DrawWaveRuler(drawPoint);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6080
6094
  this.Canvas.restore();};this.SetLastPoint=function(obj){this.LastPoint={X:obj.X,Y:obj.Y};};this.CalculateLines=function(points){if(this.PointStatus==2&&this.LastPoint){var pt=new Point();pt.X=this.LastPoint.X;pt.Y=this.LastPoint.Y;points[2]=pt;}if(points.length==2){var linePoint={Start:{X:points[0].X,Y:points[0].Y},End:{X:points[1].X,Y:points[1].Y}};this.LinePoint.push(linePoint);}else if(points.length==3){var linePoint={Start:{X:points[0].X,Y:points[0].Y},End:{X:points[1].X,Y:points[1].Y}};this.LinePoint.push(linePoint);linePoint={Start:{X:points[1].X,Y:points[1].Y},End:{X:points[2].X,Y:points[2].Y}};this.LinePoint.push(linePoint);}};this.DrawWaveRuler=function(points){var ptBottom=points[1];var ptStart=points[0];var ptEnd=points[2];var lineWidth=this.RulerLineWidth*GetDevicePixelRatio();this.Canvas.lineWidth=lineWidth;this.Canvas.textBaseline='middle';this.Canvas.textAlign='left';this.Canvas.fillStyle=this.LineColor;this.Canvas.font=this.Font;var rulerWidth=this.RulerWidth*GetDevicePixelRatio();//刻度线长度
6081
6095
  if(this.IsHScreen){var rulerHeight=ptStart.X-ptBottom.X;var ptExtendBottom={X:ptEnd.X-this.MaxScaleRuler*rulerHeight,Y:ptEnd.Y};this.DrawLine(ptEnd,ptExtendBottom);this.LinePoint.push({Start:ptEnd,End:ptExtendBottom});var y=ptEnd.Y-rulerWidth/2,y2=ptEnd.Y+rulerWidth/2;}else{var rulerHeight=ptStart.Y-ptBottom.Y;var ptExtendBottom={X:ToFixedPoint2(lineWidth,ptEnd.X),Y:ptEnd.Y-this.MaxScaleRuler*rulerHeight};this.DrawLine({X:ToFixedPoint2(lineWidth,ptEnd.X),Y:ptEnd.Y},ptExtendBottom);this.LinePoint.push({Start:ptEnd,End:ptExtendBottom});var x=ptEnd.X-rulerWidth/2,x2=ptEnd.X+rulerWidth/2;}var textOffset=4*GetDevicePixelRatio();for(var i in this.ScaleRuler){var item=this.ScaleRuler[i];if(this.IsHScreen){var x=ptEnd.X-item.Value*rulerHeight;var price=this.Frame.GetYData(x,false);this.DrawLine({X:x,Y:y},{X:x,Y:y2});var text=price.toFixed(2)+' '+(item.Text?item.Text:item.Value.toFixed(3));this.Canvas.save();this.Canvas.translate(x,ptEnd.Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,textOffset,0);this.Canvas.restore();}else{var y=ptEnd.Y-item.Value*rulerHeight;var price=this.Frame.GetYData(y,false);this.DrawLine({X:x,Y:ToFixedPoint2(lineWidth,y)},{X:x2,Y:ToFixedPoint2(lineWidth,y)});var text=price.toFixed(2)+' '+(item.Text?item.Text:item.Value.toFixed(3));this.Canvas.fillText(text,x2+textOffset,y);}}};}//画图工具-波浪尺 2个点的
@@ -6083,12 +6097,12 @@ function ChartDrawWaveRuler2Point(){this.newMethod=IChartDrawPicture;//派生
6083
6097
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawWaveRuler2Point';this.PointCount=2;this.Font=14*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.PointRate=[510,517,511.4];this.LinePoint;this.CPoint;this.ScaleRuler=g_JSChartResource.ChartDrawWaveRuler2Point.ScaleRuler;this.RulerWidth=g_JSChartResource.ChartDrawWaveRuler2Point.RulerWidth;;//刻度尺长度
6084
6098
  this.RulerLineWidth=g_JSChartResource.ChartDrawWaveRuler2Point.RulerLineWidth;this.MaxScaleRuler=g_JSChartResource.ChartDrawWaveRuler2Point.MaxScaleRuler;//尺子最大的高度比
6085
6099
  this.Font=g_JSChartResource.ChartDrawWaveRuler2Point.MaxScaleRuler;this.IsHScreen=false;this.Super_SetOption=this.SetOption;//父类函数
6086
- this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.PointRate)this.PointRate=option.PointRate;}};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.IsHScreen=this.Frame.IsHScreen;this.CalculateLines(drawPoint);this.ClipFrame();this.SetLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}var points=[drawPoint[0],drawPoint[1],this.CPoint];this.DrawWaveRuler(points);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6100
+ this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.PointRate)this.PointRate=option.PointRate;}};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.IsHScreen=this.Frame.IsHScreen;this.CalculateLines(drawPoint);this.ClipFrame();this.SetLineWidth();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}var points=[drawPoint[0],drawPoint[1],this.CPoint];this.DrawWaveRuler(points);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6087
6101
  this.Canvas.restore();};this.CalculateLines=function(points){var firstLine={Start:{X:points[0].X,Y:points[0].Y},End:{X:points[1].X,Y:points[1].Y}};this.LinePoint.push(firstLine);var a=points[0].Y;var b=points[1].Y;var width=this.PointRate[1]-this.PointRate[0];var offset=this.PointRate[2]-this.PointRate[0];var c=a-(a-b)*offset/width;this.CPoint={X:points[1].X,Y:c};};this.DrawWaveRuler=function(points){var ptBottom=points[1];var ptStart=points[0];var ptEnd=points[2];var lineWidth=this.RulerLineWidth*GetDevicePixelRatio();this.Canvas.lineWidth=lineWidth;this.Canvas.textBaseline='middle';this.Canvas.textAlign='left';this.Canvas.fillStyle=this.LineColor;this.Canvas.font=this.Font;var rulerWidth=this.RulerWidth*GetDevicePixelRatio();//刻度线长度
6088
6102
  if(this.IsHScreen){var rulerHeight=ptStart.X-ptBottom.X;var ptExtendBottom={X:ptEnd.X-this.MaxScaleRuler*rulerHeight,Y:ptEnd.Y};this.DrawLine(ptEnd,ptExtendBottom);this.LinePoint.push({Start:ptEnd,End:ptExtendBottom});var y=ptEnd.Y-rulerWidth/2,y2=ptEnd.Y+rulerWidth/2;}else{var rulerHeight=ptStart.Y-ptBottom.Y;var ptExtendBottom={X:ToFixedPoint2(lineWidth,ptEnd.X),Y:ptEnd.Y-this.MaxScaleRuler*rulerHeight};this.DrawLine({X:ToFixedPoint2(lineWidth,ptEnd.X),Y:ptEnd.Y},ptExtendBottom);this.LinePoint.push({Start:ptEnd,End:ptExtendBottom});var x=ptEnd.X,x2=ptEnd.X+rulerWidth;}var textOffset=4*GetDevicePixelRatio();for(var i in this.ScaleRuler){var item=this.ScaleRuler[i];if(this.IsHScreen){var x=ptEnd.X-item.Value*rulerHeight;var price=this.Frame.GetYData(x,false);this.DrawLine({X:x,Y:y},{X:x,Y:y2});var text=price.toFixed(2)+' '+(item.Text?item.Text:item.Value.toFixed(3));this.Canvas.save();this.Canvas.translate(x,ptEnd.Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,textOffset,0);this.Canvas.restore();}else{var y=ptEnd.Y-item.Value*rulerHeight;var price=this.Frame.GetYData(y,false);this.DrawLine({X:x,Y:ToFixedPoint2(lineWidth,y)},{X:x2,Y:ToFixedPoint2(lineWidth,y)});var text=price.toFixed(2)+' '+(item.Text?item.Text:item.Value.toFixed(3));this.Canvas.fillText(text,x2+textOffset,y);}}};}//画图工具-箱型线 支持横屏
6089
6103
  function ChartDrawBox(){this.newMethod=IChartDrawPicture;//派生
6090
6104
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawBox';this.PointCount=2;this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.IsHScreen=false;this.AvPriceLineDash=[5*GetDevicePixelRatio(),5*GetDevicePixelRatio()];this.KLineBorder;this.PointToValue_Backup=this.PointToValue;this.PointToValue=function(){//拖拽完成 把点移动到线段头尾
6091
- this.Point[0]={X:this.KLineBorder.Left,Y:this.KLineBorder.Top};this.Point[1]={X:this.KLineBorder.Right,Y:this.KLineBorder.Bottom};this.PointToValue_Backup();};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.IsHScreen=this.Frame.IsHScreen;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];var kPoint=this.PointToKLine([ptStart,ptEnd]);JSConsole.Chart.Log('[ChartDrawBox::Draw] kPoint',kPoint);var kDataInfo=this.Calculate(kPoint);JSConsole.Chart.Log('[ChartDrawBox::Draw] kDataInfo',kDataInfo);var klineBorder=this.GetKLineBorder(drawPoint,kDataInfo);this.KLineBorder=klineBorder;this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.strokeRect(ToFixedRect(klineBorder.Left),ToFixedRect(klineBorder.Top),ToFixedRect(klineBorder.Right-klineBorder.Left),ToFixedRect(klineBorder.Bottom-klineBorder.Top));//均价
6105
+ this.Point[0]={X:this.KLineBorder.Left,Y:this.KLineBorder.Top};this.Point[1]={X:this.KLineBorder.Right,Y:this.KLineBorder.Bottom};this.PointToValue_Backup();};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.IsHScreen=this.Frame.IsHScreen;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];var kPoint=this.PointToKLine([ptStart,ptEnd]);JSConsole.Chart.Log('[ChartDrawBox::Draw] kPoint',kPoint);var kDataInfo=this.Calculate(kPoint);JSConsole.Chart.Log('[ChartDrawBox::Draw] kDataInfo',kDataInfo);var klineBorder=this.GetKLineBorder(drawPoint,kDataInfo);this.KLineBorder=klineBorder;this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.strokeRect(ToFixedRect(klineBorder.Left),ToFixedRect(klineBorder.Top),ToFixedRect(klineBorder.Right-klineBorder.Left),ToFixedRect(klineBorder.Bottom-klineBorder.Top));//均价
6092
6106
  var avPriceText;if(kDataInfo.Amount>0&&kDataInfo.Vol>0){var price=kDataInfo.Amount/kDataInfo.Vol;avPriceText='\u5747\u4EF7'+price.toFixed(2);this.Canvas.beginPath();if(this.IsHScreen){var x=this.Frame.GetYFromData(price,false);this.Canvas.moveTo(ToFixedPoint2(this.Canvas.lineWidth,x),klineBorder.Top);this.Canvas.lineTo(ToFixedPoint2(this.Canvas.lineWidth,x),klineBorder.Bottom);}else{var y=this.Frame.GetYFromData(price,false);this.Canvas.moveTo(klineBorder.Left,ToFixedPoint2(this.Canvas.lineWidth,y));this.Canvas.lineTo(klineBorder.Right,ToFixedPoint2(this.Canvas.lineWidth,y));}this.Canvas.setLineDash(this.AvPriceLineDash);this.Canvas.stroke();this.Canvas.setLineDash([]);}this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6093
6107
  //绘制信息
6094
6108
  this.Canvas.textBaseline='top';this.Canvas.textAlign='left';this.Canvas.font=this.Font;this.Canvas.fillStyle=this.LineColor;var textOffset=2*GetDevicePixelRatio();var text='K\u7EBF\u6570'+kDataInfo.Count;if(this.IsHScreen)this.DrawText(text,klineBorder.Right,klineBorder.Top,textOffset,textOffset);else this.DrawText(text,klineBorder.Left,klineBorder.Top,textOffset,textOffset);if(avPriceText){if(this.IsHScreen)this.DrawText(avPriceText,x,klineBorder.Top,textOffset,textOffset);//均价
@@ -6097,7 +6111,7 @@ else this.DrawText(avPriceText,klineBorder.Left,y,textOffset,textOffset);//均
6097
6111
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawTwoPointDemo';this.PointCount=2;this.Font=16*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.IsHScreen=false;this.PointInfo=[];//保存点及点对应K线的信息
6098
6112
  this.PointToValue_Backup=this.PointToValue;this.PointToValue=function(){this.OnFinish();this.PointToValue_Backup();};//移动或创建完成
6099
6113
  this.OnFinish=function(){for(var i in this.PointInfo){var item=this.PointInfo[i];if(!item||!item.Point||!IFrameSplitOperator.IsNumber(item.Point.Y2))continue;this.Point[i].Y=this.PointInfo[i].Point.Y2;//点Y轴坐标调整
6100
- }};this.Draw=function(){this.LinePoint=[];this.PointInfo=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.IsHScreen=this.Frame.IsHScreen;//this.CalculateLines(drawPoint);
6114
+ }};this.Draw=function(){this.LinePoint=[];this.PointInfo=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.IsHScreen=this.Frame.IsHScreen;//this.CalculateLines(drawPoint);
6101
6115
  this.ClipFrame();this.SetLineWidth();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.CalculatePointInfo(drawPoint);if(this.Status==10)//绘制完成
6102
6116
  {this.DrawEx();}else//绘制中只画连线
6103
6117
  {for(var i=1;i<drawPoint.length;++i){this.DrawLine(drawPoint[i-1],drawPoint[i]);}}this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
@@ -6127,7 +6141,7 @@ this.DrawLine({X:ptEnd.X,Y:y},{X:ptEnd.X+100,Y:y});//文字
6127
6141
  this.Canvas.fillText(price.toFixed(2),ptEnd.X-5,y);}this.Canvas.setLineDash([]);};}//画图工具-水平线段
6128
6142
  function ChartDrawHLineSegment(){this.newMethod=IChartDrawPicture;//派生
6129
6143
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawHLineSegment';this.PointCount=2;this.IsPointIn=this.IsPointIn_XYValue_Line;this.ChartBorder;this.PointToValue_Backup=this.PointToValue;this.PointToValue=function(){//拖拽完成 把点移动到线段头尾
6130
- if(this.Frame.IsHScreen){this.Point[1].X=this.Point[0].X;}else{this.Point[1].Y=this.Point[0].Y;}this.PointToValue_Backup();};this.GetXYCoordinate=function(){if(this.IsFrameMinSize())return null;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:true});return this.PointRange(drawPoint);};this.Draw=function(){if(!this.Frame)return;this.IsHScreen=this.Frame.IsHScreen;this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.ClipFrame();this.ChartBorder=this.Frame.ChartBorder;this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;var ptStart=drawPoint[0];var ptEnd=drawPoint[1];if(this.Status==10)//0=开始画 1=完成第1个点 2=完成第2个点 3=完成第3个点 10=完成 20=移动)
6144
+ if(this.Frame.IsHScreen){this.Point[1].X=this.Point[0].X;}else{this.Point[1].Y=this.Point[0].Y;}this.PointToValue_Backup();};this.GetXYCoordinate=function(){if(this.IsFrameMinSize())return null;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:true});return this.PointRange(drawPoint);};this.Draw=function(){if(!this.Frame)return;this.IsHScreen=this.Frame.IsHScreen;this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.ClipFrame();this.ChartBorder=this.Frame.ChartBorder;this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;var ptStart=drawPoint[0];var ptEnd=drawPoint[1];if(this.Status==10)//0=开始画 1=完成第1个点 2=完成第2个点 3=完成第3个点 10=完成 20=移动)
6131
6145
  {this.DrawLine(ptStart,ptEnd,false);}else{//var kPoint=this.PointToKLine([ptStart,ptEnd]);
6132
6146
  this.DrawVerticalLine(ptStart,ptEnd);}this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
6133
6147
  this.Canvas.restore();};this.DrawVerticalLine=function(ptStart,ptEnd){var data=this.Frame.Data;if(this.IsHScreen){var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var xValue=Math.round(this.Frame.GetXData(ptStart.Y,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var yStart=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);xValue=Math.round(this.Frame.GetXData(ptEnd.Y,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var yEnd=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);this.Canvas.beginPath();this.Canvas.moveTo(left,yStart);this.Canvas.lineTo(right,yStart);this.Canvas.moveTo(left,yEnd);this.Canvas.lineTo(right,yEnd);this.Canvas.stroke();this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,yStart);this.Canvas.lineTo(ptStart.X,yEnd);this.Canvas.stroke();}else{var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();var xValue=Math.round(this.Frame.GetXData(ptStart.X,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var xStart=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);xValue=Math.round(this.Frame.GetXData(ptEnd.X,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var xEnd=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);this.Canvas.beginPath();this.Canvas.moveTo(xStart,top);this.Canvas.lineTo(xStart,bottom);this.Canvas.moveTo(xEnd,top);this.Canvas.lineTo(xEnd,bottom);this.Canvas.stroke();this.Canvas.beginPath();this.Canvas.moveTo(xStart,ptStart.Y);this.Canvas.lineTo(xEnd,ptStart.Y);this.Canvas.stroke();}};}//画图工具-volume profile fixed range
@@ -6161,7 +6175,7 @@ this.AryNoteText=[{Text:"输入内容 ......"}];/*
6161
6175
  this.ArrowSize=g_JSChartResource.ChartDrawNote.ArrowSize;this.OnlyMoveXIndex=true;this.IsSupportMagnet=false;//内部变量
6162
6176
  this.PtButtom;this.PtTop;this.TextRect=null;//文字区域
6163
6177
  this.PtCenter;this.SetOption_Backup=this.SetOption;this.SetOption=function(option){this.SetOption_Backup(option);if(!option)return;if(option.Text)this.Text=option.Text;if(option.FontOption)this.SetFont(this.FontOption,option.FontOption);if(option.NoteFontOption)this.SetFont(this.NoteFontOption,option.NoteFontOption);if(IFrameSplitOperator.IsNumber(option.NoteWidth))this.NoteWidth=option.NoteWidth;if(option.NoteMargin){var item=option.NoteMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.NoteMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Top))this.NoteMargin.Top=item.Top;if(IFrameSplitOperator.IsNumber(item.Bottom))this.NoteMargin.Bottom=item.Bottom;if(IFrameSplitOperator.IsNumber(item.Right))this.NoteMargin.Right=item.Right;}if(option.NoteBGColor)this.NoteBGColor=option.NoteBGColor;if(option.NoteTextColor)this.NoteTextColor=option.NoteTextColor;if(option.NoteBorderColor)this.NoteBorderColor=option.NoteBorderColor;if(IFrameSplitOperator.IsNumber(option.LineSpace))this.LineSpace=option.LineSpace;if(IFrameSplitOperator.IsNumber(option.ArrowSize))this.ArrowSize=option.ArrowSize;if(IFrameSplitOperator.IsNonEmptyArray(option.AryNoteText))this.AryNoteText=this.CloneArrayText(option.AryNoteText);};//导出成存储格式
6164
- this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageData.Value=[];if(this.Value&&this.Value[0]){var item=this.Value[0];storageData.Value.push({XValue:item.XValue,YValue:item.YValue,DateTime:item.DateTime});}storageData.NoteFont=this.NoteFont;storageData.NoteWidth=this.NoteWidth;storageData.NoteBGColor=this.NoteBGColor;storageData.NoteTextColor=this.NoteTextColor;storageData.NoteBorderColor=this.NoteBorderColor;storageData.LineSpace=this.LineSpace;storageData.ArrowSize=this.ArrowSize;storageData.NoteMargin={Left:this.NoteMargin.Left,Top:this.NoteMargin.Right,Bottom:this.NoteMargin.Bottom,Right:this.NoteMargin.Right};storageData.AryNoteText=this.CloneArrayText(this.AryNoteText);return storageData;};this.ImportStorageData=function(storageData){if(storageData.NoteFont)this.NoteFont=storageData.NoteFont;if(IFrameSplitOperator.IsNumber(storageData.NoteWidth))this.NoteWidth=storageData.NoteWidth;if(storageData.NoteMargin){var item=storageData.NoteMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.NoteMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Top))this.NoteMargin.Top=item.Top;if(IFrameSplitOperator.IsNumber(item.Bottom))this.NoteMargin.Bottom=item.Bottom;if(IFrameSplitOperator.IsNumber(item.Right))this.NoteMargin.Right=item.Right;}if(storageData.NoteBGColor)this.NoteBGColor=storageData.NoteBGColor;if(storageData.NoteTextColor)this.NoteTextColor=storageData.NoteTextColor;this.NoteBorderColor=storageData.NoteBorderColor;if(IFrameSplitOperator.IsNumber(storageData.LineSpace))this.LineSpace=storageData.LineSpace;if(IFrameSplitOperator.IsNumber(storageData.ArrowSize))this.ArrowSize=storageData.ArrowSize;this.AryNoteText=this.CloneArrayText(storageData.AryNoteText);};this.Draw=function(){this.PtButtom=null;this.PtTop=null;this.TextRect=null;this.PtCenter=null;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=1)return;var font=this.GetTextFont();if(!font)return;this.ClipFrame();var isHScreen=this.Frame.IsHScreen;var pixel=GetDevicePixelRatio();this.Canvas.fillStyle=this.LineColor;this.Canvas.textAlign="center";this.Canvas.textBaseline="middle";this.Canvas.font=font;if(isHScreen){this.Canvas.translate(drawPoint[0].X,drawPoint[0].Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(this.Text,0,0);this.PtButtom={X:drawPoint[0].X,Y:drawPoint[0].Y+this.FontOption.Size*pixel/2+2};this.PtTop={X:drawPoint[0].X,Y:drawPoint[0].Y-this.FontOption.Size*pixel/2-2};this.PtCenter=drawPoint[0];var ptSelected={X:drawPoint[0].X-this.FontOption.Size*pixel/2-2,Y:drawPoint[0].Y};}else{this.Canvas.fillText(this.Text,drawPoint[0].X,drawPoint[0].Y);this.PtButtom={X:drawPoint[0].X,Y:drawPoint[0].Y+this.FontOption.Size*pixel/2+2};this.PtTop={X:drawPoint[0].X,Y:drawPoint[0].Y-this.FontOption.Size*pixel/2-2};var ptSelected={X:this.PtButtom.X,Y:this.PtButtom.Y};}var textWidth=this.Canvas.measureText(this.Text).width;this.TextRect={};this.TextRect.Left=drawPoint[0].X-textWidth/2;this.TextRect.Top=drawPoint[0].Y-this.FontOption.Size*pixel/2;this.TextRect.Width=textWidth;this.TextRect.Height=this.FontOption.Size*pixel;if(this.IsShowNoteText())this.DrawText();//this.Canvas.strokeRect(this.TextRect.Left,this.TextRect.Top,this.TextRect.Width,this.TextRect.Height);
6178
+ this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageData.Value=[];if(this.Value&&this.Value[0]){var item=this.Value[0];storageData.Value.push({XValue:item.XValue,YValue:item.YValue,DateTime:item.DateTime});}storageData.NoteFont=this.NoteFont;storageData.NoteWidth=this.NoteWidth;storageData.NoteBGColor=this.NoteBGColor;storageData.NoteTextColor=this.NoteTextColor;storageData.NoteBorderColor=this.NoteBorderColor;storageData.LineSpace=this.LineSpace;storageData.ArrowSize=this.ArrowSize;storageData.NoteMargin={Left:this.NoteMargin.Left,Top:this.NoteMargin.Right,Bottom:this.NoteMargin.Bottom,Right:this.NoteMargin.Right};storageData.AryNoteText=this.CloneArrayText(this.AryNoteText);return storageData;};this.ImportStorageData=function(storageData){if(storageData.NoteFont)this.NoteFont=storageData.NoteFont;if(IFrameSplitOperator.IsNumber(storageData.NoteWidth))this.NoteWidth=storageData.NoteWidth;if(storageData.NoteMargin){var item=storageData.NoteMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.NoteMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Top))this.NoteMargin.Top=item.Top;if(IFrameSplitOperator.IsNumber(item.Bottom))this.NoteMargin.Bottom=item.Bottom;if(IFrameSplitOperator.IsNumber(item.Right))this.NoteMargin.Right=item.Right;}if(storageData.NoteBGColor)this.NoteBGColor=storageData.NoteBGColor;if(storageData.NoteTextColor)this.NoteTextColor=storageData.NoteTextColor;this.NoteBorderColor=storageData.NoteBorderColor;if(IFrameSplitOperator.IsNumber(storageData.LineSpace))this.LineSpace=storageData.LineSpace;if(IFrameSplitOperator.IsNumber(storageData.ArrowSize))this.ArrowSize=storageData.ArrowSize;this.AryNoteText=this.CloneArrayText(storageData.AryNoteText);};this.Draw=function(){this.PtButtom=null;this.PtTop=null;this.TextRect=null;this.PtCenter=null;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=1)return;var font=this.GetTextFont();if(!font)return;this.ClipFrame();var isHScreen=this.Frame.IsHScreen;var pixel=GetDevicePixelRatio();this.Canvas.fillStyle=this.LineColor;this.Canvas.textAlign="center";this.Canvas.textBaseline="middle";this.Canvas.font=font;if(isHScreen){this.Canvas.translate(drawPoint[0].X,drawPoint[0].Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(this.Text,0,0);this.PtButtom={X:drawPoint[0].X,Y:drawPoint[0].Y+this.FontOption.Size*pixel/2+2};this.PtTop={X:drawPoint[0].X,Y:drawPoint[0].Y-this.FontOption.Size*pixel/2-2};this.PtCenter=drawPoint[0];var ptSelected={X:drawPoint[0].X-this.FontOption.Size*pixel/2-2,Y:drawPoint[0].Y};}else{this.Canvas.fillText(this.Text,drawPoint[0].X,drawPoint[0].Y);this.PtButtom={X:drawPoint[0].X,Y:drawPoint[0].Y+this.FontOption.Size*pixel/2+2};this.PtTop={X:drawPoint[0].X,Y:drawPoint[0].Y-this.FontOption.Size*pixel/2-2};var ptSelected={X:this.PtButtom.X,Y:this.PtButtom.Y};}var textWidth=this.Canvas.measureText(this.Text).width;this.TextRect={};this.TextRect.Left=drawPoint[0].X-textWidth/2;this.TextRect.Top=drawPoint[0].Y-this.FontOption.Size*pixel/2;this.TextRect.Width=textWidth;this.TextRect.Height=this.FontOption.Size*pixel;if(this.IsShowNoteText())this.DrawText();//this.Canvas.strokeRect(this.TextRect.Left,this.TextRect.Top,this.TextRect.Width,this.TextRect.Height);
6165
6179
  this.Canvas.restore();this.DrawPoint([ptSelected]);//画点
6166
6180
  };this.DrawText=function(){this.Canvas.font=this.GetFontString(this.NoteFontOption);var height=0;var lineHeight=this.Canvas.measureText("擎").width;var border=this.Frame.GetBorder();var pixel=GetDevicePixelRatio();var isHScreen=this.Frame.IsHScreen;var width=this.NoteWidth;var aryText=[];if(IFrameSplitOperator.IsNonEmptyArray(this.AryNoteText)){for(var i=0;i<this.AryNoteText.length;++i){var item=this.AryNoteText[i];if(!item)continue;if(height>0)height+=this.LineSpace;if(item.Text){var value=this.GetMultiLineText(item.Text,width);if(value&&IFrameSplitOperator.IsNonEmptyArray(value.AryText)){for(var j=0;j<value.AryText.length;++j){if(j>0)height+=this.LineSpace;var textItem=value.AryText[j];aryText.push(textItem);height+=lineHeight;}}}else{aryText.push({Text:""});height+=lineHeight;}}}else{height=lineHeight;}var rtBG={Width:width+this.NoteMargin.Left+this.NoteMargin.Right,Height:height+this.NoteMargin.Top+this.NoteMargin.Bottom,ArrowType:0};if(isHScreen){rtBG.Left=this.PtTop.X-rtBG.Width/2-this.PtCenter.X;rtBG.Top=this.PtTop.Y-rtBG.Height-this.ArrowSize-this.PtCenter.Y;rtBG.Right=rtBG.Left+rtBG.Width;rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Arrow={X:this.PtTop.X-this.PtCenter.X,Y:this.PtTop.Y-this.PtCenter.Y};//Type 0=向下箭头 1=向上箭头
6167
6181
  if(this.PtCenter.X+height+this.FontOption.Size*pixel/2+2+this.ArrowSize>border.RightEx){rtBG.Top=this.PtButtom.Y+this.ArrowSize+this.PointRadius*pixel-this.PtCenter.Y;rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Arrow.X=this.PtButtom.X-this.PtCenter.X;rtBG.Arrow.Y=this.PtButtom.Y-this.PtCenter.Y;rtBG.ArrowType=1;}}else{rtBG.Left=this.PtTop.X-rtBG.Width/2;rtBG.Top=this.PtTop.Y-rtBG.Height-this.ArrowSize;rtBG.Right=rtBG.Left+rtBG.Width;rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Arrow={X:this.PtTop.X,Y:this.PtTop.Y};//Type 0=向下箭头 1=向上箭头
@@ -6172,18 +6186,18 @@ this.GetTextFont=function(){if(!this.FontOption||!this.FontOption.Family||this.F
6172
6186
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawAnchoredText';this.PointCount=1;this.AryText=[{Text:"输入内容"}];this.TextColor=g_JSChartResource.ChartDrawAnchoredText.TextColor;this.FontOption={Family:g_JSChartResource.ChartDrawAnchoredText.FontOption.Family,Size:g_JSChartResource.ChartDrawAnchoredText.FontOption.Size,Weight:g_JSChartResource.ChartDrawAnchoredText.FontOption.Weight,Style:g_JSChartResource.ChartDrawAnchoredText.FontOption.Style};this.TextMaxWidth=g_JSChartResource.ChartDrawAnchoredText.TextMaxWidth;//文本最大宽度
6173
6187
  this.LineSpace=g_JSChartResource.ChartDrawAnchoredText.LineSpace;this.BGColor=g_JSChartResource.ChartDrawAnchoredText.BGColor;this.BorderColor=g_JSChartResource.ChartDrawAnchoredText.BorderColor;this.TextMargin={Left:g_JSChartResource.ChartDrawAnchoredText.TextMargin.Left,Top:g_JSChartResource.ChartDrawAnchoredText.TextMargin.Top,Bottom:g_JSChartResource.ChartDrawAnchoredText.TextMargin.Bottom,Right:g_JSChartResource.ChartDrawAnchoredText.TextMargin.Right};//内部变量
6174
6188
  this.TextRect;this.SetOption=function(option){if(!option)return;if(option.TextColor)this.TextColor=option.TextColor;if(option.Text)this.Text=option.Text;if(option.FontOption)this.SetFont(this.FontOption,option.FontOption);if(IFrameSplitOperator.IsNumber(option.TextMaxWidth))this.TextMaxWidth=option.TextMaxWidth;if(IFrameSplitOperator.IsNonEmptyArray(option.AryText))this.AryText=this.CloneArrayText(option.AryText);};//导出成存储格式
6175
- this.ExportStorageData=function(){var storageData=this.ExportBaseData();var item=this.Value[0];storageData.Value=[{XValue:item.XValue,YValue:item.YValue}];storageData.FontOption={};this.SetFont(storageData.FontOption,this.FontOption);storageData.BGColor=this.BGColor;storageData.TextColor=this.TextColor;storageData.BorderColor=this.BorderColor;storageData.LineSpace=this.LineSpace;storageData.TextMaxWidth=this.TextMaxWidth;storageData.TextMargin={Left:this.TextMargin.Left,Top:this.TextMargin.Right,Bottom:this.TextMargin.Bottom,Right:this.TextMargin.Right};storageData.AryText=this.CloneArrayText(this.AryText);return storageData;};this.ImportStorageData=function(storageData){if(storageData.TextMargin){var item=storageData.TextMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.TextMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Top))this.TextMargin.Top=item.Top;if(IFrameSplitOperator.IsNumber(item.Bottom))this.TextMargin.Bottom=item.Bottom;if(IFrameSplitOperator.IsNumber(item.Right))this.TextMargin.Right=item.Right;}if(storageData.TextColor)this.TextColor=storageData.TextColor;this.BGColor=storageData.BGColor;this.BorderColor=storageData.BorderColor;this.TextMaxWidth=storageData.TextMaxWidth;if(IFrameSplitOperator.IsNumber(storageData.LineSpace))this.LineSpace=storageData.LineSpace;this.AryText=this.CloneArrayText(storageData.AryText);};this.Draw=function(){this.TextRect=null;if(this.Status<2)return;if(this.Point.length!=1||!this.Frame)return;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=1)return;this.ClipFrame();this.DrawMultiLineText(drawPoint[0]);this.Canvas.restore();};this.ValueToPoint=function(){if(!this.Frame)return false;var item=this.Value[0];var pt=this.XYValueToPoint(item.XValue,item.YValue);this.Point=[pt];};this.PointToValue=function(){if(!this.Frame)return false;var border=this.Frame.GetBorder();var isHScreen=this.Frame.IsHScreen;if(isHScreen){var left=border.LeftEx;var top=border.Top;var width=border.RightEx-left;var height=border.Bottom-top;var pt=this.Point[0];var yValue=(pt.X-left)/width;var xValue=(pt.Y-top)/height;this.Value[0]={XValue:xValue,YValue:yValue};}else{var left=border.Left;var top=border.TopEx;var width=border.Right-left;var height=border.BottomEx-top;var pt=this.Point[0];var xValue=(pt.X-left)/width;var yValue=(pt.Y-top)/height;this.Value[0]={XValue:xValue,YValue:yValue};}};this.XYValueToPoint=function(xValue,yValue){if(!this.Frame)return null;var isHScreen=this.Frame.IsHScreen;var border=this.Frame.GetBorder();if(isHScreen){var left=border.LeftEx;var top=border.Top;var width=border.RightEx-left;var height=border.Bottom-top;var x=yValue*width+left;var y=xValue*height+top;return{X:x,Y:y};}else{var left=border.Left;var top=border.TopEx;var width=border.Right-left;var height=border.BottomEx-top;var x=xValue*width+left;var y=yValue*height+top;return{X:x,Y:y};}};this.CalculateDrawPoint=function(option){if(this.Status<2)return null;if(this.Point.length!=1||!this.Frame)return null;var drawPoint=[];if(this.Status==10){var item=this.Value[0];var pt=this.XYValueToPoint(item.XValue,item.YValue);drawPoint.push(pt);}else{drawPoint=this.Point;}return drawPoint;};this.DrawMultiLineText=function(pt){if(!IFrameSplitOperator.IsNonEmptyArray(this.AryText))return;var height=0;this.Canvas.font=this.GetFontString(this.FontOption);var lineHeight=this.Canvas.measureText("擎").width;var border=this.Frame.GetBorder();var pixel=GetDevicePixelRatio();var isHScreen=this.Frame.IsHScreen;var ptBottom={X:pt.X,Y:pt.Y};if(isHScreen){this.Canvas.translate(ptBottom.X,ptBottom.Y);this.Canvas.rotate(90*Math.PI/180);ptBottom.X=0;ptBottom.Y=0;}var aryText=[];var maxTextWidth=0;for(var i=0;i<this.AryText.length;++i)//计算输出高度和宽度
6189
+ this.ExportStorageData=function(){var storageData=this.ExportBaseData();var item=this.Value[0];storageData.Value=[{XValue:item.XValue,YValue:item.YValue}];storageData.FontOption={};this.SetFont(storageData.FontOption,this.FontOption);storageData.BGColor=this.BGColor;storageData.TextColor=this.TextColor;storageData.BorderColor=this.BorderColor;storageData.LineSpace=this.LineSpace;storageData.TextMaxWidth=this.TextMaxWidth;storageData.TextMargin={Left:this.TextMargin.Left,Top:this.TextMargin.Right,Bottom:this.TextMargin.Bottom,Right:this.TextMargin.Right};storageData.AryText=this.CloneArrayText(this.AryText);return storageData;};this.ImportStorageData=function(storageData){if(storageData.TextMargin){var item=storageData.TextMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.TextMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Top))this.TextMargin.Top=item.Top;if(IFrameSplitOperator.IsNumber(item.Bottom))this.TextMargin.Bottom=item.Bottom;if(IFrameSplitOperator.IsNumber(item.Right))this.TextMargin.Right=item.Right;}if(storageData.TextColor)this.TextColor=storageData.TextColor;this.BGColor=storageData.BGColor;this.BorderColor=storageData.BorderColor;this.TextMaxWidth=storageData.TextMaxWidth;if(IFrameSplitOperator.IsNumber(storageData.LineSpace))this.LineSpace=storageData.LineSpace;this.AryText=this.CloneArrayText(storageData.AryText);};this.Draw=function(){this.TextRect=null;if(this.Status<2)return;if(this.Point.length!=1||!this.Frame)return;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=1)return;this.ClipFrame();this.DrawMultiLineText(drawPoint[0]);this.Canvas.restore();};this.ValueToPoint=function(){if(!this.Frame)return false;var item=this.Value[0];var pt=this.XYValueToPoint(item.XValue,item.YValue);this.Point=[pt];};this.PointToValue=function(){if(!this.Frame)return false;var border=this.Frame.GetBorder();var isHScreen=this.Frame.IsHScreen;if(isHScreen){var left=border.LeftEx;var top=border.Top;var width=border.RightEx-left;var height=border.Bottom-top;var pt=this.Point[0];var yValue=(pt.X-left)/width;var xValue=(pt.Y-top)/height;this.Value[0]={XValue:xValue,YValue:yValue};}else{var left=border.Left;var top=border.TopEx;var width=border.Right-left;var height=border.BottomEx-top;var pt=this.Point[0];var xValue=(pt.X-left)/width;var yValue=(pt.Y-top)/height;this.Value[0]={XValue:xValue,YValue:yValue};}};this.XYValueToPoint=function(xValue,yValue){if(!this.Frame)return null;var isHScreen=this.Frame.IsHScreen;var border=this.Frame.GetBorder();if(isHScreen){var left=border.LeftEx;var top=border.Top;var width=border.RightEx-left;var height=border.Bottom-top;var x=yValue*width+left;var y=xValue*height+top;return{X:x,Y:y};}else{var left=border.Left;var top=border.TopEx;var width=border.Right-left;var height=border.BottomEx-top;var x=xValue*width+left;var y=yValue*height+top;return{X:x,Y:y};}};this.CalculateDrawPoint=function(option){if(this.Status<2)return null;if(this.Point.length!=1||!this.Frame)return null;var drawPoint=[];if(this.Status==10){var item=this.Value[0];var pt=this.XYValueToPoint(item.XValue,item.YValue);drawPoint.push(pt);}else{drawPoint=this.Point;}return drawPoint;};this.DrawMultiLineText=function(pt){if(!IFrameSplitOperator.IsNonEmptyArray(this.AryText))return;var height=0;this.Canvas.font=this.GetFontString(this.FontOption);var lineHeight=this.Canvas.measureText("擎").width;var border=this.Frame.GetBorder();var pixel=GetDevicePixelRatio();var isHScreen=this.Frame.IsHScreen;var ptBottom={X:pt.X,Y:pt.Y};if(isHScreen){this.Canvas.translate(ptBottom.X,ptBottom.Y);this.Canvas.rotate(90*Math.PI/180);ptBottom.X=0;ptBottom.Y=0;}var aryText=[];var maxTextWidth=0;for(var i=0;i<this.AryText.length;++i)//计算输出高度和宽度
6176
6190
  {var item=this.AryText[i];if(!item)continue;if(height>0)height+=this.LineSpace;if(this.TextMaxWidth>50&&item.Text)//限制宽度
6177
6191
  {var value=this.GetMultiLineText(item.Text,this.TextMaxWidth);if(value&&IFrameSplitOperator.IsNonEmptyArray(value.AryText)){for(var j=0;j<value.AryText.length;++j){if(j>0)height+=this.LineSpace;var textItem=value.AryText[j];aryText.push(textItem);height+=lineHeight;}}}else{if(item.Text){var textWidth=this.Canvas.measureText(item.Text).width+2;if(maxTextWidth<textWidth)maxTextWidth=textWidth;}aryText.push({Text:item.Text});height+=lineHeight;}}if(this.TextMaxWidth>50)maxTextWidth=this.TextMaxWidth;var rtBG={Left:ptBottom.X,Bottom:ptBottom.Y,Height:height+this.TextMargin.Top+this.TextMargin.Bottom,Width:maxTextWidth+this.TextMargin.Left+this.TextMargin.Right};rtBG.Top=rtBG.Bottom-rtBG.Height;rtBG.Right=rtBG.Left+rtBG.Width;this.DrawBG(rtBG);this.Canvas.fillStyle=this.TextColor;this.Canvas.textAlign="left";this.Canvas.textBaseline="top";var xText=rtBG.Left+this.TextMargin.Left;var yText=rtBG.Top+this.TextMargin.Top;for(var i=0;i<aryText.length;++i){var item=aryText[i];if(!item)continue;if(item.Text){this.Canvas.fillText(item.Text,xText,yText);yText+=lineHeight;}else{yText+=lineHeight;}yText+=this.LineSpace;}if(isHScreen){rtBG.Left=pt.X;rtBG.Top=pt.Y;rtBG.Width=height+this.TextMargin.Top+this.TextMargin.Bottom;rtBG.Height=maxTextWidth+this.TextMargin.Left+this.TextMargin.Right;rtBG.Right=rtBG.Left+rtBG.Width;rtBG.Bottom=rtBG.Top+rtBG.Height;}this.TextRect=rtBG;var ptSelected={X:rtBG.Left+rtBG.Width/2,Y:rtBG.Bottom};this.DrawPoint([ptSelected]);//画点
6178
6192
  };this.DrawBG=function(rtBG){if(!this.BGColor&&!this.BorderColor)return;var path=new Path2D();path.rect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);if(this.BGColor){this.Canvas.fillStyle=this.BGColor;this.Canvas.fill(path);}if(this.BorderColor){this.Canvas.strokeStyle=this.BorderColor;this.Canvas.stroke(path);}};this.IsPointIn=function(x,y){if(!this.Frame||this.Status!=10)return-1;if(!this.TextRect)return-1;var rect=this.TextRect;if(x>rect.Left&&x<rect.Right&&y>rect.Top&&y<rect.Bottom)return 100;return-1;};this.GetCursorType=function(ptIndex){if(ptIndex==100)return"pointer";return null;};}function ChartDrawPriceLabel(){this.newMethod=IChartDrawPicture;//派生
6179
6193
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPriceLabel';this.PointCount=1;this.OnlyMoveXIndex=true;this.TextColor=g_JSChartResource.ChartDrawPriceLabel.TextColor;this.FontOption={Family:g_JSChartResource.ChartDrawPriceLabel.FontOption.Family,Size:g_JSChartResource.ChartDrawPriceLabel.FontOption.Size,Weight:g_JSChartResource.ChartDrawPriceLabel.FontOption.Weight,Style:g_JSChartResource.ChartDrawPriceLabel.FontOption.Style};this.BGColor=g_JSChartResource.ChartDrawPriceLabel.BGColor;this.BorderColor=g_JSChartResource.ChartDrawPriceLabel.BorderColor;this.LabelOffset={X:10,Y:20};this.TextMargin={Left:g_JSChartResource.ChartDrawPriceLabel.TextMargin.Left,Top:g_JSChartResource.ChartDrawPriceLabel.TextMargin.Top,Bottom:g_JSChartResource.ChartDrawPriceLabel.TextMargin.Bottom,Right:g_JSChartResource.ChartDrawPriceLabel.TextMargin.Right};//内部变量
6180
6194
  this.TextRect;this.SetOption=function(option){if(!option)return;if(option.TextColor)this.TextColor=option.TextColor;if(option.BGColor)this.BGColor=option.BGColor;if(option.BorderColor)this.BorderColor=option.BorderColor;if(option.FontOption)this.SetFont(this.FontOption,option.FontOption);if(option.LabelOffset){var item=option.LabelOffset;if(IFrameSplitOperator.IsNumber(item.X))this.LabelOffset.X=item.X;if(IFrameSplitOperator.IsNumber(item.Y))this.LabelOffset.Y=item.Y;}};//导出成存储格式
6181
- this.ExportStorageData=function(){var storageData=this.ExportBaseData();var item=this.Value[0];storageData.Value=[{XValue:item.XValue,YValue:item.YValue}];storageData.BGColor=this.BGColor;storageData.TextColor=this.TextColor;storageData.BorderColor=this.BorderColor;storageData.TextMargin={Left:this.TextMargin.Left,Top:this.TextMargin.Right,Bottom:this.TextMargin.Bottom,Right:this.TextMargin.Right};return storageData;};this.ImportStorageData=function(storageData){if(storageData.TextMargin){var item=storageData.TextMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.TextMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Top))this.TextMargin.Top=item.Top;if(IFrameSplitOperator.IsNumber(item.Bottom))this.TextMargin.Bottom=item.Bottom;if(IFrameSplitOperator.IsNumber(item.Right))this.TextMargin.Right=item.Right;}if(storageData.TextColor)this.TextColor=storageData.TextColor;this.BGColor=storageData.BGColor;this.BorderColor=storageData.BorderColor;};this.Draw=function(){this.TextRect=null;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=1)return;var pt=drawPoint[0];this.ClipFrame();this.DrawPriceLabel(pt);this.Canvas.restore();this.DrawPoint([pt]);//画点
6195
+ this.ExportStorageData=function(){var storageData=this.ExportBaseData();var item=this.Value[0];storageData.Value=[{XValue:item.XValue,YValue:item.YValue}];storageData.BGColor=this.BGColor;storageData.TextColor=this.TextColor;storageData.BorderColor=this.BorderColor;storageData.TextMargin={Left:this.TextMargin.Left,Top:this.TextMargin.Right,Bottom:this.TextMargin.Bottom,Right:this.TextMargin.Right};return storageData;};this.ImportStorageData=function(storageData){if(storageData.TextMargin){var item=storageData.TextMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.TextMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Top))this.TextMargin.Top=item.Top;if(IFrameSplitOperator.IsNumber(item.Bottom))this.TextMargin.Bottom=item.Bottom;if(IFrameSplitOperator.IsNumber(item.Right))this.TextMargin.Right=item.Right;}if(storageData.TextColor)this.TextColor=storageData.TextColor;this.BGColor=storageData.BGColor;this.BorderColor=storageData.BorderColor;};this.Draw=function(){this.TextRect=null;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=1)return;var pt=drawPoint[0];this.ClipFrame();this.DrawPriceLabel(pt);this.Canvas.restore();this.DrawPoint([pt]);//画点
6182
6196
  };this.DrawPriceLabel=function(pt){var font=this.GetFontString(this.FontOption);if(!font)return;var isHScreen=this.Frame.IsHScreen;var pixelRatio=GetDevicePixelRatio();var ptBottom,price;var yOffset=0;if(isHScreen){this.Canvas.translate(pt.X,pt.Y);this.Canvas.rotate(90*Math.PI/180);ptBottom={X:0,Y:0};price=this.Frame.GetYData(pt.X,false);yOffset=1;}else{ptBottom={X:pt.X,Y:pt.Y};price=this.Frame.GetYData(pt.Y,false);}var floatPrecision=2;if(this.Symbol&&this.Frame.Identify==0)floatPrecision=GetfloatPrecision(this.Symbol);var text=price.toFixed(floatPrecision);this.Canvas.font=font;var left=ptBottom.X+this.LabelOffset.X;var bottom=ptBottom.Y-this.LabelOffset.Y;var textHeight=this.Canvas.measureText("擎").width;var textWidth=this.Canvas.measureText(text).width;var rtBG={Left:left,Bottom:bottom,Width:textWidth+this.TextMargin.Left+this.TextMargin.Right,Height:textHeight+this.TextMargin.Top+this.TextMargin.Bottom};rtBG.Top=rtBG.Bottom-rtBG.Height;rtBG.Right=rtBG.Left+rtBG.Width;this.DrawBG(rtBG,ptBottom);var xText=rtBG.Left+rtBG.Width/2;var yText=rtBG.Top+rtBG.Height/2;this.Canvas.textAlign="center";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,xText,yText+yOffset);if(isHScreen){this.TextRect={Left:pt.X+this.LabelOffset.Y,Top:pt.Y+this.LabelOffset.X,Width:textHeight+this.TextMargin.Top+this.TextMargin.Bottom,Height:textWidth+this.TextMargin.Left+this.TextMargin.Right};this.TextRect.Right=this.TextRect.Left+this.TextRect.Width;this.TextRect.Bottom=this.TextRect.Top+this.TextRect.Height;}else{this.TextRect=rtBG;}};this.DrawBG=function(rtBG,pt){var pixelRatio=GetDevicePixelRatio();var path=new Path2D();path.moveTo(rtBG.Left,rtBG.Bottom);path.lineTo(rtBG.Left,rtBG.Top);path.lineTo(rtBG.Right,rtBG.Top);path.lineTo(rtBG.Right,rtBG.Bottom);var x=rtBG.Left+15*pixelRatio;path.lineTo(x,rtBG.Bottom);path.lineTo(pt.X,pt.Y);x=rtBG.Left+5*pixelRatio;path.lineTo(x,rtBG.Bottom);path.closePath();if(this.BGColor){this.Canvas.fillStyle=this.BGColor;this.Canvas.fill(path);}if(this.BorderColor){this.Canvas.strokeStyle=this.BorderColor;this.Canvas.stroke(path);}//绘制一个点
6183
6197
  if(this.BGColor){this.Canvas.beginPath();this.Canvas.arc(pt.X,pt.Y,2*pixelRatio,0,360,false);this.Canvas.fillStyle=this.BGColor;this.Canvas.fill();}};this.IsPointIn=function(x,y){if(!this.Frame||this.Status!=10)return-1;if(!this.TextRect)return-1;var rect=this.TextRect;if(x>rect.Left&&x<rect.Right&&y>rect.Top&&y<rect.Bottom)return 100;return-1;};this.GetCursorType=function(ptIndex){if(ptIndex==100)return"pointer";return null;};}function ChartDrawPriceNote(){this.newMethod=IChartDrawPicture;//派生
6184
6198
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPriceNote';this.PointCount=2;this.GetXYCoordinate=this.GetXYCoordinate_default;this.IsPointIn=this.IsPointIn_XYValue_Line;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.FontOption={Family:g_JSChartResource.ChartDrawPriceNote.FontOption.Family,Size:g_JSChartResource.ChartDrawPriceNote.FontOption.Size,Weight:g_JSChartResource.ChartDrawPriceNote.FontOption.Weight,Style:g_JSChartResource.ChartDrawPriceNote.FontOption.Style};this.TextMargin={Left:g_JSChartResource.ChartDrawPriceNote.TextMargin.Left,Top:g_JSChartResource.ChartDrawPriceNote.TextMargin.Top,Bottom:g_JSChartResource.ChartDrawPriceNote.TextMargin.Bottom,Right:g_JSChartResource.ChartDrawPriceNote.TextMargin.Right};this.BGColor=g_JSChartResource.ChartDrawPriceNote.BGColor;this.BorderColor=g_JSChartResource.ChartDrawPriceNote.BorderColor;this.TextColor=g_JSChartResource.ChartDrawPriceNote.TextColor;this.BorderRoundRadius=3;//内部变量
6185
6199
  this.TextRect;this.SetOption=function(option){if(!option)return;if(option.TextColor)this.TextColor=option.TextColor;if(option.BGColor)this.BGColor=option.BGColor;if(option.BorderColor)this.BorderColor=option.BorderColor;if(option.FontOption)this.SetFont(this.FontOption,option.FontOption);};//导出成存储格式
6186
- this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageData.Value=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];storageData.Value.push({XValue:item.XValue,YValue:item.YValue});}storageData.BGColor=this.BGColor;storageData.TextColor=this.TextColor;storageData.BorderColor=this.BorderColor;storageData.TextMargin={Left:this.TextMargin.Left,Top:this.TextMargin.Right,Bottom:this.TextMargin.Bottom,Right:this.TextMargin.Right};return storageData;};this.ImportStorageData=function(storageData){if(storageData.TextMargin){var item=storageData.TextMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.TextMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Top))this.TextMargin.Top=item.Top;if(IFrameSplitOperator.IsNumber(item.Bottom))this.TextMargin.Bottom=item.Bottom;if(IFrameSplitOperator.IsNumber(item.Right))this.TextMargin.Right=item.Right;}if(storageData.TextColor)this.TextColor=storageData.TextColor;this.BGColor=storageData.BGColor;this.BorderColor=storageData.BorderColor;};this.Draw=function(){this.LinePoint=[];this.TextRect=null;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.LineWidth=1;this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();this.DrawPriceLabel(ptStart,ptEnd);var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
6200
+ this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageData.Value=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];storageData.Value.push({XValue:item.XValue,YValue:item.YValue});}storageData.BGColor=this.BGColor;storageData.TextColor=this.TextColor;storageData.BorderColor=this.BorderColor;storageData.TextMargin={Left:this.TextMargin.Left,Top:this.TextMargin.Right,Bottom:this.TextMargin.Bottom,Right:this.TextMargin.Right};return storageData;};this.ImportStorageData=function(storageData){if(storageData.TextMargin){var item=storageData.TextMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.TextMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Top))this.TextMargin.Top=item.Top;if(IFrameSplitOperator.IsNumber(item.Bottom))this.TextMargin.Bottom=item.Bottom;if(IFrameSplitOperator.IsNumber(item.Right))this.TextMargin.Right=item.Right;}if(storageData.TextColor)this.TextColor=storageData.TextColor;this.BGColor=storageData.BGColor;this.BorderColor=storageData.BorderColor;};this.Draw=function(){this.LinePoint=[];this.TextRect=null;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.LineWidth=1;this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.RestoreLineWidth();this.DrawPriceLabel(ptStart,ptEnd);var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
6187
6201
  this.Canvas.restore();};this.DrawPriceLabel=function(ptStart,ptEnd){var font=this.GetFontString(this.FontOption);if(!font)return;var floatPrecision=2;if(this.Symbol&&this.Frame.Identify==0)floatPrecision=GetfloatPrecision(this.Symbol);var pixelRatio=GetDevicePixelRatio();var ptPrice={X:ptEnd.X,Y:ptEnd.Y};var price=this.Frame.GetYData(ptStart.Y,false);var text=price.toFixed(floatPrecision);var textHeight=this.Canvas.measureText("擎").width;var textWidth=this.Canvas.measureText(text).width;var angle=this.CalculateAngle(ptStart.X,ptStart.Y,ptEnd.X,ptEnd.Y);if(angle>=0&&angle<=45||angle>=315&&angle<=360){var left=ptPrice.X;var bottom=ptPrice.Y;var rtBG={Left:left,Bottom:bottom,Width:textWidth+this.TextMargin.Left+this.TextMargin.Right,Height:textHeight+this.TextMargin.Top+this.TextMargin.Bottom};rtBG.Bottom=bottom+rtBG.Height/2;rtBG.Top=rtBG.Bottom-rtBG.Height;rtBG.Right=rtBG.Left+rtBG.Width;}else if(angle>45&&angle<=135){var left=ptPrice.X;var bottom=ptPrice.Y;var rtBG={Left:left,Bottom:bottom,Width:textWidth+this.TextMargin.Left+this.TextMargin.Right,Height:textHeight+this.TextMargin.Top+this.TextMargin.Bottom};rtBG.Left=left-rtBG.Width/2;rtBG.Top=rtBG.Bottom-rtBG.Height;rtBG.Right=rtBG.Left+rtBG.Width;}else if(angle>=135&&angle<=225){var left=ptPrice.X;var bottom=ptPrice.Y;var rtBG={Width:textWidth+this.TextMargin.Left+this.TextMargin.Right,Height:textHeight+this.TextMargin.Top+this.TextMargin.Bottom};rtBG.Bottom=bottom+rtBG.Height/2;rtBG.Top=rtBG.Bottom-rtBG.Height;rtBG.Right=left;rtBG.Left=rtBG.Right-rtBG.Width;}else if(angle>=225&&angle<=315){var left=ptPrice.X;var top=ptPrice.Y;var rtBG={Width:textWidth+this.TextMargin.Left+this.TextMargin.Right,Height:textHeight+this.TextMargin.Top+this.TextMargin.Bottom};rtBG.Top=top;rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Left=left-rtBG.Width/2;rtBG.Right=rtBG.Left-rtBG.Width;}else return;this.DrawBG(rtBG);this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=this.TextColor;var xText=rtBG.Left+this.TextMargin.Left;var yText=rtBG.Top+rtBG.Height/2;var yOffset=0;this.Canvas.fillText(text,xText,yText+yOffset);//绘制一个点
6188
6202
  if(this.BGColor){this.Canvas.beginPath();this.Canvas.arc(ptStart.X,ptStart.Y,2*pixelRatio,0,360,false);this.Canvas.fillStyle=this.BGColor;this.Canvas.fill();}this.TextRect=rtBG;};this.DrawBG=function(rtBG){if(!rtBG)return;var pixelRatio=GetDevicePixelRatio();var roundRadius=this.BorderRoundRadius*pixelRatio;var path=new Path2D();path.roundRect(ToFixedPoint(rtBG.Left),ToFixedPoint(rtBG.Top),ToFixedRect(rtBG.Width),ToFixedRect(rtBG.Height),[roundRadius]);if(this.BGColor){this.Canvas.fillStyle=this.BGColor;this.Canvas.fill(path);}if(this.BorderColor){this.Canvas.strokeStyle=this.BorderColor;this.Canvas.stroke(path);}};this.IsPointIn=function(x,y){if(!this.Frame||this.Status!=10)return-1;if(!this.TextRect)return-1;var rect=this.TextRect;if(x>rect.Left&&x<rect.Right&&y>rect.Top&&y<rect.Bottom)return 1;return this.IsPointIn_XYValue_Line(x,y);};}/////////////////////////////////////////////////////////////////////////////
6189
6203
  // 0=中心点 1=起始点(决定半径长度) 2=结束点(任意位置)
@@ -6201,7 +6215,7 @@ this.ValueToPoint_V2=function(aryValue){if(!IFrameSplitOperator.IsNonEmptyArray(
6201
6215
  {if(this.PointStatus==2&&this.LastPoint)//第3个点
6202
6216
  {drawPoint=this.CalculateAllPoint(this.Point[0],this.Point[1],this.LastPoint);}else{for(var i=0;i<this.Point.length&&i<2;++i){var item=this.Point[i];drawPoint.push({X:item.X,Y:item.Y});}this.MagnetXY(drawPoint);}}else if(this.Status==10){var data=this.Frame.Data;if(!data)return null;var showCount=this.Frame.XPointCount;var invaildX=0;//超出范围的x点个数
6203
6217
  var isHScreen=this.Frame.IsHScreen;for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var dataIndex=item.XValue-data.DataOffset;if(dataIndex<0||dataIndex>=showCount)++invaildX;var pt=new Point();if(isHScreen)//横屏X,Y对调
6204
- {pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);}drawPoint.push(pt);}}else if(this.Status==20){drawPoint=this.CalculateAllPoint(this.Point[0],this.Point[1],this.Point[2]);}return drawPoint;};this.Draw=function(){this.LinePoint=[];this.TextAngle=null;this.Radius=null;if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});if(!IFrameSplitOperator.IsNonEmptyArray(drawPoint))return;var points=drawPoint.slice(0);this.CalculateLines(points);this.ClipFrame();this.DrawArea(points);this.DrawLines(this.LinePoint);this.DrawPoint(points);//画点
6218
+ {pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);}drawPoint.push(pt);}}else if(this.Status==20){drawPoint=this.CalculateAllPoint(this.Point[0],this.Point[1],this.Point[2]);}return drawPoint;};this.Draw=function(){this.LinePoint=[];this.TextAngle=null;this.Radius=null;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});if(!IFrameSplitOperator.IsNonEmptyArray(drawPoint))return;var points=drawPoint.slice(0);this.CalculateLines(points);this.ClipFrame();this.DrawArea(points);this.DrawLines(this.LinePoint);this.DrawPoint(points);//画点
6205
6219
  this.DrawTitle(points);this.Canvas.restore();};this.DrawArea=function(aryPoint){if(aryPoint.length!=3)return;if(!this.AreaConfig||!IFrameSplitOperator.IsNonEmptyArray(this.AreaConfig.AryData))return;var ptCenter=aryPoint[0];var radius=this.CalculateHypotenuse(ptCenter,aryPoint[1]);//求半径
6206
6220
  var startAngle=this.CalculateAngle(ptCenter.X,ptCenter.Y,aryPoint[1].X,aryPoint[1].Y);var endAngle=this.CalculateAngle(ptCenter.X,ptCenter.Y,aryPoint[2].X,aryPoint[2].Y);var sectorAngle=startAngle-endAngle;if(sectorAngle<0)sectorAngle+=360;if(sectorAngle>180){var temp=startAngle;startAngle=endAngle;endAngle=temp;}var centerAngle=startAngle-(startAngle-endAngle)/2;if(startAngle-endAngle<0)centerAngle-=180;var preValue=null;for(var i=0;i<this.AreaConfig.AryData.length;++i){var item=this.AreaConfig.AryData[i];if(!item.Enable)continue;var value=radius*item.Value;//半径
6207
6221
  var lineColor=item.Color;var areaColor=IChartDrawPicture.ColorToRGBA(lineColor,this.AreaConfig.Opacity);var path=new Path2D();if(IFrameSplitOperator.IsNumber(preValue)){path.arc(ptCenter.X,ptCenter.Y,preValue,Math.PI/180*(360-startAngle),Math.PI/180*(360-endAngle));path.arc(ptCenter.X,ptCenter.Y,value,Math.PI/180*(360-endAngle),Math.PI/180*(360-startAngle),true);}else{path.moveTo(ptCenter.X,ptCenter.Y);path.arc(ptCenter.X,ptCenter.Y,value,Math.PI/180*(360-startAngle),Math.PI/180*(360-endAngle));}this.Canvas.fillStyle=areaColor;this.Canvas.fill(path);preValue=value;}for(var i=0;i<this.AreaConfig.AryData.length;++i){var item=this.AreaConfig.AryData[i];if(!item.Enable)continue;var value=radius*item.Value;//半径
@@ -6217,7 +6231,7 @@ var a=aryPoint[0].X-ptLast.X;var b=aryPoint[0].Y-ptLast.Y;var c=Math.sqrt(a*a+b*
6217
6231
  function ChartFibRetracement(){this.newMethod=IChartDrawPicture;//派生
6218
6232
  this.newMethod();delete this.newMethod;this.ClassName='ChartFibRetracement';this.PointCount=2;this.Font=12*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.PointToValue_Default=this.PointToValue;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.LineDash=[6,3];this.LineWidth=1;this.EnableBGColor=true;this.ExtendLine={Left:false,Right:false};//延长线
6219
6233
  this.AreaConfig={AryData:[{Value:0,Color:"rgb(128,128,128)",Enable:true},{Value:0.236,Color:"rgb(242,52,69)",Enable:true},{Value:0.382,Color:"rgb(255,152,0)",Enable:true},{Value:0.5,Color:"rgb(76,175,80)",Enable:true},{Value:0.618,Color:"rgb(8,153,129)",Enable:true},{Value:0.786,Color:"rgb(0,188,212)",Enable:true},{Value:1,Color:"rgb(120,123,134)",Enable:true},{Value:1.618,Color:"rgb(41,98,255)",Enable:true},{Value:2.618,Color:"rgb(242,54,69)",Enable:false}],Opacity:0.3};this.SetOption=function(option){if(!option)return;if(option.Font)this.Font=option.Font;if(option.LineWidth)this.LineWidth=option.LineWidth;if(option.LineDash)this.LineDash=option.LineDash;if(IFrameSplitOperator.IsBool(option.EnableBGColor))this.EnableBGColor=option.EnableBGColor;if(option.ExtendLine){var item=option.ExtendLine;if(IFrameSplitOperator.IsBool(item.Left))this.ExtendLine.Left=item.Left;if(IFrameSplitOperator.IsBool(item.Right))this.ExtendLine.Left=item.Right;}if(option.AreaConfig)this.AreaConfig=option.AreaConfig;};//导出成存储格式
6220
- this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageData.Value=[];for(var i=0;i<this.Value.length&&i<this.PointCount;++i){var item=this.Value[i];storageData.Value.push({XValue:item.XValue,YValue:item.YValue});}storageData.Font=this.Font;storageData.EnableBGColor=this.EnableBGColor;storageData.LineDash=this.LineDash;storageData.ExtendLine={Left:this.ExtendLine.Left,Right:this.ExtendLine.Right};storageData.AreaConfig=CloneData(this.AreaConfig);return storageData;};this.ImportStorageData=function(storageData){if(storageData.Font)this.Font=storageData.Font;if(storageData.LineDash)this.LineDash=storageData.LineDash;if(IFrameSplitOperator.IsBool(storageData.EnableBGColor))this.EnableBGColor=storageData.EnableBGColor;if(storageData.ExtendLine)this.ExtendLine=storageData.ExtendLine;if(storageData.AreaConfig)this.AreaConfig=storageData.AreaConfig;};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var bCheckXY=true;if(this.ExtendLine.Left||this.ExtendLine.Right)bCheckXY=false;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.setLineDash(this.LineDash);this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.Canvas.setLineDash([]);this.DrawBlock(ptStart,ptEnd);this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
6234
+ this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageData.Value=[];for(var i=0;i<this.Value.length&&i<this.PointCount;++i){var item=this.Value[i];storageData.Value.push({XValue:item.XValue,YValue:item.YValue});}storageData.Font=this.Font;storageData.EnableBGColor=this.EnableBGColor;storageData.LineDash=this.LineDash;storageData.ExtendLine={Left:this.ExtendLine.Left,Right:this.ExtendLine.Right};storageData.AreaConfig=CloneData(this.AreaConfig);return storageData;};this.ImportStorageData=function(storageData){if(storageData.Font)this.Font=storageData.Font;if(storageData.LineDash)this.LineDash=storageData.LineDash;if(IFrameSplitOperator.IsBool(storageData.EnableBGColor))this.EnableBGColor=storageData.EnableBGColor;if(storageData.ExtendLine)this.ExtendLine=storageData.ExtendLine;if(storageData.AreaConfig)this.AreaConfig=storageData.AreaConfig;};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var bCheckXY=true;if(this.ExtendLine.Left||this.ExtendLine.Right)bCheckXY=false;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.setLineDash(this.LineDash);this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.Canvas.setLineDash([]);this.DrawBlock(ptStart,ptEnd);this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
6221
6235
  this.Canvas.restore();};this.GetArrayAreaConfig=function(){var aryArea=[];for(var i=0;i<this.AreaConfig.AryData.length;++i){var item=this.AreaConfig.AryData[i];if(item.Enable)aryArea.push(item);}aryArea.sort(function(left,right){return right.Value-left.Value;});return aryArea;};this.DrawBlock=function(ptStart,ptEnd){var yTop=Math.min(ptStart.Y,ptEnd.Y);var yBottom=Math.max(ptStart.Y,ptEnd.Y);var xLeft=Math.min(ptStart.X,ptEnd.X);var xRight=Math.max(ptStart.X,ptEnd.X);var height=yBottom-yTop;//var baseValue=Math.min(this.Value[0].YValue, this.Value[1].YValue);
6222
6236
  //var diffValue=Math.abs(this.Value[0].YValue-this.Value[1].YValue); //差值
6223
6237
  if(this.ExtendLine.Right)xRight=this.Frame.ChartBorder.GetRight();if(this.ExtendLine.Left)xLeft=this.Frame.ChartBorder.GetLeft();var aryArea=this.GetArrayAreaConfig();var yPre=null;//上一个点
@@ -6225,7 +6239,7 @@ var clrArea=null;this.Canvas.font=this.Font;if(this.ExtendLine.Left)this.Canvas.
6225
6239
  yValue=this.Frame.GetYData(y,false);y=ToFixedPoint(y);if(this.EnableBGColor&&IFrameSplitOperator.IsNumber(yPre)){var rtBG={Left:xLeft,Right:xRight,Top:yPre,Bottom:y};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;this.Canvas.fillStyle=clrArea;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}this.Canvas.strokeStyle=item.Color;this.Canvas.beginPath();this.Canvas.moveTo(xLeft,y);this.Canvas.lineTo(xRight,y);this.Canvas.stroke();var line={Start:{X:xLeft,Y:y},End:{X:xRight,Y:y}};this.LinePoint.push(line);//文字
6226
6240
  var text=item.Value+' ('+yValue.toFixed(2)+')';this.Canvas.fillStyle=item.Color;if(this.ExtendLine.Left)this.Canvas.fillText(text,xLeft+2,y-2);else this.Canvas.fillText(text,xLeft-2,y-2);yPre=y;clrArea=IChartDrawPicture.ColorToRGBA(item.Color,this.AreaConfig.Opacity);}};}function ChartFibSpeedResistanceFan(){this.newMethod=IChartDrawPicture;//派生
6227
6241
  this.newMethod();delete this.newMethod;this.ClassName='ChartFibSpeedResistanceFan';this.PointCount=2;this.Font=12*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.PointToValue_Default=this.PointToValue;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.LineWidth=1;this.EnableBGColor=true;this.AreaConfig={AryYData:[{Value:0,Color:"rgb(128,128,128)",Enable:true},{Value:0.25,Color:"rgb(242,52,69)",Enable:true},{Value:0.382,Color:"rgb(255,152,0)",Enable:true},{Value:0.5,Color:"rgb(76,175,80)",Enable:true},{Value:0.618,Color:"rgb(8,153,129)",Enable:true},{Value:0.75,Color:"rgb(0,188,212)",Enable:true},{Value:1,Color:"rgb(120,123,134)",Enable:true}],AryXData:[{Value:0,Color:"rgb(128,128,128)",Enable:true},{Value:0.25,Color:"rgb(242,52,69)",Enable:true},{Value:0.382,Color:"rgb(255,152,0)",Enable:true},{Value:0.5,Color:"rgb(76,175,80)",Enable:true},{Value:0.618,Color:"rgb(8,153,129)",Enable:true},{Value:0.75,Color:"rgb(0,188,212)",Enable:true},{Value:1,Color:"rgb(120,123,134)",Enable:true}],Opacity:0.3};this.SetOption=function(option){if(!option)return;if(option.Font)this.Font=option.Font;if(option.LineWidth)this.LineWidth=option.LineWidth;if(IFrameSplitOperator.IsBool(option.EnableBGColor))this.EnableBGColor=option.EnableBGColor;if(option.AreaConfig)this.AreaConfig=option.AreaConfig;};//导出成存储格式
6228
- this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageData.Value=[];for(var i=0;i<this.Value.length&&i<this.PointCount;++i){var item=this.Value[i];storageData.Value.push({XValue:item.XValue,YValue:item.YValue});}storageData.Font=this.Font;storageData.EnableBGColor=this.EnableBGColor;storageData.AreaConfig=CloneData(this.AreaConfig);return storageData;};this.ImportStorageData=function(storageData){if(storageData.Font)this.Font=storageData.Font;if(IFrameSplitOperator.IsBool(storageData.EnableBGColor))this.EnableBGColor=storageData.EnableBGColor;if(storageData.AreaConfig)this.AreaConfig=storageData.AreaConfig;};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var bCheckXY=false;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.DrawBlock(ptEnd,ptStart);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6242
+ this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageData.Value=[];for(var i=0;i<this.Value.length&&i<this.PointCount;++i){var item=this.Value[i];storageData.Value.push({XValue:item.XValue,YValue:item.YValue});}storageData.Font=this.Font;storageData.EnableBGColor=this.EnableBGColor;storageData.AreaConfig=CloneData(this.AreaConfig);return storageData;};this.ImportStorageData=function(storageData){if(storageData.Font)this.Font=storageData.Font;if(IFrameSplitOperator.IsBool(storageData.EnableBGColor))this.EnableBGColor=storageData.EnableBGColor;if(storageData.AreaConfig)this.AreaConfig=storageData.AreaConfig;};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var bCheckXY=false;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.DrawBlock(ptEnd,ptStart);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6229
6243
  this.Canvas.restore();};//获取在第几象限
6230
6244
  this.GetQuadrant=function(ptStart,ptEnd){if(ptStart.X<ptEnd.X&&ptStart.Y>ptEnd.Y)return 1;else if(ptStart.X>ptEnd.X&&ptStart.Y>ptEnd.Y)return 2;else if(ptStart.X<ptEnd.X&&ptStart.Y<ptEnd.Y)return 4;else return 3;};this.DrawBlock=function(ptStart,ptEnd){var center=ptEnd;var xDiff=ptEnd.X-ptStart.X;var yDiff=ptEnd.Y-ptStart.Y;var quadrant=this.GetQuadrant(center,ptStart);//象限
6231
6245
  var aryYData=this.GetArrayAreaConfig(this.AreaConfig.AryYData);var ptPre=null;//上一个点
@@ -6234,11 +6248,11 @@ var text=''+item.Value;this.Canvas.fillStyle=item.Color;this.Canvas.fillText(tex
6234
6248
  {this.Canvas.beginPath();this.Canvas.moveTo(center.X,center.Y);this.Canvas.lineTo(ptPre.X,ptPre.Y);if(quadrant==1){if(ptPre.X<ptRightTop.X&&pt.X>=ptRightTop.X){this.Canvas.lineTo(ptRightTop.X,ptRightTop.Y);}}else if(quadrant==2){if(ptPre.X>ptLeftTop.X&&pt.X<=ptLeftTop.X){this.Canvas.lineTo(ptLeftTop.X,ptLeftTop.Y);}}else if(quadrant==3){if(ptPre.X>ptLeftBottom.X&&pt.X<=ptLeftBottom.X){this.Canvas.lineTo(ptLeftBottom.X,ptLeftBottom.Y);}}else if(quadrant==4){if(ptPre.X<ptRightBottom.X&&pt.X>=ptRightBottom.X){this.Canvas.lineTo(ptRightBottom.X,ptRightBottom.Y);}}this.Canvas.lineTo(pt.X,pt.Y);this.Canvas.closePath();this.Canvas.fillStyle=clrArea;this.Canvas.fill();}this.Canvas.strokeStyle=item.Color;this.Canvas.beginPath();this.Canvas.moveTo(center.X,center.Y);this.Canvas.lineTo(pt.X,pt.Y);this.Canvas.stroke();this.LinePoint.push({Start:center,End:pt});if(item.Value!=1){this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(x,center.Y);this.Canvas.lineTo(x,ptStart.Y);this.Canvas.stroke();}ptPre=pt;clrArea=IChartDrawPicture.ColorToRGBA(item.Color,this.AreaConfig.Opacity);//文字
6235
6249
  var text=''+item.Value;this.Canvas.fillStyle=item.Color;this.Canvas.fillText(text,x,center.Y+textOffset);}};this.GetArrayAreaConfig=function(aryData){var aryArea=[];for(var i=0;i<aryData.length;++i){var item=aryData[i];if(item.Enable)aryArea.push(item);}aryArea.sort(function(left,right){return right.Value-left.Value;});return aryArea;};}function ChartPriceRange(){this.newMethod=IChartDrawPicture;//派生
6236
6250
  this.newMethod();delete this.newMethod;this.ClassName='ChartPriceRange';this.PointCount=2;this.Font=12*GetDevicePixelRatio()+"px 微软雅黑";this.TextColor=this.LineColor;this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.PointToValue_Default=this.PointToValue;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.LineWidth=1;this.EnableBGColor=true;this.BGColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.15);this.ExtendLine={Left:false,Right:false};//延长线
6237
- this.Label={TextColor:"rgb(0,0,0)",BGColor:"rgb(211,211,211)",EnableBGColor:true,LeftMargin:5,RightMargin:5};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var bCheckXY=true;if(this.ExtendLine.Left||this.ExtendLine.Right)bCheckXY=false;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.DrawRange(ptStart,ptEnd);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6251
+ this.Label={TextColor:"rgb(0,0,0)",BGColor:"rgb(211,211,211)",EnableBGColor:true,LeftMargin:5,RightMargin:5};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var bCheckXY=true;if(this.ExtendLine.Left||this.ExtendLine.Right)bCheckXY=false;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.DrawRange(ptStart,ptEnd);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6238
6252
  this.Canvas.restore();};this.DrawRange=function(ptStart,ptEnd){var yTop=Math.min(ptStart.Y,ptEnd.Y);var yBottom=Math.max(ptStart.Y,ptEnd.Y);var xLeft=Math.min(ptStart.X,ptEnd.X);var xRight=Math.max(ptStart.X,ptEnd.X);var height=yBottom-yTop;var xCenter=ptStart.X+(ptEnd.X-ptStart.X)/2;if(this.ExtendLine.Right)xRight=this.Frame.ChartBorder.GetRight();if(this.ExtendLine.Left)xLeft=this.Frame.ChartBorder.GetLeft();if(this.EnableBGColor){var rtBG={Left:xLeft,Top:yTop,Right:xRight,Bottom:yBottom};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;this.Canvas.fillStyle=this.BGColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(xLeft,ToFixedPoint(yTop));this.Canvas.lineTo(xRight,ToFixedPoint(yTop));this.Canvas.moveTo(xLeft,ToFixedPoint(yBottom));this.Canvas.lineTo(xRight,ToFixedPoint(yBottom));this.Canvas.moveTo(ToFixedPoint(xCenter),ToFixedPoint(yTop));this.Canvas.lineTo(ToFixedPoint(xCenter),ToFixedPoint(yBottom));this.Canvas.stroke();this.LinePoint.push({Start:{X:xLeft,Y:yTop},End:{X:xRight,Y:yTop}});this.LinePoint.push({Start:{X:xLeft,Y:yBottom},End:{X:xRight,Y:yBottom}});this.LinePoint.push({Start:{X:xCenter,Y:yTop},End:{X:xCenter,Y:yBottom}});this.DrawArrow({X:ToFixedPoint(xCenter),Y:ptStart.Y},{X:ToFixedPoint(xCenter),Y:ptEnd.Y});//文字输出
6239
6253
  var startValue=this.Frame.GetYData(ptStart.Y,false);var endValue=this.Frame.GetYData(ptEnd.Y,false);var diffValue=endValue-startValue;var rate=diffValue/startValue*100;var text=diffValue.toFixed(2)+' ('+rate.toFixed(2)+'%)';this.Canvas.font=this.Font;var textHeight=this.GetFontHeight();var textWidth=this.Canvas.measureText(text).width+4+(this.Label.LeftMargin+this.Label.RightMargin);var rtTextBG={Left:xCenter-textWidth/2,Width:textWidth,Height:textHeight+2};if(diffValue>0)rtTextBG.Top=ptEnd.Y-rtTextBG.Height-4;else rtTextBG.Top=ptEnd.Y+4;rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;if(this.Label.EnableBGColor){var path=new Path2D();path.roundRect(ToFixedPoint(rtTextBG.Left),ToFixedPoint(rtTextBG.Top),ToFixedRect(rtTextBG.Width),ToFixedRect(rtTextBG.Height),[3]);this.Canvas.fillStyle=this.Label.BGColor;this.Canvas.fill(path);}this.Canvas.fillStyle=this.Label.TextColor;this.Canvas.textAlign="left";this.Canvas.textBaseline="bottom";this.Canvas.fillText(text,rtTextBG.Left+2+this.Label.LeftMargin,rtTextBG.Bottom-2);};}function ChartDateRange(){this.newMethod=IChartDrawPicture;//派生
6240
6254
  this.newMethod();delete this.newMethod;this.ClassName='ChartDateRange';this.PointCount=2;this.Font=12*GetDevicePixelRatio()+"px 微软雅黑";this.TextColor=this.LineColor;this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.PointToValue_Default=this.PointToValue;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.LineWidth=1;this.EnableBGColor=true;this.BGColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.15);this.ExtendLine={Top:false,Bottom:false};//延长线
6241
- this.Label={TextColor:"rgb(0,0,0)",BGColor:"rgb(211,211,211)",EnableBGColor:true,LeftMargin:5,RightMargin:5};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var bCheckXY=true;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.DrawRange(ptStart,ptEnd);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6255
+ this.Label={TextColor:"rgb(0,0,0)",BGColor:"rgb(211,211,211)",EnableBGColor:true,LeftMargin:5,RightMargin:5};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var bCheckXY=true;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.DrawRange(ptStart,ptEnd);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6242
6256
  this.Canvas.restore();};this.DrawRange=function(ptStart,ptEnd){var yTop=Math.min(ptStart.Y,ptEnd.Y);var yBottom=Math.max(ptStart.Y,ptEnd.Y);var xLeft=Math.min(ptStart.X,ptEnd.X);var xRight=Math.max(ptStart.X,ptEnd.X);var height=yBottom-yTop;var width=xRight-xLeft;var yCenter=ptStart.Y+(ptEnd.Y-ptStart.Y)/2;var xCenter=ptStart.X+(ptEnd.X-ptStart.X)/2;if(this.ExtendLine.Top)yTop=this.Frame.ChartBorder.GetTopEx();if(this.ExtendLine.Bottom)yBottom=this.Frame.ChartBorder.GetBottomEx();if(this.EnableBGColor){var rtBG={Left:xLeft,Top:yTop,Right:xRight,Bottom:yBottom};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;this.Canvas.fillStyle=this.BGColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(xLeft),yTop);this.Canvas.lineTo(ToFixedPoint(xLeft),yBottom);this.Canvas.moveTo(ToFixedPoint(xRight),yTop);this.Canvas.lineTo(ToFixedPoint(xRight),yBottom);this.Canvas.moveTo(ToFixedPoint(xLeft),ToFixedPoint(yCenter));this.Canvas.lineTo(ToFixedPoint(xRight),ToFixedPoint(yCenter));this.Canvas.stroke();this.LinePoint.push({Start:{X:xLeft,Y:yTop},End:{X:xLeft,Y:yBottom}});this.LinePoint.push({Start:{X:xRight,Y:yTop},End:{X:xRight,Y:yBottom}});this.LinePoint.push({Start:{X:xLeft,Y:yCenter},End:{X:xRight,Y:yCenter}});this.DrawArrow({X:ptStart.X,Y:ToFixedPoint(yCenter)},{X:ptEnd.X,Y:ToFixedPoint(yCenter)});//文字输出
6243
6257
  var startIndex=this.Frame.GetXData(ptStart.X,false);var endIndex=this.Frame.GetXData(ptEnd.X,false);var barCount=endIndex-startIndex+1;var text=barCount+' bars';this.Canvas.font=this.Font;var textHeight=this.GetFontHeight();var textWidth=this.Canvas.measureText(text).width+4+(this.Label.LeftMargin+this.Label.RightMargin);var rtTextBG={Left:xCenter-textWidth/2,Top:ptEnd.Y+4,Width:textWidth,Height:textHeight+2};rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;if(this.Label.EnableBGColor){var path=new Path2D();path.roundRect(ToFixedPoint(rtTextBG.Left),ToFixedPoint(rtTextBG.Top),ToFixedRect(rtTextBG.Width),ToFixedRect(rtTextBG.Height),[3]);this.Canvas.fillStyle=this.Label.BGColor;this.Canvas.fill(path);}this.Canvas.fillStyle=this.Label.TextColor;this.Canvas.textAlign="left";this.Canvas.textBaseline="bottom";this.Canvas.fillText(text,rtTextBG.Left+2+this.Label.LeftMargin,rtTextBG.Bottom-2);};}function ChartDrawStorage(){this.DrawData=new _map2.default();//画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{Guid, Symbol, Period, ClassName, Value}
6244
6258
  this.StorageKey;this.GetEventCallback;//事件回调
@@ -11298,8 +11312,8 @@ chart.Lines=varItem.Draw.DrawData;if(varItem.Draw.Name)chart.Name=varItem.Draw.N
11298
11312
  {var item=varItem.Draw.Arrow;if(item.Start==true)chart.Arrow.Start=true;if(item.End==true)chart.Arrow.End=true;if(IFrameSplitOperator.IsNumber(item.Angle))chart.ArrawAngle=item.Angle;if(IFrameSplitOperator.IsNumber(item.Length))chart.ArrawLength=item.Length;if(IFrameSplitOperator.IsNumber(item.LineWidth))chart.ArrawLineWidth=item.LineWidth;}this.ReloadChartResource(hqChart,windowIndex,chart);hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.Name,null);titleData.DataType="ChartMultiLine";titleData.Lines=chart.Lines;hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateMultiPoint=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiPoint();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11299
11313
  chart.PointGroup=varItem.Draw.DrawData;if(varItem.Draw.Name)chart.Name=varItem.Draw.Name;hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.Name,null);titleData.DataType="ChartMultiPoint";titleData.PointGroup=chart.PointGroup;hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateMultiBar=function(hqChart,windowIndex,varItem,id){var chart=new ChartMultiBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11300
11314
  chart.Bars=varItem.Draw.DrawData;var titleIndex=windowIndex+1;var titleData=new DynamicTitleData({KData:chart.Data,BarData:chart.Bars},varItem.Name,null);titleData.IsShow=false;titleData.DataType="MULTI_BAR";hqChart.TitlePaint[titleIndex].Data[id]=titleData;hqChart.ChartPaint.push(chart);};this.CreateMultiText=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11301
- chart.Texts=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreateMultiSVGIcon=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiSVGIcon();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11302
- chart.Family=varItem.Draw.DrawData.Family;chart.Icon=varItem.Draw.DrawData.Icon;hqChart.ChartPaint.push(chart);};this.CreateChartDrawSVG=function(hqChart,windowIndex,varItem,i){var chart=new ChartDrawSVG();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(hqChart.ChartPaint[0].IsMinuteFrame())chart.Data=hqChart.SourceData;else chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11315
+ chart.Texts=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreateMultiSVGIcon=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiSVGIconV2();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11316
+ chart.Family=varItem.Draw.DrawData.Family;chart.AryIcon=varItem.Draw.DrawData.Icon;chart.BuildCacheData();hqChart.ChartPaint.push(chart);};this.CreateChartDrawSVG=function(hqChart,windowIndex,varItem,i){var chart=new ChartDrawSVG();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(hqChart.ChartPaint[0].IsMinuteFrame())chart.Data=hqChart.SourceData;else chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11303
11317
  if(IFrameSplitOperator.IsBool(varItem.Draw.DrawData.EnableTooltip))chart.EnableTooltip=varItem.Draw.DrawData.EnableTooltip;if(IFrameSplitOperator.IsBool(varItem.Draw.DrawData.IsDrawFirst))chart.IsDrawFirst=varItem.Draw.DrawData.IsDrawFirst;chart.Family=varItem.Draw.DrawData.Family;chart.TextFont=varItem.Draw.DrawData.TextFont;chart.Texts=varItem.Draw.DrawData.Data;hqChart.ChartPaint.push(chart);};this.CreateMulitHtmlDom=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiHtmlDom();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11304
11318
  chart.Texts=varItem.Draw.DrawData;chart.DrawCallback=varItem.Draw.Callback;hqChart.ChartPaint.push(chart);};this.CreateStackedBar=function(hqChart,windowIndex,varItem,i){var chart=new ChartStackedBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarColor))chart.BarColor=varItem.Draw.BarColor;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarName))chart.BarName=varItem.Draw.BarName;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(IFrameSplitOperator.IsNumber(varItem.Draw.BarType))chart.BarType=varItem.Draw.BarType;hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);titleData.DataType="ChartStackedBar";hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateKLineTable=function(hqChart,windowIndex,varItem,i){var chart=new ChartKLineTable();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsNumber(varItem.Draw.RowCount))chart.RowCount=varItem.Draw.RowCount;if(IFrameSplitOperator.IsBool(varItem.Draw.IsShowRowName))chart.IsShowRowName=varItem.Draw.IsShowRowName;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.RowName))chart.RowName=varItem.Draw.RowName;if(varItem.Draw.BGColor)chart.BGColor=varItem.Draw.BGColor;hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);titleData.DataType="ChartKLineTable";hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateScatterPlot=function(hqChart,windowIndex,varItem,i){var chart=new ChartScatterPlot();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data.Data=varItem.Draw.DrawData;chart.Color=varItem.Draw.Color;chart.Radius=varItem.Draw.Radius;hqChart.ChartPaint.push(chart);};this.CreateColorKLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartColorKline();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11305
11319
  chart.KLineColor=varItem.Draw.DrawData.KLine;if(varItem.Color)chart.Color=varItem.Color;hqChart.ChartPaint.push(chart);};this.CreateRectangle=function(hqChart,windowIndex,varItem,i){var chart=new ChartRectangle();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Color=[varItem.Draw.DrawData.Color];chart.Rect=varItem.Draw.DrawData.Rect;if(varItem.Color)chart.BorderColor=this.GetColor(varItem.Color);hqChart.ChartPaint.push(chart);};this.CreateScriptOverlayLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartOverlayLine();chart.Canvas=hqChart.Canvas;chart.DrawType=1;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(i);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}if(varItem.IsDotLine)chart.IsDotLine=true;//虚线
@@ -11422,8 +11436,8 @@ chart.Lines=varItem.Draw.DrawData;if(varItem.Draw.LineDash)chart.LineDash=varIte
11422
11436
  {var item=varItem.Draw.Arrow;if(item.Start==true)chart.Arrow.Start=true;if(item.End==true)chart.Arrow.End=true;if(IFrameSplitOperator.IsNumber(item.Angle))chart.ArrawAngle=item.Angle;if(IFrameSplitOperator.IsNumber(item.Length))chart.ArrawLength=item.Length;if(IFrameSplitOperator.IsNumber(item.LineWidth))chart.ArrawLineWidth=item.LineWidth;}this.ReloadChartResource(hqChart,windowIndex,chart);frame.ChartPaint.push(chart);};this.CreateMultiPoint=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiPoint();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11423
11437
  chart.PointGroup=varItem.Draw.DrawData;frame.ChartPaint.push(chart);};this.CreateBackgroud=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartBackground();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Color=drawData.Color;chart.ColorAngle=drawData.Angle;if(drawData.Data)chart.Data.Data=drawData.Data;}frame.ChartPaint.push(chart);};this.CreateMultiBar=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11424
11438
  chart.Bars=varItem.Draw.DrawData;var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];var titleData=new DynamicTitleData({KData:chart.Data,BarData:chart.Bars},varItem.Name,null);titleData.IsShow=false;titleData.DataType="MULTI_BAR";titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;frame.ChartPaint.push(chart);};this.CreateMultiText=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11425
- chart.Texts=varItem.Draw.DrawData;frame.ChartPaint.push(chart);};this.CreateMultiSVGIcon=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiSVGIcon();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11426
- chart.Family=varItem.Draw.DrawData.Family;chart.Icon=varItem.Draw.DrawData.Icon;frame.ChartPaint.push(chart);};this.CreateChartDrawSVG=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartDrawSVG();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(hqChart.ChartPaint[0].IsMinuteFrame())chart.Data=hqChart.SourceData;else chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11439
+ chart.Texts=varItem.Draw.DrawData;frame.ChartPaint.push(chart);};this.CreateMultiSVGIcon=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiSVGIconV2();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11440
+ chart.Family=varItem.Draw.DrawData.Family;chart.AryIcon=varItem.Draw.DrawData.Icon;chart.BuildCacheData();frame.ChartPaint.push(chart);};this.CreateChartDrawSVG=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartDrawSVG();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(hqChart.ChartPaint[0].IsMinuteFrame())chart.Data=hqChart.SourceData;else chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11427
11441
  if(IFrameSplitOperator.IsBool(varItem.Draw.DrawData.EnableTooltip))chart.EnableTooltip=varItem.Draw.DrawData.EnableTooltip;if(IFrameSplitOperator.IsBool(varItem.Draw.DrawData.IsDrawFirst))chart.IsDrawFirst=varItem.Draw.DrawData.IsDrawFirst;chart.Family=varItem.Draw.DrawData.Family;chart.TextFont=varItem.Draw.DrawData.TextFont;chart.Texts=varItem.Draw.DrawData.Data;if(varItem.Draw.AutoPosition)chart.AutoPosition=varItem.Draw.AutoPosition;this.ReloadChartResource(hqChart,windowIndex,chart);frame.ChartPaint.push(chart);};this.CreateMulitHtmlDom=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiHtmlDom();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.HQChart=hqChart;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11428
11442
  chart.Texts=varItem.Draw.DrawData;chart.DrawCallback=varItem.Draw.Callback;frame.ChartPaint.push(chart);};this.CreateChartVericaltLine=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartVericaltLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.HQChart=hqChart;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}this.SetChartLineDash(chart,varItem.Draw.DrawData);chart.Data.Data=varItem.Draw.DrawData.Data;frame.ChartPaint.push(chart);};this.CreateChartHorizontalLine=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartHorizontalLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.HQChart=hqChart;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}this.SetChartLineDash(chart,varItem.Draw.DrawData);chart.ExtendType=varItem.Draw.DrawData.Extend;chart.Data.Data=varItem.Draw.DrawData.Data;frame.ChartPaint.push(chart);};//创建K线
11429
11443
  this.CreateSelfKLine=function(hqChart,windowIndex,hisData){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartKLine();chart.Canvas=hqChart.Canvas;chart.Name="Self Kline";chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hisData;chart.IsShowMaxMinPrice=false;chart.IsShowKTooltip=false;chart.DrawType=this.KLineType;frame.ChartPaint.push(chart);};//给一个默认的颜色
@@ -11485,7 +11499,7 @@ if(item.isexdata==true)outVarItem.IsExData=true;if(item.BreakPoint)outVarItem.Br
11485
11499
  {drawItem.Icon=draw.Icon;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWTEXT')//文本
11486
11500
  {drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='STICKLINE')//柱子
11487
11501
  {drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.Width=draw.Width;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="DRAWBAND"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);drawItem.Color=draw.Color;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_LINE'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);if(IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData)){for(var k=0;k<drawItem.DrawData.length;++k){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}}outVarItem.Draw=drawItem;if(draw.LineDash)drawItem.LineDash=draw.LineDash;if(IFrameSplitOperator.IsBool(draw.IsFullRangeMaxMin))drawItem.IsFullRangeMaxMin=draw.IsFullRangeMaxMin;if(draw.Arrow)drawItem.Arrow=draw.Arrow;if(IFrameSplitOperator.IsNumber(draw.LineWidth))drawItem.LineWidth=draw.LineWidth;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);if(IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData)){for(var k=0;k<drawItem.DrawData.length;++k){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}}outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_BAR'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.OVERLAY_BARS){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.BarName=draw.BarName;drawItem.BarColor=draw.BarColor;drawItem.LineWidth=draw.LineWidth;drawItem.BarType=draw.BarType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.SCATTER_PLOT){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);//默认的值
11488
- drawItem.Color=draw.Color;drawItem.Radius=draw.Radius;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.KLINE_TABLE){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);drawItem.RowCount=draw.RowCount;drawItem.RowName=draw.RowName;drawItem.IsShowRowName=draw.IsShowRowName;drawItem.BGColor=draw.BGColor;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_TEXT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);this.GetKLineData(drawItem.DrawData,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_SVGICON'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={Icon:this.FittingMultiText(draw.DrawData.Icon,date,time,hqChart),Family:draw.DrawData.Family};this.GetKLineData(drawItem.DrawData.Icon,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWSVG'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;if(draw.AutoPosition)drawItem.AutoPosition=draw.AutoPosition;drawItem.DrawData={Data:this.FittingMultiText(draw.Data,date,time,hqChart),Family:draw.Family,TextFont:draw.TextFont,EnableTooltip:draw.EnableTooltip,IsDrawFirst:draw.IsDrawFirst};this.GetKLineData(drawItem.DrawData.Data,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="MULTI_HTMLDOM")//外部自己创建dom
11502
+ drawItem.Color=draw.Color;drawItem.Radius=draw.Radius;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.KLINE_TABLE){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);drawItem.RowCount=draw.RowCount;drawItem.RowName=draw.RowName;drawItem.IsShowRowName=draw.IsShowRowName;drawItem.BGColor=draw.BGColor;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_TEXT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);this.GetKLineData(drawItem.DrawData,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_SVGICON'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={Icon:draw.DrawData.Icon,Family:draw.DrawData.Family};outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWSVG'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;if(draw.AutoPosition)drawItem.AutoPosition=draw.AutoPosition;drawItem.DrawData={Data:this.FittingMultiText(draw.Data,date,time,hqChart),Family:draw.Family,TextFont:draw.TextFont,EnableTooltip:draw.EnableTooltip,IsDrawFirst:draw.IsDrawFirst};this.GetKLineData(drawItem.DrawData.Data,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="MULTI_HTMLDOM")//外部自己创建dom
11489
11503
  {drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.Callback=draw.Callback;drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);this.GetKLineData(drawItem.DrawData,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="COLOR_KLINE"){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;var klineOption=this.FittingMultiText(draw.DrawData.KLine,date,time,hqChart);var mapKLineOption=new _map2.default();for(var i in klineOption){var item=klineOption[i];mapKLineOption.set(item.Index,item);}drawItem.DrawData={KLine:mapKLineOption};if(draw.Color)outVarItem.Color=draw.Color;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="KLINE_BG"){drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={};drawItem.DrawData.Color=draw.Color;drawItem.DrawData.Angle=draw.Angle;if(draw.Ver==2.0)drawItem.DrawData.Data=this.FittingKLineBG_V2(draw.DrawData,hqChart);else drawItem.DrawData.Data=this.FittingKLineBG(draw.DrawData,hqChart);outVarItem.Draw=drawItem;outVarItem.Name=draw.DrawType;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT_LINE'){drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={};drawItem.DrawData.Color=draw.Color;drawItem.DrawData.PointRadius=draw.PointRadius;drawItem.DrawData.PointColor=draw.PointColor;drawItem.DrawData.LineWidth=draw.LineWidth;drawItem.DrawData.Data=this.FittingMultiPointLine(draw.DrawData,hqChart);outVarItem.Draw=drawItem;//outVarItem.Name=draw.DrawType;
11490
11504
  result.push(outVarItem);}else if(draw.DrawType=="PARTLINE"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;if(draw.LineWidth)outVarItem.LineWidth=draw.LineWidth;result.push(outVarItem);}else{var find=g_ScriptIndexChartFactory.Get(draw.DrawType);//外部挂接
11491
11505
  if(find&&find.KLineFittingCallback){if(find.KLineFittingCallback(item,outVarItem,{Date:date,Time:time,HQChart:hqChart},this))result.push(outVarItem);}}}}return result;};// h, high, low l. c, close
@@ -11501,7 +11515,7 @@ var result=[];if(ChartData.IsDayPeriod(hqChart.Period,true))//日线
11501
11515
  {var aryRange=[];for(var i=0;i<data.length;++i){var item=data[i];var startDatetime=item.Start.Date*10000;if(IFrameSplitOperator.IsNumber(item.Start.Time))startDatetime+=item.Start.Time;var endDatetime=item.End.Date*10000;if(IFrameSplitOperator.IsNumber(item.End.Time))endDatetime+=item.End.Time;aryRange.push({Start:startDatetime,End:endDatetime});}var bFill=false;for(var i=0,j=0;i<kData.Data.length;++i){result[i]=0;var kItem=kData.Data[i];var date=kItem.Date*10000+kItem.Time;for(j=0;j<aryRange.length;++j){var rangeItem=aryRange[j];if(date>=rangeItem.Start&&date<=rangeItem.End){result[i]=1;bFill=true;break;}}}if(bFill)return result;}return null;};this.FittingMinuteData=function(jsonData,hqChart){var outVar=jsonData.outvar;var date=jsonData.date;var time=jsonData.time;var result=[];for(var i=0;i<outVar.length;++i){var item=outVar[i];var outVarItem={Name:item.name,Type:item.type};if(item.data){outVarItem.Data=this.FittingMinuteArray(item.data,date,time,hqChart);if(item.color)outVarItem.Color=item.color;if(item.linewidth>=1)outVarItem.LineWidth=item.linewidth;if(item.isshow==false)outVarItem.IsShow=false;if(item.isexdata==true)outVarItem.IsExData=true;if(item.BreakPoint)outVarItem.BreakPoint=item.BreakPoint;result.push(outVarItem);}else if(item.Draw){var draw=item.Draw;var drawItem={};if(draw.DrawType=='DRAWICON')//图标
11502
11516
  {drawItem.Icon=draw.Icon;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWTEXT')//文本
11503
11517
  {drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='STICKLINE')//柱子
11504
- {drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.Width=draw.Width;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.OVERLAY_BARS){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.BarName=draw.BarName;drawItem.BarColor=draw.BarColor;drawItem.LineWidth=draw.LineWidth;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_LINE'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);for(var k in drawItem.DrawData){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}outVarItem.Draw=drawItem;if(draw.LineDash)drawItem.LineDash=draw.LineDash;if(draw.Arrow)drawItem.Arrow=draw.Arrow;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);if(IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData)){for(var k=0;k<drawItem.DrawData.length;++k){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}}outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_TEXT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);this.GetKLineData(drawItem.DrawData,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_SVGICON'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={Icon:this.FittingMultiText(draw.DrawData.Icon,date,time,hqChart),Family:draw.DrawData.Family};this.GetKLineData(drawItem.DrawData.Icon,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWSVG'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;if(draw.AutoPosition)drawItem.AutoPosition=draw.AutoPosition;drawItem.DrawData={Data:this.FittingMultiText(draw.Data,date,time,hqChart),Family:draw.Family,TextFont:draw.TextFont,EnableTooltip:draw.EnableTooltip,IsDrawFirst:draw.IsDrawFirst};this.GetKLineData(drawItem.DrawData.Data,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="MULTI_HTMLDOM")//外部自己创建dom
11518
+ {drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.Width=draw.Width;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.OVERLAY_BARS){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.BarName=draw.BarName;drawItem.BarColor=draw.BarColor;drawItem.LineWidth=draw.LineWidth;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_LINE'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);for(var k in drawItem.DrawData){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}outVarItem.Draw=drawItem;if(draw.LineDash)drawItem.LineDash=draw.LineDash;if(draw.Arrow)drawItem.Arrow=draw.Arrow;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);if(IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData)){for(var k=0;k<drawItem.DrawData.length;++k){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}}outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_TEXT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);this.GetKLineData(drawItem.DrawData,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_SVGICON'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={Icon:draw.DrawData.Icon,Family:draw.DrawData.Family};outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWSVG'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;if(draw.AutoPosition)drawItem.AutoPosition=draw.AutoPosition;drawItem.DrawData={Data:this.FittingMultiText(draw.Data,date,time,hqChart),Family:draw.Family,TextFont:draw.TextFont,EnableTooltip:draw.EnableTooltip,IsDrawFirst:draw.IsDrawFirst};this.GetKLineData(drawItem.DrawData.Data,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="MULTI_HTMLDOM")//外部自己创建dom
11505
11519
  {drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.Callback=draw.Callback;drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);this.GetKLineData(drawItem.DrawData,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else{var find=g_ScriptIndexChartFactory.Get(draw.DrawType);//外部挂接
11506
11520
  if(find&&find.MinuteFittingCallback){if(find.MinuteFittingCallback(item,outVarItem,{Date:date,Time:time,HQChart:hqChart},this))result.push(outVarItem);}}}}return result;};//matchType 0=精确匹配(默认) 5=模糊匹配
11507
11521
  this.FittingMinuteArray=function(sourceData,date,time,hqChart,matchType){var minutedata=hqChart.SourceData;;//分钟线
@@ -12626,7 +12640,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
12626
12640
  this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
12627
12641
  * 版本信息输出
12628
12642
  *
12629
- */var HQCHART_VERSION="1.1.13008";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12643
+ */var HQCHART_VERSION="1.1.13015";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12630
12644
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12631
12645
  // BaseIndex:BaseIndex,
12632
12646
  // ChartLine:ChartLine,