hqchart 1.1.15147 → 1.1.15154

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.
@@ -1706,7 +1706,8 @@ ON_RELOAD_RESOURCE:173,ON_REPORT_DATA_FILTER:174,//数据筛选
1706
1706
  ON_REPORT_SHOW_TOOLTIP:175,//报价列表 提示信息\
1707
1707
  ON_FORMAT_TVLONGPOSITION_LABEL:176,ON_FORMAT_COUNTDOWN_TEXT:177,//倒计时
1708
1708
  ON_CLICK_INDEX_LOCK:178,//点击指标锁
1709
- ON_CORSSCURSOR_STATUS_CHANGE:179//十字光标状态改变
1709
+ ON_CORSSCURSOR_STATUS_CHANGE:179,//十字光标状态改变
1710
+ ON_FORMAT_DRAW_HLINE_LABEL:180//画图工具-水平线(ChartDrawPictureHorizontalLine)格式化标签文字
1710
1711
  };var JSCHART_OPERATOR_ID={OP_SCROLL_LEFT:1,//往左移动
1711
1712
  OP_SCROLL_RIGHT:2,//往右移动
1712
1713
  OP_ZOOM_OUT:3,//缩小
@@ -2112,7 +2113,7 @@ this.OnMouseMove(x,y,e,true);};this.DrawEmpty=function(){if(this.UIElement.width
2112
2113
  this.DrawSelectedStatus=function(){if(!this.SelectedChart.MoveOn.Identify&&!this.SelectedChart.Selected.Identify)return;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.Identify)continue;if(item.Identify!=this.SelectedChart.MoveOn.Identify&&item.Identify!=this.SelectedChart.Selected.Identify)continue;if(item.DrawSelectedStatus)item.DrawSelectedStatus();}for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Identify)continue;if(item.Identify!=this.SelectedChart.MoveOn.Identify&&item.Identify!=this.SelectedChart.Selected.Identify)continue;if(item.DrawSelectedStatus)item.DrawSelectedStatus();}for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Identify)continue;if(item.Identify!=this.SelectedChart.MoveOn.Identify&&item.Identify!=this.SelectedChart.Selected.Identify)continue;if(item.DrawSelectedStatus)item.DrawSelectedStatus();}if(this.Frame.DrawOveralySelectedStatus)this.Frame.DrawOveralySelectedStatus(this.SelectedChart);};this.SetCanvas=function(canvas){if(this.Frame){var subFrame=this.Frame.SubFrame;for(var i=0;i<subFrame.length;++i){var item=subFrame[i];item.Frame.Canvas=canvas;//框架
2113
2114
  for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];overlayItem.Frame.Canvas=canvas;//子框架
2114
2115
  for(var k=0;k<overlayItem.ChartPaint.length;++k){var chartItem=overlayItem.ChartPaint[k];chartItem.Canvas=canvas;//叠加图形
2115
- }}}}//画图工具
2116
+ }}if(item.Frame.LockPaint){item.Frame.LockPaint.Canvas=canvas;}}}//画图工具
2116
2117
  for(var i=0;i<this.ChartDrawPicture.length;++i){var item=this.ChartDrawPicture[i];item.Canvas=canvas;}//图形
2117
2118
  for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];item.Canvas=canvas;}//扩展图形
2118
2119
  for(var i=0;i<this.ChartPaintEx.length;++i){var item=this.ChartPaintEx[i];item.Canvas=canvas;}//叠加股票
@@ -6576,10 +6577,11 @@ this.SquareSize=8;//方框点大小
6576
6577
  this.PointType=g_JSChartResource.DrawPicture.PointType;// 0=圆点 1=方框 2= 空心圆
6577
6578
  this.IsShowPoint=g_JSChartResource.DrawPicture.IsShowPoint;//是否始终显示点
6578
6579
  this.LimitFrameID;//限制在指定窗口绘图
6580
+ this.CacheData;//数据缓存
6579
6581
  //接口函数
6580
6582
  this.SetLastPoint=null;//this.SetLastPoint=function(obj) obj={X:,Y:}
6581
6583
  this.Update=null;//更新数据回调
6582
- this.GetActiveDrawPicture=null;this.GetYCoordinatePoint=null;this.Draw=function(){};this.SetOption=function(option){if(!option)return;if(option.LineColor)this.LineColor=option.LineColor;if(option.LineWidth>0)this.LineWidth=option.LineWidth;if(option.AreaColor)this.AreaColor=option.AreaColor;if(option.PointColor)this.PointColor=option.PointColor;if(option.MoveOnPointColor)this.MoveOnPointColor=option.MoveOnPointColor;if(option.PointRadius)this.PointRadius=option.PointRadius;if(IFrameSplitOperator.IsNumber(option.SquareSize))this.SquareSize=option.SquareSize;if(IFrameSplitOperator.IsBool(option.IsShowPoint))this.IsShowPoint=option.IsShowPoint;if(IFrameSplitOperator.IsNumber(option.LimitFrameID))this.LimitFrameID=option.LimitFrameID;if(IFrameSplitOperator.IsBool(option.EnableCtrlMove))this.EnableCtrlMove=option.EnableCtrlMove;if(IFrameSplitOperator.IsBool(option.IsShowYCoordinate))this.IsShowYCoordinate=option.IsShowYCoordinate;};this.ReloadResource=function(resource){if(!resource){this.PointColor=g_JSChartResource.DrawPicture.PointColor[0];this.MoveOnPointColor=g_JSChartResource.DrawPicture.PointColor[1];this.PointBGColor=g_JSChartResource.DrawPicture.PointColor[2];}};this.SetLineWidth=function(){this.BackupLineWidth=null;if(this.LineWidth>0){this.BackupLineWidth=this.Canvas.lineWidth;this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();}};this.GetFontHeight=function(font){return GetFontHeight(this.Canvas,font,"擎");};this.RestoreLineWidth=function(){if(this.BackupLineWidth!=null){this.Canvas.lineWidth=this.BackupLineWidth;}};//磁吸K线
6584
+ this.GetActiveDrawPicture=null;this.GetYCoordinatePoint=null;this.Draw=function(){};this.SetOption=function(option){if(!option)return;if(option.LineColor)this.LineColor=option.LineColor;if(option.LineWidth>0)this.LineWidth=option.LineWidth;if(option.AreaColor)this.AreaColor=option.AreaColor;if(option.PointColor)this.PointColor=option.PointColor;if(option.MoveOnPointColor)this.MoveOnPointColor=option.MoveOnPointColor;if(option.PointRadius)this.PointRadius=option.PointRadius;if(IFrameSplitOperator.IsNumber(option.SquareSize))this.SquareSize=option.SquareSize;if(IFrameSplitOperator.IsBool(option.IsShowPoint))this.IsShowPoint=option.IsShowPoint;if(IFrameSplitOperator.IsNumber(option.LimitFrameID))this.LimitFrameID=option.LimitFrameID;if(IFrameSplitOperator.IsBool(option.EnableCtrlMove))this.EnableCtrlMove=option.EnableCtrlMove;if(IFrameSplitOperator.IsBool(option.IsShowYCoordinate))this.IsShowYCoordinate=option.IsShowYCoordinate;if(IFrameSplitOperator.IsBool(option.EnableSave))this.EnableSave=option.EnableSave;if(IFrameSplitOperator.IsBool(option.EnableMove))this.EnableMove=option.EnableMove;};this.ReloadResource=function(resource){if(!resource){this.PointColor=g_JSChartResource.DrawPicture.PointColor[0];this.MoveOnPointColor=g_JSChartResource.DrawPicture.PointColor[1];this.PointBGColor=g_JSChartResource.DrawPicture.PointColor[2];}};this.SetLineWidth=function(){this.BackupLineWidth=null;if(this.LineWidth>0){this.BackupLineWidth=this.Canvas.lineWidth;this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();}};this.GetFontHeight=function(font){return GetFontHeight(this.Canvas,font,"擎");};this.RestoreLineWidth=function(){if(this.BackupLineWidth!=null){this.Canvas.lineWidth=this.BackupLineWidth;}};//磁吸K线
6583
6585
  this.PointMagnetKLine=function(){if(!this.IsSupportMagnet)return false;if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame")return false;if(this.Frame.Identify!=0)return false;var pointIndex=-1;if(this.Status==2)pointIndex=1;else if(this.Status==1)pointIndex=0;else if(IFrameSplitOperator.IsNumber(this.MovePointIndex))pointIndex=this.MovePointIndex;if(pointIndex<0)return false;if(this.Option&&this.Option.Magnet&&this.Option.Magnet.Enable){var option={IsFixedX:false,Magnet:{Enable:true,PointIndex:pointIndex,Distance:this.Option.Magnet.Distance,Type:this.Option.Magnet.Type}};return this.AdjustPoint(this.Point,option);}return false;};//Point => Value
6584
6586
  this.PointToValue=function(){if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame"){return this.PointToValue_Minute();}else{return this.PointToValue_KLine();}};this.PointToKLine=function(aryPoint){if(!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;var kLine=[];var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i in aryPoint){var item=aryPoint[i];var xValue=parseInt(this.Frame.GetXData(item.Y))+data.DataOffset;var yValue=this.Frame.GetYData(item.X);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;kLine[i]=valueItem;}}else{for(var i in aryPoint){var item=aryPoint[i];var index=parseInt(this.Frame.GetXData(item.X,false));var xValue=index+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length){xValue=data.Data.length-1;index=xValue-data.DataOffset;}var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue,XIndex:index};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;kLine[i]=valueItem;}}return kLine;};this.PointToValue_KLine=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.Y,false))+data.DataOffset;var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;this.Value[i]=valueItem;}}else{for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.X,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;this.Value[i]=valueItem;}}return true;};this.PointToValue_Minute=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.Y,false));var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[xValue];valueItem.DateTime={Date:minuteItem.Date,Time:minuteItem.Time};this.Value[i]=valueItem;}}else{var xDatetime=g_MinuteTimeStringData.GetTimeData(this.Symbol);for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.X,false));var yValue=this.Frame.GetYData(item.Y,false);if(xValue>=data.Data.length)//超过当前数据,直接读固定时间
6585
6587
  {var index=xValue%xDatetime.length;var dataIndex=data.Data.length-1;var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[dataIndex];var timeItem=xDatetime[index];valueItem.DateTime={Date:minuteItem.Date,Time:timeItem};this.Value[i]=valueItem;}else{var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[xValue];valueItem.DateTime={Date:minuteItem.Date,Time:minuteItem.Time};this.Value[i]=valueItem;}}}return true;};this.IsPointIn=function(x,y,option){return false;};//Value => Point
@@ -6688,7 +6690,7 @@ var sColorChange=[];for(var i=1;i<7;i+=2){sColorChange.push(parseInt("0x"+color.
6688
6690
  IChartDrawPicture.RegisterDrawPicture=function(obj){if(!obj.Name||!obj.ClassName||!obj.Create)return false;var item={Name:obj.Name,ClassName:obj.ClassName,Create:obj.Create};IChartDrawPicture.ArrayDrawPricture.push(item);JSConsole.Chart.Log('[IChartDrawPicture.RegisterDrawPicture] registered new draw picture class. item=',item);return true;};//注册一个新图标 {Name:, Text: , Color:, Family:}
6689
6691
  IChartDrawPicture.RegisterIonFont=function(obj){if(!obj.Name||!obj.Text||!obj.Family)return false;var isOverwirte=IChartDrawPicture.MapIonFont.has(obj.Name);IChartDrawPicture.MapIonFont.set(obj.Name,obj);JSConsole.Chart.Log('[IChartDrawPicture.RegisterIonFont] registered new icon font, obj=, isOverwirte=',obj,isOverwirte);return true;};IChartDrawPicture.CreateChartDrawPicture=function(obj)//创建画图工具
6690
6692
  {var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var chartDraw=item.Create();//TODO:后面都放到每一个SetOptin里面
6691
- 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;};//画图工具-线段
6693
+ 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(IFrameSplitOperator.IsBool(obj.EnableMove))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;};//画图工具-线段
6692
6694
  function ChartDrawPictureLine(){this.newMethod=IChartDrawPicture;//派生
6693
6695
  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:false});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();/*
6694
6696
  if (this.IsSelected)
@@ -6758,7 +6760,7 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureHaflLine'
6758
6760
  this.Canvas.restore();this.FullLine={Start:drawPoint[0],End:endPoint};};}// 画图工具-水平线 支持横屏
6759
6761
  function ChartDrawPictureHorizontalLine(){this.newMethod=IChartDrawPicture;//派生
6760
6762
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureHorizontalLine';this.PointCount=1;this.IsPointIn=this.IsPointIn_XYValue_Line;this.IsDrawFirst=true;this.LineWidth=1;this.Super_SetOption=this.SetOption;//父类函数
6761
- this.Super_ExportStorageData=this.ExportStorageData;this.LabelConfig={Left:{IsShow:true,Margin:{Left:5,Top:4,Bottom:2,Right:5}},Right:{IsShow:true,Margin:{Left:5,Top:4,Bottom:2,Right:5}},Font:12*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1',TextColor:"rgb(255,255,255)",BGColor:null};this.InsideLabelConfig={Position:0,//0=左, 1=右
6763
+ this.Super_ExportStorageData=this.ExportStorageData;this.LabelConfig={Left:{IsShow:true,Margin:{Left:5,Top:4,Bottom:2,Right:5},LineOffset:null,Text:null},Right:{IsShow:true,Margin:{Left:5,Top:4,Bottom:2,Right:5},LineOffset:null,Text:null},Font:12*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1',TextColor:"rgb(255,255,255)",BGColor:null};this.InsideLabelConfig={Position:0,//0=左, 1=右
6762
6764
  Font:14*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1',Margin:{Left:5,Top:4,Bottom:2,Right:5},TextColor:"rgb(255,255,255)",BGAlpha:0.8,//背景色透明度,
6763
6765
  IsShow:true};this.LabelTitle;this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.LabelTitle)this.LabelTitle=option.LabelTitle;if(option.Label){var item=option.Label;if(item.Left){var subItem=item.Left;if(IFrameSplitOperator.IsBool(subItem.IsShow))this.LabelConfig.Left.IsShow=subItem.IsShow;}if(item.Right){var subItem=item.Right;if(IFrameSplitOperator.IsBool(subItem.IsShow))this.LabelConfig.Right.IsShow=subItem.IsShow;}if(item.Font)this.LabelConfig.Font=item.Font;if(item.TextColor)this.LabelConfig.TextColor=item.TextColor;if(item.BGColor)this.LabelConfig.BGColor=item.BGColor;}if(option.InsideLabel){var item=option.InsideLabel;if(item.Font)this.InsideLabelConfig.Font=item.Font;if(item.TextColor)this.InsideLabelConfig.TextColor=item.TextColor;if(IFrameSplitOperator.IsNumber(item.Position))this.InsideLabelConfig.Position=item.Position;if(IFrameSplitOperator.IsNumber(item.BGAlpha))this.InsideLabelConfig.BGAlpha=item.BGAlpha;if(IFrameSplitOperator.IsBool(item.IsShow))this.InsideLabelConfig.IsShow=item.IsShow;}}};this.ExportStorageData=function(){var storageData;if(this.Super_ExportStorageData){storageData=this.Super_ExportStorageData();if(this.LabelTitle)storageData.LabelTitle=this.LabelTitle;if(this.LabelConfig)storageData.Label=this.LabelConfig;if(this.InsideLabelConfig)storageData.InsideLabel=this.InsideLabelConfig;}return storageData;};/*
6764
6766
  this.GetXYCoordinate=function()
@@ -6769,9 +6771,9 @@ IsShow:true};this.LabelTitle;this.SetOption=function(option){if(this.Super_SetOp
6769
6771
  return this.PointRange(drawPoint);
6770
6772
  }
6771
6773
  */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{var yFixed=ToFixedPoint2(this.LineWidth,drawPoint[0].Y);this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(right,yFixed);}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);//画点
6772
- this.DrawPoint(drawPoint);//显示价格
6773
- this.DrawInsideLabel(drawPoint[0]);this.Canvas.restore();this.DrawValueLabel(drawPoint[0]);};this.DrawValueLabel=function(point){if(!point)return;if(this.Frame.IsHScreen)return;//不支持横屏
6774
- var y=point.Y;var yValue=this.Frame.GetYData(y);var text=yValue.toFixed(2);var border=this.Frame.GetBorder();var config=this.LabelConfig;this.Canvas.font=config.Font;var textHeight=this.Canvas.measureText("擎").width;var textWidth=this.Canvas.measureText(text).width;if(config.Left.IsShow&&this.Frame.ChartBorder.Left>5){var margin=config.Left.Margin;var rtBG={Right:border.Left-1,Height:textHeight+margin.Top+margin.Bottom,Width:textWidth+margin.Left+margin.Right};rtBG.Top=y-textHeight/2-margin.Top;rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Left=rtBG.Right-rtBG.Width;if(config.BGColor)this.Canvas.fillStyle=config.BGColor;else this.Canvas.fillStyle=this.LineColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);this.Canvas.textAlign="left";this.Canvas.textBaseline="top";var xText=rtBG.Left+margin.Left;var yText=rtBG.Top+margin.Top;this.Canvas.fillStyle=config.TextColor;this.Canvas.fillText(text,xText,yText);}if(config.Right.IsShow&&this.Frame.ChartBorder.Right>5){var margin=config.Right.Margin;var rtBG={Left:border.Right+1,Height:textHeight+margin.Top+margin.Bottom,Width:textWidth+margin.Left+margin.Right};rtBG.Top=y-textHeight/2-margin.Top;rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Right=rtBG.Left+rtBG.Width;if(config.BGColor)this.Canvas.fillStyle=config.BGColor;else this.Canvas.fillStyle=this.LineColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);this.Canvas.textAlign="left";this.Canvas.textBaseline="top";var xText=rtBG.Left+margin.Left;var yText=rtBG.Top+margin.Top;this.Canvas.fillStyle=config.TextColor;this.Canvas.fillText(text,xText,yText);}};this.DrawInsideLabel=function(point){if(!point)return;var isHScreen=this.Frame.IsHScreen;var config=this.InsideLabelConfig;if(!config.IsShow)return;if(config.Position!=0&&config.Position!=1)return;var margin=config.Margin;this.Canvas.fillStyle=this.LineColor;this.Canvas.font=config.Font;var textHeight=this.Canvas.measureText("擎").width;var border=this.Frame.GetBorder();if(isHScreen){var yValue=this.Frame.GetYData(point.X);var text=yValue.toFixed(2);if(this.LabelTitle)text=this.LabelTitle+text;var textWidth=this.Canvas.measureText(text).width;var rtBG=null;if(config.Position==0)//左
6774
+ this.DrawPoint(drawPoint);this.FormatLabelTextEvent(drawPoint);//显示价格
6775
+ this.DrawInsideLabel(drawPoint[0]);this.Canvas.restore();this.DrawValueLabel(drawPoint[0]);};this.FormatLabelTextEvent=function(point){if(!this.HQChart)return;var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_DRAW_HLINE_LABEL);if(!event||!event.Callback)return;var sendData={ID:this.Guid,LabelConfig:this.LabelConfig,InsideLabelConfig:this.InsideLabelConfig};event.Callback(event,sendData,this);};this.DrawValueLabel=function(point){if(!point)return;if(this.Frame.IsHScreen)return;//不支持横屏
6776
+ var y=point.Y;var yFixed=ToFixedPoint2(this.LineWidth,y);var yValue=this.Frame.GetYData(y);var text=yValue.toFixed(2);var border=this.Frame.GetBorder();var config=this.LabelConfig;this.Canvas.font=config.Font;var textHeight=this.Canvas.measureText("擎").width;if(config.Left.IsShow&&this.Frame.ChartBorder.Left>5){var leftText=text;if(config.Left.Text)leftText=config.Left.Text;var textWidth=this.Canvas.measureText(leftText).width;var left=border.Left;if(IFrameSplitOperator.IsNumber(config.Left.LineOffset)&&config.Left.LineOffset!==0){left-=config.Left.LineOffset;this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.moveTo(border.Left,yFixed);this.Canvas.lineTo(left,yFixed);this.Canvas.stroke();this.RestoreLineWidth();}var margin=config.Left.Margin;var rtBG={Right:left+1,Height:textHeight+margin.Top+margin.Bottom,Width:textWidth+margin.Left+margin.Right};rtBG.Top=y-textHeight/2-margin.Top;rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Left=rtBG.Right-rtBG.Width;if(config.BGColor)this.Canvas.fillStyle=config.BGColor;else this.Canvas.fillStyle=this.LineColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);this.Canvas.textAlign="left";this.Canvas.textBaseline="top";var xText=rtBG.Left+margin.Left;var yText=rtBG.Top+margin.Top;this.Canvas.fillStyle=config.TextColor;this.Canvas.fillText(leftText,xText,yText);}if(config.Right.IsShow&&this.Frame.ChartBorder.Right>5){var rightText=text;if(config.Right.Text)rightText=config.Right.Text;var textWidth=this.Canvas.measureText(rightText).width;var left=border.Right;if(IFrameSplitOperator.IsNumber(config.Right.LineOffset)&&config.Right.LineOffset!==0){left+=config.Right.LineOffset;this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.moveTo(border.Right,yFixed);this.Canvas.lineTo(left,yFixed);this.Canvas.stroke();this.RestoreLineWidth();}var margin=config.Right.Margin;var rtBG={Left:left-1,Height:textHeight+margin.Top+margin.Bottom,Width:textWidth+margin.Left+margin.Right};rtBG.Top=y-textHeight/2-margin.Top;rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Right=rtBG.Left+rtBG.Width;if(config.BGColor)this.Canvas.fillStyle=config.BGColor;else this.Canvas.fillStyle=this.LineColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);this.Canvas.textAlign="left";this.Canvas.textBaseline="top";var xText=rtBG.Left+margin.Left;var yText=rtBG.Top+margin.Top;this.Canvas.fillStyle=config.TextColor;this.Canvas.fillText(rightText,xText,yText);}};this.DrawInsideLabel=function(point){if(!point)return;var isHScreen=this.Frame.IsHScreen;var config=this.InsideLabelConfig;if(!config.IsShow)return;if(config.Position!=0&&config.Position!=1)return;var margin=config.Margin;this.Canvas.fillStyle=this.LineColor;this.Canvas.font=config.Font;var textHeight=this.Canvas.measureText("擎").width;var border=this.Frame.GetBorder();if(isHScreen){var yValue=this.Frame.GetYData(point.X);var text=yValue.toFixed(2);if(this.LabelTitle)text=this.LabelTitle+text;var textWidth=this.Canvas.measureText(text).width;var rtBG=null;if(config.Position==0)//左
6775
6777
  {var rtBG={Top:border.Top+1,Width:textHeight+margin.Top+margin.Bottom,Height:textWidth+margin.Left+margin.Right,Left:point.X};rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Right=rtBG.Left+rtBG.Width;}else if(config.Position==1)//右
6776
6778
  {var rtBG={Bottom:border.Bottom-1,Width:textHeight+margin.Top+margin.Bottom,Height:textWidth+margin.Left+margin.Right,Left:point.X};rtBG.Top=rtBG.Bottom-rtBG.Height;rtBG.Right=rtBG.Left+rtBG.Width;}var bgColor=this.LineColor;if(config.BGAlpha<1)bgColor=IChartDrawPicture.ColorToRGBA(this.LineColor,config.BGAlpha);this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);var xText=rtBG.Right-margin.Top;var yText=rtBG.Top+margin.Left;this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);//数据和框子旋转180度
6777
6779
  this.Canvas.textAlign="left";this.Canvas.textBaseline="top";this.Canvas.fillStyle=config.TextColor;this.Canvas.fillText(text,0,0);}else{var yValue=this.Frame.GetYData(point.Y);var text=yValue.toFixed(2);if(this.LabelTitle)text=this.LabelTitle+text;var textWidth=this.Canvas.measureText(text).width;var rtBG=null;if(config.Position==0)//左
@@ -8564,12 +8566,13 @@ aryData.push(indexData);}}if(this.IsApiPeriod){var klineData=this.ChartPaint[0].
8564
8566
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i13 in this.SourceData.Data){var item=this.SourceData.Data[_i13];if(aryFixedData[_i13]&&IFrameSplitOperator.IsNumber(aryFixedData[_i13].Value))item.FlowCapital=aryFixedData[_i13].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
8565
8567
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsDayPeriod(bindData.Period,false))//周期数据
8566
8568
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;}}this.FlowCapitalReady=true;var bDraw=false;for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];if(item.ClassName=='StockChip'){bDraw=true;break;}}if(bDraw)this.Draw();};//创建画图工具
8567
- this.CreateChartDrawPicture=function(name,option,callback){var drawPicture=null;var item=IChartDrawPicture.GetDrawPictureByName(name);if(item){drawPicture=item.Create();drawPicture.HQChart=this;}if(!drawPicture)//iconfont图标
8568
- {if(IChartDrawPicture.MapIonFont.has(name)){var iconItem=IChartDrawPicture.MapIonFont.get(name);drawPicture=new ChartDrawPictureIconFont();drawPicture.FontOption.Family=iconItem.Family;drawPicture.Text=iconItem.Text;if(iconItem.Color)drawPicture.LineColor=iconItem.Color;}}if(!drawPicture)return false;drawPicture.Canvas=this.Canvas;drawPicture.Status=0;drawPicture.Symbol=this.Symbol;drawPicture.Period=this.Period;drawPicture.Right=this.Right;drawPicture.Option=this.ChartDrawOption;if(callback)drawPicture.FinishedCallback=callback;//完成通知上层回调
8569
+ this.CreateChartDrawPicture=function(name,option,callback){var drawPicture=null;var item=IChartDrawPicture.GetDrawPictureByName(name);if(item){drawPicture=item.Create();}if(!drawPicture)//iconfont图标
8570
+ {if(IChartDrawPicture.MapIonFont.has(name)){var iconItem=IChartDrawPicture.MapIonFont.get(name);drawPicture=new ChartDrawPictureIconFont();drawPicture.FontOption.Family=iconItem.Family;drawPicture.Text=iconItem.Text;if(iconItem.Color)drawPicture.LineColor=iconItem.Color;}}if(!drawPicture)return false;drawPicture.Canvas=this.Canvas;drawPicture.Status=0;drawPicture.Symbol=this.Symbol;drawPicture.Period=this.Period;drawPicture.Right=this.Right;drawPicture.Option=this.ChartDrawOption;drawPicture.HQChart=this;if(callback)drawPicture.FinishedCallback=callback;//完成通知上层回调
8569
8571
  if(option)drawPicture.SetOption(option);var self=this;drawPicture.Update=function()//更新回调函数
8570
8572
  {self.DrawDynamicInfo();};drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.CurrentChartDrawPicture=drawPicture;//JSConsole.Chart.Log("[KLineChartContainer::CreateChartDrawPicture] ", name,this.CurrentChartDrawPicture);
8571
8573
  return true;};this.AddChartDrawPicture=function(obj){if(!obj)return null;if(obj.FrameID<0||obj.FrameID>=this.Frame.SubFrame.length)return null;var self=this;var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var drawPicture=item.Create();drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame;//绑定框架坐标
8572
- drawPicture.Symbol=this.Symbol;drawPicture.Period=this.Period;drawPicture.Right=this.Right;drawPicture.Option=this.ChartDrawOption;if(obj.Value)drawPicture.Value=obj.Value;if(obj.Guid)drawPicture.Guid=obj.Guid;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(obj);drawPicture.SetOption(obj);if(obj.EnableUpdateXValue)drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};if(drawPicture.ClassName==='ChartDrawPictureText')drawPicture.IsInitialized=true;this.ChartDrawPicture.push(drawPicture);this.DrawDynamicInfo();return drawPicture;};this.PasteChartDrawPicture=function(data,frameID,option){if(!data||!data.ClassName)return null;if(frameID<0||frameID>=this.Frame.SubFrame.length)return null;var item=IChartDrawPicture.GetDrawPictureByClassName(data.ClassName);if(!item)return null;var drawPicture=item.Create();if(!drawPicture)return null;var self=this;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[frameID].Frame;//绑定框架坐标
8574
+ drawPicture.Symbol=this.Symbol;drawPicture.Period=this.Period;drawPicture.Right=this.Right;drawPicture.Option=this.ChartDrawOption;drawPicture.HQChart=this;if(obj.Value)drawPicture.Value=obj.Value;if(obj.Guid)drawPicture.Guid=obj.Guid;if(obj.CacheData)drawPicture.CacheData=obj.CacheData;//缓存数据
8575
+ if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(obj);drawPicture.SetOption(obj);if(obj.EnableUpdateXValue)drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};if(drawPicture.ClassName==='ChartDrawPictureText')drawPicture.IsInitialized=true;this.ChartDrawPicture.push(drawPicture);this.DrawDynamicInfo();return drawPicture;};this.PasteChartDrawPicture=function(data,frameID,option){if(!data||!data.ClassName)return null;if(frameID<0||frameID>=this.Frame.SubFrame.length)return null;var item=IChartDrawPicture.GetDrawPictureByClassName(data.ClassName);if(!item)return null;var drawPicture=item.Create();if(!drawPicture)return null;var self=this;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[frameID].Frame;//绑定框架坐标
8573
8576
  drawPicture.Symbol=this.Symbol;drawPicture.Period=this.Period;drawPicture.Right=this.Right;drawPicture.Option=this.ChartDrawOption;drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};if(drawPicture.SetOption)drawPicture.SetOption(data);this.RandomDrawPictureValue(drawPicture,data);drawPicture.PointToValue();if(drawPicture.ClassName==='ChartDrawPictureText')drawPicture.IsInitialized=true;this.ChartDrawPicture.push(drawPicture);//存盘
8574
8577
  if(this.ChartDrawStorage)this.ChartDrawStorage.SaveDrawData(drawPicture);this.DrawDynamicInfo();return drawPicture;};//随机生成画图的点
8575
8578
  this.RandomDrawPictureValue=function(chart,data){if(!IFrameSplitOperator.IsNonEmptyArray(data.Value))return;var kData=this.GetKLineChart();if(!kData||!kData.Data||!IFrameSplitOperator.IsNumber(kData.Data.DataOffset)||kData.Data.DataOffset<0)return null;if(!IFrameSplitOperator.IsNonEmptyArray(kData.Data.Data))return null;var aryKData=kData.Data.Data;var startIndex=kData.Data.DataOffset;var endIndex=kData.Data.DataOffset+kData.ChartFrame.XPointCount-1;if(endIndex>=aryKData.length)endIndex=aryKData.length-1;var frameHeight=chart.Frame.ChartBorder.GetHeight();var max=chart.Frame.HorizontalMax;var min=chart.Frame.HorizontalMin;var y=chart.Frame.ChartBorder.GetBottomEx()-frameHeight*data.YFristScale;var range={Max:5,Min:2};var xRandomOffset=Math.floor(Math.random()*(range.Max-range.Min+1))+range.Min;var xValue=data.Value[0].XIndex+xRandomOffset;var firstPoint=null;chart.Value=[];for(var i=0;i<data.Value.length;++i){var item=data.Value[i];chart.Value[i]={XValue:xValue+item.XOffset};chart.Point[i]={Y:y+item.YOffset,X:chart.Frame.GetXFromIndex(xValue+item.XOffset,false)};}};//xStep,yStep 移动的偏移量
@@ -8593,7 +8596,7 @@ if(!MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol)&&!MARKET_SUFFIX_NAME.IsBIT(this.
8593
8596
  for(var i=0;i<aryMenu.length;++i){var item=aryMenu[i];if(item.Name=="五彩K线"){if(this.ColorIndex){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除五彩K线",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID}});}}else if(item.Name=="专家系统"){if(this.TradeIndex){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除专家系统",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID}});}}else if(item.Name=="叠加品种"){for(var j=0;j<item.SubMenu.length;++j){if(item.SubMenu[j].Checked){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"取消叠加",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID}});break;}}}else if(item.Name=="信息地雷"){for(var j=0;j<item.SubMenu.length;++j){if(item.SubMenu[j].Checked){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除所有",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID}});break;}}}else if(item.Name=="十字光标"){if(kItem){var bLocked=this.IsLockCorssCursor();if(bLocked)item.SubMenu.push({Name:"锁十字光标",Data:{ID:JSCHART_MENU_ID.CMD_UNLOCK_CROSSCURSOR},Checked:bLocked});else item.SubMenu.push({Name:"锁十字光标",Data:{ID:JSCHART_MENU_ID.CMD_LOCK_CROSSCURSOR,Args:[{KItem:{Date:kItem.Date,Time:kItem.Time},Draw:true}]},Checked:bLocked});}}}return aryMenu;};this.PopupSelectRectMenuV2=function(data,e){var _this32=this;var aryMenu=[{Name:"区间统计",Data:{ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID,Args:[e,data.SelectData]}},{Name:"区间放大",Data:{ID:JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID,Args:[data.SelectData]}}];var menuData={Menu:aryMenu,Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID};menuData.ClickCallback=function(data){_this32.OnClickRightMenu(data);};var x=data.X,y=data.Y;this.PopupMenuByRClick(menuData,x,y);};//重新加载画图工具(切换股票|周期)
8594
8597
  this.ReloadChartDrawPicture=function(){this.ChartDrawPicture=[];if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;this.CurrentChartDrawPicture=null;if(this.ChartDrawStorage){this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData({Symbol:this.Symbol,Period:this.Period});var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_LOAD_DRAWPICTURE);if(event&&event.Callback){var sendData={Symbol:this.Symbol,Period:this.Period,DrawStorage:this.ChartDrawStorage,ChartDrawStorageCache:this.ChartDrawStorageCache};event.Callback(event,sendData,this);}}};this.CreateChartDrawPictureByStorage=function()//把缓存(this.ChartDrawStorageCache) 画图工具创建出来
8595
8598
  {if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartDrawStorageCache))return;for(var i=0;i<this.ChartDrawStorageCache.length;++i){var item=this.ChartDrawStorageCache[i];if(item.FrameID<0||!this.Frame.SubFrame||this.Frame.SubFrame.length<item.FrameID)continue;var drawPicture=IChartDrawPicture.CreateChartDrawPicture(item);if(!drawPicture)continue;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame;//绑定框架坐标
8596
- drawPicture.Option=this.ChartDrawOption;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);if(drawPicture.Period!=this.Period){drawPicture.ChangePeriod(this.Period);}else{drawPicture.UpdateXValue();}drawPicture.ValueToPoint();var self=this;drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);}this.ChartDrawStorageCache=null;//清空缓存
8599
+ drawPicture.Option=this.ChartDrawOption;drawPicture.HQChart=this;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);if(drawPicture.Period!=this.Period){drawPicture.ChangePeriod(this.Period);}else{drawPicture.UpdateXValue();}drawPicture.ValueToPoint();var self=this;drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);}this.ChartDrawStorageCache=null;//清空缓存
8597
8600
  };//更新信息地雷
8598
8601
  this.UpdataChartInfo=function(){//TODO: 根据K线数据日期来做map, 不在K线上的合并到下一个k线日期里面
8599
8602
  var mapInfoData=null;if(this.Period==0)//日线数据 根据日期
@@ -9469,12 +9472,13 @@ this.UpdataChartInfo=function(){var chart=this.GetChartMinuteInfo();if(!chart)re
9469
9472
  this.RecvWindowIndex=function(index,data){var indexItem=this.WindowIndex[index];if(!indexItem)return;if(typeof indexItem.RecvSubscribeData=="function"){var bindData=this.SourceData;indexItem.RecvSubscribeData(data,this,index,bindData);}};this.UpdateWindowIndex=function(index){if(index<2)return;var bindData=this.SourceData;this.BindIndexData(index,bindData);this.UpdataDataoffset();//更新数据偏移
9470
9473
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
9471
9474
  this.Draw();};this.CreateChartDrawPicture=function(name,option,callback){var drawPicture=null;var item=IChartDrawPicture.GetDrawPictureByName(name);if(item){drawPicture=item.Create();}if(!drawPicture)//iconfont图标
9472
- {if(IChartDrawPicture.MapIonFont.has(name)){var iconItem=IChartDrawPicture.MapIonFont.get(name);drawPicture=new ChartDrawPictureIconFont();drawPicture.FontOption.Family=iconItem.Family;drawPicture.Text=iconItem.Text;if(iconItem.Color)drawPicture.LineColor=iconItem.Color;}}if(!drawPicture)return false;drawPicture.Canvas=this.Canvas;drawPicture.Status=0;drawPicture.Symbol=this.Symbol;drawPicture.Period=888888888;drawPicture.Option=this.ChartDrawOption;if(callback)drawPicture.FinishedCallback=callback;//完成通知上层回调
9475
+ {if(IChartDrawPicture.MapIonFont.has(name)){var iconItem=IChartDrawPicture.MapIonFont.get(name);drawPicture=new ChartDrawPictureIconFont();drawPicture.FontOption.Family=iconItem.Family;drawPicture.Text=iconItem.Text;if(iconItem.Color)drawPicture.LineColor=iconItem.Color;}}if(!drawPicture)return false;drawPicture.Canvas=this.Canvas;drawPicture.Status=0;drawPicture.Symbol=this.Symbol;drawPicture.Period=888888888;drawPicture.Option=this.ChartDrawOption;drawPicture.HQChart=this;if(callback)drawPicture.FinishedCallback=callback;//完成通知上层回调
9473
9476
  if(option)drawPicture.SetOption(option);var self=this;drawPicture.Update=function()//更新回调函数
9474
9477
  {self.DrawDynamicInfo();};drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.CurrentChartDrawPicture=drawPicture;JSConsole.Chart.Log("[MinuteChartContainer::CreateChartDrawPicture] ",name,this.CurrentChartDrawPicture);return true;};//手动添加画线
9475
9478
  this.AddChartDrawPicture=function(obj){if(!obj)return null;if(obj.FrameID<0||obj.FrameID>=this.Frame.SubFrame.length)return null;var self=this;var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var drawPicture=item.Create();drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame;//绑定框架坐标
9476
- drawPicture.Symbol=this.Symbol;drawPicture.Period=888888888;if(obj.Value)drawPicture.Value=obj.Value;if(obj.Guid)drawPicture.Guid=obj.Guid;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(obj);drawPicture.SetOption(obj);if(obj.EnableUpdateXValue)drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);if(obj.Draw==true)this.DrawDynamicInfo();return drawPicture;};this.ReloadChartDrawPicture=function(){this.ChartDrawPicture=[];if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;this.CurrentChartDrawPicture=null;this.MoveOnChartDrawPicture=null;if(this.ChartDrawStorage){this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData({Symbol:this.Symbol,Period:888888888});}};this.CreateChartDrawPictureByStorage=function()//把缓存(this.ChartDrawStorageCache) 画图工具创建出来
9477
- {var _this43=this;if(!this.ChartDrawStorageCache||this.ChartDrawStorageCache.length<=0)return;var kData=this.GetKData();for(var i=0;i<this.ChartDrawStorageCache.length;++i){var item=this.ChartDrawStorageCache[i];if(item.FrameID<0||!this.Frame.SubFrame||this.Frame.SubFrame.length<item.FrameID)continue;var drawPicture=IChartDrawPicture.CreateChartDrawPicture(item);if(!drawPicture)continue;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame;//绑定框架坐标
9479
+ drawPicture.Symbol=this.Symbol;drawPicture.Period=888888888;drawPicture.HQChart=this;if(obj.Value)drawPicture.Value=obj.Value;if(obj.Guid)drawPicture.Guid=obj.Guid;if(obj.CacheData)drawPicture.CacheData=obj.CacheData;//缓存数据
9480
+ if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(obj);drawPicture.SetOption(obj);if(obj.EnableUpdateXValue)drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);if(obj.Draw==true)this.DrawDynamicInfo();return drawPicture;};this.ReloadChartDrawPicture=function(){this.ChartDrawPicture=[];if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;this.CurrentChartDrawPicture=null;this.MoveOnChartDrawPicture=null;if(this.ChartDrawStorage){this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData({Symbol:this.Symbol,Period:888888888});}};this.CreateChartDrawPictureByStorage=function()//把缓存(this.ChartDrawStorageCache) 画图工具创建出来
9481
+ {var _this43=this;if(!this.ChartDrawStorageCache||this.ChartDrawStorageCache.length<=0)return;var kData=this.GetKData();for(var i=0;i<this.ChartDrawStorageCache.length;++i){var item=this.ChartDrawStorageCache[i];if(item.FrameID<0||!this.Frame.SubFrame||this.Frame.SubFrame.length<item.FrameID)continue;var drawPicture=IChartDrawPicture.CreateChartDrawPicture(item);if(!drawPicture)continue;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.HQChart=this;drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame;//绑定框架坐标
9478
9482
  if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);drawPicture.ResetXValue();drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return _this43.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);}this.ChartDrawStorageCache=null;//清空缓存
9479
9483
  };this.SetSizeChange=function(bChanged){this.Frame.SetSizeChage(bChanged);for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];item.SizeChange=bChanged;}};this.SetSizeChage=this.SetSizeChange;//根据X坐标获取数据索引
9480
9484
  this.GetDataIndexByPoint=function(x){var frame=this.Frame;if(this.Frame.SubFrame&&this.Frame.SubFrame.length>0)frame=this.Frame.SubFrame[0].Frame;if(!frame)return;var value=frame.GetXData(x);var index=parseInt(value.toFixed(0));return index;};//不支持未来时间 目前只支持主图
@@ -15517,7 +15521,27 @@ btnRestore.innerText="恢复默认";btnRestore.addEventListener("mousedown",func
15517
15521
  */var btnOk=document.createElement("button");//btnOk.className="UMyChart_ModifyIndexParam_button";
15518
15522
  btnOk.innerText="关闭";btnOk.addEventListener("mousedown",function(e){_this112.Close(e);});divButton.appendChild(btnOk);document.body.appendChild(divDom);this.DivName=divName;this.DivDialog=divDom;this.TitleBox={DivTitle:divTitle,DivName:divName,DivColor:divClose};this.UpdateStyle();};this.CreateRowDOM=function(index,tbody){var _this113=this;var rowItem={Tr:null,TdName:null,SpanName:null,TdValue:null,Input:null,ParamItem:null};var trDom=document.createElement("tr");trDom.className='UMyChart_ModifyIndexParam_Tr';tbody.appendChild(trDom);rowItem.Tr=trDom;var tdDom=document.createElement("td");tdDom.className="UMyChart_ModifyIndexParam_Name_Td";//指标名称
15519
15523
  trDom.appendChild(tdDom);rowItem.TdName=tdDom;var spanDom=document.createElement("span");spanDom.className='UMyChart_ModifyIndexParam_Name_Span';spanDom.innerText='参数';tdDom.appendChild(spanDom);rowItem.SpanName=spanDom;var tdDom=document.createElement("td");tdDom.className="UMyChart_ModifyIndexParam_Value_Td";//指标名称
15520
- trDom.appendChild(tdDom);rowItem.TdValue=tdDom;var input=document.createElement("input");input.className='UMyChart_ModifyIndexParam_Input';input.type="number";input.step=1;input.addEventListener("mouseup",function(e){_this113.OnParamMouseUp(e);});input.addEventListener("keyup",function(e){_this113.OnParamKeyUp(e);});tdDom.appendChild(input);rowItem.Input=input;return rowItem;};this.UpdateStyle=function(){};this.UpdateParamTable=function(aryText){var index=0;for(index=0;index<aryText.length&&index<this.AryData.length;++index){var item=aryText[index];var row=this.AryData[index];row.SpanName.innerText=item.Name+': ';row.Input.value=item.Value;row.Input.dataset.paramid=item.Index;if(row.Tr.style.display=="none")row.Tr.style.display="";}for(;index<this.AryData.length;++index){var row=this.AryData[index];row.Tr.style.display="none";row.Input.dataset.paramid=-1;}};this.UpdateParam=function(){var aryText=[];var indexScript=this.IndexData.IndexScript;if(indexScript&&IFrameSplitOperator.IsNonEmptyArray(indexScript.Arguments)){for(var i=0;i<indexScript.Arguments.length;++i){var item=indexScript.Arguments[i];aryText.push({Name:item.Name,Value:item.Value,Index:i});}}this.UpdateParamTable(aryText);};this.RestoreParam=function(){if(!this.IndexData||!this.IndexData.IndexScript)return;var indexScript=this.IndexData.IndexScript;if(!IFrameSplitOperator.IsNonEmptyArray(indexScript.Arguments))return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Arguments))return;var bUpdate=false;for(var i=0;i<this.Arguments.length;++i){var oldItem=this.Arguments[i];var item=indexScript.Arguments[i];if(oldItem.Value!=item.Value){item.Value=oldItem.Value;bUpdate=true;}}if(!bUpdate)return;if(this.IndexData.Type==1)this.HQChart.UpdateWindowIndex(this.IndexData.WindowIndex);else if(this.IndexData.Type==2)this.HQChart.UpdateOverlayIndex(this.IndexData.Identify);};this.BackupParam=function(){this.Arguments=[];if(!this.IndexData||!this.IndexData.IndexScript)return;var indexScript=this.IndexData.IndexScript;if(IFrameSplitOperator.IsNonEmptyArray(indexScript.Arguments)){for(var i=0;i<indexScript.Arguments.length;++i){var item=indexScript.Arguments[i];this.Arguments.push({Name:item.Name,Value:item.Value,Index:i});}}};this.GetDefaultParam=function(){this.Arguments=[];if(!this.IndexData||!this.IndexData.IndexScript)return;var indexScript=this.IndexData.IndexScript;var args=[];if(indexScript.ID){var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexScript.ID);if(indexInfo)args=indexInfo.Args;}var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.GET_DEFAULT_INDEX_PARAM);if(event&&event.Callback){var sendData={IndexData:this.IndexData,Args:args.slice(),PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return;args=sendData.Args;}if(IFrameSplitOperator.IsNonEmptyArray(args)){for(var i=0;i<args.length;++i){var item=args[i];this.Arguments.push({Name:item.Name,Value:item.Value,Index:i});}}};this.OnParamMouseUp=function(e){var input=e.target;var value=input.value;var id=input.dataset.paramid;this.ModifyParam(id,parseInt(value));};this.OnParamKeyUp=function(e){var input=e.target;var value=input.value;var id=input.dataset.paramid;this.ModifyParam(id,parseInt(value));};this.ModifyParam=function(id,value){if(!this.IndexData||!this.IndexData.IndexScript)return;var indexScript=this.IndexData.IndexScript;var item=indexScript.Arguments[id];if(!item)return;if(item.Value==value)return;item.Value=value;if(this.IndexData.Type==1){this.HQChart.UpdateWindowIndex(this.IndexData.WindowIndex);}else if(this.IndexData.Type==2){this.HQChart.UpdateOverlayIndex(this.IndexData.Identify);}};}/////////////////////////////////////////////////////////////////////////////////////////////
15524
+ trDom.appendChild(tdDom);rowItem.TdValue=tdDom;var input=document.createElement("input");input.className='UMyChart_ModifyIndexParam_Input';input.type="number";input.step=1;//input.addEventListener("mouseup", (e)=>{ this.OnParamMouseUp(e)});
15525
+ //input.addEventListener("keyup", (e)=>{ this.OnParamKeyUp(e)} );
15526
+ input.addEventListener("input",function(e){_this113.OnParamInput(e);});tdDom.appendChild(input);rowItem.Input=input;return rowItem;};this.UpdateStyle=function(){};this.UpdateParamTable=function(aryText){var index=0;for(index=0;index<aryText.length&&index<this.AryData.length;++index){var item=aryText[index];var row=this.AryData[index];row.SpanName.innerText=item.Name+': ';row.Input.value=item.Value;row.Input.dataset.paramid=item.Index;if(row.Tr.style.display=="none")row.Tr.style.display="";}for(;index<this.AryData.length;++index){var row=this.AryData[index];row.Tr.style.display="none";row.Input.dataset.paramid=-1;}};this.UpdateParam=function(){var aryText=[];var indexScript=this.IndexData.IndexScript;if(indexScript&&IFrameSplitOperator.IsNonEmptyArray(indexScript.Arguments)){for(var i=0;i<indexScript.Arguments.length;++i){var item=indexScript.Arguments[i];aryText.push({Name:item.Name,Value:item.Value,Index:i});}}this.UpdateParamTable(aryText);};this.RestoreParam=function(){if(!this.IndexData||!this.IndexData.IndexScript)return;var indexScript=this.IndexData.IndexScript;if(!IFrameSplitOperator.IsNonEmptyArray(indexScript.Arguments))return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Arguments))return;var bUpdate=false;for(var i=0;i<this.Arguments.length;++i){var oldItem=this.Arguments[i];var item=indexScript.Arguments[i];if(oldItem.Value!=item.Value){item.Value=oldItem.Value;bUpdate=true;}}if(!bUpdate)return;if(this.IndexData.Type==1)this.HQChart.UpdateWindowIndex(this.IndexData.WindowIndex);else if(this.IndexData.Type==2)this.HQChart.UpdateOverlayIndex(this.IndexData.Identify);};this.BackupParam=function(){this.Arguments=[];if(!this.IndexData||!this.IndexData.IndexScript)return;var indexScript=this.IndexData.IndexScript;if(IFrameSplitOperator.IsNonEmptyArray(indexScript.Arguments)){for(var i=0;i<indexScript.Arguments.length;++i){var item=indexScript.Arguments[i];this.Arguments.push({Name:item.Name,Value:item.Value,Index:i});}}};this.GetDefaultParam=function(){this.Arguments=[];if(!this.IndexData||!this.IndexData.IndexScript)return;var indexScript=this.IndexData.IndexScript;var args=[];if(indexScript.ID){var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexScript.ID);if(indexInfo)args=indexInfo.Args;}var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.GET_DEFAULT_INDEX_PARAM);if(event&&event.Callback){var sendData={IndexData:this.IndexData,Args:args.slice(),PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return;args=sendData.Args;}if(IFrameSplitOperator.IsNonEmptyArray(args)){for(var i=0;i<args.length;++i){var item=args[i];this.Arguments.push({Name:item.Name,Value:item.Value,Index:i});}}};/*
15527
+ this.OnParamMouseUp=function(e)
15528
+ {
15529
+ var input=e.target;
15530
+ var value=input.value;
15531
+ var id=input.dataset.paramid;
15532
+
15533
+ this.ModifyParam(id, parseInt(value));
15534
+ }
15535
+
15536
+ this.OnParamKeyUp=function(e)
15537
+ {
15538
+ var input=e.target;
15539
+ var value=input.value;
15540
+ var id=input.dataset.paramid;
15541
+
15542
+ this.ModifyParam(id, parseInt(value));
15543
+ }
15544
+ */this.OnParamInput=function(e){var input=e.target;var value=input.value;var id=input.dataset.paramid;this.ModifyParam(id,parseInt(value));};this.ModifyParam=function(id,value){if(!this.IndexData||!this.IndexData.IndexScript)return;var indexScript=this.IndexData.IndexScript;var item=indexScript.Arguments[id];if(!item)return;if(item.Value==value)return;item.Value=value;if(this.IndexData.Type==1){this.HQChart.UpdateWindowIndex(this.IndexData.WindowIndex);}else if(this.IndexData.Type==2){this.HQChart.UpdateOverlayIndex(this.IndexData.Identify);}};}/////////////////////////////////////////////////////////////////////////////////////////////
15521
15545
  //测试指标
15522
15546
  var TEST_INDEX_4AE0_1='\u80FD\u91CF:=SQRT(VOL)*(((C-(H+L)/2))/((H+L)/2));\n\u5E73\u6ED1\u80FD\u91CF:=EMA(\u80FD\u91CF,16);\n\u80FD\u91CF\u60EF\u6027:EMA(\u5E73\u6ED1\u80FD\u91CF,16);\nDRAWICON(\u80FD\u91CF\u60EF\u6027>0 AND REF(\u80FD\u91CF\u60EF\u6027,1)<0,0,1);\nSTICKLINE(\u80FD\u91CF\u60EF\u6027>=0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.05),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.15),3,0), COLOR0000CC;\nSTICKLINE(\u80FD\u91CF\u60EF\u6027>=0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.2),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.35),3,0), COLOR0066FF;\nSTICKLINE(\u80FD\u91CF\u60EF\u6027>=0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.4),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.55),3,0),COLOR0099FF;\nSTICKLINE(\u80FD\u91CF\u60EF\u6027>=0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.6),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.75),3,0), COLOR00CCFF;\nSTICKLINE(\u80FD\u91CF\u60EF\u6027>=0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.8),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.95),3,0), COLOR00FFFF;\nSTICKLINE(\u80FD\u91CF\u60EF\u6027<0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.05),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.15),3,0), COLORFF3300;\nSTICKLINE(\u80FD\u91CF\u60EF\u6027<0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.2),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.35),3,0), COLORFF6600;\nSTICKLINE(\u80FD\u91CF\u60EF\u6027<0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.4),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.55),3,0), COLORFF9900;\nSTICKLINE(\u80FD\u91CF\u60EF\u6027<0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.6),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.75),3,0), COLORFFCC00;\nSTICKLINE(\u80FD\u91CF\u60EF\u6027<0,(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.8),(\u80FD\u91CF\u60EF\u6027-\u80FD\u91CF\u60EF\u6027*0.95),3,0), COLORFFFF00;';var TEST_INDEX_4AE0_2='\nMA3:MA(CLOSE,3),COLORWHITE;\nMA17:MA(CLOSE,17),COLORYELLOW;\nQQ:=0,COLORWHITE;\nMA1:=MA(CLOSE,3);\nMA2:=MA(CLOSE,17);\nJG:=CROSS(MA1,MA2);\nVOLUME:=VOL,VOLSTICK;\nMAVOL1:=MA(VOLUME,3);\nMAVOL2:=MA(VOLUME,17);\nNL:=CROSS(MAVOL1,MAVOL2);\nDIF:=EMA(CLOSE,12)-EMA(CLOSE,26);\nDEA:=EMA(DIF,9);\nMACD:=(DIF-DEA)*2,COLORSTICK;\nNA:=CROSS(DIF,DEA);\nRSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;\nK:=SMA(RSV,9,1);\nD:=SMA(K,9,1);\nJ:=3*K-2*D;\nKD:=CROSS(K,D) AND CROSS(J,D);\n\u98DE\u9F99\u516B\u7EA7\u8FDB:DRAWTEXT((JG AND NL AND NA) OR (JG AND NL AND KD) OR\n(JG AND NA AND KD) OR (NL AND NA AND KD),L*0.95,\' \u98DE\u9F99\u516B\u7EA7\u8FDB\'),COLORYELLOW;\nX:=LLV(J,2)=LLV(J,8);\nY:=IF(CROSS(J,REF(J+0.01,1)) AND X AND J<20,30,0);\nDRAWTEXT(CROSS(J,REF(J+0.01,1)) AND X AND J<20,LOW*0.98,\'\'),COLORLIMAGENTA;\n\u7A7A:=EMA(C,5);\n\u5747\u8861:=EMA(\u7A7A,5),COLORWHITE;\n\u4E2D\u8F68:=HHV(MA(H,13),13),COLORRED,LINETHICK2;\nVAR5:=FILTER(\u5747\u8861>REF(\u5747\u8861,1)AND \u4E2D\u8F68<REF(\u4E2D\u8F68,1)AND C>REF(C,1),11);\nDRAWTEXT(VAR5,L*0.98,\'\'),COLORYELLOW;\nPT:=XMA(H,20);\nPAN:=XMA(CLOSE,7),COLORBROWN;\nRUO:=MEMA(CLOSE,3),COLORLIBLUE;\nSTICKLINE(CLOSE> REF(CLOSE,1) ,HIGH,LOW,0,1 ),COLORRED;\nSTICKLINE(CLOSE> REF(CLOSE,1) ,OPEN,CLOSE,3,0 ),COLOR000055;\nSTICKLINE(CLOSE> REF(CLOSE,1) ,OPEN,CLOSE,2.7,0 ),COLOR000077;\nSTICKLINE(CLOSE> REF(CLOSE,1) ,OPEN,CLOSE,2.1,0 ),COLOR000099;\nSTICKLINE(CLOSE> REF(CLOSE,1) ,OPEN,CLOSE,1.5,0 ),COLOR0000BB;\nSTICKLINE(CLOSE> REF(CLOSE,1) ,OPEN,CLOSE,0.9,0 ),COLOR0000DD;\nSTICKLINE(CLOSE> REF(CLOSE,1) ,OPEN,CLOSE,0.3,0 ),COLOR0000FF;\nSTICKLINE(CLOSE= REF(CLOSE,1) ,HIGH,LOW,0,1 ),COLORWHITE;\nSTICKLINE(CLOSE= REF(CLOSE,1) ,OPEN,CLOSE,3,0 ),COLOR555555;\nSTICKLINE(CLOSE= REF(CLOSE,1) ,OPEN,CLOSE,2.7,0 ),COLOR777777;\nSTICKLINE(CLOSE= REF(CLOSE,1) ,OPEN,CLOSE,2.1,0 ),COLOR999999;\nSTICKLINE(CLOSE= REF(CLOSE,1) ,OPEN,CLOSE,1.5,0 ),COLORBBBBBB;\nSTICKLINE(CLOSE= REF(CLOSE,1) ,OPEN,CLOSE,0.9,0 ),COLORDDDDDD;\nSTICKLINE(CLOSE= REF(CLOSE,1) ,OPEN,CLOSE,0.3,0 ),COLORFFFFFF;\nSTICKLINE(CLOSE< REF(CLOSE,1) ,HIGH,LOW,0,1 ),COLORCYAN;\nSTICKLINE(CLOSE< REF(CLOSE,1) ,OPEN,CLOSE,3,0 ),COLOR990000;\nSTICKLINE(CLOSE< REF(CLOSE,1) ,OPEN,CLOSE,2.7,0 ),COLORCC0000;\nSTICKLINE(CLOSE< REF(CLOSE,1) ,OPEN,CLOSE,2.1,0 ),COLORFF4400;\nSTICKLINE(CLOSE< REF(CLOSE,1) ,OPEN,CLOSE,1.5,0 ),COLORFF8800;\nSTICKLINE(CLOSE< REF(CLOSE,1) ,OPEN,CLOSE,0.9,0 ),COLORFFCC00;\nSTICKLINE(CLOSE< REF(CLOSE,1) ,OPEN,CLOSE,0.3,0 ),COLORCYAN;\n\u9AD8:=REF(HHV(H,80),3);\n\u4F4E:=REF(LLV(L,80),3);\nH19:=\u9AD8-(\u9AD8-\u4F4E)*0.191;\nH38:=\u9AD8-(\u9AD8-\u4F4E)*0.382;\nH\u4E2D:=\u9AD8-(\u9AD8-\u4F4E)*0.5;\nH61:=\u9AD8-(\u9AD8-\u4F4E)*0.618;\nH80:=\u9AD8-(\u9AD8-\u4F4E)*0.809;\n\u9876\u70B9:REFDATE(\u9AD8,DATE),COLORWHITE;\nREFDATE(H19,DATE),COLORYELLOW;\nREFDATE(H38,DATE),COLORMAGENTA;\nREFDATE(H\u4E2D,DATE),COLORRED;\nREFDATE(H61,DATE),COLORMAGENTA;\nREFDATE(H80,DATE),COLORYELLOW;\n\u4F4E\u70B9:REFDATE(\u4F4E,DATE),COLORWHITE;\nDRAWTEXT(ISLASTBAR,\u4F4E\u70B9,\'\'),COLORWHITE;\n';//添加测试系统指标
15523
15547
  function AddTestSystemIndex(){var aryIndex=[];aryIndex.push({ID:"TEST_INDEX_4AE0_1",Name:'波段量能跟庄-波段量能',Script:TEST_INDEX_4AE0_1,Args:null});aryIndex.push({ID:"TEST_INDEX_4AE0_2",//指标ID
@@ -15537,7 +15561,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
15537
15561
  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);};}/********************************************************************************
15538
15562
  * 版本信息输出
15539
15563
  *
15540
- */var HQCHART_VERSION="1.1.15146";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
15564
+ */var HQCHART_VERSION="1.1.15153";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
15541
15565
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
15542
15566
  // BaseIndex:BaseIndex,
15543
15567
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.15147",
3
+ "version": "1.1.15154",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -1097,8 +1097,9 @@ function JSDialogModifyIndexParam()
1097
1097
  input.className='UMyChart_ModifyIndexParam_Input';
1098
1098
  input.type="number";
1099
1099
  input.step=1;
1100
- input.addEventListener("mouseup", (e)=>{ this.OnParamMouseUp(e)});
1101
- input.addEventListener("keyup", (e)=>{ this.OnParamKeyUp(e)})
1100
+ //input.addEventListener("mouseup", (e)=>{ this.OnParamMouseUp(e)});
1101
+ //input.addEventListener("keyup", (e)=>{ this.OnParamKeyUp(e)} );
1102
+ input.addEventListener("input", (e)=>{ this.OnParamInput(e)} );
1102
1103
  tdDom.appendChild(input);
1103
1104
  rowItem.Input=input;
1104
1105
 
@@ -1227,6 +1228,7 @@ function JSDialogModifyIndexParam()
1227
1228
  }
1228
1229
  }
1229
1230
 
1231
+ /*
1230
1232
  this.OnParamMouseUp=function(e)
1231
1233
  {
1232
1234
  var input=e.target;
@@ -1244,6 +1246,16 @@ function JSDialogModifyIndexParam()
1244
1246
 
1245
1247
  this.ModifyParam(id, parseInt(value));
1246
1248
  }
1249
+ */
1250
+
1251
+ this.OnParamInput=function(e)
1252
+ {
1253
+ var input=e.target;
1254
+ var value=input.value;
1255
+ var id=input.dataset.paramid;
1256
+
1257
+ this.ModifyParam(id, parseInt(value));
1258
+ }
1247
1259
 
1248
1260
  this.ModifyParam=function(id, value)
1249
1261
  {
@@ -2907,6 +2907,8 @@ var JSCHART_EVENT_ID=
2907
2907
  ON_FORMAT_COUNTDOWN_TEXT:177, //倒计时
2908
2908
  ON_CLICK_INDEX_LOCK:178, //点击指标锁
2909
2909
  ON_CORSSCURSOR_STATUS_CHANGE:179, //十字光标状态改变
2910
+
2911
+ ON_FORMAT_DRAW_HLINE_LABEL:180, //画图工具-水平线(ChartDrawPictureHorizontalLine)格式化标签文字
2910
2912
  }
2911
2913
 
2912
2914
  var JSCHART_OPERATOR_ID=
@@ -6446,6 +6448,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6446
6448
  chartItem.Canvas=canvas; //叠加图形
6447
6449
  }
6448
6450
  }
6451
+
6452
+ if (item.Frame.LockPaint)
6453
+ {
6454
+ item.Frame.LockPaint.Canvas=canvas;
6455
+ }
6449
6456
  }
6450
6457
  }
6451
6458
 
@@ -64571,7 +64578,7 @@ function IChartDrawPicture()
64571
64578
  this.PointType=g_JSChartResource.DrawPicture.PointType; // 0=圆点 1=方框 2= 空心圆
64572
64579
  this.IsShowPoint=g_JSChartResource.DrawPicture.IsShowPoint; //是否始终显示点
64573
64580
  this.LimitFrameID; //限制在指定窗口绘图
64574
-
64581
+ this.CacheData; //数据缓存
64575
64582
 
64576
64583
  //接口函数
64577
64584
  this.SetLastPoint=null; //this.SetLastPoint=function(obj) obj={X:,Y:}
@@ -64599,6 +64606,9 @@ function IChartDrawPicture()
64599
64606
  if (IFrameSplitOperator.IsNumber(option.LimitFrameID)) this.LimitFrameID=option.LimitFrameID;
64600
64607
  if (IFrameSplitOperator.IsBool(option.EnableCtrlMove)) this.EnableCtrlMove=option.EnableCtrlMove;
64601
64608
  if (IFrameSplitOperator.IsBool(option.IsShowYCoordinate)) this.IsShowYCoordinate=option.IsShowYCoordinate;
64609
+ if (IFrameSplitOperator.IsBool(option.EnableSave)) this.EnableSave=option.EnableSave;
64610
+ if (IFrameSplitOperator.IsBool(option.EnableMove)) this.EnableMove=option.EnableMove;
64611
+
64602
64612
  }
64603
64613
 
64604
64614
  this.ReloadResource=function(resource)
@@ -66261,7 +66271,7 @@ IChartDrawPicture.CreateChartDrawPicture=function(obj) //创建画图工具
66261
66271
  if (obj.FontOption) chartDraw.FontOption=obj.FontOption;
66262
66272
  if (obj.Label) chartDraw.Label=obj.Label;
66263
66273
  if (obj.LineWidth>0) chartDraw.LineWidth=obj.LineWidth;
66264
- if (obj.EnableMove===false) chartDraw.EnableMove=obj.EnableMove;
66274
+ if (IFrameSplitOperator.IsBool(obj.EnableMove)) chartDraw.EnableMove=obj.EnableMove;
66265
66275
  if (IFrameSplitOperator.IsBool(obj.EnableSave)) chartDraw.EnableSave=obj.EnableSave;
66266
66276
  if (IFrameSplitOperator.IsNumber(obj.ChannelWidth)) chartDraw.ChannelWidth=obj.ChannelWidth;
66267
66277
  if (IFrameSplitOperator.IsBool(obj.IsShowYCoordinate)) chartDraw.IsShowYCoordinate=obj.IsShowYCoordinate;
@@ -66923,9 +66933,9 @@ function ChartDrawPictureHorizontalLine()
66923
66933
 
66924
66934
  this.LabelConfig=
66925
66935
  {
66926
- Left:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 } },
66927
- Right:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 } },
66928
- Font:`${12*GetDevicePixelRatio()}px 微软雅黑`, TextColor:"rgb(255,255,255)", BGColor:null
66936
+ Left:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
66937
+ Right:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
66938
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`, TextColor:"rgb(255,255,255)", BGColor:null,
66929
66939
  };
66930
66940
 
66931
66941
  this.InsideLabelConfig=
@@ -67024,6 +67034,9 @@ function ChartDrawPictureHorizontalLine()
67024
67034
  left=this.Frame.ChartBorder.GetTop();
67025
67035
  right=this.Frame.ChartBorder.GetBottom();
67026
67036
  }
67037
+
67038
+
67039
+
67027
67040
  this.ClipFrame();
67028
67041
 
67029
67042
  this.Canvas.strokeStyle=this.LineColor;
@@ -67063,6 +67076,8 @@ function ChartDrawPictureHorizontalLine()
67063
67076
  //画点
67064
67077
  this.DrawPoint(drawPoint);
67065
67078
 
67079
+ this.FormatLabelTextEvent(drawPoint);
67080
+
67066
67081
  //显示价格
67067
67082
  this.DrawInsideLabel(drawPoint[0])
67068
67083
 
@@ -67070,6 +67085,16 @@ function ChartDrawPictureHorizontalLine()
67070
67085
 
67071
67086
  this.DrawValueLabel(drawPoint[0]);
67072
67087
  }
67088
+
67089
+ this.FormatLabelTextEvent=function(point)
67090
+ {
67091
+ if (!this.HQChart) return;
67092
+ var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_DRAW_HLINE_LABEL);
67093
+ if (!event || !event.Callback) return;
67094
+
67095
+ var sendData={ ID:this.Guid, LabelConfig:this.LabelConfig, InsideLabelConfig:this.InsideLabelConfig };
67096
+ event.Callback(event, sendData, this);
67097
+ }
67073
67098
 
67074
67099
  this.DrawValueLabel=function(point)
67075
67100
  {
@@ -67077,6 +67102,8 @@ function ChartDrawPictureHorizontalLine()
67077
67102
  if (this.Frame.IsHScreen) return; //不支持横屏
67078
67103
 
67079
67104
  var y=point.Y;
67105
+ var yFixed=ToFixedPoint2(this.LineWidth,y);
67106
+
67080
67107
  var yValue=this.Frame.GetYData(y);
67081
67108
  var text=yValue.toFixed(2);
67082
67109
 
@@ -67085,12 +67112,27 @@ function ChartDrawPictureHorizontalLine()
67085
67112
 
67086
67113
  this.Canvas.font=config.Font;
67087
67114
  var textHeight=this.Canvas.measureText("擎").width;
67088
- var textWidth=this.Canvas.measureText(text).width;
67089
67115
 
67090
67116
  if (config.Left.IsShow && this.Frame.ChartBorder.Left>5)
67091
67117
  {
67118
+ var leftText=text;
67119
+ if (config.Left.Text) leftText=config.Left.Text;
67120
+ var textWidth=this.Canvas.measureText(leftText).width;
67121
+ var left=border.Left;
67122
+ if (IFrameSplitOperator.IsNumber(config.Left.LineOffset)&& config.Left.LineOffset!==0)
67123
+ {
67124
+ left-=config.Left.LineOffset;
67125
+ this.Canvas.strokeStyle=this.LineColor;
67126
+ this.SetLineWidth();
67127
+ this.Canvas.beginPath();
67128
+ this.Canvas.moveTo(border.Left,yFixed);
67129
+ this.Canvas.lineTo(left,yFixed);
67130
+ this.Canvas.stroke();
67131
+ this.RestoreLineWidth();
67132
+ }
67133
+
67092
67134
  var margin=config.Left.Margin;
67093
- var rtBG={ Right:border.Left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
67135
+ var rtBG={ Right:left+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
67094
67136
  rtBG.Top=y-textHeight/2-margin.Top;
67095
67137
  rtBG.Bottom=rtBG.Top+rtBG.Height;
67096
67138
  rtBG.Left=rtBG.Right-rtBG.Width;
@@ -67104,13 +67146,30 @@ function ChartDrawPictureHorizontalLine()
67104
67146
  var xText=rtBG.Left+margin.Left;
67105
67147
  var yText=rtBG.Top+margin.Top;
67106
67148
  this.Canvas.fillStyle=config.TextColor;
67107
- this.Canvas.fillText(text,xText,yText);
67149
+ this.Canvas.fillText(leftText,xText,yText);
67108
67150
  }
67109
67151
 
67110
67152
  if (config.Right.IsShow && this.Frame.ChartBorder.Right>5)
67111
67153
  {
67154
+ var rightText=text;
67155
+ if (config.Right.Text) rightText=config.Right.Text;
67156
+ var textWidth=this.Canvas.measureText(rightText).width;
67157
+
67158
+ var left=border.Right;
67159
+ if (IFrameSplitOperator.IsNumber(config.Right.LineOffset)&& config.Right.LineOffset!==0)
67160
+ {
67161
+ left+=config.Right.LineOffset;
67162
+ this.Canvas.strokeStyle=this.LineColor;
67163
+ this.SetLineWidth();
67164
+ this.Canvas.beginPath();
67165
+ this.Canvas.moveTo(border.Right,yFixed);
67166
+ this.Canvas.lineTo(left,yFixed);
67167
+ this.Canvas.stroke();
67168
+ this.RestoreLineWidth();
67169
+ }
67170
+
67112
67171
  var margin=config.Right.Margin;
67113
- var rtBG={ Left:border.Right+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
67172
+ var rtBG={ Left:left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
67114
67173
  rtBG.Top=y-textHeight/2-margin.Top;
67115
67174
  rtBG.Bottom=rtBG.Top+rtBG.Height;
67116
67175
  rtBG.Right=rtBG.Left+rtBG.Width;
@@ -67124,7 +67183,7 @@ function ChartDrawPictureHorizontalLine()
67124
67183
  var xText=rtBG.Left+margin.Left;
67125
67184
  var yText=rtBG.Top+margin.Top;
67126
67185
  this.Canvas.fillStyle=config.TextColor;
67127
- this.Canvas.fillText(text,xText,yText);
67186
+ this.Canvas.fillText(rightText,xText,yText);
67128
67187
  }
67129
67188
  }
67130
67189
 
@@ -87448,7 +87507,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
87448
87507
  if (item)
87449
87508
  {
87450
87509
  drawPicture=item.Create();
87451
- drawPicture.HQChart=this;
87452
87510
  }
87453
87511
 
87454
87512
  if (!drawPicture) //iconfont图标
@@ -87471,6 +87529,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
87471
87529
  drawPicture.Period=this.Period;
87472
87530
  drawPicture.Right=this.Right;
87473
87531
  drawPicture.Option=this.ChartDrawOption;
87532
+ drawPicture.HQChart=this;
87474
87533
 
87475
87534
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
87476
87535
  if (option) drawPicture.SetOption(option);
@@ -87501,8 +87560,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
87501
87560
  drawPicture.Period=this.Period;
87502
87561
  drawPicture.Right=this.Right;
87503
87562
  drawPicture.Option=this.ChartDrawOption;
87563
+ drawPicture.HQChart=this;
87504
87564
  if (obj.Value) drawPicture.Value=obj.Value;
87505
87565
  if (obj.Guid) drawPicture.Guid=obj.Guid;
87566
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
87506
87567
 
87507
87568
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
87508
87569
  drawPicture.SetOption(obj);
@@ -88118,6 +88179,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88118
88179
  drawPicture.Status=10;
88119
88180
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
88120
88181
  drawPicture.Option=this.ChartDrawOption;
88182
+ drawPicture.HQChart=this;
88121
88183
 
88122
88184
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
88123
88185
  if (drawPicture.Period!=this.Period)
@@ -95880,6 +95942,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95880
95942
  drawPicture.Symbol=this.Symbol;
95881
95943
  drawPicture.Period=888888888;
95882
95944
  drawPicture.Option=this.ChartDrawOption;
95945
+ drawPicture.HQChart=this;
95883
95946
 
95884
95947
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
95885
95948
  if (option) drawPicture.SetOption(option);
@@ -95910,8 +95973,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95910
95973
  drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame; //绑定框架坐标
95911
95974
  drawPicture.Symbol=this.Symbol;
95912
95975
  drawPicture.Period=888888888;
95976
+ drawPicture.HQChart=this;
95913
95977
  if (obj.Value) drawPicture.Value=obj.Value;
95914
95978
  if (obj.Guid) drawPicture.Guid=obj.Guid;
95979
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
95915
95980
 
95916
95981
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
95917
95982
  drawPicture.SetOption(obj);
@@ -95957,6 +96022,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95957
96022
 
95958
96023
  drawPicture.Canvas=this.Canvas;
95959
96024
  drawPicture.Status=10;
96025
+ drawPicture.HQChart=this;
95960
96026
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
95961
96027
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
95962
96028
  drawPicture.ResetXValue();
@@ -2354,6 +2354,12 @@ input[type="color"] {
2354
2354
  color:var(--HQChart-DialogModifyIndexParam-InputTextColor);
2355
2355
  }
2356
2356
 
2357
+ .UMyChart_ModifyIndexParam_Input::-webkit-outer-spin-button,
2358
+ .UMyChart_ModifyIndexParam_Input::-webkit-inner-spin-button
2359
+ {
2360
+ -webkit-appearance: none;
2361
+ }
2362
+
2357
2363
  .UMyChart_ModifyIndexParam_Button_Div
2358
2364
  {
2359
2365
  border-top: 1px solid #ccc;
@@ -7003,6 +7003,8 @@ var JSCHART_EVENT_ID=
7003
7003
  ON_FORMAT_COUNTDOWN_TEXT:177, //倒计时
7004
7004
  ON_CLICK_INDEX_LOCK:178, //点击指标锁
7005
7005
  ON_CORSSCURSOR_STATUS_CHANGE:179, //十字光标状态改变
7006
+
7007
+ ON_FORMAT_DRAW_HLINE_LABEL:180, //画图工具-水平线(ChartDrawPictureHorizontalLine)格式化标签文字
7006
7008
  }
7007
7009
 
7008
7010
  var JSCHART_OPERATOR_ID=
@@ -10542,6 +10544,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10542
10544
  chartItem.Canvas=canvas; //叠加图形
10543
10545
  }
10544
10546
  }
10547
+
10548
+ if (item.Frame.LockPaint)
10549
+ {
10550
+ item.Frame.LockPaint.Canvas=canvas;
10551
+ }
10545
10552
  }
10546
10553
  }
10547
10554
 
@@ -68667,7 +68674,7 @@ function IChartDrawPicture()
68667
68674
  this.PointType=g_JSChartResource.DrawPicture.PointType; // 0=圆点 1=方框 2= 空心圆
68668
68675
  this.IsShowPoint=g_JSChartResource.DrawPicture.IsShowPoint; //是否始终显示点
68669
68676
  this.LimitFrameID; //限制在指定窗口绘图
68670
-
68677
+ this.CacheData; //数据缓存
68671
68678
 
68672
68679
  //接口函数
68673
68680
  this.SetLastPoint=null; //this.SetLastPoint=function(obj) obj={X:,Y:}
@@ -68695,6 +68702,9 @@ function IChartDrawPicture()
68695
68702
  if (IFrameSplitOperator.IsNumber(option.LimitFrameID)) this.LimitFrameID=option.LimitFrameID;
68696
68703
  if (IFrameSplitOperator.IsBool(option.EnableCtrlMove)) this.EnableCtrlMove=option.EnableCtrlMove;
68697
68704
  if (IFrameSplitOperator.IsBool(option.IsShowYCoordinate)) this.IsShowYCoordinate=option.IsShowYCoordinate;
68705
+ if (IFrameSplitOperator.IsBool(option.EnableSave)) this.EnableSave=option.EnableSave;
68706
+ if (IFrameSplitOperator.IsBool(option.EnableMove)) this.EnableMove=option.EnableMove;
68707
+
68698
68708
  }
68699
68709
 
68700
68710
  this.ReloadResource=function(resource)
@@ -70357,7 +70367,7 @@ IChartDrawPicture.CreateChartDrawPicture=function(obj) //创建画图工具
70357
70367
  if (obj.FontOption) chartDraw.FontOption=obj.FontOption;
70358
70368
  if (obj.Label) chartDraw.Label=obj.Label;
70359
70369
  if (obj.LineWidth>0) chartDraw.LineWidth=obj.LineWidth;
70360
- if (obj.EnableMove===false) chartDraw.EnableMove=obj.EnableMove;
70370
+ if (IFrameSplitOperator.IsBool(obj.EnableMove)) chartDraw.EnableMove=obj.EnableMove;
70361
70371
  if (IFrameSplitOperator.IsBool(obj.EnableSave)) chartDraw.EnableSave=obj.EnableSave;
70362
70372
  if (IFrameSplitOperator.IsNumber(obj.ChannelWidth)) chartDraw.ChannelWidth=obj.ChannelWidth;
70363
70373
  if (IFrameSplitOperator.IsBool(obj.IsShowYCoordinate)) chartDraw.IsShowYCoordinate=obj.IsShowYCoordinate;
@@ -71019,9 +71029,9 @@ function ChartDrawPictureHorizontalLine()
71019
71029
 
71020
71030
  this.LabelConfig=
71021
71031
  {
71022
- Left:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 } },
71023
- Right:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 } },
71024
- Font:`${12*GetDevicePixelRatio()}px 微软雅黑`, TextColor:"rgb(255,255,255)", BGColor:null
71032
+ Left:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
71033
+ Right:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
71034
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`, TextColor:"rgb(255,255,255)", BGColor:null,
71025
71035
  };
71026
71036
 
71027
71037
  this.InsideLabelConfig=
@@ -71120,6 +71130,9 @@ function ChartDrawPictureHorizontalLine()
71120
71130
  left=this.Frame.ChartBorder.GetTop();
71121
71131
  right=this.Frame.ChartBorder.GetBottom();
71122
71132
  }
71133
+
71134
+
71135
+
71123
71136
  this.ClipFrame();
71124
71137
 
71125
71138
  this.Canvas.strokeStyle=this.LineColor;
@@ -71159,6 +71172,8 @@ function ChartDrawPictureHorizontalLine()
71159
71172
  //画点
71160
71173
  this.DrawPoint(drawPoint);
71161
71174
 
71175
+ this.FormatLabelTextEvent(drawPoint);
71176
+
71162
71177
  //显示价格
71163
71178
  this.DrawInsideLabel(drawPoint[0])
71164
71179
 
@@ -71166,6 +71181,16 @@ function ChartDrawPictureHorizontalLine()
71166
71181
 
71167
71182
  this.DrawValueLabel(drawPoint[0]);
71168
71183
  }
71184
+
71185
+ this.FormatLabelTextEvent=function(point)
71186
+ {
71187
+ if (!this.HQChart) return;
71188
+ var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_DRAW_HLINE_LABEL);
71189
+ if (!event || !event.Callback) return;
71190
+
71191
+ var sendData={ ID:this.Guid, LabelConfig:this.LabelConfig, InsideLabelConfig:this.InsideLabelConfig };
71192
+ event.Callback(event, sendData, this);
71193
+ }
71169
71194
 
71170
71195
  this.DrawValueLabel=function(point)
71171
71196
  {
@@ -71173,6 +71198,8 @@ function ChartDrawPictureHorizontalLine()
71173
71198
  if (this.Frame.IsHScreen) return; //不支持横屏
71174
71199
 
71175
71200
  var y=point.Y;
71201
+ var yFixed=ToFixedPoint2(this.LineWidth,y);
71202
+
71176
71203
  var yValue=this.Frame.GetYData(y);
71177
71204
  var text=yValue.toFixed(2);
71178
71205
 
@@ -71181,12 +71208,27 @@ function ChartDrawPictureHorizontalLine()
71181
71208
 
71182
71209
  this.Canvas.font=config.Font;
71183
71210
  var textHeight=this.Canvas.measureText("擎").width;
71184
- var textWidth=this.Canvas.measureText(text).width;
71185
71211
 
71186
71212
  if (config.Left.IsShow && this.Frame.ChartBorder.Left>5)
71187
71213
  {
71214
+ var leftText=text;
71215
+ if (config.Left.Text) leftText=config.Left.Text;
71216
+ var textWidth=this.Canvas.measureText(leftText).width;
71217
+ var left=border.Left;
71218
+ if (IFrameSplitOperator.IsNumber(config.Left.LineOffset)&& config.Left.LineOffset!==0)
71219
+ {
71220
+ left-=config.Left.LineOffset;
71221
+ this.Canvas.strokeStyle=this.LineColor;
71222
+ this.SetLineWidth();
71223
+ this.Canvas.beginPath();
71224
+ this.Canvas.moveTo(border.Left,yFixed);
71225
+ this.Canvas.lineTo(left,yFixed);
71226
+ this.Canvas.stroke();
71227
+ this.RestoreLineWidth();
71228
+ }
71229
+
71188
71230
  var margin=config.Left.Margin;
71189
- var rtBG={ Right:border.Left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71231
+ var rtBG={ Right:left+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71190
71232
  rtBG.Top=y-textHeight/2-margin.Top;
71191
71233
  rtBG.Bottom=rtBG.Top+rtBG.Height;
71192
71234
  rtBG.Left=rtBG.Right-rtBG.Width;
@@ -71200,13 +71242,30 @@ function ChartDrawPictureHorizontalLine()
71200
71242
  var xText=rtBG.Left+margin.Left;
71201
71243
  var yText=rtBG.Top+margin.Top;
71202
71244
  this.Canvas.fillStyle=config.TextColor;
71203
- this.Canvas.fillText(text,xText,yText);
71245
+ this.Canvas.fillText(leftText,xText,yText);
71204
71246
  }
71205
71247
 
71206
71248
  if (config.Right.IsShow && this.Frame.ChartBorder.Right>5)
71207
71249
  {
71250
+ var rightText=text;
71251
+ if (config.Right.Text) rightText=config.Right.Text;
71252
+ var textWidth=this.Canvas.measureText(rightText).width;
71253
+
71254
+ var left=border.Right;
71255
+ if (IFrameSplitOperator.IsNumber(config.Right.LineOffset)&& config.Right.LineOffset!==0)
71256
+ {
71257
+ left+=config.Right.LineOffset;
71258
+ this.Canvas.strokeStyle=this.LineColor;
71259
+ this.SetLineWidth();
71260
+ this.Canvas.beginPath();
71261
+ this.Canvas.moveTo(border.Right,yFixed);
71262
+ this.Canvas.lineTo(left,yFixed);
71263
+ this.Canvas.stroke();
71264
+ this.RestoreLineWidth();
71265
+ }
71266
+
71208
71267
  var margin=config.Right.Margin;
71209
- var rtBG={ Left:border.Right+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71268
+ var rtBG={ Left:left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71210
71269
  rtBG.Top=y-textHeight/2-margin.Top;
71211
71270
  rtBG.Bottom=rtBG.Top+rtBG.Height;
71212
71271
  rtBG.Right=rtBG.Left+rtBG.Width;
@@ -71220,7 +71279,7 @@ function ChartDrawPictureHorizontalLine()
71220
71279
  var xText=rtBG.Left+margin.Left;
71221
71280
  var yText=rtBG.Top+margin.Top;
71222
71281
  this.Canvas.fillStyle=config.TextColor;
71223
- this.Canvas.fillText(text,xText,yText);
71282
+ this.Canvas.fillText(rightText,xText,yText);
71224
71283
  }
71225
71284
  }
71226
71285
 
@@ -91544,7 +91603,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91544
91603
  if (item)
91545
91604
  {
91546
91605
  drawPicture=item.Create();
91547
- drawPicture.HQChart=this;
91548
91606
  }
91549
91607
 
91550
91608
  if (!drawPicture) //iconfont图标
@@ -91567,6 +91625,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91567
91625
  drawPicture.Period=this.Period;
91568
91626
  drawPicture.Right=this.Right;
91569
91627
  drawPicture.Option=this.ChartDrawOption;
91628
+ drawPicture.HQChart=this;
91570
91629
 
91571
91630
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
91572
91631
  if (option) drawPicture.SetOption(option);
@@ -91597,8 +91656,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91597
91656
  drawPicture.Period=this.Period;
91598
91657
  drawPicture.Right=this.Right;
91599
91658
  drawPicture.Option=this.ChartDrawOption;
91659
+ drawPicture.HQChart=this;
91600
91660
  if (obj.Value) drawPicture.Value=obj.Value;
91601
91661
  if (obj.Guid) drawPicture.Guid=obj.Guid;
91662
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
91602
91663
 
91603
91664
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
91604
91665
  drawPicture.SetOption(obj);
@@ -92214,6 +92275,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92214
92275
  drawPicture.Status=10;
92215
92276
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
92216
92277
  drawPicture.Option=this.ChartDrawOption;
92278
+ drawPicture.HQChart=this;
92217
92279
 
92218
92280
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
92219
92281
  if (drawPicture.Period!=this.Period)
@@ -99976,6 +100038,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
99976
100038
  drawPicture.Symbol=this.Symbol;
99977
100039
  drawPicture.Period=888888888;
99978
100040
  drawPicture.Option=this.ChartDrawOption;
100041
+ drawPicture.HQChart=this;
99979
100042
 
99980
100043
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
99981
100044
  if (option) drawPicture.SetOption(option);
@@ -100006,8 +100069,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100006
100069
  drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame; //绑定框架坐标
100007
100070
  drawPicture.Symbol=this.Symbol;
100008
100071
  drawPicture.Period=888888888;
100072
+ drawPicture.HQChart=this;
100009
100073
  if (obj.Value) drawPicture.Value=obj.Value;
100010
100074
  if (obj.Guid) drawPicture.Guid=obj.Guid;
100075
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
100011
100076
 
100012
100077
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
100013
100078
  drawPicture.SetOption(obj);
@@ -100053,6 +100118,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100053
100118
 
100054
100119
  drawPicture.Canvas=this.Canvas;
100055
100120
  drawPicture.Status=10;
100121
+ drawPicture.HQChart=this;
100056
100122
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
100057
100123
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
100058
100124
  drawPicture.ResetXValue();
@@ -153733,7 +153799,7 @@ function ScrollBarBGChart()
153733
153799
 
153734
153800
 
153735
153801
 
153736
- var HQCHART_VERSION="1.1.15146";
153802
+ var HQCHART_VERSION="1.1.15153";
153737
153803
 
153738
153804
  function PrintHQChartVersion()
153739
153805
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15146";
8
+ var HQCHART_VERSION="1.1.15153";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -7047,6 +7047,8 @@ var JSCHART_EVENT_ID=
7047
7047
  ON_FORMAT_COUNTDOWN_TEXT:177, //倒计时
7048
7048
  ON_CLICK_INDEX_LOCK:178, //点击指标锁
7049
7049
  ON_CORSSCURSOR_STATUS_CHANGE:179, //十字光标状态改变
7050
+
7051
+ ON_FORMAT_DRAW_HLINE_LABEL:180, //画图工具-水平线(ChartDrawPictureHorizontalLine)格式化标签文字
7050
7052
  }
7051
7053
 
7052
7054
  var JSCHART_OPERATOR_ID=
@@ -10586,6 +10588,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10586
10588
  chartItem.Canvas=canvas; //叠加图形
10587
10589
  }
10588
10590
  }
10591
+
10592
+ if (item.Frame.LockPaint)
10593
+ {
10594
+ item.Frame.LockPaint.Canvas=canvas;
10595
+ }
10589
10596
  }
10590
10597
  }
10591
10598
 
@@ -68711,7 +68718,7 @@ function IChartDrawPicture()
68711
68718
  this.PointType=g_JSChartResource.DrawPicture.PointType; // 0=圆点 1=方框 2= 空心圆
68712
68719
  this.IsShowPoint=g_JSChartResource.DrawPicture.IsShowPoint; //是否始终显示点
68713
68720
  this.LimitFrameID; //限制在指定窗口绘图
68714
-
68721
+ this.CacheData; //数据缓存
68715
68722
 
68716
68723
  //接口函数
68717
68724
  this.SetLastPoint=null; //this.SetLastPoint=function(obj) obj={X:,Y:}
@@ -68739,6 +68746,9 @@ function IChartDrawPicture()
68739
68746
  if (IFrameSplitOperator.IsNumber(option.LimitFrameID)) this.LimitFrameID=option.LimitFrameID;
68740
68747
  if (IFrameSplitOperator.IsBool(option.EnableCtrlMove)) this.EnableCtrlMove=option.EnableCtrlMove;
68741
68748
  if (IFrameSplitOperator.IsBool(option.IsShowYCoordinate)) this.IsShowYCoordinate=option.IsShowYCoordinate;
68749
+ if (IFrameSplitOperator.IsBool(option.EnableSave)) this.EnableSave=option.EnableSave;
68750
+ if (IFrameSplitOperator.IsBool(option.EnableMove)) this.EnableMove=option.EnableMove;
68751
+
68742
68752
  }
68743
68753
 
68744
68754
  this.ReloadResource=function(resource)
@@ -70401,7 +70411,7 @@ IChartDrawPicture.CreateChartDrawPicture=function(obj) //创建画图工具
70401
70411
  if (obj.FontOption) chartDraw.FontOption=obj.FontOption;
70402
70412
  if (obj.Label) chartDraw.Label=obj.Label;
70403
70413
  if (obj.LineWidth>0) chartDraw.LineWidth=obj.LineWidth;
70404
- if (obj.EnableMove===false) chartDraw.EnableMove=obj.EnableMove;
70414
+ if (IFrameSplitOperator.IsBool(obj.EnableMove)) chartDraw.EnableMove=obj.EnableMove;
70405
70415
  if (IFrameSplitOperator.IsBool(obj.EnableSave)) chartDraw.EnableSave=obj.EnableSave;
70406
70416
  if (IFrameSplitOperator.IsNumber(obj.ChannelWidth)) chartDraw.ChannelWidth=obj.ChannelWidth;
70407
70417
  if (IFrameSplitOperator.IsBool(obj.IsShowYCoordinate)) chartDraw.IsShowYCoordinate=obj.IsShowYCoordinate;
@@ -71063,9 +71073,9 @@ function ChartDrawPictureHorizontalLine()
71063
71073
 
71064
71074
  this.LabelConfig=
71065
71075
  {
71066
- Left:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 } },
71067
- Right:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 } },
71068
- Font:`${12*GetDevicePixelRatio()}px 微软雅黑`, TextColor:"rgb(255,255,255)", BGColor:null
71076
+ Left:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
71077
+ Right:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
71078
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`, TextColor:"rgb(255,255,255)", BGColor:null,
71069
71079
  };
71070
71080
 
71071
71081
  this.InsideLabelConfig=
@@ -71164,6 +71174,9 @@ function ChartDrawPictureHorizontalLine()
71164
71174
  left=this.Frame.ChartBorder.GetTop();
71165
71175
  right=this.Frame.ChartBorder.GetBottom();
71166
71176
  }
71177
+
71178
+
71179
+
71167
71180
  this.ClipFrame();
71168
71181
 
71169
71182
  this.Canvas.strokeStyle=this.LineColor;
@@ -71203,6 +71216,8 @@ function ChartDrawPictureHorizontalLine()
71203
71216
  //画点
71204
71217
  this.DrawPoint(drawPoint);
71205
71218
 
71219
+ this.FormatLabelTextEvent(drawPoint);
71220
+
71206
71221
  //显示价格
71207
71222
  this.DrawInsideLabel(drawPoint[0])
71208
71223
 
@@ -71210,6 +71225,16 @@ function ChartDrawPictureHorizontalLine()
71210
71225
 
71211
71226
  this.DrawValueLabel(drawPoint[0]);
71212
71227
  }
71228
+
71229
+ this.FormatLabelTextEvent=function(point)
71230
+ {
71231
+ if (!this.HQChart) return;
71232
+ var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_DRAW_HLINE_LABEL);
71233
+ if (!event || !event.Callback) return;
71234
+
71235
+ var sendData={ ID:this.Guid, LabelConfig:this.LabelConfig, InsideLabelConfig:this.InsideLabelConfig };
71236
+ event.Callback(event, sendData, this);
71237
+ }
71213
71238
 
71214
71239
  this.DrawValueLabel=function(point)
71215
71240
  {
@@ -71217,6 +71242,8 @@ function ChartDrawPictureHorizontalLine()
71217
71242
  if (this.Frame.IsHScreen) return; //不支持横屏
71218
71243
 
71219
71244
  var y=point.Y;
71245
+ var yFixed=ToFixedPoint2(this.LineWidth,y);
71246
+
71220
71247
  var yValue=this.Frame.GetYData(y);
71221
71248
  var text=yValue.toFixed(2);
71222
71249
 
@@ -71225,12 +71252,27 @@ function ChartDrawPictureHorizontalLine()
71225
71252
 
71226
71253
  this.Canvas.font=config.Font;
71227
71254
  var textHeight=this.Canvas.measureText("擎").width;
71228
- var textWidth=this.Canvas.measureText(text).width;
71229
71255
 
71230
71256
  if (config.Left.IsShow && this.Frame.ChartBorder.Left>5)
71231
71257
  {
71258
+ var leftText=text;
71259
+ if (config.Left.Text) leftText=config.Left.Text;
71260
+ var textWidth=this.Canvas.measureText(leftText).width;
71261
+ var left=border.Left;
71262
+ if (IFrameSplitOperator.IsNumber(config.Left.LineOffset)&& config.Left.LineOffset!==0)
71263
+ {
71264
+ left-=config.Left.LineOffset;
71265
+ this.Canvas.strokeStyle=this.LineColor;
71266
+ this.SetLineWidth();
71267
+ this.Canvas.beginPath();
71268
+ this.Canvas.moveTo(border.Left,yFixed);
71269
+ this.Canvas.lineTo(left,yFixed);
71270
+ this.Canvas.stroke();
71271
+ this.RestoreLineWidth();
71272
+ }
71273
+
71232
71274
  var margin=config.Left.Margin;
71233
- var rtBG={ Right:border.Left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71275
+ var rtBG={ Right:left+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71234
71276
  rtBG.Top=y-textHeight/2-margin.Top;
71235
71277
  rtBG.Bottom=rtBG.Top+rtBG.Height;
71236
71278
  rtBG.Left=rtBG.Right-rtBG.Width;
@@ -71244,13 +71286,30 @@ function ChartDrawPictureHorizontalLine()
71244
71286
  var xText=rtBG.Left+margin.Left;
71245
71287
  var yText=rtBG.Top+margin.Top;
71246
71288
  this.Canvas.fillStyle=config.TextColor;
71247
- this.Canvas.fillText(text,xText,yText);
71289
+ this.Canvas.fillText(leftText,xText,yText);
71248
71290
  }
71249
71291
 
71250
71292
  if (config.Right.IsShow && this.Frame.ChartBorder.Right>5)
71251
71293
  {
71294
+ var rightText=text;
71295
+ if (config.Right.Text) rightText=config.Right.Text;
71296
+ var textWidth=this.Canvas.measureText(rightText).width;
71297
+
71298
+ var left=border.Right;
71299
+ if (IFrameSplitOperator.IsNumber(config.Right.LineOffset)&& config.Right.LineOffset!==0)
71300
+ {
71301
+ left+=config.Right.LineOffset;
71302
+ this.Canvas.strokeStyle=this.LineColor;
71303
+ this.SetLineWidth();
71304
+ this.Canvas.beginPath();
71305
+ this.Canvas.moveTo(border.Right,yFixed);
71306
+ this.Canvas.lineTo(left,yFixed);
71307
+ this.Canvas.stroke();
71308
+ this.RestoreLineWidth();
71309
+ }
71310
+
71252
71311
  var margin=config.Right.Margin;
71253
- var rtBG={ Left:border.Right+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71312
+ var rtBG={ Left:left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71254
71313
  rtBG.Top=y-textHeight/2-margin.Top;
71255
71314
  rtBG.Bottom=rtBG.Top+rtBG.Height;
71256
71315
  rtBG.Right=rtBG.Left+rtBG.Width;
@@ -71264,7 +71323,7 @@ function ChartDrawPictureHorizontalLine()
71264
71323
  var xText=rtBG.Left+margin.Left;
71265
71324
  var yText=rtBG.Top+margin.Top;
71266
71325
  this.Canvas.fillStyle=config.TextColor;
71267
- this.Canvas.fillText(text,xText,yText);
71326
+ this.Canvas.fillText(rightText,xText,yText);
71268
71327
  }
71269
71328
  }
71270
71329
 
@@ -91588,7 +91647,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91588
91647
  if (item)
91589
91648
  {
91590
91649
  drawPicture=item.Create();
91591
- drawPicture.HQChart=this;
91592
91650
  }
91593
91651
 
91594
91652
  if (!drawPicture) //iconfont图标
@@ -91611,6 +91669,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91611
91669
  drawPicture.Period=this.Period;
91612
91670
  drawPicture.Right=this.Right;
91613
91671
  drawPicture.Option=this.ChartDrawOption;
91672
+ drawPicture.HQChart=this;
91614
91673
 
91615
91674
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
91616
91675
  if (option) drawPicture.SetOption(option);
@@ -91641,8 +91700,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91641
91700
  drawPicture.Period=this.Period;
91642
91701
  drawPicture.Right=this.Right;
91643
91702
  drawPicture.Option=this.ChartDrawOption;
91703
+ drawPicture.HQChart=this;
91644
91704
  if (obj.Value) drawPicture.Value=obj.Value;
91645
91705
  if (obj.Guid) drawPicture.Guid=obj.Guid;
91706
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
91646
91707
 
91647
91708
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
91648
91709
  drawPicture.SetOption(obj);
@@ -92258,6 +92319,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92258
92319
  drawPicture.Status=10;
92259
92320
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
92260
92321
  drawPicture.Option=this.ChartDrawOption;
92322
+ drawPicture.HQChart=this;
92261
92323
 
92262
92324
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
92263
92325
  if (drawPicture.Period!=this.Period)
@@ -100020,6 +100082,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100020
100082
  drawPicture.Symbol=this.Symbol;
100021
100083
  drawPicture.Period=888888888;
100022
100084
  drawPicture.Option=this.ChartDrawOption;
100085
+ drawPicture.HQChart=this;
100023
100086
 
100024
100087
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
100025
100088
  if (option) drawPicture.SetOption(option);
@@ -100050,8 +100113,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100050
100113
  drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame; //绑定框架坐标
100051
100114
  drawPicture.Symbol=this.Symbol;
100052
100115
  drawPicture.Period=888888888;
100116
+ drawPicture.HQChart=this;
100053
100117
  if (obj.Value) drawPicture.Value=obj.Value;
100054
100118
  if (obj.Guid) drawPicture.Guid=obj.Guid;
100119
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
100055
100120
 
100056
100121
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
100057
100122
  drawPicture.SetOption(obj);
@@ -100097,6 +100162,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100097
100162
 
100098
100163
  drawPicture.Canvas=this.Canvas;
100099
100164
  drawPicture.Status=10;
100165
+ drawPicture.HQChart=this;
100100
100166
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
100101
100167
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
100102
100168
  drawPicture.ResetXValue();
@@ -165310,8 +165376,9 @@ function JSDialogModifyIndexParam()
165310
165376
  input.className='UMyChart_ModifyIndexParam_Input';
165311
165377
  input.type="number";
165312
165378
  input.step=1;
165313
- input.addEventListener("mouseup", (e)=>{ this.OnParamMouseUp(e)});
165314
- input.addEventListener("keyup", (e)=>{ this.OnParamKeyUp(e)})
165379
+ //input.addEventListener("mouseup", (e)=>{ this.OnParamMouseUp(e)});
165380
+ //input.addEventListener("keyup", (e)=>{ this.OnParamKeyUp(e)} );
165381
+ input.addEventListener("input", (e)=>{ this.OnParamInput(e)} );
165315
165382
  tdDom.appendChild(input);
165316
165383
  rowItem.Input=input;
165317
165384
 
@@ -165440,6 +165507,7 @@ function JSDialogModifyIndexParam()
165440
165507
  }
165441
165508
  }
165442
165509
 
165510
+ /*
165443
165511
  this.OnParamMouseUp=function(e)
165444
165512
  {
165445
165513
  var input=e.target;
@@ -165457,6 +165525,16 @@ function JSDialogModifyIndexParam()
165457
165525
 
165458
165526
  this.ModifyParam(id, parseInt(value));
165459
165527
  }
165528
+ */
165529
+
165530
+ this.OnParamInput=function(e)
165531
+ {
165532
+ var input=e.target;
165533
+ var value=input.value;
165534
+ var id=input.dataset.paramid;
165535
+
165536
+ this.ModifyParam(id, parseInt(value));
165537
+ }
165460
165538
 
165461
165539
  this.ModifyParam=function(id, value)
165462
165540
  {
@@ -165734,7 +165812,7 @@ function HQChartScriptWorker()
165734
165812
 
165735
165813
 
165736
165814
 
165737
- var HQCHART_VERSION="1.1.15146";
165815
+ var HQCHART_VERSION="1.1.15153";
165738
165816
 
165739
165817
  function PrintHQChartVersion()
165740
165818
  {