hqchart 1.1.13014 → 1.1.13019
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 +104 -88
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +180 -3
- package/src/jscommon/umychart.js +48 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +229 -4
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +229 -4
package/lib/umychart.vue.js
CHANGED
|
@@ -5669,6 +5669,7 @@ this.OnlyMoveXIndex=false;//只能在X轴刻度上移动
|
|
|
5669
5669
|
this.IsSupportMagnet=false;//是否支持磁吸
|
|
5670
5670
|
this.EnableMoveCheck=true;//允许移动时监测是否超出边界
|
|
5671
5671
|
this.IsDrawFirst=false;this.IsShowYCoordinate=false;//是否在Y轴显示点的刻度
|
|
5672
|
+
this.IsShow=true;//是否显示
|
|
5672
5673
|
this.LineColor=g_JSChartResource.DrawPicture.LineColor[0];//线段颜色
|
|
5673
5674
|
//this.LineColor="#1e90ff"; //线段颜色,input type="color" 不支持rgb和rgba 的格式
|
|
5674
5675
|
this.LineWidth=2;//线段宽度
|
|
@@ -5728,7 +5729,7 @@ this.ExportBaseData=function(){var data={ClassName:this.ClassName,Guid:this.Guid
|
|
|
5728
5729
|
if(this.FontOption){data.FontOption={};this.SetFont(data.FontOption,this.FontOption);//字体也导出
|
|
5729
5730
|
}return data;};this.IsFrameMinSize=function()//框架是否是最小化模式
|
|
5730
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//所有的点
|
|
5731
|
-
};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轴最大-最小差值
|
|
5732
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;};//获得多行文本
|
|
5733
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);//预估个数
|
|
5734
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;};//计算角度
|
|
@@ -5756,7 +5757,7 @@ IChartDrawPicture.RegisterIonFont=function(obj){if(!obj.Name||!obj.Text||!obj.Fa
|
|
|
5756
5757
|
{var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var chartDraw=item.Create();//TODO:后面都放到每一个SetOptin里面
|
|
5757
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;};//画图工具-线段
|
|
5758
5759
|
function ChartDrawPictureLine(){this.newMethod=IChartDrawPicture;//派生
|
|
5759
|
-
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();/*
|
|
5760
5761
|
if (this.IsSelected)
|
|
5761
5762
|
{
|
|
5762
5763
|
this.Canvas.strokeStyle='rgba(255,0,0,0.5)';
|
|
@@ -5764,7 +5765,7 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureLine';thi
|
|
|
5764
5765
|
this.Canvas.stroke();
|
|
5765
5766
|
}
|
|
5766
5767
|
*/var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
|
|
5767
|
-
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;//完成
|
|
5768
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轴不关联
|
|
5769
5770
|
function ChartDrawGraffitiLine(){this.newMethod=IChartDrawPicture;//派生
|
|
5770
5771
|
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawGraffitiLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=null;this.PointCount=2;//画点的个数
|
|
@@ -5774,7 +5775,7 @@ this.ValueToPoint=function(){if(!this.Frame)return false;var isHScreen=this.Fram
|
|
|
5774
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对调
|
|
5775
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;};//坐标是否在点上 返回在第几个点上
|
|
5776
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)//是否在点上
|
|
5777
|
-
{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();/*
|
|
5778
5779
|
if (this.IsSelected)
|
|
5779
5780
|
{
|
|
5780
5781
|
this.Canvas.strokeStyle='rgba(255,0,0,0.5)';
|
|
@@ -5786,7 +5787,7 @@ this.Canvas.restore();};}//画图工具-箭头线
|
|
|
5786
5787
|
function ChartDrawArrowLine(){this.newMethod=IChartDrawPicture;//派生
|
|
5787
5788
|
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawArrowLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.ArrawLineWidth=5;this.ArrawLength=15;//三角斜边长度
|
|
5788
5789
|
this.ArrawAngle=35;//三角斜边一直线夹角
|
|
5789
|
-
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];//计算箭头
|
|
5790
5791
|
var theta=this.ArrawAngle;//三角斜边一直线夹角
|
|
5791
5792
|
var headlen=this.ArrawLength;//三角斜边长度
|
|
5792
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();/*
|
|
@@ -5800,12 +5801,12 @@ var angle=Math.atan2(ptStart.Y-ptEnd.Y,ptStart.X-ptEnd.X)*180/Math.PI,angle1=(an
|
|
|
5800
5801
|
this.Canvas.restore();};}//画图工具-射线
|
|
5801
5802
|
function ChartDrawPictureHaflLine(){this.newMethod=IChartDrawPicture;//派生
|
|
5802
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)//竖线
|
|
5803
|
-
{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);//画点
|
|
5804
5805
|
this.Canvas.restore();this.FullLine={Start:drawPoint[0],End:endPoint};};}// 画图工具-水平线 支持横屏
|
|
5805
5806
|
function ChartDrawPictureHorizontalLine(){this.newMethod=IChartDrawPicture;//派生
|
|
5806
5807
|
this.newMethod();delete this.newMethod;this.Super_SetOption=this.SetOption;//父类函数
|
|
5807
5808
|
this.Super_ExportStorageData=this.ExportStorageData;this.Label;//{Text:文本, Position: 0=左, 1=右 }
|
|
5808
|
-
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);//画点
|
|
5809
5810
|
this.DrawPoint(drawPoint);//显示价格
|
|
5810
5811
|
this.LineText(drawPoint[0]);/*
|
|
5811
5812
|
this.Canvas.fillStyle=this.LineColor;
|
|
@@ -5861,7 +5862,7 @@ this.ColseButtonSize=0;this.SettingButtonSize=0;this.ButtonBGWidth=0;this.SetOpt
|
|
|
5861
5862
|
return this.PointRange(drawPoint);
|
|
5862
5863
|
}
|
|
5863
5864
|
*/this.IsDrawMain=function()//选中绘制在动态绘图上, 没有选中绘制在背景上
|
|
5864
|
-
{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();//画线段
|
|
5865
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);//描述信息
|
|
5866
5867
|
if(labInfo)this.DrawLab(labInfo,drawPoint[0].Y);//画中心点
|
|
5867
5868
|
var xCenter=left+(right-left)/2;var point={X:xCenter,Y:drawPoint[0].Y};this.DrawPoint([point]);this.Canvas.restore();var rtDraw={};//显示价格
|
|
@@ -5881,10 +5882,10 @@ if(labInfo.BGColor){this.Canvas.fillStyle=labInfo.BGColor;var rtTop=drawTop;this
|
|
|
5881
5882
|
}
|
|
5882
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;};}//趋势线
|
|
5883
5884
|
function ChartDrawPictureTrendLine(){this.newMethod=IChartDrawPicture;//派生
|
|
5884
|
-
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);//画点
|
|
5885
5886
|
this.Canvas.restore();};}//画图工具-矩形
|
|
5886
5887
|
function ChartDrawPictureRect(){this.newMethod=IChartDrawPicture;//派生
|
|
5887
|
-
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();//透明背景
|
|
5888
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();//画点
|
|
5889
5890
|
this.DrawPoint(drawPoint);};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
|
|
5890
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;//是否在矩形边框上
|
|
@@ -5892,7 +5893,7 @@ var linePoint=[{X:aryPoint[0].X,Y:aryPoint[0].Y},{X:aryPoint[1].X,Y:aryPoint[0].
|
|
|
5892
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;};//垂直线段
|
|
5893
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;};}//画图工具-弧形
|
|
5894
5895
|
function ChartDrawPictureArc(){this.newMethod=IChartDrawPicture;//派生
|
|
5895
|
-
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();
|
|
5896
5897
|
//this.Canvas.rect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);
|
|
5897
5898
|
this.SetLineWidth();if(drawPoint[0].X<drawPoint[1].X&&drawPoint[0].Y>drawPoint[1].Y)// 第一象限
|
|
5898
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)// 第二象限
|
|
@@ -5909,7 +5910,7 @@ var ArcPoint=[{X:aryPoint[0].X,Y:aryPoint[0].Y},{X:aryPoint[1].X,Y:aryPoint[1].Y
|
|
|
5909
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)// 第四象限
|
|
5910
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底 支持横屏
|
|
5911
5912
|
function ChartDrawPictureWaveMW(){this.newMethod=IChartDrawPicture;//派生
|
|
5912
|
-
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);
|
|
5913
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);//画点
|
|
5914
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)两种形态
|
|
5915
5916
|
//支持横屏
|
|
@@ -5918,13 +5919,13 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawHeadShouldersBT'
|
|
|
5918
5919
|
function ChartDrawPictureParallelLines(){this.newMethod=IChartDrawPicture;//派生
|
|
5919
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;//中心线
|
|
5920
5921
|
this.CenterLine={LineDash:[2*GetDevicePixelRatio(),3*GetDevicePixelRatio()],Line:null,IsShow:false};this.Super_SetOption=this.SetOption;//父类函数
|
|
5921
|
-
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
|
|
5922
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);//画点
|
|
5923
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);//计算平行线
|
|
5924
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);//中心线
|
|
5925
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
|
|
5926
5927
|
function ChartDrawFlatTop(){this.newMethod=IChartDrawPicture;//派生
|
|
5927
|
-
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);//画点
|
|
5928
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]});//计算水平线
|
|
5929
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
|
|
5930
5931
|
function ChartDrawDisjontChannel(){this.newMethod=ChartDrawFlatTop;//派生
|
|
@@ -5944,7 +5945,7 @@ for(var i=0;i<this.Value.length&&i<2;++i){var item=this.Value[i];storageData.Val
|
|
|
5944
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)//完成
|
|
5945
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);
|
|
5946
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个点
|
|
5947
|
-
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);//画点
|
|
5948
5949
|
};//xStep,yStep 移动的偏移量
|
|
5949
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)//整体移动
|
|
5950
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)//宽度的点要计算
|
|
@@ -5960,7 +5961,7 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureText';thi
|
|
|
5960
5961
|
//this.FontOption={ Family:'iconfont', Size:20, Weight:null, Style:null }; //Weight(bold 粗体), Style(italic)
|
|
5961
5962
|
this.TextRect=null;//文字区域
|
|
5962
5963
|
this.IsInitialized=false;//是否初始化了
|
|
5963
|
-
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);
|
|
5964
5965
|
this.Canvas.restore();if(this.IsInitialized===false){this.SetTextOption();this.IsInitialized=true;}};//根据设置动态生成字体
|
|
5965
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设置窗口
|
|
5966
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 图片
|
|
@@ -5969,11 +5970,11 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureIconFont'
|
|
|
5969
5970
|
this.Text='\uE606';this.FontOption={Family:'iconfont',Size:24};//Weight(bold 粗体), Style(italic)
|
|
5970
5971
|
this.TextRect=null;//文字区域
|
|
5971
5972
|
this.SettingMenu;this.Angle=0;//旋转角度
|
|
5972
|
-
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);
|
|
5973
5974
|
this.Canvas.restore();};//根据设置动态生成字体
|
|
5974
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),亦又称作甘氏线的
|
|
5975
5976
|
function ChartDrawPictureGannFan(){this.newMethod=IChartDrawPicture;//派生
|
|
5976
|
-
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);//画点
|
|
5977
5978
|
};//获取在第几象限
|
|
5978
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 是否是虚线
|
|
5979
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();};//计算线段
|
|
@@ -6002,14 +6003,14 @@ function ChartDrawPictureResistanceLine(){this.newMethod=ChartDrawPictureGannFan
|
|
|
6002
6003
|
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureResistanceLine';//计算线段
|
|
6003
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();};}//黄金分割线
|
|
6004
6005
|
function ChartDrawPictureGoldenSection(){this.newMethod=IChartDrawPicture;//派生
|
|
6005
|
-
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);//画点
|
|
6006
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);}};}//百分比线
|
|
6007
6008
|
function ChartDrawPicturePercentage(){this.newMethod=ChartDrawPictureGoldenSection;//派生
|
|
6008
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;};}//波段线
|
|
6009
6010
|
function ChartDrawPictureWaveBand(){this.newMethod=ChartDrawPictureGoldenSection;//派生
|
|
6010
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;};}//三角形
|
|
6011
6012
|
function ChartDrawPictureTriangle(){this.newMethod=IChartDrawPicture;//派生
|
|
6012
|
-
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);//画点
|
|
6013
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();};//显示角度数据
|
|
6014
6015
|
this.DrawTitle=function(points){if(this.Status!=10)return;//拖拽完成以后才显示角度数据
|
|
6015
6016
|
//输出3个点的角度
|
|
@@ -6021,7 +6022,7 @@ this.DrawTitle=function(points){if(this.Status!=10)return;//拖拽完成以后
|
|
|
6021
6022
|
this.Canvas.fillText('∠60',points[0].X,points[0].Y);
|
|
6022
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);}};}//对称角度
|
|
6023
6024
|
function ChartDrawPictureSymmetryAngle(){this.newMethod=IChartDrawPicture;//派生
|
|
6024
|
-
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);
|
|
6025
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);//画点
|
|
6026
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();};//显示角度数据
|
|
6027
6028
|
this.DrawTitle=function(points){if(this.Status!=10)return;//拖拽完成以后才显示角度数据
|
|
@@ -6034,17 +6035,17 @@ this.DrawTitle=function(points){if(this.Status!=10)return;//拖拽完成以后
|
|
|
6034
6035
|
this.Canvas.fillText('∠60',points[0].X,points[0].Y);
|
|
6035
6036
|
*/};}//圆
|
|
6036
6037
|
function ChartDrawPictureCircle(){this.newMethod=IChartDrawPicture;//派生
|
|
6037
|
-
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);//画点
|
|
6038
6039
|
this.Canvas.restore();};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
|
|
6039
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);//计算直径
|
|
6040
6041
|
if(r<this.CircleData.R&&r>this.CircleData.R-8)return 100;}return-1;};}//四边形
|
|
6041
6042
|
function ChartDrawPictureQuadrangle(){this.newMethod=IChartDrawPicture;//派生
|
|
6042
|
-
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);//画点
|
|
6043
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);//计算平行线
|
|
6044
6045
|
var xMove=points[2].X-points[1].X;var yMove=points[2].Y-points[1].Y;var pt4=new Point();//第4个点的坐标
|
|
6045
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);}};}//斐波那契周期线
|
|
6046
6047
|
function ChartDrawPictureFibonacci(){this.newMethod=IChartDrawPicture;//派生
|
|
6047
|
-
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);//画点
|
|
6048
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);}};}//线性回归
|
|
6049
6050
|
function ChartDrawLinearRegression(option){this.newMethod=IChartDrawPicture;//派生
|
|
6050
6051
|
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawLinearRegression';this.PointCount=2;this.IsPointIn=this.IsPointIn_XYValue_Line;this.ChartBorder;this.Lines=[];//回归线 { XValue:, YValue: }
|
|
@@ -6054,7 +6055,7 @@ this.ExtendLineDash=[5,5];//延长线虚线
|
|
|
6054
6055
|
this.MaxPoint;this.MinPoint;if(option){if(option.IsShowMaxMinLine==true)this.IsShowMaxMinLine=true;if(option.IsShowExtendLine==true)this.IsShowExtendLine=true;}//导入
|
|
6055
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;}};//导出
|
|
6056
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(){//拖拽完成 把点移动到线段头尾
|
|
6057
|
-
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=移动)
|
|
6058
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);
|
|
6059
6060
|
var linear=this.Calculate(kPoint);//JSConsole.Chart.Log('[ChartDrawLinearRegression::Draw] linear', linear);
|
|
6060
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);//画点
|
|
@@ -6073,22 +6074,22 @@ this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath
|
|
|
6073
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))//前收盘无效, 取上一个交易日的收盘价
|
|
6074
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;};}//画图工具-标价线 支持横屏
|
|
6075
6076
|
function ChartDrawPriceLine(){this.newMethod=IChartDrawPicture;//派生
|
|
6076
|
-
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);//画点
|
|
6077
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 支持横屏
|
|
6078
6079
|
function ChartDrawPriceLineV2(){this.newMethod=IChartDrawPicture;//派生
|
|
6079
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;//标题
|
|
6080
6081
|
this.Super_SetOption=this.SetOption;//父类函数
|
|
6081
|
-
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();
|
|
6082
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//框架内部显示
|
|
6083
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//框架内部显示
|
|
6084
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(){};}//画图工具-竖线 支持横屏
|
|
6085
6086
|
function ChartDrawVerticalLine(){this.newMethod=IChartDrawPicture;//派生
|
|
6086
|
-
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);//画点
|
|
6087
6088
|
this.Canvas.restore();};}//画图工具-波浪尺
|
|
6088
6089
|
function ChartDrawWaveRuler(){this.newMethod=IChartDrawPicture;//派生
|
|
6089
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;;//刻度尺长度
|
|
6090
6091
|
this.RulerLineWidth=g_JSChartResource.ChartDrawWaveRuler.RulerLineWidth;this.MaxScaleRuler=g_JSChartResource.ChartDrawWaveRuler.MaxScaleRuler;//尺子最大的高度比
|
|
6091
|
-
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);}//绘制波浪信息
|
|
6092
6093
|
if(drawPoint.length==3)this.DrawWaveRuler(drawPoint);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
|
|
6093
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();//刻度线长度
|
|
6094
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个点的
|
|
@@ -6096,12 +6097,12 @@ function ChartDrawWaveRuler2Point(){this.newMethod=IChartDrawPicture;//派生
|
|
|
6096
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;;//刻度尺长度
|
|
6097
6098
|
this.RulerLineWidth=g_JSChartResource.ChartDrawWaveRuler2Point.RulerLineWidth;this.MaxScaleRuler=g_JSChartResource.ChartDrawWaveRuler2Point.MaxScaleRuler;//尺子最大的高度比
|
|
6098
6099
|
this.Font=g_JSChartResource.ChartDrawWaveRuler2Point.MaxScaleRuler;this.IsHScreen=false;this.Super_SetOption=this.SetOption;//父类函数
|
|
6099
|
-
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);//画点
|
|
6100
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();//刻度线长度
|
|
6101
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);}}};}//画图工具-箱型线 支持横屏
|
|
6102
6103
|
function ChartDrawBox(){this.newMethod=IChartDrawPicture;//派生
|
|
6103
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(){//拖拽完成 把点移动到线段头尾
|
|
6104
|
-
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));//均价
|
|
6105
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);//画点
|
|
6106
6107
|
//绘制信息
|
|
6107
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);//均价
|
|
@@ -6110,7 +6111,7 @@ else this.DrawText(avPriceText,klineBorder.Left,y,textOffset,textOffset);//均
|
|
|
6110
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线的信息
|
|
6111
6112
|
this.PointToValue_Backup=this.PointToValue;this.PointToValue=function(){this.OnFinish();this.PointToValue_Backup();};//移动或创建完成
|
|
6112
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轴坐标调整
|
|
6113
|
-
}};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);
|
|
6114
6115
|
this.ClipFrame();this.SetLineWidth();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.CalculatePointInfo(drawPoint);if(this.Status==10)//绘制完成
|
|
6115
6116
|
{this.DrawEx();}else//绘制中只画连线
|
|
6116
6117
|
{for(var i=1;i<drawPoint.length;++i){this.DrawLine(drawPoint[i-1],drawPoint[i]);}}this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
|
|
@@ -6140,7 +6141,7 @@ this.DrawLine({X:ptEnd.X,Y:y},{X:ptEnd.X+100,Y:y});//文字
|
|
|
6140
6141
|
this.Canvas.fillText(price.toFixed(2),ptEnd.X-5,y);}this.Canvas.setLineDash([]);};}//画图工具-水平线段
|
|
6141
6142
|
function ChartDrawHLineSegment(){this.newMethod=IChartDrawPicture;//派生
|
|
6142
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(){//拖拽完成 把点移动到线段头尾
|
|
6143
|
-
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=移动)
|
|
6144
6145
|
{this.DrawLine(ptStart,ptEnd,false);}else{//var kPoint=this.PointToKLine([ptStart,ptEnd]);
|
|
6145
6146
|
this.DrawVerticalLine(ptStart,ptEnd);}this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
|
|
6146
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
|
|
@@ -6174,7 +6175,7 @@ this.AryNoteText=[{Text:"输入内容 ......"}];/*
|
|
|
6174
6175
|
this.ArrowSize=g_JSChartResource.ChartDrawNote.ArrowSize;this.OnlyMoveXIndex=true;this.IsSupportMagnet=false;//内部变量
|
|
6175
6176
|
this.PtButtom;this.PtTop;this.TextRect=null;//文字区域
|
|
6176
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);};//导出成存储格式
|
|
6177
|
-
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);
|
|
6178
6179
|
this.Canvas.restore();this.DrawPoint([ptSelected]);//画点
|
|
6179
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=向上箭头
|
|
6180
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=向上箭头
|
|
@@ -6185,18 +6186,18 @@ this.GetTextFont=function(){if(!this.FontOption||!this.FontOption.Family||this.F
|
|
|
6185
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;//文本最大宽度
|
|
6186
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};//内部变量
|
|
6187
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);};//导出成存储格式
|
|
6188
|
-
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)//计算输出高度和宽度
|
|
6189
6190
|
{var item=this.AryText[i];if(!item)continue;if(height>0)height+=this.LineSpace;if(this.TextMaxWidth>50&&item.Text)//限制宽度
|
|
6190
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]);//画点
|
|
6191
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;//派生
|
|
6192
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};//内部变量
|
|
6193
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;}};//导出成存储格式
|
|
6194
|
-
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]);//画点
|
|
6195
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);}//绘制一个点
|
|
6196
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;//派生
|
|
6197
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;//内部变量
|
|
6198
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);};//导出成存储格式
|
|
6199
|
-
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);//画点
|
|
6200
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);//绘制一个点
|
|
6201
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);};}/////////////////////////////////////////////////////////////////////////////
|
|
6202
6203
|
// 0=中心点 1=起始点(决定半径长度) 2=结束点(任意位置)
|
|
@@ -6214,7 +6215,7 @@ this.ValueToPoint_V2=function(aryValue){if(!IFrameSplitOperator.IsNonEmptyArray(
|
|
|
6214
6215
|
{if(this.PointStatus==2&&this.LastPoint)//第3个点
|
|
6215
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点个数
|
|
6216
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对调
|
|
6217
|
-
{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);//画点
|
|
6218
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]);//求半径
|
|
6219
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;//半径
|
|
6220
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;//半径
|
|
@@ -6230,7 +6231,7 @@ var a=aryPoint[0].X-ptLast.X;var b=aryPoint[0].Y-ptLast.Y;var c=Math.sqrt(a*a+b*
|
|
|
6230
6231
|
function ChartFibRetracement(){this.newMethod=IChartDrawPicture;//派生
|
|
6231
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};//延长线
|
|
6232
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;};//导出成存储格式
|
|
6233
|
-
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);//画点
|
|
6234
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);
|
|
6235
6236
|
//var diffValue=Math.abs(this.Value[0].YValue-this.Value[1].YValue); //差值
|
|
6236
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;//上一个点
|
|
@@ -6238,7 +6239,7 @@ var clrArea=null;this.Canvas.font=this.Font;if(this.ExtendLine.Left)this.Canvas.
|
|
|
6238
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);//文字
|
|
6239
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;//派生
|
|
6240
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;};//导出成存储格式
|
|
6241
|
-
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);//画点
|
|
6242
6243
|
this.Canvas.restore();};//获取在第几象限
|
|
6243
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);//象限
|
|
6244
6245
|
var aryYData=this.GetArrayAreaConfig(this.AreaConfig.AryYData);var ptPre=null;//上一个点
|
|
@@ -6247,11 +6248,11 @@ var text=''+item.Value;this.Canvas.fillStyle=item.Color;this.Canvas.fillText(tex
|
|
|
6247
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);//文字
|
|
6248
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;//派生
|
|
6249
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};//延长线
|
|
6250
|
-
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);//画点
|
|
6251
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});//文字输出
|
|
6252
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;//派生
|
|
6253
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};//延长线
|
|
6254
|
-
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);//画点
|
|
6255
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)});//文字输出
|
|
6256
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}
|
|
6257
6258
|
this.StorageKey;this.GetEventCallback;//事件回调
|
|
@@ -9413,7 +9414,8 @@ var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINANCE,Args:[7],FunctionName:"FINAN
|
|
|
9413
9414
|
if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.FunctionData.push(item);return;}if(callee.Name==='BETA')//beta需要下载上证指数
|
|
9414
9415
|
{this.IsNeedIndexData=true;return;}if(callee.Name=='UPCOUNT'||callee.Name=='DOWNCOUNT')//上涨下跌个数
|
|
9415
9416
|
{var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA,Args:args,FunctionName:callee.Name};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.NeedBlockIncreaseData.push(item);return;}if(callee.Name=='STKINDI'||callee.Name=='CALCSTOCKINDEX')//指标调用
|
|
9416
|
-
{var item={ID:JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX,Args:args,FunctionName:callee.Name};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.ExecuteIndex.push(item);return;}
|
|
9417
|
+
{var item={ID:JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX,Args:args,FunctionName:callee.Name};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.ExecuteIndex.push(item);return;}//"MA.MA1"(10,5,5)"
|
|
9418
|
+
if(callee.Type==Syntax.Literal){var item={ID:JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX,Args:args,FunctionName:callee.Value,DynamicName:callee.Value};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.ExecuteIndex.push(item);return;}if(callee.Name=='COVER_C'||callee.Name=='COVER_O'||callee.Name=='COVER_H'||callee.Name=='COVER_L'||callee.Name=='COVER_A'||callee.Name=='COVER_V')//跨周期函数
|
|
9417
9419
|
{var periodName=args[0].Value;var VAR_PERIOD_NAME=["MIN1","MIN5","MIN15","MIN30","MIN60","DAY","WEEK","MONTH","SEASON","YEAR"];if(VAR_PERIOD_NAME.indexOf(periodName)<0){var errorMessage=callee.Name+', \u8DE8\u5468\u671F\u51FD\u6570\u9519\u8BEF\uFF0C \u5468\u671F\u53EA\u652F\u6301\'MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,SEASON,YEAR\'';this.ThrowUnexpectedToken(token,errorMessage);}var valueName=JSComplierHelper.GetConvertValueName(callee.Name);var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_PERIOD_DATA,FunctionName:callee.Name,ValueName:valueName,PeriodName:periodName};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.PeriodSymbolData.push(item);return;}if(callee.Name=='SF')//Section finance
|
|
9418
9420
|
{var period=JS_EXECUTE_JOB_ID.GetSectionReportPeriod(args[0].Value,args[1].Value);//报告期
|
|
9419
9421
|
if(!period)return;var _jobID2=JS_EXECUTE_JOB_ID.GetSectionFinanceID(args[2].Value);if(!_jobID2)return;var sfkey=period.Year+'-'+period.Quarter;if(!this.IsNeedSectionFinance.has(sfkey)){var finacne={Period:period,Fields:new _set2.default([_jobID2])};this.IsNeedSectionFinance.set(sfkey,finacne);}else{var finacne=this.IsNeedSectionFinance.get(sfkey);if(!finacne.Fields.has(_jobID2))finacne.Fields.add(_jobID2);}return;}if(callee.Name=="LOADAPIDATA")//加载API数据
|
|
@@ -10786,7 +10788,16 @@ Period:indexInfo.PeriodID,//周期
|
|
|
10786
10788
|
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){_this42.RecvMemberScriptIndexData(outVar,job,symbolData);_this42.Execute.RunNextJob();},CallbackParam:indexInfo,Async:true,MaxRequestDataCount:this.MaxRequestDataCount+30*2,MaxRequestMinuteDayCount:this.MaxRequestMinuteDayCount+2,Arguments:indexInfo.Args,//Condition:this.Condition,
|
|
10787
10789
|
IsBeforeData:this.IsBeforeData,NetworkFilter:this.NetworkFilter,IsApiPeriod:this.IsApiPeriod,KLineRange:dateTimeRange//K线数据范围
|
|
10788
10790
|
};//执行脚本
|
|
10789
|
-
var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){_this42.ExecuteScriptIndexError(error,indexInfo);});}
|
|
10791
|
+
var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){_this42.ExecuteScriptIndexError(error,indexInfo);});};this.CallDynamicScriptIndex=function(job,varTable){var _this43=this;var callInfo=job.DynamicName;var indexInfo={Job:job,PeriodID:this.Period,Symbol:this.Symbol};if(!this.ReadIndexFunctionValue(callInfo,indexInfo))//读取指标
|
|
10792
|
+
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallDynamicScriptIndex() Error: \''+callInfo+'\' '+indexInfo.Error);}var systemIndex=new JSIndexScript();//系统指标
|
|
10793
|
+
var systemItem=systemIndex.Get(indexInfo.Name);if(!systemItem){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallDynamicScriptIndex() Error: \''+callInfo+'\' '+indexInfo.Name+' \u6307\u6807\u4E0D\u5B58\u5728');}indexInfo.SytemIndex=systemItem;if(!this.ReadDynamicIndexArgumentValue(job.Args,indexInfo,varTable)){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallDynamicScriptIndex() '+indexInfo.Name+' \u6307\u6807\u53C2\u6570\u9519\u8BEF : '+indexInfo.Error+' ');}JSConsole.Complier.Log('[JSSymbolData::CallMemberScriptIndex] call script index',indexInfo);var dateTimeRange=this.Data.GetDateRange();var option={HQDataType:this.DataType,Symbol:indexInfo.Symbol,Name:'',Right:this.Right,//复权
|
|
10794
|
+
Period:indexInfo.PeriodID,//周期
|
|
10795
|
+
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){_this43.RecvDynamicScriptIndexData(outVar,job,symbolData);_this43.Execute.RunNextJob();},CallbackParam:indexInfo,Async:true,MaxRequestDataCount:this.MaxRequestDataCount+30*2,MaxRequestMinuteDayCount:this.MaxRequestMinuteDayCount+2,Arguments:indexInfo.Args,//Condition:this.Condition,
|
|
10796
|
+
IsBeforeData:this.IsBeforeData,NetworkFilter:this.NetworkFilter,IsApiPeriod:this.IsApiPeriod,KLineRange:dateTimeRange//K线数据范围
|
|
10797
|
+
};//执行脚本
|
|
10798
|
+
var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){_this43.ExecuteScriptIndexError(error,indexInfo);});};this.ReadDynamicIndexArgumentValue=function(args,result,varTable){result.Args=[];for(var i=0;i<result.SytemIndex.Args.length;++i)//复制参数
|
|
10799
|
+
{var item=result.SytemIndex.Args[i];result.Args.push({Value:item.Value,Name:item.Name,IsDefault:true});}if(!IFrameSplitOperator.IsNonEmptyArray(args))return true;for(var i=0;i<args.length;++i){var item=args[i];var argItem=result.Args[i];if(!argItem)continue;if(item.Type==Syntax.Literal){argItem.Value=item.Value;argItem.IsDefault=false;}else if(item.Type==Syntax.Identifier)//支持传参
|
|
10800
|
+
{if(varTable.has(item.Name)){argItem.Value=varTable.get(item.Name);argItem.IsDefault=false;}}}return true;};/*****************************************************************************************************************************
|
|
10790
10801
|
脚本调用
|
|
10791
10802
|
|
|
10792
10803
|
STKINDI
|
|
@@ -10799,17 +10810,21 @@ var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){_t
|
|
|
10799
10810
|
CALCSTOCKINDEX('SH600000','KDJ',3)表示上证600000的KDJ指标第3个输出即J之值,第一个参数可在前面加SZ(深市),SH(沪市),BJ(京市),或市场_,,
|
|
10800
10811
|
CALCSTOCKINDEX('47_IFL0','MACD',2)表示IFL0品种的MACD指标第2个输出值.
|
|
10801
10812
|
|
|
10802
|
-
|
|
10813
|
+
"MA.MA1"(6,12,18)
|
|
10814
|
+
|
|
10815
|
+
*******************************************************************************************************************************/this.CallScriptIndex=function(job,varTable){var _this44=this;if(job.Member)return this.CallMemberScriptIndex(job);if(job.DynamicName)return this.CallDynamicScriptIndex(job,varTable);if(!job.Args||!(job.Args.length>=2)){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() Error: '+job.FunctionName+' \u53C2\u6570\u9519\u8BEF');}var indexInfo={Job:job,PeriodID:this.Period};if(!this.ReadSymbolArgumentValue(job.Args[0],indexInfo))//读取代码
|
|
10803
10816
|
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() Error: '+indexInfo.Error);}if(!this.ReadIndexFunctionValue(job.Args[1],indexInfo))//读取指标
|
|
10804
10817
|
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() Error: '+indexInfo.Error);}if(job.FunctionName=="CALCSTOCKINDEX"){if(!this.ReadIndexFunctionOut(job.Args[2],indexInfo))//读取返回值索引
|
|
10805
10818
|
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() Error: '+indexInfo.Error);}}var systemIndex=new JSIndexScript();var systemItem=systemIndex.Get(indexInfo.Name);if(!systemItem){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() '+indexInfo.Name+' \u6307\u6807\u4E0D\u5B58\u5728');}indexInfo.SytemIndex=systemItem;//系统指标
|
|
10806
10819
|
if(!this.ReadIndexArgumentValue(job.Args,indexInfo)){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() '+indexInfo.Name+' \u6307\u6807\u53C2\u6570\u9519\u8BEF : '+indexInfo.Error+' ');}JSConsole.Complier.Log('[JSSymbolData::CallScriptIndex] call script index',indexInfo);var DateTimeRange=null;if(this.Data&&this.Data.Data.length>0){var start=this.Data.Data[0];var end=this.Data.Data[this.Data.Data.length-1];DateTimeRange={Start:{Date:start.Date,Time:start.Time},End:{Date:end.Date,Time:end.Time}};}var option={HQDataType:this.DataType,Symbol:indexInfo.Symbol,Name:'',Right:this.Right,//复权
|
|
10807
10820
|
Period:indexInfo.PeriodID,//周期
|
|
10808
|
-
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){
|
|
10821
|
+
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){_this44.RecvScriptIndexData(outVar,job,symbolData);_this44.Execute.RunNextJob();},CallbackParam:indexInfo,Async:true,MaxRequestDataCount:this.MaxRequestDataCount+30*2,MaxRequestMinuteDayCount:this.MaxRequestMinuteDayCount+2,Arguments:indexInfo.Args,//Condition:this.Condition,
|
|
10809
10822
|
IsBeforeData:this.IsBeforeData,NetworkFilter:this.NetworkFilter,IsApiPeriod:this.IsApiPeriod,KLineRange:DateTimeRange//K线数据范围
|
|
10810
10823
|
};//执行脚本
|
|
10811
|
-
var run=JSComplier.Execute(indexInfo.SytemIndex.Script,option,function(error,indexInfo){
|
|
10824
|
+
var run=JSComplier.Execute(indexInfo.SytemIndex.Script,option,function(error,indexInfo){_this44.ExecuteScriptIndexError(error,indexInfo);});};this.RecvMemberScriptIndexData=function(outVar,indexInfo,symbolData){JSConsole.Complier.Log('[JSSymbolData::RecvMemberScriptIndexData] ',outVar,indexInfo,symbolData);var kLine=symbolData.Data.Data;var aryOutVar=outVar;var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);var member=indexInfo.Job.Member;var objName=member.Object.Name;var propertyName=member.Property.Name;var memberValue={};if(this.Execute.VarTable.has(objName))memberValue=this.Execute.VarTable.get(objName);else this.Execute.VarTable.set(objName,memberValue);//保存所有的指标数据, 下面用到了就可以不用算了
|
|
10812
10825
|
for(var i in data){var key=outVar[i].Name;if(indexInfo.Period)key+='#'+indexInfo.Period;//带周期的变量
|
|
10826
|
+
memberValue[key]=data[i].Data;}};this.RecvDynamicScriptIndexData=function(outVar,indexInfo,symbolData){JSConsole.Complier.Log('[JSSymbolData::RecvDynamicScriptIndexData] ',outVar,indexInfo,symbolData);var kLine=symbolData.Data.Data;var aryOutVar=outVar;var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);var objName=indexInfo.Name;var memberValue={};if(this.Execute.VarTable.has(objName))memberValue=this.Execute.VarTable.get(objName);else this.Execute.VarTable.set(objName,memberValue);var strValue="";for(var i=0;i<indexInfo.Args.length;++i){var item=indexInfo.Args[i];if(item.IsDefault===false){if(strValue.length>0)strValue+=",";strValue+=''+item.Value;}}var strArgs='('+strValue+')';//保存所有的指标数据, 下面用到了就可以不用算了
|
|
10827
|
+
for(var i=0;i<data.length;++i){var key=outVar[i].Name+'#'+strArgs;if(indexInfo.Period)key+='#'+indexInfo.Period;//带周期的变量
|
|
10813
10828
|
memberValue[key]=data[i].Data;}};this.RecvScriptIndexData=function(outVar,indexInfo,symbolData){var key=this.GenerateScriptIndexKey(indexInfo);JSConsole.Complier.Log('[JSSymbolData::RecvScriptIndexData] ',outVar,indexInfo,symbolData,key);var kLine=symbolData.Data.Data;var aryOutVar=outVar;if(indexInfo.Out){for(var i=0;i<outVar.length;++i){var item=outVar[i];if(item.Name==indexInfo.Out){aryOutVar=[item];break;}}var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);this.ScriptIndexOutData.set(key,data[0].Data);}else if(IFrameSplitOperator.IsPlusNumber(indexInfo.OutIndex)){var index=indexInfo.OutIndex-1;aryOutVar=[outVar[index]];var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);this.ScriptIndexOutData.set(key,data[0].Data);}else{var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);var result={__Type__:"Object"};for(var i in data){var item=data[i];result[item.Name]=item.Data;}this.ScriptIndexOutData.set(key,result);}};this.ExecuteScriptIndexError=function(error,indexInfo){var token=indexInfo.Job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() '+indexInfo.Name+' \u6307\u6807\u6267\u884C\u9519\u8BEF : '+error+' ');};this.GetScriptIndexOutData=function(args,node,funcName){var indexInfo={PeriodID:this.Period};if(!this.ReadSymbolArgumentValue(args[0],indexInfo))//读取代码
|
|
10814
10829
|
this.Execute.ThrowUnexpectedNode(node,funcName+'() \u80A1\u7968\u4EE3\u7801\u9519\u8BEF: '+indexInfo.Error);if(!this.ReadIndexFunctionValue(args[1],indexInfo))//读取指标
|
|
10815
10830
|
this.Execute.ThrowUnexpectedNode(node,funcName+'() \u6307\u6807\u9519\u8BEF: '+indexInfo.Error);if(funcName=="CALCSTOCKINDEX"){if(!this.ReadIndexFunctionOut(args[2],indexInfo))//读取返回值索引
|
|
@@ -10951,6 +10966,7 @@ JOB_DOWNLOAD_CUSTOM_API_DATA:30000,//自定义数据
|
|
|
10951
10966
|
//KDJ.K , KDJ.K#WEEK
|
|
10952
10967
|
//STKINDI('600000.sh','MA.MA1#WEEK',5,10,20,30,60,120);
|
|
10953
10968
|
//CALCSTOCKINDEX('SH600000','KDJ',3)表示上证600000的KDJ指标第3个输出即J之值,第一个参数可在前面加SZ(深市),SH(沪市),BJ(京市)
|
|
10969
|
+
//"MA.MA(5,5,5)" 调用动态指标
|
|
10954
10970
|
JOB_EXECUTE_INDEX:30010,JOB_RUN_SCRIPT:10000,//执行脚本
|
|
10955
10971
|
//融资融券
|
|
10956
10972
|
GetMarginJobID:function GetMarginJobID(value){var dataMap=new _map2.default([[1,JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE],//MARGIN(1) 融资融券余额
|
|
@@ -10973,7 +10989,7 @@ GetMarginJobID:function GetMarginJobID(value){var dataMap=new _map2.default([[1,
|
|
|
10973
10989
|
[9,JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_TOPMANAGERS],//NEWS(9) 高管要闻
|
|
10974
10990
|
[10,JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_PLEDGE]]);if(dataMap.has(value))return dataMap.get(value);return null;},//财务截面数据 分报告期
|
|
10975
10991
|
GetSectionFinanceID:function GetSectionFinanceID(value){var dataMap=new _map2.default([['流动资产',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_01],['货币资金',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_02],['存货',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_03],['流动负债',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_04],['非流动负债',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_05],['三项费用',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_06],['投资收益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_07],['归母净利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_08],['扣非净利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_09],['扣非每股收益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_10],['加权平均净资产收益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_11],['在建工程',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_12],['累计折旧',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_13],['少数股东利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_14],['汇兑损益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_15],['坏账计提',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_16],['固定资产',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_17],['当期折旧',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_18],['营业总收入',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_19],['主营业务利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_20],['营业利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_21],['净利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_22],['应收账款',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_23],['财务费用',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_24],['经营性现金流',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_25],['资产总计',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_26],['负债总计',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_27],['所有者权益总计',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_28],['毛利率',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_29],['每股资本公积金',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_30],['每股未分配利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_31],['每股收益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_32],['每股净资产',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_33],['每股经营性现金流',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_34],['扣非净利润涨幅',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_35],['扣非净利润涨速',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_36],['净利润涨幅',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_37],['资产负债率',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_38],['利润同比',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_39]]);if(dataMap.has(value))return dataMap.get(value);return null;},//获取报告期 2018, 1
|
|
10976
|
-
GetSectionReportPeriod:function GetSectionReportPeriod(year,quarter){if(year>=2000&&quarter>=1&&quarter<=4)return{Year:year,Quarter:quarter};return null;}};function JSExecute(ast,option){var
|
|
10992
|
+
GetSectionReportPeriod:function GetSectionReportPeriod(year,quarter){if(year>=2000&&quarter>=1&&quarter<=4)return{Year:year,Quarter:quarter};return null;}};function JSExecute(ast,option){var _this45=this;this.AST=ast;//语法树
|
|
10977
10993
|
this.ErrorHandler=new ErrorHandler();this.VarTable=new _map2.default();//变量表
|
|
10978
10994
|
this.VarDrawTable=new _map2.default();//绘图变量表
|
|
10979
10995
|
this.OutVarTable=[];//输出变量
|
|
@@ -11019,7 +11035,7 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
11019
11035
|
['DRAWNULL',null],["NULL",null],["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null],["TR",null],//真实波幅
|
|
11020
11036
|
["AUTOFILTER",null]]);this.SymbolData=new JSSymbolData(this.AST,option,this);this.Algorithm=new JSAlgorithm(this.ErrorHandler,this.SymbolData);this.Draw=new JSDraw(this.ErrorHandler,this.SymbolData);this.JobList=[];//执行的任务队列
|
|
11021
11037
|
this.UpdateUICallback=null;//回调
|
|
11022
|
-
this.CallbackParam=null;this.IsSectionMode=false;if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam){this.CallbackParam=option.CallbackParam;if(this.CallbackParam.HQChart)this.GetEventCallback=function(id){return
|
|
11038
|
+
this.CallbackParam=null;this.IsSectionMode=false;if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam){this.CallbackParam=option.CallbackParam;if(this.CallbackParam.HQChart)this.GetEventCallback=function(id){return _this45.CallbackParam.HQChart.GetEventCallback(id);};}if(option.Arguments)this.Arguments=option.Arguments;if(option.IsSectionMode)this.IsSectionMode=option.IsSectionMode;if(option.Self)this.IndexCtrl=option.Self;//调试模式信息
|
|
11023
11039
|
if(IFrameSplitOperator.IsNumber(option.Debug))this.Debug=option.Debug;if(option.DebugFilter)this.DebugFilter=option.DebugFilter;}this.Execute=function(){this.OutVarTable=[];this.VarTable=new _map2.default();this.VarDrawTable=new _map2.default();//绘图变量表
|
|
11024
11040
|
JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i127 in this.Arguments)//预定义的变量
|
|
11025
11041
|
{var _item18=this.Arguments[_i127];this.VarTable.set(_item18.Name,_item18.Value);}this.RunNextJob();};this.RunNextJob=function(){if(this.JobList.length<=0)return;JSConsole.Complier.Log('[JSExecute::Execute] JobList',this.JobList);var jobItem=this.JobList.shift();switch(jobItem.ID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA:return this.SymbolData.GetSymbolData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_PERIOD_DATA:return this.SymbolData.GetSymbolPeriodData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA:return this.SymbolData.GetIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA:return this.SymbolData.GetLatestIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA:return this.SymbolData.GetIndexIncreaseData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA:return this.SymbolData.GetLatestData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA://量比
|
|
@@ -11044,7 +11060,7 @@ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_TOPMANAGERS://高管要闻
|
|
|
11044
11060
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_PLEDGE://股权质押
|
|
11045
11061
|
return this.SymbolData.GetNewsAnalysisData(jobItem.ID);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_HK_TO_SHSZ:return this.SymbolData.GetHKToSHSZData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_SF:return this.SymbolData.GetSectionFinanceData(jobItem);//财务截面报告数据
|
|
11046
11062
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINONE:return this.SymbolData.GetFinOne(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINVALUE:return this.SymbolData.GetFinValue(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINANCE:return this.SymbolData.GetFinance(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_GPJYVALUE:return this.SymbolData.GetGPJYValue(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SCJYVALUE:return this.SymbolData.GetSCJYValue(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VARIANT://CAPITAL, TOTALCAPITAL
|
|
11047
|
-
return this.SymbolData.GetVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_VARIANT_DATA:return this.SymbolData.GetCustomVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_FUNCTION_DATA:return this.SymbolData.GetCustomFunctionData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_CUSTOM_API_DATA:return this.SymbolData.DownloadCustomAPIData(jobItem);case JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX:return this.SymbolData.CallScriptIndex(jobItem);case JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT:if(this.Debug===1&&this.DebugFilter)return this.DebugRun();else return this.Run();}};this.ReadSymbolData=function(name,node){switch(name){case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':case"OPI":case'VOLINSTK':case"SETTLE":case"QHJSJ":case"ZSTJJ":case"ISEQUAL"://平盘
|
|
11063
|
+
return this.SymbolData.GetVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_VARIANT_DATA:return this.SymbolData.GetCustomVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_FUNCTION_DATA:return this.SymbolData.GetCustomFunctionData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_CUSTOM_API_DATA:return this.SymbolData.DownloadCustomAPIData(jobItem);case JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX:return this.SymbolData.CallScriptIndex(jobItem,this.VarTable);case JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT:if(this.Debug===1&&this.DebugFilter)return this.DebugRun();else return this.Run();}};this.ReadSymbolData=function(name,node){switch(name){case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':case"OPI":case'VOLINSTK':case"SETTLE":case"QHJSJ":case"ZSTJJ":case"ISEQUAL"://平盘
|
|
11048
11064
|
case"ISUP"://收阳
|
|
11049
11065
|
case"ISDOWN"://收阴
|
|
11050
11066
|
return this.SymbolData.GetSymbolCacheData(name);case'VOLR':return this.SymbolData.GetVolRateCacheData(node);case"TR"://TR,求真实波幅.
|
|
@@ -11082,10 +11098,10 @@ else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","
|
|
|
11082
11098
|
{var _outVar13=this.VarTable.get(_varName3);var _value7={Name:_varName3,Data:_outVar13,Type:9};if(color)_value7.Color=color;if(upColor)_value7.UpColor=upColor;if(downColor)_value7.DownColor=downColor;if(lineWidth)_value7.LineWidth=lineWidth;this.OutVarTable.push(_value7);}else if(colorStick&&_varName3)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
11083
11099
|
{var _outVar14=this.VarTable.get(_varName3);var _value8={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value8.LineWidth=lineWidth;if(color)_value8.Color=color;if(upColor)_value8.UpColor=upColor;if(downColor)_value8.DownColor=downColor;this.OutVarTable.push(_value8);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value9={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value9.LineWidth=lineWidth;if(isShow==false)_value9.IsShow=false;if(isExData==true)_value9.IsExData=true;if(isDotLine==true)_value9.IsDotLine=true;if(isOverlayLine==true)_value9.IsOverlayLine=true;if(isNoneName==true)_value9.NoneName=true;if(isShowTitle==false)_value9.IsShowTitle=false;if(stepLine==true)_value9.Type=7;this.OutVarTable.push(_value9);}else if(_draw3)//画图函数
|
|
11084
11100
|
{var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(lineWidth)outVar.LineWidth=lineWidth;if(isDrawAbove)outVar.IsDrawAbove=true;if(isDrawCenter)outVar.IsDrawCenter=true;if(isDrawBelow)outVar.IsDrawBelow=true;if(drawAlign>=0)outVar.DrawAlign=drawAlign;if(drawVAlign>=0)outVar.DrawVAlign=drawVAlign;if(fontSize>0)outVar.DrawFontSize=fontSize;if(bgConfig)outVar.Background=bgConfig;if(vLineConfig)outVar.VerticalLine=vLineConfig;if(IFrameSplitOperator.IsNumber(xOffset))outVar.XOffset=xOffset;if(IFrameSplitOperator.IsNumber(yOffset))outVar.YOffset=yOffset;if(IFrameSplitOperator.IsBool(isFirstDraw))outVar.IsFirstDraw=isFirstDraw;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value10={Name:_varName3,Data:_outVar16,Type:0};if(color)_value10.Color=color;if(lineWidth)_value10.LineWidth=lineWidth;if(isShow==false)_value10.IsShow=false;if(isExData==true)_value10.IsExData=true;if(isDotLine==true)_value10.IsDotLine=true;if(isOverlayLine==true)_value10.IsOverlayLine=true;if(isShowTitle==false)_value10.IsShowTitle=false;if(stepLine==true)_value10.Type=7;this.OutVarTable.push(_value10);}}}};this.ReadUnaryExpression=function(item,varInfo){var argument=item.Argument;var outVar=null;if(argument.Type==Syntax.Literal){outVar=argument.Value;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.Identifier){var varName=argument.Name;outVar=this.ReadVariable(varName,item.Expression);if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.BinaryExpression){outVar=argument.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.CallExpression){var callItem=argument;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){return false;}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){return false;}else{outVar=callItem.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}}else{return false;}if(item.Operator=='-'){if(outVar)outVar=this.Algorithm.Subtract(0,outVar);}varInfo.OutVar=outVar;return true;};this.GetOutIconData=function(cond,iconDraw){if(Array.isArray(cond)){for(var i=0;i<cond.length&&i<iconDraw.DrawData.length;++i){var item=cond[i];if(item<=0)iconDraw.DrawData[i]=null;}return iconDraw;}if(cond)return iconDraw;return null;};this.GetSoundEvent=function(){if(!this.GetEventCallback)return null;return this.GetEventCallback(JSCHART_EVENT_ID.ON_PLAY_SOUND);};this.Run=function(){try{var data=this.RunAST();//执行脚本
|
|
11085
|
-
JSConsole.Complier.Log('[JSComplier.Run] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.Run] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}}catch(error){JSConsole.Complier.Log(error);if(error.Job){JSConsole.Complier.Log('[JSComplier.Run] download job and reexectue',error.Job);this.JobList.push(error.Job);this.JobList.push({ID:JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT});this.Execute();}else if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.DebugRun_End=function(){var data=this.OutVarTable;JSConsole.Complier.Log('[JSComplier.DebugRun_End] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.DebugRun_End] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}};this.DebugRun_Next=function(debugCtrl){var
|
|
11086
|
-
this.DebugRun=function(){var
|
|
11101
|
+
JSConsole.Complier.Log('[JSComplier.Run] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.Run] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}}catch(error){JSConsole.Complier.Log(error);if(error.Job){JSConsole.Complier.Log('[JSComplier.Run] download job and reexectue',error.Job);this.JobList.push(error.Job);this.JobList.push({ID:JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT});this.Execute();}else if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.DebugRun_End=function(){var data=this.OutVarTable;JSConsole.Complier.Log('[JSComplier.DebugRun_End] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.DebugRun_End] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}};this.DebugRun_Next=function(debugCtrl){var _this46=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this46.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
|
|
11102
|
+
this.DebugRun=function(){var _this47=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this47.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var _i130 in node.Expression){var _item20=node.Expression[_i130];this.VisitNode(_item20);}};//函数调用
|
|
11087
11103
|
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var i=0;i<node.Arguments.length;++i){var item=node.Arguments[i];var value;if(funcName==="IFC"&&i>=1)break;//IFC先处理第1个条件参数
|
|
11088
|
-
if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);args.push(value);}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
|
|
11104
|
+
if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);args.push(value);}if(node.Callee.Type==Syntax.Literal){var dynamicName=node.Callee.Value;var aryValue=dynamicName.split(".");if(aryValue.length!=2){this.ThrowUnexpectedNode(node,'\u8C03\u7528\u6307\u6807\u683C\u5F0F\''+dynamicName+'\'\u9519\u8BEF');}var name=aryValue[0];var outName=aryValue[1];var strValue="";for(var i=0;i<args.length;++i){var value=args[i];if(strValue.length>0)strValue+=",";strValue+=''+value;}var strArgs='('+strValue+')';var key=outName+'#'+strArgs;node.Out=[];if(!this.VarTable.has(name))return node.Out;var indexData=this.VarTable.get(name);var value=indexData[key];if(value)node.Out=value;return node.Out;}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
|
|
11089
11105
|
var bResult=this.Algorithm.IFC(args[0]);var item=bResult?node.Arguments[1]:node.Arguments[2];var value;if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);node.Out=value;if(item.Draw)node.Draw=item.Draw;return node.Out;}//JSConsole.Complier.Log('[JSExecute::VisitCallExpression]' , funcName, '(', args.toString() ,')');
|
|
11090
11106
|
if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}switch(funcName){case'DYNAINFO'://行情最新数据
|
|
11091
11107
|
node.Out=this.SymbolData.GetLatestCacheData(args[0]);break;case'STICKLINE':node.Draw=this.Draw.STICKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT':node.Draw=this.Draw.DRAWTEXT(args[0],args[1],args[2]);node.Out=[];break;case'DRAWTEXT_FIX':node.Draw=this.Draw.DRAWTEXT_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'SUPERDRAWTEXT':node.Draw=this.Draw.SUPERDRAWTEXT(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWICON':node.Draw=this.Draw.DRAWICON(args[0],args[1],args[2]);node.Out=[];break;case"ICON":node.Draw=this.Draw.ICON(args[0],args[1]);node.Out=[];break;case"TIPICON":node.Draw=this.Draw.TIPICON(args[0],args[1],args[2],args[3]);node.Out=[];break;case"BACKGROUND":node.Draw=this.Draw.BACKGROUND(args[0],args[1],args[2],args[3],args[4],args[5]);node.Out=[];break;case"CKLINE":node.Draw=this.Draw.CKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWLINE':node.Draw=this.Draw.DRAWLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData;break;case'DRAWBAND':node.Draw=this.Draw.DRAWBAND(args[0],args[1],args[2],args[3]);node.Out=[];break;case"FILLRGN":if(args.length>=4)node.Draw=this.Draw.FILLRGN2(args);else node.Draw=this.Draw.FILLRGN(args[0],args[1],args[2]);node.Out=[];break;case"FLOATRGN":node.Draw=this.Draw.FLOATRGN(args);node.Out=[];break;case"FILLTOPRGN":node.Draw=this.Draw.FILLBGRGN(1,args);node.Out=[];break;case"FILLBOTTOMRGN":node.Draw=this.Draw.FILLBGRGN(0,args);node.Out=[];break;case"FILLVERTICALRGN":node.Draw=this.Draw.FILLVERTICALRGN(args);node.Out=[];break;case'DRAWKLINE':case"DRAWKLINE1":node.Draw=this.Draw.DRAWKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWKLINE_IF':node.Draw=this.Draw.DRAWKLINE_IF(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWOVERLAYKLINE":node.Draw=this.Draw.DRAWOVERLAYKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWCOLORKLINE":node.Draw=this.Draw.DRAWCOLORKLINE(args[0],args[1],args[2]);node.Out=[];break;case'PLOYLINE':case'POLYLINE':node.Draw=this.Draw.POLYLINE(args[0],args[1]);node.Out=node.Draw.DrawData;break;case'DRAWNUMBER':node.Draw=this.Draw.DRAWNUMBER(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Value;break;case"DRAWNUMBER_FIX":node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData.Value;break;case"DRAWCHANNEL":node.Draw=this.Draw.DRAWCHANNEL(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'RGB':node.Out=this.Draw.RGB(args[0],args[1],args[2]);break;case"RGBA":node.Out=this.Draw.RGBA(args[0],args[1],args[2],args[3]);break;case"UPCOLOR":node.Out=this.Draw.UPCOLOR(args[0]);break;case"DOWNCOLOR":node.Out=this.Draw.DOWNCOLOR(args[0]);break;case"XMOVE":node.Out=this.Draw.XMOVE(args[0]);break;case"YMOVE":node.Out=this.Draw.YMOVE(args[0]);break;case"FIRSTDRAW":node.Out=this.Draw.FIRSTDRAW(args[0]);break;case'PARTLINE':node.Draw=this.Draw.PARTLINE(args);node.Out=[];break;case'DRAWGBK':node.Draw=this.Draw.DRAWGBK(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWGBK2':node.Draw=this.Draw.DRAWGBK2(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWGBK_DIV":node.Draw=this.Draw.DRAWGBK_DIV(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT_LINE':node.Draw=this.Draw.DRAWTEXT_LINE(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'DRAWRECTREL':node.Draw=this.Draw.DRAWRECTREL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWTEXTREL":node.Draw=this.Draw.DRAWTEXTREL(args[0],args[1],args[2]);node.Out=[];break;case"DRAWTEXTABS":node.Draw=this.Draw.DRAWTEXTABS(args[0],args[1],args[2]);node.Out=[];break;case"DRAWOVERLAYLINE":node.Draw=this.Draw.DRAWOVERLAYLINE(args[0],args[1],args[2]);node.Out=node.Draw.DrawData.Data;break;case"DRAWSL":node.Draw=this.Draw.DRAWSL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"VERTLINE":node.Draw=this.Draw.VERTLINE(args[0],args[1]);node.Out=node.Draw.DrawData.Data;break;case"HORLINE":node.Draw=this.Draw.HORLINE(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case'CODELIKE':node.Out=this.SymbolData.CODELIKE(args[0]);break;case'NAMELIKE':case"NAMEINCLUDE":node.Out=this.SymbolData.NAMELIKE(args[1]);break;case'REFDATE':node.Out=this.SymbolData.REFDATE(args[0],args[1]);break;case'FINANCE':node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINONE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"GPJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"SCJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"MARGIN":node.Out=this.SymbolData.GetMarginCacheData(args[0],node);break;case"HK2SHSZ":node.Out=this.SymbolData.GetHKToSHSZCacheData(args[0],node);break;case"NEWS":node.Out=this.SymbolData.GetNewsAnalysisCacheData(args[0],node);break;case'UPCOUNT':case'DOWNCOUNT':node.Out=this.SymbolData.GetIndexIncreaseCacheData(funcName,args[0],node);break;case'SF':node.Out=this.SymbolData.GetSectionFinanceCacheData(args[0],args[1],args[2],node);break;case'LOADAPIDATA':node.Out=this.SymbolData.GetCustomApiData(args);break;case"STKINDI":case"CALCSTOCKINDEX":node.Out=this.SymbolData.GetScriptIndexOutData(args,node,funcName);break;case"SOUND":node.Draw=this.Draw.SOUND(args[0]);node.Out=[];break;case"PLAYSOUND":node.Draw=this.Draw.PLAYSOUND(args[0],args[1]);node.Out=[];break;case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':node.Out=this.SymbolData.GetOtherSymolCacheData({FunctionName:funcName,Args:args});break;case"INBLOCK":node.Out=this.SymbolData.IsInBlock(args[0],node);break;case'COVER_C':case'COVER_O':case'COVER_H':case'COVER_L':case'COVER_A':case'COVER_V':if(args.length==2)return this.SymbolData.GetSymbolPeriodCacheData2(JSComplierHelper.GetConvertValueName(funcName),args[0],args[1]);return this.SymbolData.GetSymbolPeriodCacheData(JSComplierHelper.GetConvertValueName(funcName),args[0]);case"SYSPARAM":return this.SymbolData.SysParam(args[0],this);case"TESTSKIP":var bExit=this.Algorithm.TESTSKIP(args[0],node);node.Out=null;if(bExit){this.Interrupt.Exit=true;if(node&&node.Marker){var marker=node.Marker;this.Interrupt.Line=marker.Line;this.Interrupt.Index=marker.Index;this.Interrupt.Column=marker.Column;}}break;//交易函数
|
|
@@ -11142,7 +11158,7 @@ else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf
|
|
|
11142
11158
|
{outValue+=",画成交量柱状线";var _value15={Name:_varName8,Draw:outValue,Type:6};this.OutVarTable.push(_value15);}else if(_varName8&&color){var _value16={Name:_varName8,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value16);}else if(draw)//画图函数
|
|
11143
11159
|
{var outVar={Name:_drawName,Draw:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName8)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
11144
11160
|
{outValue+=",画彩色柱状线";var _value17={Name:_varName8,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value17);}else if(_varName8){var _value18={Name:_varName8,Data:outValue,Type:0};this.OutVarTable.push(_value18);}}}}JSConsole.Complier.Log('[JSExplainer::Run]',this.VarTable);return this.OutVarTable;};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i133 in node.Expression){var _item23=node.Expression[_i133];this.VisitNode(_item23);}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var value=this.GetNodeValueEx(node.Argument);return'-'+value;}return node.Argument.Value;};//函数调用
|
|
11145
|
-
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i134 in node.Arguments){var _item24=node.Arguments[_i134];var value=void 0;if(_item24.Type==Syntax.BinaryExpression||_item24.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item24);else if(_item24.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item24);else value=this.GetNodeValue(_item24);args.push(value);}JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
|
|
11161
|
+
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i134 in node.Arguments){var _item24=node.Arguments[_i134];var value=void 0;if(_item24.Type==Syntax.BinaryExpression||_item24.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item24);else if(_item24.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item24);else value=this.GetNodeValue(_item24);args.push(value);}if(node.Callee.Type==Syntax.Literal){var dynamicName=node.Callee.Value;node.Out='\u6307\u6807\u5F15\u7528\''+dynamicName+'\'';return node.Out;}JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
|
|
11146
11162
|
["CON2STR",{Name:"CON2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["VAR2STR",{Name:"VAR2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["STR2CON",{Name:"STR2CON",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u6570\u5B57';}}],["STRLEN",{Name:"STRLEN",Param:{Count:1},ToString:function ToString(args){return'\u5F97\u5230'+args[0]+'\u5B57\u7B26\u4E32\u957F\u5EA6';}}],["STRCAT",{Name:"STRCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["VARCAT",{Name:"VARCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["STRSPACE",{Name:"STRSPACE",Param:{Count:1},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u52A0\u4E00\u7A7A\u683C';}}],["SUBSTR",{Name:"SUBSTR",Param:{Count:3},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u53D6\u4E00\u90E8\u5206';}}],["STRCMP",{Name:"STRCMP",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u548C\u5B57\u7B26\u4E32'+args[1]+'\u6BD4\u8F83';}}],["FINDSTR",{Name:"FINDSTR",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u67E5\u627E\u5B57\u7B26\u4E32'+args[1];}}],["NAMEINCLUDE",{Name:"NAMEINCLUDE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["CODELIKE",{Name:"CODELIKE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["INBLOCK",{Name:"AVEDEV",Param:{Count:1},ToString:function ToString(args){return'\u5C5E\u4E8E'+args[0]+'\u677F\u5757';}}],["STKINDI",{Name:"STKINDI",Param:{Dynamic:true},ToString:function ToString(args){return"指标引用";}}],["STRFORMAT",{Name:"STRFORMAT",Param:{Dynamic:true},ToString:function ToString(args){return'\u683C\u5F0F\u5316'+args[0]+'\u5B57\u7B26\u4E32';}}],["NAMELIKE",{Name:"NAMELIKE",Param:{Count:1},ToString:function ToString(args){return'\u54C1\u79CD\u540D\u79F0\u662F\u5426\u4EE5\''+args[0]+'\'\u5F00\u5934';}}],["HHVBARS",{Name:"HHVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';}}],["LLVBARS",{Name:"LLVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';}}]]);this.CallFunctionExplain=function(funcName,args,node){if(this.FUNCTION_INFO_LIST.has(funcName)){var item=this.FUNCTION_INFO_LIST.get(funcName);if(item.Param.Dynamic===true)//动态参数
|
|
11147
11163
|
{}else{if(item.Param.Count!=args.length)this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u53C2\u6570\u4E2A\u6570\u4E0D\u6B63\u786E. \u9700\u8981'+item.Param.Count+'\u4E2A\u53C2\u6570');}return item.ToString(args);}switch(funcName){case"CALCSTOCKINDEX":return'\u5F15\u7528'+args[0]+'\u7684'+args[1]+'\u6307\u6807\u7B2C'+args[2]+'\u4E2A\u8F93\u51FA\u503C';case"PEAK":case"PEAKBARS":case"ZIG":case"ZIGA":case"TROUGH":case"TROUGHBARS":return this.GetZIGExplain(funcName,args);case"FINANCE":return this.GetFinanceExplain(args);case"DYNAINFO":return this.GetDynainfoExplain(args);case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':return this.GetOtherSymbolExplain({FunctionName:funcName,Args:args},node);//绘图函数
|
|
11148
11164
|
case"PLOYLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6\u4EE5'+args[1]+'\u4F4D\u7F6E\u4E3A\u9876\u70B9\u753B\u6298\u7EBF\u8FDE\u63A5';case"DRAWLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u8D77\u70B9\uFF0C\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[2]+'\u65F6,\u5728'+args[3]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u7EC8\u70B9,'+args[4]+'\u8868\u793A\u662F\u5426\u5EF6\u957F';case"DRAWSL":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u659C\u7EBF\u7EBF\u6027\u56DE\u5F52,'+args[2]+'\u659C\u7387,'+args[3]+'\u957F\u5EA6,'+args[4]+'\u65B9\u5411';case"DRAWKLINE":case"DRAWKLINE1":return'K线';case"DRAWICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"DRAWTEXT":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWTEXT_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWNUMBER":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"DRAWNUMBER_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"RGB":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+']';case"RGBA":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+','+args[3]+']';case"DRAWBAND":return'画带状线';case"DRAWRECTREL":return"相对位置上画矩形.";case"DRAWGBK":return"填充背景";case"TIPICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"STICKLINE":var barType="";if(args[4]==-1)barType="虚线空心柱";else if(args[4]==0)barType="实心柱";else barType="实线空心柱";return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6, \u5728'+args[1]+'\u548C'+args[2]+'\u4F4D\u7F6E\u4E4B\u95F4\u753B\u67F1\u72B6\u7EBF,\u5BBD\u5EA6\u4E3A'+args[3]+','+barType;case"SELL":return"卖出平仓";case"BUY":return"买入开仓";case"SELLSHORT":return"卖出开仓";case"BUYSHORT":return"买入平仓";case"YMOVE":return;case"BACKGROUND":return"绘制背景";case"UPCOLOR":return'\u4E0A\u6DA8\u989C\u8272'+args[0];case"DOWNCOLOR":return'\u4E0B\u8DCC\u989C\u8272'+args[0];case"FIRSTDRAW":return"";default:this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u4E0D\u5B58\u5728');}};this.GetDynainfoExplain=function(args){var DATA_NAME_MAP=new _map2.default([[3,"前收盘价"],[4,"开盘价"],[5,"最高价"],[6,"最低价"],[7,"现价"],[8,'总量'],[9,"现量"],[10,"总金额"],[11,"均价"],[12,"日涨跌"],[13,"振幅"],[14,"涨幅"],[15,"开盘时的成交金额"],[16,"前5日每分钟均量"],[17,"量比"],[18,"上涨家数"],[19,"下跌家数"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u5373\u65F6\u884C\u60C5['+id+']';};this.GetFinanceExplain=function(args){var DATA_NAME_MAP=new _map2.default([[1,"总股本"],[2,"市场类型"],[3,"沪深品种类型"],[4,"沪深行业代码"],[5,"B股"],[6,"H股"],[7,"流通股本[股]"],[8,"股东人数[户]"],[9,"资产负债率%"],[10,"总资产"],[11,"流动资产"],[12,"固定资产"],[13,"无形资产"],[15,"流动负债"],[16,"少数股东权益"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u8D22\u52A1\u6570\u636E['+id+']';};this.GetZIGExplain=function(funcName,args){var value=args[0];if(value==0)value="开盘价";else if(value==1)value="最高价";else if(value==2)value="最低价";else if(value==3)value="收盘价";switch(funcName){case"PEAK":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u503C';case"PEAKBARS":return value+'\u7684'+args[1]+'5%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u4F4D\u7F6E';case"ZIG":return value+'\u7684'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"ZIGA":return value+'\u53D8\u5316'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"TROUGH":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u503C';case"TROUGHBARS":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u4F4D\u7F6E';}};this.GetColorExplain=function(colorName){var COLOR_MAP=new _map2.default([['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(COLOR_MAP.has(colorName))return COLOR_MAP.get(colorName);//COLOR 自定义色
|
|
@@ -11860,15 +11876,15 @@ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FILTER_DEAL_DATA);if(!event|
|
|
|
11860
11876
|
event.Callback(event,sendData,this);return sendData.Result;};this.EnableFilter=function(bEnable,option)//启动|关闭筛选
|
|
11861
11877
|
{this.EnableFilterData=bEnable;this.Data.Data=this.FilterData(this.SourceData.Data);this.Data.DataOffset=0;if(option){if(option.GotoLastPage==true)this.GotoLastPage();if(option.Redraw==true)this.Draw();}};this.CloneArray=function(aryData){var data=[];if(!IFrameSplitOperator.IsNonEmptyArray(aryData))return data;for(var i=0;i<aryData.length;++i){data.push(aryData[i]);}return data;};//创建
|
|
11862
11878
|
//windowCount 窗口个数
|
|
11863
|
-
this.Create=function(option){var
|
|
11879
|
+
this.Create=function(option){var _this48=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
11864
11880
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);//创建框架
|
|
11865
11881
|
this.Frame=new JSDealFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartSplashPaint.Frame=this.Frame;//创建表格
|
|
11866
|
-
var chart=new ChartDealList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return
|
|
11882
|
+
var chart=new ChartDealList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return _this48.GetEventCallback(id);};this.ChartPaint[0]=chart;if(option){if(IFrameSplitOperator.IsBool(option.IsSingleTable))chart.IsSingleTable=option.IsSingleTable;//单表模式
|
|
11867
11883
|
if(IFrameSplitOperator.IsBool(option.IsShowHeader))chart.IsShowHeader=option.IsShowHeader;//是否显示表头
|
|
11868
11884
|
if(IFrameSplitOperator.IsBool(option.IsShowLastPage))this.IsShowLastPage=option.IsShowLastPage;//是否显示最后一页
|
|
11869
11885
|
if(IFrameSplitOperator.IsNumber(option.BorderLine))this.Frame.BorderLine=option.BorderLine;//边框
|
|
11870
|
-
}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){
|
|
11871
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
11886
|
+
}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this48.OnKeyDown(e);},true);//键盘消息
|
|
11887
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this48.OnWheel(e);},true);//上下滚动消息
|
|
11872
11888
|
};this.Draw=function(){if(this.UIElement.width<=0||this.UIElement.height<=0)return;this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
11873
11889
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
11874
11890
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
@@ -12030,25 +12046,25 @@ this.DragPageCycle=true;//手机翻页循环
|
|
|
12030
12046
|
this.DragXScroll=null;//{Start:{x,y}, End:{x, y}}
|
|
12031
12047
|
this.IsDestroy=false;//是否已经销毁了
|
|
12032
12048
|
this.ChartDestory=function()//销毁
|
|
12033
|
-
{this.IsDestroy=true;this.StopAutoUpdate();};this.StopAutoDragScrollTimer=function(){JSConsole.Chart.Log("[JSReportChartContainer::StopAutoDragScrollTimer] stop ");this.EnablePageScroll=false;if(this.AutoDragScrollTimer!=null){clearTimeout(this.AutoDragScrollTimer);this.AutoDragScrollTimer=null;}};this.AutoScrollPage=function(step){var
|
|
12049
|
+
{this.IsDestroy=true;this.StopAutoUpdate();};this.StopAutoDragScrollTimer=function(){JSConsole.Chart.Log("[JSReportChartContainer::StopAutoDragScrollTimer] stop ");this.EnablePageScroll=false;if(this.AutoDragScrollTimer!=null){clearTimeout(this.AutoDragScrollTimer);this.AutoDragScrollTimer=null;}};this.AutoScrollPage=function(step){var _this49=this;this.AutoDragScrollTimer=setTimeout(function(){_this49.ChartOperator_Temp_ScrollPage(step);},300);};this.ChartOperator_Temp_ScrollPage=function(moveSetp){if(!this.EnablePageScroll)return;var reportChart=this.GetReportChart();if(!reportChart)return;if(moveSetp>0){var pageStatus=reportChart.GetCurrentPageStatus();if(pageStatus.IsEnd)return;this.MoveYOffset(moveSetp,false);++moveSetp;}else if(moveSetp<0){if(this.Data.YOffset<=0)return;this.MoveYOffset(moveSetp,false);--moveSetp;}else{return;}this.Draw();if(!this.EnablePageScroll)return;this.AutoScrollPage(moveSetp);return;};//清空固定行数据
|
|
12034
12050
|
this.ClearFixedRowData=function(){this.FixedRowData.Data=[];this.FixedRowData.Symbol=[];};//设置固定行
|
|
12035
12051
|
this.SetFixedRowCount=function(value){var chart=this.GetReportChart();if(!chart)return;chart.FixedRowCount=value;};//创建
|
|
12036
|
-
this.Create=function(option){var
|
|
12052
|
+
this.Create=function(option){var _this50=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
12037
12053
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.IsEnableSplash=true;//创建框架
|
|
12038
12054
|
this.Frame=new JSReportFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartSplashPaint.Frame=this.Frame;//创建表格
|
|
12039
|
-
var chart=new ChartReport();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return
|
|
12055
|
+
var chart=new ChartReport();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return _this50.GetEventCallback(id);};chart.GetStockDataCallback=function(symbol){return _this50.GetStockData(symbol);};chart.GetBlockDataCallback=function(symbol){return _this50.GetBlockData(symbol);};chart.GetFlashBGDataCallback=function(symbol,time){return _this50.GetFlashBGData(symbol,time);};chart.Data=this.Data;chart.GlobalOption=this.GlobalOption;chart.FixedRowData=this.FixedRowData;chart.SortInfo=this.SortInfo;chart.Tab=new ChartReportTab();chart.Tab.Frame=this.Frame;chart.Tab.Canvas=this.Canvas;chart.Tab.ChartBorder=this.Frame.ChartBorder;chart.Tab.Report=chart;this.ChartPaint[0]=chart;//页脚
|
|
12040
12056
|
if(option&&option.PageInfo===true){var pageInfoChart=new ChartReportPageInfo();pageInfoChart.Frame=this.Frame;pageInfoChart.ChartBorder=this.Frame.ChartBorder;pageInfoChart.Canvas=this.Canvas;pageInfoChart.Report=chart;this.ChartPaint[1]=pageInfoChart;}if(option){if(IFrameSplitOperator.IsBool(option.IsShowHeader))chart.IsShowHeader=option.IsShowHeader;//是否显示表头
|
|
12041
12057
|
if(IFrameSplitOperator.IsNumber(option.FixedColumn))chart.FixedColumn=option.FixedColumn;//固定列
|
|
12042
12058
|
if(IFrameSplitOperator.IsNumber(option.BorderLine))this.Frame.BorderLine=option.BorderLine;//边框
|
|
12043
12059
|
if(IFrameSplitOperator.IsBool(option.TabShow))chart.Tab.IsShow=option.TabShow;if(IFrameSplitOperator.IsNumber(option.FixedRowCount))chart.FixedRowCount=option.FixedRowCount;//固定行
|
|
12044
12060
|
if(IFrameSplitOperator.IsBool(option.ItemBorder))chart.IsDrawBorder=option.ItemBorder;//单元格边框
|
|
12045
|
-
if(IFrameSplitOperator.IsNumber(option.SelectedModel))chart.SelectedModel=option.SelectedModel;if(IFrameSplitOperator.IsNonEmptyArray(option.FixedSymbol)){chart.FixedRowCount=0;this.FixedRowData.Type=1;this.FixedRowData.Symbol=[];var aryData=option.FixedSymbol;for(var i=0;i<aryData.length;++i){var item=aryData[i];this.FixedRowData.Symbol.push(item.Symbol);++chart.FixedRowCount;}}}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){
|
|
12046
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
12047
|
-
this.UIElement.ondblclick=function(e){
|
|
12048
|
-
this.UIElement.ontouchstart=function(e){
|
|
12061
|
+
if(IFrameSplitOperator.IsNumber(option.SelectedModel))chart.SelectedModel=option.SelectedModel;if(IFrameSplitOperator.IsNonEmptyArray(option.FixedSymbol)){chart.FixedRowCount=0;this.FixedRowData.Type=1;this.FixedRowData.Symbol=[];var aryData=option.FixedSymbol;for(var i=0;i<aryData.length;++i){var item=aryData[i];this.FixedRowData.Symbol.push(item.Symbol);++chart.FixedRowCount;}}}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this50.OnKeyDown(e);},true);//键盘消息
|
|
12062
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this50.OnWheel(e);},true);//上下滚动消息
|
|
12063
|
+
this.UIElement.ondblclick=function(e){_this50.UIOnDblClick(e);};this.UIElement.onmousedown=function(e){_this50.UIOnMouseDown(e);};this.UIElement.onmouseup=function(e){_this50.UIOnMounseUp(e);};this.UIElement.oncontextmenu=function(e){_this50.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this50.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this50.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this50.UIOnMouseleave(e);};//手机拖拽
|
|
12064
|
+
this.UIElement.ontouchstart=function(e){_this50.OnTouchStart(e);};this.UIElement.ontouchmove=function(e){_this50.OnTouchMove(e);};this.UIElement.ontouchend=function(e){_this50.OnTouchEnd(e);};};this.Draw=function(){if(this.UIElement.width<=0||this.UIElement.height<=0)return;this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
12049
12065
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12050
12066
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
12051
|
-
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}if(this.GlobalOption.FlashBGCount>0){this.DelayDraw(500);}};this.DelayDraw=function(frequency){var
|
|
12067
|
+
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}if(this.GlobalOption.FlashBGCount>0){this.DelayDraw(500);}};this.DelayDraw=function(frequency){var _this51=this;if(typeof this.FlashBGTimer=='number'){clearTimeout(this.FlashBGTimer);this.FlashBGTimer=null;}this.FlashBGTimer=setTimeout(function(){_this51.Draw();},frequency);};this.ResetReportStatus=function(){this.Data.XOffset=0;this.Data.YOffset=0;};this.ResetReportSelectStatus=function(){var chart=this.GetReportChart();if(chart){chart.SelectedRow=-1;chart.SelectedFixedRow=-1;}};this.ClearData=function(){this.SourceData.Data=[];this.Data.Data=[];this.BlockData=new _map2.default();};this.ResetSortStatus=function(){this.SortInfo.Field=-1;this.SortInfo.Sort=0;};//设置股票列表
|
|
12052
12068
|
this.SetSymbolList=function(arySymbol,option){this.ClearData();this.ResetReportStatus();this.ResetSortStatus();if(IFrameSplitOperator.IsNonEmptyArray(arySymbol)){for(var i=0;i<arySymbol.length;++i){this.Data.Data.push(arySymbol[i]);}}var chart=this.ChartPaint[0];if(chart)chart.Data=this.Data;this.Draw();};this.ChangeSymbol=function(symbol,option){this.Symbol=symbol;this.ClearData();this.ResetReportStatus();this.ResetSortStatus();this.ResetReportSelectStatus();if(option){if(IFrameSplitOperator.IsNumber(option.TabSelected)){var chartTab=this.GetTabChart();if(chartTab)chartTab.SelectedTabIndex=option.TabSelected;}if(Array.isArray(option.FixedSymbol)){var chart=this.GetReportChart();if(chart){chart.FixedRowCount=0;this.FixedRowData.Type=1;this.FixedRowData.Symbol=[];var aryData=option.FixedSymbol;for(var i=0;i<aryData.length;++i){var item=aryData[i];this.FixedRowData.Symbol.push(item.Symbol);++chart.FixedRowCount;}this.SetSizeChange(true);}}if(option.SortInfo){var item=option.SortInfo;if(IFrameSplitOperator.IsNumber(item.Field))this.SortInfo.Field=item.Field;if(IFrameSplitOperator.IsNumber(item.Sort))this.SortInfo.Sort=item.Sort;}}this.RequestMemberListData();};this.RequestMemberListData=function(){//this.ChartSplashPaint.SetTitle(this.SplashTitle.MemberList);
|
|
12053
12069
|
//this.ChartSplashPaint.EnableSplash(true);
|
|
12054
12070
|
//this.Draw();
|
|
@@ -12067,7 +12083,7 @@ this.GetStockData=function(symbol){if(!this.MapStockData)return null;if(!this.Ma
|
|
|
12067
12083
|
this.SetFlashBGItem=function(symbol,obj){var item={ID:obj.ID,Color:obj.Color,Count:1};if(IFrameSplitOperator.IsNumber(obj.Count))item.Count=obj.Count;if(IFrameSplitOperator.IsNumber(obj.Time))item.Time=obj.Time;else item.Time=Date.now();if(this.FlashBG.has(symbol)){var stockItem=this.FlashBG.get(symbol);stockItem.LastTime=item.Time;stockItem.Data.set(item.ID,item);}else{var stockItem={LastTime:item.Time,Data:new _map2.default([[item.ID,item]])};this.FlashBG.set(symbol,stockItem);}};this.GetFlashBGData=function(symbol,time){if(!this.FlashBG)return null;if(!this.FlashBG.has(symbol))return null;var timeDiff=3*1000;var stockItem=this.FlashBG.get(symbol);if(time-stockItem.LastTime>=timeDiff)//超时的删除
|
|
12068
12084
|
{this.FlashBG.delete(symbol);return null;}if(!stockItem.Data||stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}var aryDelID=[];//超时需要参数的
|
|
12069
12085
|
var _iteratorNormalCompletion21=true;var _didIteratorError21=false;var _iteratorError21=undefined;try{for(var _iterator21=(0,_getIterator3.default)(stockItem.Data),_step21;!(_iteratorNormalCompletion21=(_step21=_iterator21.next()).done);_iteratorNormalCompletion21=true){var mapItem=_step21.value;var item=mapItem[1];if(time-item.Time>=timeDiff||item.Count<=0)aryDelID.push(item.ID);}}catch(err){_didIteratorError21=true;_iteratorError21=err;}finally{try{if(!_iteratorNormalCompletion21&&_iterator21.return){_iterator21.return();}}finally{if(_didIteratorError21){throw _iteratorError21;}}}if(IFrameSplitOperator.IsNonEmptyArray(aryDelID)){for(var i=0;i<aryDelID.length;++i){stockItem.Data.delete(aryDelID[i]);}if(stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}}return stockItem;};//delay=是否延迟
|
|
12070
|
-
this.DelayUpdateStockData=function(){var
|
|
12086
|
+
this.DelayUpdateStockData=function(){var _this52=this;if(this.DelayUpdateTimer!=null){clearTimeout(this.DelayUpdateTimer);this.DelayUpdateTimer=null;}var frequency=this.DelayUpdateFrequency;this.DelayUpdateTimer=setTimeout(function(){_this52.UpdateStockData();},frequency);};this.UpdateStockData=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;var chart=this.ChartPaint[0];if(!chart)return;if(this.SortInfo&&this.SortInfo.Field>=0&&this.SortInfo.Sort>0){var column=chart.Column[this.SortInfo.Field];if(column.Sort==2){this.RequestStockSortData(column,this.SortInfo.Field,this.SortInfo.Sort);//远程排序
|
|
12071
12087
|
return;}}var arySymbol=chart.ShowSymbol;if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return;this.RequestStockData(arySymbol);};//下载股票数据
|
|
12072
12088
|
this.RequestStockData=function(arySymbol){var self=this;if(this.NetworkFilter){var obj={Name:'JSDealChartContainer::RequestStockData',//类名::函数名
|
|
12073
12089
|
Explain:'报价列表股票数据',Request:{Data:{stocks:arySymbol}},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){self.RecvStockData(data);self.AutoUpdate();});if(obj.PreventDefault==true)return;}throw{Name:'JSReportChartContainer::RequestStockData',Error:'(报价列表股票数据)不提供内置测试数据'};};this.RecvStockData=function(data){var setUpdateSymbol=new _set2.default();//更新的股票列表
|
|
@@ -12121,7 +12137,7 @@ var result=this.MoveSelectedRow(-1);if(result){if(result.Redraw)this.Draw();if(r
|
|
|
12121
12137
|
var result=this.MoveSelectedRow(1);if(result){if(result.Redraw)this.Draw();if(result.Update)this.DelayUpdateStockData();}break;case 37://left
|
|
12122
12138
|
if(this.MoveXOffset(-1))this.Draw();break;case 39://right
|
|
12123
12139
|
if(this.MoveXOffset(1))this.Draw();break;}//不让滚动条滚动
|
|
12124
|
-
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.UIOnDblClick=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart)chart.OnDblClick(x,y,e);};this.UIOnMouseDown=function(e){var
|
|
12140
|
+
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.UIOnDblClick=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart)chart.OnDblClick(x,y,e);};this.UIOnMouseDown=function(e){var _this53=this;this.DragXScroll=null;this.DragHeader=null;this.DragColumnWidth=null;this.DragMove={Click:{X:e.clientX,Y:e.clientY},Move:{X:e.clientX,Y:e.clientY},PreMove:{X:e.clientX,Y:e.clientY}};var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){var dragColumnWidth=chart.PtInHeaderDragBorder(x,y);if(dragColumnWidth){this.DragColumnWidth={ClickPoint:{X:x,Y:y},LastPoint:{X:x,Y:y},//Click:{ X:e.clientX, Y:e.clientY },
|
|
12125
12141
|
//LastMove:{ X:e.clientX, Y:e.clientY},
|
|
12126
12142
|
ClickData:dragColumnWidth,ColumnWidth:dragColumnWidth.Column.Width};}else{var clickData=chart.OnMouseDown(x,y,e);if(!clickData)return;//if (e.button!=0) return;
|
|
12127
12143
|
if((clickData.Type==2||clickData.Type==4)&&(e.button==0||e.button==2))//点击行|固定行
|
|
@@ -12132,7 +12148,7 @@ if((clickData.Type==2||clickData.Type==4)&&(e.button==0||e.button==2))//点击
|
|
|
12132
12148
|
{if(this.MoveXOffset(1))this.Draw();}else if(tabData.Type==3)//滚动条
|
|
12133
12149
|
{this.DragXScroll={Click:{X:x,Y:y},LastMove:{X:x,Y:y}};}else if(tabData.Type==4)//滚动条内部
|
|
12134
12150
|
{if(this.SetXOffset(tabData.Pos))this.Draw();}else if(tabData.Type==5)//标签
|
|
12135
|
-
{this.OnClickTab(tabData,e);}}}}document.onmousemove=function(e){
|
|
12151
|
+
{this.OnClickTab(tabData,e);}}}}document.onmousemove=function(e){_this53.DocOnMouseMove(e);};document.onmouseup=function(e){_this53.DocOnMouseUp(e);};};this.UIOnMounseUp=function(e){console.log('"UIOnMounseUp');};//去掉右键菜单
|
|
12136
12152
|
this.UIOnContextMenu=function(e){e.preventDefault();};this.UIOnMouseMove=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;if(this.DragRow)return;if(this.DrawHeader)return;if(this.DragColumnWidth)return;var tabChart=this.GetTabChart();if(tabChart){var tabData=tabChart.PtInTab(x,y);if(tabData){var index=tabData.Index;if(tabChart.MoveOnTabIndex!=index){tabChart.MoveOnTabIndex=index;this.Draw();}}}var mouseStatus={Cursor:"default",Name:"Default"};;//鼠标状态
|
|
12137
12153
|
var report=this.GetReportChart();var cell=null;if(report){var dragHeaderWidth=report.PtInHeaderDragBorder(x,y);if(dragHeaderWidth){mouseStatus={Cursor:"col-resize",Name:"DragHeaderWidth"};JSConsole.Chart.Log("[JSReportChartContainer::UIOnMouseMove] drag column width ",dragHeaderWidth);}else{cell=report.PtInCell(x,y);//是否在单元格(EnableTooltip)
|
|
12138
12154
|
}}var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_MOUSE_MOVE);if(event){var sendData={X:x,Y:y,Cell:cell};event.Callback(event,sendData,this);}if(mouseStatus)this.UIElement.style.cursor=mouseStatus.Cursor;};this.UIOnMounseOut=function(e){var tabChart=this.GetTabChart();if(tabChart&&tabChart.MoveOnTabIndex>=0){tabChart.MoveOnTabIndex=-1;this.Draw();}};this.UIOnMouseleave=function(e){var tabChart=this.GetTabChart();if(tabChart&&tabChart.MoveOnTabIndex>=0){tabChart.MoveOnTabIndex=-1;this.Draw();}};this.DocOnMouseMove=function(e){this.DragMove.PreMove.X=this.DragMove.Move.X;this.DragMove.PreMove.Y=this.DragMove.Move.Y;this.DragMove.Move.X=e.clientX;this.DragMove.Move.Y=e.clientX;if(this.DragMove.Move.X!=this.DragMove.PreMove.X||this.DragMove.Move.Y!=this.DragMove.PreMove.Y)this.StopAutoDragScrollTimer();if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;//JSConsole.Chart.Log(`[JSReportChartContainer::DocOnMouseMove] x=${x}, y=${y}`);
|
|
@@ -12171,8 +12187,8 @@ if(chart.SelectedModel==0)//不可翻页模式, 只能在当前页移动
|
|
|
12171
12187
|
{var pageStatus=chart.GetCurrentPageStatus();var pageSize=pageStatus.PageSize;var selected=pageStatus.SelectedRow;if(step>0){if(selected<0||selected<pageStatus.Start||selected>pageStatus.End){chart.SelectedRow=pageStatus.Start;result.Redraw=true;return result;}var offset=this.Data.YOffset;for(var i=0;i<step;++i){++selected;if(selected>pageStatus.End)++offset;if(selected>=this.Data.Data.length){selected=0;offset=0;}}result.Redraw=true;result.Update=offset!=this.Data.YOffset;chart.SelectedRow=selected;this.Data.YOffset=offset;return result;}else if(step<0){if(selected<0||selected<pageStatus.Start||selected>pageStatus.End){chart.SelectedRow=pageStatus.End;result.Redraw=true;return result;}step=Math.abs(step);var offset=this.Data.YOffset;for(var i=0;i<step;++i){--selected;if(selected<pageStatus.Start)--offset;if(selected<0){selected=this.Data.Data.length-1;offset=this.Data.Data.length-pageSize;if(offset<0)offset=0;}}result.Redraw=true;result.Update=offset!=this.Data.YOffset;chart.SelectedRow=selected;this.Data.YOffset=offset;return result;}}return null;};//左右移动
|
|
12172
12188
|
this.MoveXOffset=function(step){var chart=this.ChartPaint[0];if(!chart)return false;var maxOffset=chart.GetXScrollRange();if(maxOffset<=0)return false;if(step>0){if(this.Data.XOffset>=maxOffset)return false;for(var i=0;i<step;++i){if(this.Data.XOffset>=maxOffset)break;++this.Data.XOffset;}return true;}else if(step<0){if(this.Data.XOffset<=0)return false;step=Math.abs(step);for(var i=0;i<step;++i){if(this.Data.XOffset-1<0)break;--this.Data.XOffset;}return true;}return false;};this.SetXOffset=function(pos){if(!IFrameSplitOperator.IsNumber(pos))return false;var chart=this.ChartPaint[0];if(!chart)return false;var maxOffset=chart.GetXScrollRange();if(pos<0)pos=0;if(pos>maxOffset)pos=maxOffset;this.Data.XOffset=pos;return true;};this.GotoLastPage=function(){var chart=this.ChartPaint[0];if(!chart)return;//显示最后一屏
|
|
12173
12189
|
var pageSize=chart.GetPageSize(true);var offset=this.Data.Data.length-pageSize;if(offset<0)offset=0;this.Data.DataOffset=offset;};this.SetColumn=function(aryColunm,option){var chart=this.ChartPaint[0];if(!chart)return;chart.SetColumn(aryColunm);chart.SizeChange=true;if(option&&option.Redraw)this.Draw();};this.SetTab=function(aryTab,option){var chart=this.ChartPaint[0];;if(!chart)return;var chartTab=chart.Tab;if(!chartTab)return;chartTab.SetTabList(aryTab);if(option&&option.Redraw)this.Draw();};this.SetSelectedTab=function(index,opiton){var chart=this.ChartPaint[0];;if(!chart)return;var chartTab=chart.Tab;if(!chartTab)return;chartTab.SelectedTabIndex=index;};this.ReloadResource=function(option){this.Frame.ReloadResource(option);for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.ReloadResource)item.ReloadResource(option);}if(option&&option.Redraw){this.SetSizeChange(true);this.Draw();}};//点表头
|
|
12174
|
-
this.OnClickHeader=function(clickData,e){var
|
|
12175
|
-
{var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_LOCAL_SORT);if(event&&event.Callback){var sendData={Column:header.Column,SortInfo:sortInfo,SymbolList:this.Data.Data,Result:null};event.Callback(event,sendData,this);if(Array.isArray(sendData.Result))this.Data.Data=sendData.Result;}else{this.Data.Data.sort(function(left,right){return
|
|
12190
|
+
this.OnClickHeader=function(clickData,e){var _this54=this;var header=clickData.Header;if(header.Column&&(header.Column.Sort==1||header.Column.Sort==2)){var index=header.Index;var sortInfo={Field:this.SortInfo.Field,Sort:this.SortInfo.Sort};var arySortType=header.Column.SortType;if(sortInfo.Field!=index){sortInfo.Field=index;sortInfo.Sort=arySortType[0];}else{if(arySortType.length==1){sortInfo.Sort=arySortType[0];}else{for(var i=0;i<arySortType.length;++i){if(sortInfo.Sort==arySortType[i]){sortInfo.Sort=arySortType[(i+1)%arySortType.length];break;}}}}if(header.Column.Sort==1||header.Column.Sort==2){if(sortInfo.Sort==0){this.Data.Data=[];for(var i=0;i<this.SourceData.Data.length;++i){this.Data.Data.push(this.SourceData.Data[i]);}}else{if(header.Column.Sort==1)//本地排序
|
|
12191
|
+
{var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_LOCAL_SORT);if(event&&event.Callback){var sendData={Column:header.Column,SortInfo:sortInfo,SymbolList:this.Data.Data,Result:null};event.Callback(event,sendData,this);if(Array.isArray(sendData.Result))this.Data.Data=sendData.Result;}else{this.Data.Data.sort(function(left,right){return _this54.LocalSort(left,right,header.Column,sortInfo.Sort);});}}else if(header.Column.Sort==2)//远程排序
|
|
12176
12192
|
{if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;this.SortInfo.Field=sortInfo.Field;this.SortInfo.Sort=sortInfo.Sort;this.Data.YOffset=0;this.ResetReportSelectStatus();this.RequestStockSortData(header.Column,sortInfo.Field,sortInfo.Sort);//远程排序
|
|
12177
12193
|
return;}}this.Data.YOffset=0;this.ResetReportSelectStatus();this.SortInfo.Field=sortInfo.Field;this.SortInfo.Sort=sortInfo.Sort;this.Draw();this.DelayUpdateStockData();}}};//点击标签
|
|
12178
12194
|
this.OnClickTab=function(tabData,e){if(!tabData.Tab)return;var redraw=false;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var uiElement={Left:this.UIElement.getBoundingClientRect().left,Top:this.UIElement.getBoundingClientRect().top};if(tabData.Tab.IsMenu){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_REPORT_TABMENU);if(event&&event.Callback){redraw=true;var rtItem=tabData.Rect;var rtDOM={Left:rtItem.Left/pixelTatio,Right:rtItem.Right/pixelTatio,Top:rtItem.Top/pixelTatio,Bottom:rtItem.Bottom/pixelTatio};var sendData={Data:tabData,IsSide:{X:x,Y:x},UIElement:uiElement,Rect:rtDOM,e:e,Redraw:redraw};event.Callback(event,sendData,this);if(IFrameSplitOperator.IsBool(sendData.Redraw))redraw=sendData.Redraw;}this.SetSelectedTab(tabData.Index);//选中tab
|
|
@@ -12419,11 +12435,11 @@ this.MapSymbol.clear();this.Data.Data=[];this.Data.XOffset=0;this.Data.YOffset=0
|
|
|
12419
12435
|
}
|
|
12420
12436
|
this.ChartPaint[0].SelectedRow=0;
|
|
12421
12437
|
*/};//创建
|
|
12422
|
-
this.Create=function(option){var
|
|
12438
|
+
this.Create=function(option){var _this55=this;this.UIElement.JSChartContainer=this;//创建框架
|
|
12423
12439
|
this.Frame=new JSKeyboardFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;//创建表格
|
|
12424
|
-
var chart=new ChartSymbolList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return
|
|
12425
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
12426
|
-
this.UIElement.ondblclick=function(e){
|
|
12440
|
+
var chart=new ChartSymbolList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return _this55.GetEventCallback(id);};chart.GetStockDataCallback=function(symbol){return _this55.GetStockData(symbol);};chart.Data=this.Data;this.ChartPaint[0]=chart;if(option){}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSKeyboardChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSKeyboardChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this55.OnKeyDown(e);},true);//键盘消息
|
|
12441
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this55.OnWheel(e);},true);//上下滚动消息
|
|
12442
|
+
this.UIElement.ondblclick=function(e){_this55.UIOnDblClick(e);};this.UIElement.onmousedown=function(e){_this55.UIOnMouseDown(e);};this.UIElement.oncontextmenu=function(e){_this55.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this55.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this55.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this55.UIOnMouseleave(e);};};this.Draw=function(){if(this.UIElement.width<=0||this.UIElement.height<=0)return;this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
12427
12443
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12428
12444
|
this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
12429
12445
|
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}};this.GetStockData=function(symbol){if(!this.MapSymbol.has(symbol))return null;return this.MapSymbol.get(symbol);};this.ResetStatus=function(){this.Data.XOffset=0;this.Data.YOffset=0;};this.ResetSelectStatus=function(){var chart=this.GetReportChart();if(chart){chart.SelectedRow=-1;chart.SelectedFixedRow=-1;}};//设置事件回调
|
|
@@ -12440,9 +12456,9 @@ var result=this.MoveSelectedRow(1);if(result){if(result.Redraw)this.Draw();}brea
|
|
|
12440
12456
|
if(this.MoveXOffset(-1))this.Draw();break;case 39://right
|
|
12441
12457
|
if(this.MoveXOffset(1))this.Draw();break;case 13://Enter
|
|
12442
12458
|
this.OnSelectedSymbol();break;}//不让滚动条滚动
|
|
12443
|
-
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.OnSelectedSymbol=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return false;var chart=this.ChartPaint[0];if(!chart)return false;var data=chart.GetSelectedSymbol();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED);if(event&&event.Callback){event.Callback(event,{Data:data},this);}};this.UIOnDblClick=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){if(chart.OnDblClick(x,y,e))this.OnSelectedSymbol();}};this.UIOnMouseDown=function(e){var
|
|
12459
|
+
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.OnSelectedSymbol=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return false;var chart=this.ChartPaint[0];if(!chart)return false;var data=chart.GetSelectedSymbol();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED);if(event&&event.Callback){event.Callback(event,{Data:data},this);}};this.UIOnDblClick=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){if(chart.OnDblClick(x,y,e))this.OnSelectedSymbol();}};this.UIOnMouseDown=function(e){var _this56=this;this.DragXScroll=null;this.DragMove={Click:{X:e.clientX,Y:e.clientY},Move:{X:e.clientX,Y:e.clientY},PreMove:{X:e.clientX,Y:e.clientY}};var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){var clickData=chart.OnMouseDown(x,y,e);if(!clickData)return;//if (e.button!=0) return;
|
|
12444
12460
|
if(clickData.Type==2&&(e.button==0||e.button==2))//点击行
|
|
12445
|
-
{if(clickData.Redraw==true)this.Draw();}}document.onmousemove=function(e){
|
|
12461
|
+
{if(clickData.Redraw==true)this.Draw();}}document.onmousemove=function(e){_this56.DocOnMouseMove(e);};document.onmouseup=function(e){_this56.DocOnMouseUp(e);};};//去掉右键菜单
|
|
12446
12462
|
this.UIOnContextMenu=function(e){e.preventDefault();};this.UIOnMouseMove=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;};this.UIOnMounseOut=function(e){};this.UIOnMouseleave=function(e){};this.DocOnMouseMove=function(e){this.DragMove.PreMove.X=this.DragMove.Move.X;this.DragMove.PreMove.Y=this.DragMove.Move.Y;this.DragMove.Move.X=e.clientX;this.DragMove.Move.Y=e.clientX;//if (this.DragMove.Move.X!=this.DragMove.PreMove.X || this.DragMove.Move.Y!=this.DragMove.PreMove.Y)
|
|
12447
12463
|
// this.StopAutoDragScrollTimer();
|
|
12448
12464
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;//JSConsole.Chart.Log(`[JSReportChartContainer::DocOnMouseMove] x=${x}, y=${y}`);
|
|
@@ -12555,12 +12571,12 @@ this.HQChart=null;this.ChartDestory=function()//销毁
|
|
|
12555
12571
|
//{event:事件id, callback:回调函数}
|
|
12556
12572
|
this.AddEventCallback=function(object){if(!object||!object.event||!object.callback)return;var data={Callback:object.callback,Source:object};this.mapEvent.set(object.event,data);};this.RemoveEventCallback=function(eventid){if(!this.mapEvent.has(eventid))return;this.mapEvent.delete(eventid);};this.GetEventCallback=function(id)//获取事件回调
|
|
12557
12573
|
{if(!this.mapEvent.has(id))return null;var item=this.mapEvent.get(id);return item;};//创建
|
|
12558
|
-
this.Create=function(option){var
|
|
12574
|
+
this.Create=function(option){var _this57=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
12559
12575
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.IsEnableSplash=true;//创建框架
|
|
12560
12576
|
this.Frame=new JSScrollBarFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartSplashPaint.Frame=this.Frame;//背景
|
|
12561
|
-
var chart=new ScrollBarBGChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return
|
|
12562
|
-
var chart=new SliderChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.OffsetData=this.XOffsetData;chart.GetEventCallback=function(id){return
|
|
12563
|
-
this.UIElement.onmousedown=function(e){
|
|
12577
|
+
var chart=new ScrollBarBGChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return _this57.GetEventCallback(id);};this.ChartPaint.push(chart);//创建滑块
|
|
12578
|
+
var chart=new SliderChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.OffsetData=this.XOffsetData;chart.GetEventCallback=function(id){return _this57.GetEventCallback(id);};this.SliderChart=chart;this.ChartPaint.push(chart);//this.UIElement.ondblclick=(e)=>{ this.UIOnDblClick(e); }
|
|
12579
|
+
this.UIElement.onmousedown=function(e){_this57.UIOnMouseDown(e);};this.UIElement.oncontextmenu=function(e){_this57.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this57.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this57.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this57.UIOnMouseleave(e);};//手机拖拽
|
|
12564
12580
|
//this.UIElement.ontouchstart=(e)=> { this.OnTouchStart(e); }
|
|
12565
12581
|
//this.UIElement.ontouchmove=(e)=> {this.OnTouchMove(e); }
|
|
12566
12582
|
//this.UIElement.ontouchend=(e)=> {this.OnTouchEnd(e); }
|
|
@@ -12568,13 +12584,13 @@ this.UIElement.onmousedown=function(e){_this56.UIOnMouseDown(e);};this.UIElement
|
|
|
12568
12584
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12569
12585
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
12570
12586
|
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}};this.OnSize=function(){if(!this.Frame)return;this.SetSizeChange(true);this.Draw();};this.SetSizeChange=function(bChanged){for(var i=0;i<this.ChartPaint.length;++i){var chart=this.ChartPaint[i];if(chart)chart.SizeChange=bChanged;}};this.UpdateFrameMaxMin=function(){var max=null,min=null;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.GetMaxMin)continue;var range=item.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(max==null||max<range.Max)max=range.Max;if(min==null||min>range.Min)min=range.Min;}if(IFrameSplitOperator.IsNumber(max)&&IFrameSplitOperator.IsNumber(min)){this.Frame.HorizontalMax=max;this.Frame.HorizontalMin=min;}};//未启动
|
|
12571
|
-
this.UIOnDblClick=function(e){};this.CancelDragTimer=function(){if(this.DragTimer){clearTimeout(this.DragTimer);this.DragTimer=null;}};this.UIOnMouseDown=function(e){var
|
|
12572
|
-
}document.onmousemove=function(e){
|
|
12587
|
+
this.UIOnDblClick=function(e){};this.CancelDragTimer=function(){if(this.DragTimer){clearTimeout(this.DragTimer);this.DragTimer=null;}};this.UIOnMouseDown=function(e){var _this58=this;this.CancelDragTimer();this.DragSlider=null;this.DragMove={Click:{X:e.clientX,Y:e.clientY},Move:{X:e.clientX,Y:e.clientY},PreMove:{X:e.clientX,Y:e.clientY}};var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;if(this.SliderChart){var clickData=this.SliderChart.PtInChart(x,y);if(!clickData)return;this.DragSlider={Click:{X:e.clientX,Y:e.clientY},LastMove:{X:e.clientX,Y:e.clientY},Data:clickData};this.DragSlider.DrawCount=0;//重绘次数
|
|
12588
|
+
}document.onmousemove=function(e){_this58.DocOnMouseMove(e);};document.onmouseup=function(e){_this58.DocOnMouseUp(e);};};//去掉右键菜单
|
|
12573
12589
|
this.UIOnContextMenu=function(e){e.preventDefault();};this.UIOnMouseMove=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;if(this.DragSlider)return;var mouseStatus=mouseStatus={Cursor:"default"};;//鼠标状态
|
|
12574
|
-
var item=this.SliderChart.PtInChart(x,y);if(item){switch(item.Data.Type){case 0:mouseStatus={Cursor:"move",Name:"SliderChart"};break;case 1:case 2:mouseStatus={Cursor:"ew-resize",Name:"SliderChart"};break;}}if(mouseStatus)this.UIElement.style.cursor=mouseStatus.Cursor;};this.UIOnMounseOut=function(e){};this.UIOnMouseleave=function(e){};this.DocOnMouseMove=function(e){var
|
|
12590
|
+
var item=this.SliderChart.PtInChart(x,y);if(item){switch(item.Data.Type){case 0:mouseStatus={Cursor:"move",Name:"SliderChart"};break;case 1:case 2:mouseStatus={Cursor:"ew-resize",Name:"SliderChart"};break;}}if(mouseStatus)this.UIElement.style.cursor=mouseStatus.Cursor;};this.UIOnMounseOut=function(e){};this.UIOnMouseleave=function(e){};this.DocOnMouseMove=function(e){var _this59=this;this.DragMove.PreMove.X=this.DragMove.Move.X;this.DragMove.PreMove.Y=this.DragMove.Move.Y;this.DragMove.Move.X=e.clientX;this.DragMove.Move.Y=e.clientX;if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;JSConsole.Chart.Log('[JSScrollBarChartContainer::DocOnMouseMove] x='+x+', y='+y);if(this.DragSlider){var drag=this.DragSlider;var moveSetp=(e.clientX-drag.LastMove.X)*pixelTatio;if(Math.abs(moveSetp)<1)return;var pageRange=this.GetPageRange();var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();this.SliderChart.DragMode=true;var type=drag.Data.Data.Type;var xStart=this.SliderChart.XStart+moveSetp;var xEnd=this.SliderChart.XEnd+moveSetp;if(type==0)//整体移动
|
|
12575
12591
|
{if(xStart<left)//第1页
|
|
12576
12592
|
{xStart=pageRange.First.XStart;xEnd=pageRange.First.XEnd;}else if(xEnd>=right){xStart=pageRange.Last.XStart;xEnd=pageRange.Last.XEnd;}this.SliderChart.XStart=xStart;this.SliderChart.XEnd=xEnd;}else if(type==1)//左移动
|
|
12577
|
-
{if(xStart<=left){xStart=pageRange.First.XStart;}this.SliderChart.XStart=xStart;}else if(type==2){if(xEnd>=right){xEnd=pageRange.Last.XEnd;}this.SliderChart.XEnd=xEnd;}drag.UpdateData={XStart:xStart,XEnd:xEnd,Type:type};drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;if(drag.DrawCount==0){this.DragUpdate(drag);}else{this.DragTimer=setTimeout(function(){
|
|
12593
|
+
{if(xStart<=left){xStart=pageRange.First.XStart;}this.SliderChart.XStart=xStart;}else if(type==2){if(xEnd>=right){xEnd=pageRange.Last.XEnd;}this.SliderChart.XEnd=xEnd;}drag.UpdateData={XStart:xStart,XEnd:xEnd,Type:type};drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;if(drag.DrawCount==0){this.DragUpdate(drag);}else{this.DragTimer=setTimeout(function(){_this59.DragUpdate(_this59.DragSlider);},this.DelayDragFrequency);}}};this.DocOnMouseUp=function(e){//清空事件
|
|
12578
12594
|
document.onmousemove=null;document.onmouseup=null;this.CancelDragTimer();var dragSlider=this.DragSlider;this.DragMove=null;this.DragSlider=null;this.SliderChart.DragMode=false;this.DragUpdate(dragSlider);};this.DragUpdate=function(dragData){if(!dragData||!dragData.UpdateData)return;this.UpdateXDataOffset(dragData.UpdateData);this.Draw();++dragData.DrawCount;};this.Reset=function(option){this.SourceData=null;this.XOffsetData.Start=-1;this.XOffsetData.End=-1;this.XOffsetData.Count=0;this.Frame.Data=null;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];item.Data=null;}if(this.ChartSplashPaint)this.ChartSplashPaint.IsEnableSplash=true;if(option.Draw)this.Draw();};//外部更新滑块 obj={ Start: , End: }
|
|
12579
12595
|
this.UpdateSlider=function(obj){if(this.SliderChart.DragMode)return;var bSizeChange=false;if((this.AutoMargin.Left||this.AutoMargin.Right)&&obj.Border){if(this.AutoMargin.Left){if(this.Frame.ChartBorder.Left!=obj.Border.Left)bSizeChange=true;}if(this.AutoMargin.Right){if(this.Frame.ChartBorder.Right!=obj.Border.Right)bSizeChange=true;}}var data=obj.Data;if(this.XOffsetData.Start==obj.Start&&this.XOffsetData.End==obj.End&&this.SourceData==data&&!bSizeChange)return;this.SourceData=data;var count=data.Data.length;if(IFrameSplitOperator.IsNumber(obj.RightSpaceCount))count+=obj.RightSpaceCount;this.Frame.XPointCount=count;this.Frame.Data=data;this.XOffsetData.Count=count;this.XOffsetData.Start=obj.Start;this.XOffsetData.End=obj.End;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];item.Data=data;}if(this.AutoMargin.Left&&obj.Border){if(IFrameSplitOperator.IsNumber(obj.Border.Left))this.Frame.ChartBorder.Left=obj.Border.Left;}if(this.AutoMargin.Right&&obj.Border){if(IFrameSplitOperator.IsNumber(obj.Border.Right))this.Frame.ChartBorder.Right=obj.Border.Right;}this.UpdateFrameMaxMin();if(this.ChartSplashPaint)this.ChartSplashPaint.IsEnableSplash=false;if(obj.Draw)this.Draw();};//移动滑块
|
|
12580
12596
|
this.UpdateXDataOffset=function(obj){if(obj.Type==0){var start=this.Frame.GetXData(obj.XStart);start=parseInt(start);var moveSetp=start-this.XOffsetData.Start;this.XOffsetData.Start=start;this.XOffsetData.End+=moveSetp;}else if(obj.Type==1){var start=this.Frame.GetXData(obj.XStart);start=parseInt(start);this.XOffsetData.Start=start;}else if(obj.Type==2){var end=this.Frame.GetXData(obj.XEnd);end=parseInt(end);this.XOffsetData.End=end;}var endItem=this.SourceData.Data[this.XOffsetData.End];var startItem=this.SourceData.Data[this.XOffsetData.Start];var sendData={Type:obj.Type,Count:this.XOffsetData.Count};if(this.XOffsetData.End>this.XOffsetData.Start){sendData.Start={Index:this.XOffsetData.Start,Item:startItem};sendData.End={Index:this.XOffsetData.End,Item:endItem};}else{sendData.Start={Index:this.XOffsetData.End,Item:endItem};sendData.End={Index:this.XOffsetData.Start,Item:startItem};}if(this.HQChart&&this.HQChart.JSChartContainer){var internalChart=this.HQChart.JSChartContainer;if(internalChart.ChartOperator){var obj={ID:JSCHART_OPERATOR_ID.OP_SCROOLBAR_SLIDER_CHANGED,Start:sendData.Start,End:sendData.End,Type:sendData.Type};internalChart.ChartOperator(obj);}}var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SCROLLBAR_SLIDER_CHANGED);if(event){event.Callback(event,sendData,this);}};this.ReloadResource=function(option){this.Frame.ReloadResource(option);for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.ReloadResource)item.ReloadResource(option);}if(option&&option.Redraw){this.SetSizeChange(true);this.Draw();}};this.GetPageRange=function(){var result={};var showCount=Math.abs(this.XOffsetData.Start-this.XOffsetData.End);result.ShowCount=showCount;//第1页
|
|
@@ -12633,13 +12649,13 @@ this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
|
|
|
12633
12649
|
//
|
|
12634
12650
|
//////////////////////////////////////////////////////////////////////////////////
|
|
12635
12651
|
function HQChartScriptWorker(){this.Status=0;//0=空闲 1=运行
|
|
12636
|
-
this.Create=function(){var
|
|
12637
|
-
};this.ExecuteScript=function(indexData,message){var
|
|
12652
|
+
this.Create=function(){var _this60=this;addEventListener('message',function(obj){_this60.OnRecvMessage(obj);});};this.NetworkFilter=function(data,callback,indexInfo){JSConsole.Complier.Log('[HQChartScriptWorker::NetworkFilter] ['+data.Name+']['+data.Explain+'] data=',data);//数据下载
|
|
12653
|
+
};this.ExecuteScript=function(indexData,message){var _this61=this;var scriptObj={};if(indexData.Script){scriptObj.Name=indexData.Name;scriptObj.ID=indexData.Index;scriptObj.Script=indexData.Script;}else{if(!indexData.Index)return false;var scriptData=new JSIndexScript();var finder=scriptData.Get(indexData.Index);if(!finder)return false;scriptObj.ID=indexData.Index;scriptObj.Name=finder.Name;scriptObj.Script=finder.Script;scriptObj.Args=finder.Args;}if(indexData.Args)scriptObj.Args=indexData.Args;if(IFrameSplitOperator.IsBool(message.IsApiPeriod))scriptObj.IsApiPeriod=message.IsApiPeriod;var indexInfo={Name:scriptObj.Name,ID:scriptObj.ID,Script:scriptObj.Script,Args:scriptObj.Args,Guid:message.Guid};scriptObj.ErrorCallback=function(error){_this61.OnExecuteError(error,indexInfo,message);};scriptObj.FinishCallback=function(data,jsExectute){_this61.OnExecuteFinish(data,indexInfo,jsExectute,message);};scriptObj.NetworkFilter=function(data,callback){_this61.NetworkFilter(data,callback,indexInfo,message);};JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);var indexConsole=new ScriptIndexConsole(scriptObj);var hisData=null;if(message&&message.Data){hisData=new ChartData();hisData.Data=message.Data;hisData.Right=message.Right;hisData.Period=message.Period;hisData.DataType=message.DataType;//0=日线 1=分钟
|
|
12638
12654
|
hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,Stock:{Symbol:message.Symbol},Request:{MaxDataCount:500,MaxMinuteDayCount:5},Period:message.Period,Right:message.Right,Data:hisData};if(IFrameSplitOperator.IsNumber(message.HQDataType))stockObj.HQDataType=message.HQDataType;indexConsole.ExecuteScript(stockObj);};this.OnRecvMessage=function(message){var data=message.data;if(!data)return;if(data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex))return;for(var i=0;i<data.AryIndex.length;++i){var item=data.AryIndex[i];this.Status=1;//执行状态
|
|
12639
12655
|
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);};}/********************************************************************************
|
|
12640
12656
|
* 版本信息输出
|
|
12641
12657
|
*
|
|
12642
|
-
*/var HQCHART_VERSION="1.1.
|
|
12658
|
+
*/var HQCHART_VERSION="1.1.13018";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
12643
12659
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12644
12660
|
// BaseIndex:BaseIndex,
|
|
12645
12661
|
// ChartLine:ChartLine,
|