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.
- package/lib/umychart.vue.js +64 -50
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +8 -8
- package/src/jscommon/umychart.js +342 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +351 -9
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +351 -9
package/lib/umychart.vue.js
CHANGED
|
@@ -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;};}
|
|
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
|
|
11302
|
-
chart.Family=varItem.Draw.DrawData.Family;chart.
|
|
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
|
|
11426
|
-
chart.Family=varItem.Draw.DrawData.Family;chart.
|
|
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:
|
|
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:
|
|
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.
|
|
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,
|