hqchart 1.1.15147 → 1.1.15152

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,6 +6577,7 @@ 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;//更新数据回调
@@ -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.15151";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.15152",
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:}
@@ -66923,9 +66930,9 @@ function ChartDrawPictureHorizontalLine()
66923
66930
 
66924
66931
  this.LabelConfig=
66925
66932
  {
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
66933
+ Left:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
66934
+ Right:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
66935
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`, TextColor:"rgb(255,255,255)", BGColor:null,
66929
66936
  };
66930
66937
 
66931
66938
  this.InsideLabelConfig=
@@ -67024,6 +67031,9 @@ function ChartDrawPictureHorizontalLine()
67024
67031
  left=this.Frame.ChartBorder.GetTop();
67025
67032
  right=this.Frame.ChartBorder.GetBottom();
67026
67033
  }
67034
+
67035
+
67036
+
67027
67037
  this.ClipFrame();
67028
67038
 
67029
67039
  this.Canvas.strokeStyle=this.LineColor;
@@ -67063,6 +67073,8 @@ function ChartDrawPictureHorizontalLine()
67063
67073
  //画点
67064
67074
  this.DrawPoint(drawPoint);
67065
67075
 
67076
+ this.FormatLabelTextEvent(drawPoint);
67077
+
67066
67078
  //显示价格
67067
67079
  this.DrawInsideLabel(drawPoint[0])
67068
67080
 
@@ -67070,6 +67082,16 @@ function ChartDrawPictureHorizontalLine()
67070
67082
 
67071
67083
  this.DrawValueLabel(drawPoint[0]);
67072
67084
  }
67085
+
67086
+ this.FormatLabelTextEvent=function(point)
67087
+ {
67088
+ if (!this.HQChart) return;
67089
+ var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_DRAW_HLINE_LABEL);
67090
+ if (!event || !event.Callback) return;
67091
+
67092
+ var sendData={ ID:this.Guid, LabelConfig:this.LabelConfig, InsideLabelConfig:this.InsideLabelConfig };
67093
+ event.Callback(event, sendData, this);
67094
+ }
67073
67095
 
67074
67096
  this.DrawValueLabel=function(point)
67075
67097
  {
@@ -67077,6 +67099,8 @@ function ChartDrawPictureHorizontalLine()
67077
67099
  if (this.Frame.IsHScreen) return; //不支持横屏
67078
67100
 
67079
67101
  var y=point.Y;
67102
+ var yFixed=ToFixedPoint2(this.LineWidth,y);
67103
+
67080
67104
  var yValue=this.Frame.GetYData(y);
67081
67105
  var text=yValue.toFixed(2);
67082
67106
 
@@ -67085,12 +67109,27 @@ function ChartDrawPictureHorizontalLine()
67085
67109
 
67086
67110
  this.Canvas.font=config.Font;
67087
67111
  var textHeight=this.Canvas.measureText("擎").width;
67088
- var textWidth=this.Canvas.measureText(text).width;
67089
67112
 
67090
67113
  if (config.Left.IsShow && this.Frame.ChartBorder.Left>5)
67091
67114
  {
67115
+ var leftText=text;
67116
+ if (config.Left.Text) leftText=config.Left.Text;
67117
+ var textWidth=this.Canvas.measureText(leftText).width;
67118
+ var left=border.Left;
67119
+ if (IFrameSplitOperator.IsNumber(config.Left.LineOffset)&& config.Left.LineOffset!==0)
67120
+ {
67121
+ left-=config.Left.LineOffset;
67122
+ this.Canvas.strokeStyle=this.LineColor;
67123
+ this.SetLineWidth();
67124
+ this.Canvas.beginPath();
67125
+ this.Canvas.moveTo(border.Left,yFixed);
67126
+ this.Canvas.lineTo(left,yFixed);
67127
+ this.Canvas.stroke();
67128
+ this.RestoreLineWidth();
67129
+ }
67130
+
67092
67131
  var margin=config.Left.Margin;
67093
- var rtBG={ Right:border.Left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
67132
+ var rtBG={ Right:left+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
67094
67133
  rtBG.Top=y-textHeight/2-margin.Top;
67095
67134
  rtBG.Bottom=rtBG.Top+rtBG.Height;
67096
67135
  rtBG.Left=rtBG.Right-rtBG.Width;
@@ -67104,13 +67143,30 @@ function ChartDrawPictureHorizontalLine()
67104
67143
  var xText=rtBG.Left+margin.Left;
67105
67144
  var yText=rtBG.Top+margin.Top;
67106
67145
  this.Canvas.fillStyle=config.TextColor;
67107
- this.Canvas.fillText(text,xText,yText);
67146
+ this.Canvas.fillText(leftText,xText,yText);
67108
67147
  }
67109
67148
 
67110
67149
  if (config.Right.IsShow && this.Frame.ChartBorder.Right>5)
67111
67150
  {
67151
+ var rightText=text;
67152
+ if (config.Right.Text) rightText=config.Right.Text;
67153
+ var textWidth=this.Canvas.measureText(rightText).width;
67154
+
67155
+ var left=border.Right;
67156
+ if (IFrameSplitOperator.IsNumber(config.Right.LineOffset)&& config.Right.LineOffset!==0)
67157
+ {
67158
+ left+=config.Right.LineOffset;
67159
+ this.Canvas.strokeStyle=this.LineColor;
67160
+ this.SetLineWidth();
67161
+ this.Canvas.beginPath();
67162
+ this.Canvas.moveTo(border.Right,yFixed);
67163
+ this.Canvas.lineTo(left,yFixed);
67164
+ this.Canvas.stroke();
67165
+ this.RestoreLineWidth();
67166
+ }
67167
+
67112
67168
  var margin=config.Right.Margin;
67113
- var rtBG={ Left:border.Right+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
67169
+ var rtBG={ Left:left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
67114
67170
  rtBG.Top=y-textHeight/2-margin.Top;
67115
67171
  rtBG.Bottom=rtBG.Top+rtBG.Height;
67116
67172
  rtBG.Right=rtBG.Left+rtBG.Width;
@@ -67124,7 +67180,7 @@ function ChartDrawPictureHorizontalLine()
67124
67180
  var xText=rtBG.Left+margin.Left;
67125
67181
  var yText=rtBG.Top+margin.Top;
67126
67182
  this.Canvas.fillStyle=config.TextColor;
67127
- this.Canvas.fillText(text,xText,yText);
67183
+ this.Canvas.fillText(rightText,xText,yText);
67128
67184
  }
67129
67185
  }
67130
67186
 
@@ -87448,7 +87504,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
87448
87504
  if (item)
87449
87505
  {
87450
87506
  drawPicture=item.Create();
87451
- drawPicture.HQChart=this;
87452
87507
  }
87453
87508
 
87454
87509
  if (!drawPicture) //iconfont图标
@@ -87471,6 +87526,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
87471
87526
  drawPicture.Period=this.Period;
87472
87527
  drawPicture.Right=this.Right;
87473
87528
  drawPicture.Option=this.ChartDrawOption;
87529
+ drawPicture.HQChart=this;
87474
87530
 
87475
87531
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
87476
87532
  if (option) drawPicture.SetOption(option);
@@ -87501,8 +87557,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
87501
87557
  drawPicture.Period=this.Period;
87502
87558
  drawPicture.Right=this.Right;
87503
87559
  drawPicture.Option=this.ChartDrawOption;
87560
+ drawPicture.HQChart=this;
87504
87561
  if (obj.Value) drawPicture.Value=obj.Value;
87505
87562
  if (obj.Guid) drawPicture.Guid=obj.Guid;
87563
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
87506
87564
 
87507
87565
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
87508
87566
  drawPicture.SetOption(obj);
@@ -88118,6 +88176,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88118
88176
  drawPicture.Status=10;
88119
88177
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
88120
88178
  drawPicture.Option=this.ChartDrawOption;
88179
+ drawPicture.HQChart=this;
88121
88180
 
88122
88181
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
88123
88182
  if (drawPicture.Period!=this.Period)
@@ -95880,6 +95939,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95880
95939
  drawPicture.Symbol=this.Symbol;
95881
95940
  drawPicture.Period=888888888;
95882
95941
  drawPicture.Option=this.ChartDrawOption;
95942
+ drawPicture.HQChart=this;
95883
95943
 
95884
95944
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
95885
95945
  if (option) drawPicture.SetOption(option);
@@ -95910,8 +95970,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95910
95970
  drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame; //绑定框架坐标
95911
95971
  drawPicture.Symbol=this.Symbol;
95912
95972
  drawPicture.Period=888888888;
95973
+ drawPicture.HQChart=this;
95913
95974
  if (obj.Value) drawPicture.Value=obj.Value;
95914
95975
  if (obj.Guid) drawPicture.Guid=obj.Guid;
95976
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
95915
95977
 
95916
95978
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
95917
95979
  drawPicture.SetOption(obj);
@@ -95957,6 +96019,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95957
96019
 
95958
96020
  drawPicture.Canvas=this.Canvas;
95959
96021
  drawPicture.Status=10;
96022
+ drawPicture.HQChart=this;
95960
96023
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
95961
96024
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
95962
96025
  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:}
@@ -71019,9 +71026,9 @@ function ChartDrawPictureHorizontalLine()
71019
71026
 
71020
71027
  this.LabelConfig=
71021
71028
  {
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
71029
+ Left:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
71030
+ Right:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
71031
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`, TextColor:"rgb(255,255,255)", BGColor:null,
71025
71032
  };
71026
71033
 
71027
71034
  this.InsideLabelConfig=
@@ -71120,6 +71127,9 @@ function ChartDrawPictureHorizontalLine()
71120
71127
  left=this.Frame.ChartBorder.GetTop();
71121
71128
  right=this.Frame.ChartBorder.GetBottom();
71122
71129
  }
71130
+
71131
+
71132
+
71123
71133
  this.ClipFrame();
71124
71134
 
71125
71135
  this.Canvas.strokeStyle=this.LineColor;
@@ -71159,6 +71169,8 @@ function ChartDrawPictureHorizontalLine()
71159
71169
  //画点
71160
71170
  this.DrawPoint(drawPoint);
71161
71171
 
71172
+ this.FormatLabelTextEvent(drawPoint);
71173
+
71162
71174
  //显示价格
71163
71175
  this.DrawInsideLabel(drawPoint[0])
71164
71176
 
@@ -71166,6 +71178,16 @@ function ChartDrawPictureHorizontalLine()
71166
71178
 
71167
71179
  this.DrawValueLabel(drawPoint[0]);
71168
71180
  }
71181
+
71182
+ this.FormatLabelTextEvent=function(point)
71183
+ {
71184
+ if (!this.HQChart) return;
71185
+ var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_DRAW_HLINE_LABEL);
71186
+ if (!event || !event.Callback) return;
71187
+
71188
+ var sendData={ ID:this.Guid, LabelConfig:this.LabelConfig, InsideLabelConfig:this.InsideLabelConfig };
71189
+ event.Callback(event, sendData, this);
71190
+ }
71169
71191
 
71170
71192
  this.DrawValueLabel=function(point)
71171
71193
  {
@@ -71173,6 +71195,8 @@ function ChartDrawPictureHorizontalLine()
71173
71195
  if (this.Frame.IsHScreen) return; //不支持横屏
71174
71196
 
71175
71197
  var y=point.Y;
71198
+ var yFixed=ToFixedPoint2(this.LineWidth,y);
71199
+
71176
71200
  var yValue=this.Frame.GetYData(y);
71177
71201
  var text=yValue.toFixed(2);
71178
71202
 
@@ -71181,12 +71205,27 @@ function ChartDrawPictureHorizontalLine()
71181
71205
 
71182
71206
  this.Canvas.font=config.Font;
71183
71207
  var textHeight=this.Canvas.measureText("擎").width;
71184
- var textWidth=this.Canvas.measureText(text).width;
71185
71208
 
71186
71209
  if (config.Left.IsShow && this.Frame.ChartBorder.Left>5)
71187
71210
  {
71211
+ var leftText=text;
71212
+ if (config.Left.Text) leftText=config.Left.Text;
71213
+ var textWidth=this.Canvas.measureText(leftText).width;
71214
+ var left=border.Left;
71215
+ if (IFrameSplitOperator.IsNumber(config.Left.LineOffset)&& config.Left.LineOffset!==0)
71216
+ {
71217
+ left-=config.Left.LineOffset;
71218
+ this.Canvas.strokeStyle=this.LineColor;
71219
+ this.SetLineWidth();
71220
+ this.Canvas.beginPath();
71221
+ this.Canvas.moveTo(border.Left,yFixed);
71222
+ this.Canvas.lineTo(left,yFixed);
71223
+ this.Canvas.stroke();
71224
+ this.RestoreLineWidth();
71225
+ }
71226
+
71188
71227
  var margin=config.Left.Margin;
71189
- var rtBG={ Right:border.Left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71228
+ var rtBG={ Right:left+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71190
71229
  rtBG.Top=y-textHeight/2-margin.Top;
71191
71230
  rtBG.Bottom=rtBG.Top+rtBG.Height;
71192
71231
  rtBG.Left=rtBG.Right-rtBG.Width;
@@ -71200,13 +71239,30 @@ function ChartDrawPictureHorizontalLine()
71200
71239
  var xText=rtBG.Left+margin.Left;
71201
71240
  var yText=rtBG.Top+margin.Top;
71202
71241
  this.Canvas.fillStyle=config.TextColor;
71203
- this.Canvas.fillText(text,xText,yText);
71242
+ this.Canvas.fillText(leftText,xText,yText);
71204
71243
  }
71205
71244
 
71206
71245
  if (config.Right.IsShow && this.Frame.ChartBorder.Right>5)
71207
71246
  {
71247
+ var rightText=text;
71248
+ if (config.Right.Text) rightText=config.Right.Text;
71249
+ var textWidth=this.Canvas.measureText(rightText).width;
71250
+
71251
+ var left=border.Right;
71252
+ if (IFrameSplitOperator.IsNumber(config.Right.LineOffset)&& config.Right.LineOffset!==0)
71253
+ {
71254
+ left+=config.Right.LineOffset;
71255
+ this.Canvas.strokeStyle=this.LineColor;
71256
+ this.SetLineWidth();
71257
+ this.Canvas.beginPath();
71258
+ this.Canvas.moveTo(border.Right,yFixed);
71259
+ this.Canvas.lineTo(left,yFixed);
71260
+ this.Canvas.stroke();
71261
+ this.RestoreLineWidth();
71262
+ }
71263
+
71208
71264
  var margin=config.Right.Margin;
71209
- var rtBG={ Left:border.Right+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71265
+ var rtBG={ Left:left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71210
71266
  rtBG.Top=y-textHeight/2-margin.Top;
71211
71267
  rtBG.Bottom=rtBG.Top+rtBG.Height;
71212
71268
  rtBG.Right=rtBG.Left+rtBG.Width;
@@ -71220,7 +71276,7 @@ function ChartDrawPictureHorizontalLine()
71220
71276
  var xText=rtBG.Left+margin.Left;
71221
71277
  var yText=rtBG.Top+margin.Top;
71222
71278
  this.Canvas.fillStyle=config.TextColor;
71223
- this.Canvas.fillText(text,xText,yText);
71279
+ this.Canvas.fillText(rightText,xText,yText);
71224
71280
  }
71225
71281
  }
71226
71282
 
@@ -91544,7 +91600,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91544
91600
  if (item)
91545
91601
  {
91546
91602
  drawPicture=item.Create();
91547
- drawPicture.HQChart=this;
91548
91603
  }
91549
91604
 
91550
91605
  if (!drawPicture) //iconfont图标
@@ -91567,6 +91622,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91567
91622
  drawPicture.Period=this.Period;
91568
91623
  drawPicture.Right=this.Right;
91569
91624
  drawPicture.Option=this.ChartDrawOption;
91625
+ drawPicture.HQChart=this;
91570
91626
 
91571
91627
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
91572
91628
  if (option) drawPicture.SetOption(option);
@@ -91597,8 +91653,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91597
91653
  drawPicture.Period=this.Period;
91598
91654
  drawPicture.Right=this.Right;
91599
91655
  drawPicture.Option=this.ChartDrawOption;
91656
+ drawPicture.HQChart=this;
91600
91657
  if (obj.Value) drawPicture.Value=obj.Value;
91601
91658
  if (obj.Guid) drawPicture.Guid=obj.Guid;
91659
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
91602
91660
 
91603
91661
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
91604
91662
  drawPicture.SetOption(obj);
@@ -92214,6 +92272,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92214
92272
  drawPicture.Status=10;
92215
92273
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
92216
92274
  drawPicture.Option=this.ChartDrawOption;
92275
+ drawPicture.HQChart=this;
92217
92276
 
92218
92277
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
92219
92278
  if (drawPicture.Period!=this.Period)
@@ -99976,6 +100035,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
99976
100035
  drawPicture.Symbol=this.Symbol;
99977
100036
  drawPicture.Period=888888888;
99978
100037
  drawPicture.Option=this.ChartDrawOption;
100038
+ drawPicture.HQChart=this;
99979
100039
 
99980
100040
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
99981
100041
  if (option) drawPicture.SetOption(option);
@@ -100006,8 +100066,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100006
100066
  drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame; //绑定框架坐标
100007
100067
  drawPicture.Symbol=this.Symbol;
100008
100068
  drawPicture.Period=888888888;
100069
+ drawPicture.HQChart=this;
100009
100070
  if (obj.Value) drawPicture.Value=obj.Value;
100010
100071
  if (obj.Guid) drawPicture.Guid=obj.Guid;
100072
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
100011
100073
 
100012
100074
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
100013
100075
  drawPicture.SetOption(obj);
@@ -100053,6 +100115,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100053
100115
 
100054
100116
  drawPicture.Canvas=this.Canvas;
100055
100117
  drawPicture.Status=10;
100118
+ drawPicture.HQChart=this;
100056
100119
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
100057
100120
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
100058
100121
  drawPicture.ResetXValue();
@@ -153733,7 +153796,7 @@ function ScrollBarBGChart()
153733
153796
 
153734
153797
 
153735
153798
 
153736
- var HQCHART_VERSION="1.1.15146";
153799
+ var HQCHART_VERSION="1.1.15151";
153737
153800
 
153738
153801
  function PrintHQChartVersion()
153739
153802
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15146";
8
+ var HQCHART_VERSION="1.1.15151";
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:}
@@ -71063,9 +71070,9 @@ function ChartDrawPictureHorizontalLine()
71063
71070
 
71064
71071
  this.LabelConfig=
71065
71072
  {
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
71073
+ Left:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
71074
+ Right:{ IsShow:true, Margin:{ Left:5, Top:4, Bottom:2, Right:5 }, LineOffset:null, Text:null },
71075
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`, TextColor:"rgb(255,255,255)", BGColor:null,
71069
71076
  };
71070
71077
 
71071
71078
  this.InsideLabelConfig=
@@ -71164,6 +71171,9 @@ function ChartDrawPictureHorizontalLine()
71164
71171
  left=this.Frame.ChartBorder.GetTop();
71165
71172
  right=this.Frame.ChartBorder.GetBottom();
71166
71173
  }
71174
+
71175
+
71176
+
71167
71177
  this.ClipFrame();
71168
71178
 
71169
71179
  this.Canvas.strokeStyle=this.LineColor;
@@ -71203,6 +71213,8 @@ function ChartDrawPictureHorizontalLine()
71203
71213
  //画点
71204
71214
  this.DrawPoint(drawPoint);
71205
71215
 
71216
+ this.FormatLabelTextEvent(drawPoint);
71217
+
71206
71218
  //显示价格
71207
71219
  this.DrawInsideLabel(drawPoint[0])
71208
71220
 
@@ -71210,6 +71222,16 @@ function ChartDrawPictureHorizontalLine()
71210
71222
 
71211
71223
  this.DrawValueLabel(drawPoint[0]);
71212
71224
  }
71225
+
71226
+ this.FormatLabelTextEvent=function(point)
71227
+ {
71228
+ if (!this.HQChart) return;
71229
+ var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_DRAW_HLINE_LABEL);
71230
+ if (!event || !event.Callback) return;
71231
+
71232
+ var sendData={ ID:this.Guid, LabelConfig:this.LabelConfig, InsideLabelConfig:this.InsideLabelConfig };
71233
+ event.Callback(event, sendData, this);
71234
+ }
71213
71235
 
71214
71236
  this.DrawValueLabel=function(point)
71215
71237
  {
@@ -71217,6 +71239,8 @@ function ChartDrawPictureHorizontalLine()
71217
71239
  if (this.Frame.IsHScreen) return; //不支持横屏
71218
71240
 
71219
71241
  var y=point.Y;
71242
+ var yFixed=ToFixedPoint2(this.LineWidth,y);
71243
+
71220
71244
  var yValue=this.Frame.GetYData(y);
71221
71245
  var text=yValue.toFixed(2);
71222
71246
 
@@ -71225,12 +71249,27 @@ function ChartDrawPictureHorizontalLine()
71225
71249
 
71226
71250
  this.Canvas.font=config.Font;
71227
71251
  var textHeight=this.Canvas.measureText("擎").width;
71228
- var textWidth=this.Canvas.measureText(text).width;
71229
71252
 
71230
71253
  if (config.Left.IsShow && this.Frame.ChartBorder.Left>5)
71231
71254
  {
71255
+ var leftText=text;
71256
+ if (config.Left.Text) leftText=config.Left.Text;
71257
+ var textWidth=this.Canvas.measureText(leftText).width;
71258
+ var left=border.Left;
71259
+ if (IFrameSplitOperator.IsNumber(config.Left.LineOffset)&& config.Left.LineOffset!==0)
71260
+ {
71261
+ left-=config.Left.LineOffset;
71262
+ this.Canvas.strokeStyle=this.LineColor;
71263
+ this.SetLineWidth();
71264
+ this.Canvas.beginPath();
71265
+ this.Canvas.moveTo(border.Left,yFixed);
71266
+ this.Canvas.lineTo(left,yFixed);
71267
+ this.Canvas.stroke();
71268
+ this.RestoreLineWidth();
71269
+ }
71270
+
71232
71271
  var margin=config.Left.Margin;
71233
- var rtBG={ Right:border.Left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71272
+ var rtBG={ Right:left+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71234
71273
  rtBG.Top=y-textHeight/2-margin.Top;
71235
71274
  rtBG.Bottom=rtBG.Top+rtBG.Height;
71236
71275
  rtBG.Left=rtBG.Right-rtBG.Width;
@@ -71244,13 +71283,30 @@ function ChartDrawPictureHorizontalLine()
71244
71283
  var xText=rtBG.Left+margin.Left;
71245
71284
  var yText=rtBG.Top+margin.Top;
71246
71285
  this.Canvas.fillStyle=config.TextColor;
71247
- this.Canvas.fillText(text,xText,yText);
71286
+ this.Canvas.fillText(leftText,xText,yText);
71248
71287
  }
71249
71288
 
71250
71289
  if (config.Right.IsShow && this.Frame.ChartBorder.Right>5)
71251
71290
  {
71291
+ var rightText=text;
71292
+ if (config.Right.Text) rightText=config.Right.Text;
71293
+ var textWidth=this.Canvas.measureText(rightText).width;
71294
+
71295
+ var left=border.Right;
71296
+ if (IFrameSplitOperator.IsNumber(config.Right.LineOffset)&& config.Right.LineOffset!==0)
71297
+ {
71298
+ left+=config.Right.LineOffset;
71299
+ this.Canvas.strokeStyle=this.LineColor;
71300
+ this.SetLineWidth();
71301
+ this.Canvas.beginPath();
71302
+ this.Canvas.moveTo(border.Right,yFixed);
71303
+ this.Canvas.lineTo(left,yFixed);
71304
+ this.Canvas.stroke();
71305
+ this.RestoreLineWidth();
71306
+ }
71307
+
71252
71308
  var margin=config.Right.Margin;
71253
- var rtBG={ Left:border.Right+1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71309
+ var rtBG={ Left:left-1, Height:textHeight+margin.Top+margin.Bottom, Width:textWidth+margin.Left+margin.Right };
71254
71310
  rtBG.Top=y-textHeight/2-margin.Top;
71255
71311
  rtBG.Bottom=rtBG.Top+rtBG.Height;
71256
71312
  rtBG.Right=rtBG.Left+rtBG.Width;
@@ -71264,7 +71320,7 @@ function ChartDrawPictureHorizontalLine()
71264
71320
  var xText=rtBG.Left+margin.Left;
71265
71321
  var yText=rtBG.Top+margin.Top;
71266
71322
  this.Canvas.fillStyle=config.TextColor;
71267
- this.Canvas.fillText(text,xText,yText);
71323
+ this.Canvas.fillText(rightText,xText,yText);
71268
71324
  }
71269
71325
  }
71270
71326
 
@@ -91588,7 +91644,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91588
91644
  if (item)
91589
91645
  {
91590
91646
  drawPicture=item.Create();
91591
- drawPicture.HQChart=this;
91592
91647
  }
91593
91648
 
91594
91649
  if (!drawPicture) //iconfont图标
@@ -91611,6 +91666,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91611
91666
  drawPicture.Period=this.Period;
91612
91667
  drawPicture.Right=this.Right;
91613
91668
  drawPicture.Option=this.ChartDrawOption;
91669
+ drawPicture.HQChart=this;
91614
91670
 
91615
91671
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
91616
91672
  if (option) drawPicture.SetOption(option);
@@ -91641,8 +91697,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91641
91697
  drawPicture.Period=this.Period;
91642
91698
  drawPicture.Right=this.Right;
91643
91699
  drawPicture.Option=this.ChartDrawOption;
91700
+ drawPicture.HQChart=this;
91644
91701
  if (obj.Value) drawPicture.Value=obj.Value;
91645
91702
  if (obj.Guid) drawPicture.Guid=obj.Guid;
91703
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
91646
91704
 
91647
91705
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
91648
91706
  drawPicture.SetOption(obj);
@@ -92258,6 +92316,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92258
92316
  drawPicture.Status=10;
92259
92317
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
92260
92318
  drawPicture.Option=this.ChartDrawOption;
92319
+ drawPicture.HQChart=this;
92261
92320
 
92262
92321
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
92263
92322
  if (drawPicture.Period!=this.Period)
@@ -100020,6 +100079,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100020
100079
  drawPicture.Symbol=this.Symbol;
100021
100080
  drawPicture.Period=888888888;
100022
100081
  drawPicture.Option=this.ChartDrawOption;
100082
+ drawPicture.HQChart=this;
100023
100083
 
100024
100084
  if (callback) drawPicture.FinishedCallback=callback; //完成通知上层回调
100025
100085
  if (option) drawPicture.SetOption(option);
@@ -100050,8 +100110,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100050
100110
  drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame; //绑定框架坐标
100051
100111
  drawPicture.Symbol=this.Symbol;
100052
100112
  drawPicture.Period=888888888;
100113
+ drawPicture.HQChart=this;
100053
100114
  if (obj.Value) drawPicture.Value=obj.Value;
100054
100115
  if (obj.Guid) drawPicture.Guid=obj.Guid;
100116
+ if (obj.CacheData) drawPicture.CacheData=obj.CacheData; //缓存数据
100055
100117
 
100056
100118
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(obj);
100057
100119
  drawPicture.SetOption(obj);
@@ -100097,6 +100159,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100097
100159
 
100098
100160
  drawPicture.Canvas=this.Canvas;
100099
100161
  drawPicture.Status=10;
100162
+ drawPicture.HQChart=this;
100100
100163
  drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
100101
100164
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
100102
100165
  drawPicture.ResetXValue();
@@ -165310,8 +165373,9 @@ function JSDialogModifyIndexParam()
165310
165373
  input.className='UMyChart_ModifyIndexParam_Input';
165311
165374
  input.type="number";
165312
165375
  input.step=1;
165313
- input.addEventListener("mouseup", (e)=>{ this.OnParamMouseUp(e)});
165314
- input.addEventListener("keyup", (e)=>{ this.OnParamKeyUp(e)})
165376
+ //input.addEventListener("mouseup", (e)=>{ this.OnParamMouseUp(e)});
165377
+ //input.addEventListener("keyup", (e)=>{ this.OnParamKeyUp(e)} );
165378
+ input.addEventListener("input", (e)=>{ this.OnParamInput(e)} );
165315
165379
  tdDom.appendChild(input);
165316
165380
  rowItem.Input=input;
165317
165381
 
@@ -165440,6 +165504,7 @@ function JSDialogModifyIndexParam()
165440
165504
  }
165441
165505
  }
165442
165506
 
165507
+ /*
165443
165508
  this.OnParamMouseUp=function(e)
165444
165509
  {
165445
165510
  var input=e.target;
@@ -165457,6 +165522,16 @@ function JSDialogModifyIndexParam()
165457
165522
 
165458
165523
  this.ModifyParam(id, parseInt(value));
165459
165524
  }
165525
+ */
165526
+
165527
+ this.OnParamInput=function(e)
165528
+ {
165529
+ var input=e.target;
165530
+ var value=input.value;
165531
+ var id=input.dataset.paramid;
165532
+
165533
+ this.ModifyParam(id, parseInt(value));
165534
+ }
165460
165535
 
165461
165536
  this.ModifyParam=function(id, value)
165462
165537
  {
@@ -165734,7 +165809,7 @@ function HQChartScriptWorker()
165734
165809
 
165735
165810
 
165736
165811
 
165737
- var HQCHART_VERSION="1.1.15146";
165812
+ var HQCHART_VERSION="1.1.15151";
165738
165813
 
165739
165814
  function PrintHQChartVersion()
165740
165815
  {