hqchart 1.1.14375 → 1.1.14386

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.
@@ -2057,10 +2057,11 @@ if(IFrameSplitOperator.IsBool(windowItem.IsShowNameArrow))frame.IsShowNameArrow=
2057
2057
  {frame.CustomToolbar=item.CustomToolbar.slice();}}if(IFrameSplitOperator.IsNumber(option.SplitCount))subFrame.Frame.YSplitOperator.SplitCount=option.SplitCount;if(IFrameSplitOperator.IsNumber(option.TitleHeight))subFrame.Frame.ChartBorder.TitleHeight=option.TitleHeight;if(IFrameSplitOperator.IsBool(option.IsShowTitleArrow))subFrame.Frame.IsShowTitleArrow=option.IsShowTitleArrow;if(IFrameSplitOperator.IsNumber(option.TitleArrowType))subFrame.Frame.TitleArrowType=option.TitleArrowType;if(IFrameSplitOperator.IsBool(option.IsShowIndexName))subFrame.Frame.IsShowIndexName=option.IsShowIndexName;if(IFrameSplitOperator.IsBool(option.IsShowOverlayIndexName))subFrame.Frame.IsShowOverlayIndexName=option.IsShowOverlayIndexName;if(IFrameSplitOperator.IsNumber(option.IndexParamSpace))subFrame.Frame.IndexParamSpace=option.IndexParamSpace;if(IFrameSplitOperator.IsBool(option.IsShowXLine))subFrame.Frame.IsShowXLine=option.IsShowXLine;if(IFrameSplitOperator.IsBool(option.IsShowYLine))subFrame.Frame.IsShowYLine=option.IsShowYLine;if(IFrameSplitOperator.IsBool(option.IsShowIndexTitle))subFrame.Frame.IsShowIndexTitle=option.IsShowIndexTitle;if(IFrameSplitOperator.IsNumber(option.Height))subFrame.Height=option.Height;//高度
2058
2058
  if(IFrameSplitOperator.IsBool(option.IsShowLeftText)){subFrame.Frame.IsShowYText[0]=option.IsShowLeftText;subFrame.Frame.YSplitOperator.IsShowLeftText=option.IsShowLeftText;//显示左边刻度
2059
2059
  }if(IFrameSplitOperator.IsBool(option.IsShowRightText)){subFrame.Frame.IsShowYText[1]=option.IsShowRightText;subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText;//显示右边刻度
2060
- }};this.AddNewSubFrame=function(option){var _this13=this;var index=this.Frame.SubFrame.length;var subFrame=this.CreateSubFrameItem(index);var pixelRatio=GetDevicePixelRatio();subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[index]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[index].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this13.GetEventCallback(id);};this.TitlePaint[index+1]=titlePaint;this.SetSubFrameOption(subFrame,option);//最后一个显示X轴坐标
2060
+ }};this.AddNewSubFrame=function(option){var _this13=this;var index=this.Frame.SubFrame.length;var subFrame=this.CreateSubFrameItem(index);var pixelRatio=GetDevicePixelRatio();subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[index]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[index].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this13.GetEventCallback(id);};this.TitlePaint[index+1]=titlePaint;this.SetSubFrameOption(subFrame,option);this.UpdateSubFrameDataWidth(subFrame.Frame);//最后一个显示X轴坐标
2061
2061
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.UpdataDataoffset();//更新数据偏移
2062
2062
  this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
2063
- this.Draw();return index;};//增加一个指标窗口
2063
+ this.Draw();return index;};this.UpdateSubFrameDataWidth=function(frame){//同步柱子宽度
2064
+ var mainFrame=this.Frame.SubFrame[0].Frame;frame.XPointCount=mainFrame.XPointCount;frame.ZoomIndex=mainFrame.ZoomIndex;frame.DataWidth=mainFrame.DataWidth;frame.DistanceWidth=mainFrame.DistanceWidth;frame.LastCalculateStatus.Width=mainFrame.LastCalculateStatus.Width;frame.LastCalculateStatus.XPointCount=mainFrame.LastCalculateStatus.XPointCount;};//增加一个指标窗口
2064
2065
  this.AddIndexWindow=function(indexName,option){//查找系统指标
2065
2066
  var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;this.Frame.RestoreIndexWindows();//还原隐藏的窗口
2066
2067
  var index=this.AddNewSubFrame(option);JSIndexScript.ModifyAttribute(indexInfo,option);this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
@@ -3475,8 +3476,9 @@ LeftMargin:g_JSChartResource.OrderFlow_Style5.LeftMargin,RightMargin:g_JSChartRe
3475
3476
  this.ChartHeatMap;//=new ChartHeatMap();
3476
3477
  //未回补的价格缺口
3477
3478
  this.PriceGap={Enable:false,Count:1};this.PriceGapStyple={Line:{Color:g_JSChartResource.PriceGapStyple.Line.Color},Text:{Color:g_JSChartResource.PriceGapStyple.Text.Color,Font:g_JSChartResource.PriceGapStyple.Text.Font}};this.AryPriceGapCache=[];//缺口数据 { }
3478
- this.ReloadResource=function(resource){this.TextFont=g_JSChartResource.KLine.MaxMin.Font;this.TextColor=g_JSChartResource.KLine.MaxMin.Color;this.CloseLineColor=g_JSChartResource.CloseLineColor;this.CloseLineAreaColor=g_JSChartResource.CloseLineAreaColor;this.CloseLineWidth=g_JSChartResource.CloseLineWidth;this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.UnchagneColor=g_JSChartResource.UnchagneBarColor;//平盘
3479
- this.HighLowBarColor=g_JSChartResource.HighLowBarColor;this.OrderFlow.UpColor={BG:g_JSChartResource.OrderFlow.UpColor.BG,Border:g_JSChartResource.OrderFlow.UpColor.Border};this.OrderFlow.DownColor={BG:g_JSChartResource.OrderFlow.DownColor.BG,Border:g_JSChartResource.OrderFlow.DownColor.Border};this.OrderFlow.UnchagneColor={BG:g_JSChartResource.OrderFlow.UnchagneColor.BG,Border:g_JSChartResource.OrderFlow.UnchagneColor.Border};this.OrderFlow.Text={Color:g_JSChartResource.OrderFlow.Text.Color,Family:g_JSChartResource.OrderFlow.Text.Family,FontMaxSize:g_JSChartResource.OrderFlow.Text.FontMaxSize,MaxValue:g_JSChartResource.OrderFlow.Text.MaxValue};this.OrderFlow.Line={UpDownColor:g_JSChartResource.OrderFlow.Line.UpDownColor,MiddleColor:g_JSChartResource.OrderFlow.Line.MiddleColor};};this.ClearCustomKLine=function(){this.CustomKLine=null;};this.GetCustomKLine=function(kItem){if(!this.CustomKLine)return null;if(!kItem)return null;var key=kItem.Date*1000000;if(IFrameSplitOperator.IsNumber(kItem.Time))key+=kItem.Time;if(!this.CustomKLine.has(key))return null;var value=this.CustomKLine.get(key);return value;};this.DrawHeatMap=function(){if(!this.ChartHeatMap)return;this.ChartHeatMap.Canvas=this.Canvas;this.ChartHeatMap.ChartBorder=this.ChartBorder;this.ChartHeatMap.ChartFrame=this.ChartFrame;this.ChartHeatMap.Data=this.Data;this.ChartHeatMap.Draw();};this.ClearHeatMap=function(){this.ChartHeatMap=null;};this.CreateHeatMap=function(){this.ChartHeatMap=new ChartHeatMap();};this.DrawAKLine=function()//美国线
3479
+ //面积图和收盘价线 断开点
3480
+ this.AryBreakPoint;this.BuildDateTimeKey=function(item){if(!item)return null;if(!IFrameSplitOperator.IsNumber(item.Time))return''+item.Date;return item.Date+'-'+item.Time;};this.BuildBreakPoint=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.AryBreakPoint))return null;var mapBreakPoint=new _map2.default();for(var i=0;i<this.AryBreakPoint.length;++i){var item=this.AryBreakPoint[i];var key=this.BuildDateTimeKey(item);if(key)mapBreakPoint.set(key,item);}return mapBreakPoint;};this.ReloadResource=function(resource){this.TextFont=g_JSChartResource.KLine.MaxMin.Font;this.TextColor=g_JSChartResource.KLine.MaxMin.Color;this.CloseLineColor=g_JSChartResource.CloseLineColor;this.CloseLineAreaColor=g_JSChartResource.CloseLineAreaColor;this.CloseLineWidth=g_JSChartResource.CloseLineWidth;this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.UnchagneColor=g_JSChartResource.UnchagneBarColor;//平盘
3481
+ this.HighLowBarColor=g_JSChartResource.HighLowBarColor;this.OrderFlow.UpColor={BG:g_JSChartResource.OrderFlow.UpColor.BG,Border:g_JSChartResource.OrderFlow.UpColor.Border};this.OrderFlow.DownColor={BG:g_JSChartResource.OrderFlow.DownColor.BG,Border:g_JSChartResource.OrderFlow.DownColor.Border};this.OrderFlow.UnchagneColor={BG:g_JSChartResource.OrderFlow.UnchagneColor.BG,Border:g_JSChartResource.OrderFlow.UnchagneColor.Border};this.OrderFlow.Text={Color:g_JSChartResource.OrderFlow.Text.Color,Family:g_JSChartResource.OrderFlow.Text.Family,FontMaxSize:g_JSChartResource.OrderFlow.Text.FontMaxSize,MaxValue:g_JSChartResource.OrderFlow.Text.MaxValue};this.OrderFlow.Line={UpDownColor:g_JSChartResource.OrderFlow.Line.UpDownColor,MiddleColor:g_JSChartResource.OrderFlow.Line.MiddleColor};};this.ClearCustomKLine=function(){this.CustomKLine=null;};this.ClearBreakPoint=function(){this.AryBreakPoint=null;};this.GetCustomKLine=function(kItem){if(!this.CustomKLine)return null;if(!kItem)return null;var key=kItem.Date*1000000;if(IFrameSplitOperator.IsNumber(kItem.Time))key+=kItem.Time;if(!this.CustomKLine.has(key))return null;var value=this.CustomKLine.get(key);return value;};this.DrawHeatMap=function(){if(!this.ChartHeatMap)return;this.ChartHeatMap.Canvas=this.Canvas;this.ChartHeatMap.ChartBorder=this.ChartBorder;this.ChartHeatMap.ChartFrame=this.ChartFrame;this.ChartHeatMap.Data=this.Data;this.ChartHeatMap.Draw();};this.ClearHeatMap=function(){this.ChartHeatMap=null;};this.CreateHeatMap=function(){this.ChartHeatMap=new ChartHeatMap();};this.DrawAKLine=function()//美国线
3480
3482
  {var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var upColor=this.UpColor;var downColor=this.DownColor;var unchagneColor=this.UnchagneColor;var ptMax={X:null,Y:null,Value:null,Align:'left'};var ptMin={X:null,Y:null,Value:null,Align:'left'};this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var eventUnchangeKLine=null;//定制平盘K线颜色事件
3481
3483
  if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_UNCHANGE_KLINE_COLOR);}var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(ptMax.Value==null||ptMax.Value<data.High)//求最大值
3482
3484
  {ptMax.X=x;ptMax.Y=yHigh;ptMax.Value=data.High;ptMax.Align=j<xPointCount/2?'left':'right';}if(ptMin.Value==null||ptMin.Value>data.Low)//求最小值
@@ -3497,7 +3499,9 @@ var yTop=yClose-barWidth/2;if(isHScreen){this.Canvas.fillRect(yTop,aryX[2],barWi
3497
3499
  {var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var borderLeft=border.TopEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var borderLeft=border.LeftEx;}var bFirstPoint=true;var firstPoint=null;this.Canvas.beginPath();this.Canvas.strokeStyle=this.CloseLineColor;if(IFrameSplitOperator.IsNumber(this.CloseLineWidth))this.Canvas.lineWidth=this.CloseLineWidth;var ptLast=null;if(this.Data.DataOffset>0)//把最左边的一个点连上
3498
3500
  {var data=this.Data.Data[this.Data.DataOffset-1];if(data&&IFrameSplitOperator.IsNumber(data.Close)){var x=borderLeft;var yClose=this.GetYFromData(data.Close,false);if(isHScreen){this.Canvas.moveTo(yClose,x);firstPoint={X:yClose,Y:x};}else{this.Canvas.moveTo(x,yClose);firstPoint={X:x,Y:yClose};}bFirstPoint=false;}}this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen){this.Canvas.moveTo(yClose,x);firstPoint={X:yClose,Y:x};}else{this.Canvas.moveTo(x,yClose);firstPoint={X:x,Y:yClose};}bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}if(i==this.Data.Data.length-1){ptLast={X:x,Y:yClose,XLeft:left,XRight:right,KItem:data,ChartRight:chartright};}if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}}this.DrawLastPointEvent(ptLast);//通知外部绘制最后一个点
3499
3501
  if(bFirstPoint)return;this.Canvas.stroke();if(isHScreen){this.Canvas.lineTo(border.Left,x);this.Canvas.lineTo(border.Left,firstPoint.Y);}else{this.Canvas.lineTo(x,border.Bottom);this.Canvas.lineTo(firstPoint.X,border.Bottom);}this.Canvas.closePath();if(Array.isArray(this.CloseLineAreaColor)){if(isHScreen){var gradient=this.Canvas.createLinearGradient(this.ChartBorder.GetRightEx(),this.ChartBorder.GetTop(),this.ChartBorder.GetLeft(),this.ChartBorder.GetTop());gradient.addColorStop(0,this.CloseLineAreaColor[0]);gradient.addColorStop(1,this.CloseLineAreaColor[1]);this.Canvas.fillStyle=gradient;}else{var _gradient=this.Canvas.createLinearGradient(firstPoint.X,this.ChartBorder.GetTopEx(),firstPoint.X,this.ChartBorder.GetBottom());_gradient.addColorStop(0,this.CloseLineAreaColor[0]);_gradient.addColorStop(1,this.CloseLineAreaColor[1]);this.Canvas.fillStyle=_gradient;}}else{this.Canvas.fillStyle=this.CloseLineAreaColor;}this.Canvas.fill();};this.DrawCloseLine=function()//收盘价线
3500
- {var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var bFirstPoint=true;this.Canvas.beginPath();this.Canvas.strokeStyle=this.CloseLineColor;if(IFrameSplitOperator.IsNumber(this.CloseLineWidth))this.Canvas.lineWidth=this.CloseLineWidth;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen)this.Canvas.moveTo(yClose,x);else this.Canvas.moveTo(x,yClose);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}}if(bFirstPoint==false)this.Canvas.stroke();};this.DrawKBar=function()//蜡烛头
3502
+ {var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var bFirstPoint=true;var drawCount=0;this.Canvas.beginPath();this.Canvas.strokeStyle=this.CloseLineColor;if(IFrameSplitOperator.IsNumber(this.CloseLineWidth))this.Canvas.lineWidth=this.CloseLineWidth;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var mapBreakPoint=this.BuildBreakPoint();//断点
3503
+ var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen)this.Canvas.moveTo(yClose,x);else this.Canvas.moveTo(x,yClose);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}++drawCount;if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}//断开点
3504
+ if(mapBreakPoint){var kItem=data;var key=this.BuildDateTimeKey(kItem);if(key&&mapBreakPoint.has(key)){if(drawCount>0)this.Canvas.stroke();bFirstPoint=true;drawCount=0;}}}if(drawCount>0)this.Canvas.stroke();};this.DrawKBar=function()//蜡烛头
3501
3505
  {var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;chartright=border.BottomEx;}var ptMax={X:null,Y:null,Value:null,Align:'left'};var ptMin={X:null,Y:null,Value:null,Align:'left'};var upColor=this.UpColor;var downColor=this.DownColor;var unchagneColor=this.UnchagneColor;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;var ptLast=null;this.DrawKRange.Start=this.Data.DataOffset;var eventUnchangeKLine=null;//定制平盘K线颜色事件
3502
3506
  if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_UNCHANGE_KLINE_COLOR);}var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};this.DrawKRange.End=i;if(ptMax.Value==null||ptMax.Value<data.High)//求最大值
3503
3507
  {ptMax.X=x;ptMax.Y=yHigh;ptMax.Value=data.High;ptMax.Align=j<xPointCount/2?'left':'right';}if(ptMin.Value==null||ptMin.Value>data.Low)//求最小值
@@ -3994,8 +3998,11 @@ this.Draw=function(){this.MaxMin=null;if(!this.IsShow||this.ChartFrame.IsMinSize
3994
3998
  this.GetCurrentMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={Max:null,Min:null};for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null)range.Max=value;if(range.Min==null)range.Min=value;if(range.Max<value)range.Max=value;if(range.Min>value)range.Min=value;}return range;};this.GetMaxMin=function(){return{Max:null,Min:null};};this.GetYFromData=function(value){var bHScreen=this.ChartFrame.IsHScreen===true;if(bHScreen){if(value<=this.MaxMin.Min)return this.ChartBorder.GetLeftEx();if(value>=this.MaxMin.Max)return this.ChartBorder.GetRightEx();var width=this.ChartBorder.GetWidthEx()*(value-this.MaxMin.Min)/(this.MaxMin.Max-this.MaxMin.Min);return this.ChartBorder.GetLeftEx()+width;}else{if(value<=this.MaxMin.Min)return this.ChartBorder.GetBottomEx();if(value>=this.MaxMin.Max)return this.ChartBorder.GetTopEx();var height=this.ChartBorder.GetHeightEx()*(value-this.MaxMin.Min)/(this.MaxMin.Max-this.MaxMin.Min);return this.ChartBorder.GetBottomEx()-height;}};}//彩色线段
3995
3999
  function ChartPartLine(){this.newMethod=IChartPainting;//派生
3996
4000
  this.newMethod();delete this.newMethod;this.ClassName='ChartPartLine';//类名
3997
- this.LineWidth;//线段宽度
3998
- this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;this.DrawLine();};this.DrawLine=function(){var bHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var xPointCount=this.ChartFrame.XPointCount;var isMinute=this.IsMinuteFrame();this.Canvas.save();if(this.LineWidth>0)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var bFirstPoint=true;var drawCount=0;var lastColor;var lastPoint={X:null,Y:null};var isPerNull=false;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var item=this.Data.Data[i];if(item==null||item.Value==null){lastPoint.X=null;lastPoint.Y=null;isPerNull=true;continue;}if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}var value=item.Value;var color=item.RGB;var y=this.ChartFrame.GetYFromData(value);if(x>chartright)break;if(color!=lastColor||isPerNull==true){if(lastColor&&drawCount>0)this.Canvas.stroke();drawCount=0;lastColor=color;this.Canvas.strokeStyle=color;this.Canvas.beginPath();if(lastPoint.X!=null&&lastPoint.Y!=null)//接着上一个点连线
4001
+ this.LineWidth;//线段宽度
4002
+ this.IsDotLine=false;//虚线
4003
+ this.LineDash=[3,5];//虚线设置
4004
+ this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;this.DrawLine();};this.DrawLine=function(){var bHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var xPointCount=this.ChartFrame.XPointCount;var isMinute=this.IsMinuteFrame();this.Canvas.save();if(this.LineWidth>0)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();if(this.IsDotLine)this.Canvas.setLineDash(this.LineDash);//画虚线
4005
+ var drawCount=0;var lastColor;var lastPoint={X:null,Y:null};var isPerNull=false;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var item=this.Data.Data[i];if(item==null||item.Value==null){lastPoint.X=null;lastPoint.Y=null;isPerNull=true;continue;}if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}var value=item.Value;var color=item.RGB;var y=this.ChartFrame.GetYFromData(value);if(x>chartright)break;if(color!=lastColor||isPerNull==true){if(lastColor&&drawCount>0)this.Canvas.stroke();drawCount=0;lastColor=color;this.Canvas.strokeStyle=color;this.Canvas.beginPath();if(lastPoint.X!=null&&lastPoint.Y!=null)//接着上一个点连线
3999
4006
  {if(bHScreen)this.Canvas.moveTo(lastPoint.Y,lastPoint.X);//横屏坐标轴对调
4000
4007
  else this.Canvas.moveTo(lastPoint.X,lastPoint.Y);if(bHScreen)this.Canvas.lineTo(y,x);else this.Canvas.lineTo(x,y);++drawCount;}else{if(bHScreen)this.Canvas.moveTo(y,x);//横屏坐标轴对调
4001
4008
  else this.Canvas.moveTo(x,y);}}else{if(bHScreen)this.Canvas.lineTo(y,x);else this.Canvas.lineTo(x,y);++drawCount;}lastPoint.X=x;lastPoint.Y=y;isPerNull=false;}if(drawCount>0)this.Canvas.stroke();this.Canvas.restore();};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={};range.Min=null;range.Max=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var item=this.Data.Data[i];if(!item||!item.Value)continue;if(range.Max==null||range.Max<item.Value)range.Max=item.Value;if(range.Min==null||range.Min>item.Value)range.Min=item.Value;}return range;};this.ExportData=function(aryKData,option){var aryValue=[],aryColor=[];if(IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)){var start=0,end=this.Data.length-1;//限制范围
@@ -5450,7 +5457,7 @@ this.SplitShortDate=function(){this.Frame.VerticalInfo=[];var xOffset=this.Frame
5450
5457
  if(distance<minDistance){++distance;continue;}var info=new CoordinateInfo();info.Value=index-xOffset;var text;if(isFirstYear){text=year.toString();isFirstYear=false;}else{text=IFrameSplitOperator.FormatDateString(this.Frame.Data.Data[index].Date,'MM-DD');}if(this.ShowText)info.Message[0]=text;if(info.Value==0)info.LineType=-1;//第1个分割线不画
5451
5458
  this.Frame.VerticalInfo.push(info);distance=0;}if(this.Frame.VerticalInfo.length==1)//只有1个刻度, 就显示年+月
5452
5459
  {var item=this.Frame.VerticalInfo[0];var index=item.Value+xOffset;var kitem=this.Frame.Data.Data[index];var text=IFrameSplitOperator.FormatDateString(kitem.Date,'YYYY-MM');if(this.ShowText)item.Message[0]=text;}};this.Operator=function(){if(this.Frame.Data==null)return;if(FrameSplitKLineX.SplitCustom)FrameSplitKLineX.SplitCustom(this);//自定义分割
5453
- else if(ChartData.IsMinutePeriod(this.Period,true))this.SplitDateTime();else if(ChartData.IsSecondPeriod(this.Period))this.SplitSecond();else if(ChartData.IsTickPeriod(this.Period))this.SplitSecond();else if(ChartData.IsMilliSecondPeriod(this.Period))this.SplitMilliSecond();else this.SplitDate();if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_XCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};event.Callback(event,data,this);}}};this.CreateCoordinateInfo=function(){return new CoordinateInfo();};}//FrameSplitKLineX.SplitCustom=function(split) { }
5460
+ else if(ChartData.IsMinutePeriod(this.Period,true))this.SplitDateTime();else if(ChartData.IsSecondPeriod(this.Period))this.SplitSecond();else if(ChartData.IsTickPeriod(this.Period))this.SplitSecond();else if(ChartData.IsMilliSecondPeriod(this.Period))this.SplitMilliSecond();else this.SplitDate();if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_XCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame,IsShowText:this.ShowText};event.Callback(event,data,this);}}};this.CreateCoordinateInfo=function(){return new CoordinateInfo();};}//FrameSplitKLineX.SplitCustom=function(split) { }
5454
5461
  function FrameSplitMinutePriceY(){this.newMethod=IFrameSplitOperator;//派生
5455
5462
  this.newMethod();delete this.newMethod;this.High=null;//最高最低价
5456
5463
  this.Low=null;this.YClose;//昨收
@@ -7201,7 +7208,7 @@ this.KLineCalcOption=new _map2.default();//K线定制指标配置
7201
7208
  this.ScrollBar=null;//横向滚动条
7202
7209
  this.IsAutoSyncDataOffset=true;//增量更新时,是否移动当前屏数据
7203
7210
  this.GetKLineCalulate=function(){var kLineDrawType=this.GetKLineDrawType();var className;if(kLineDrawType==10)className="RenkoCalculate";else if(kLineDrawType==11)className="HeikinAshiCalculate";else if(kLineDrawType==12)className="LineBreakCalcuate";else if(kLineDrawType==16)className="KagiCalculate";else return null;if(!this.KLineCalculate||this.KLineCalculate.ClassName!=className){this.KLineCalculate=g_KLineCustomCalulate.Create(className);if(this.KLineCalculate.SetOption&&this.KLineCalcOption.has(className)){var option=this.KLineCalcOption.get(className);this.KLineCalculate.SetOption(option);}}return this.KLineCalculate;};this.SetKLineCalcOption=function(className,option){this.KLineCalcOption.set(className,option);if(this.KLineCalculate&&this.KLineCalculate.ClassName==className&&this.KLineCalculate.SetOption){this.KLineCalculate.SetOption(option);}};this.ClearKLineCaluate=function(){if(!this.KLineCalculate)return;if(!this.KLineCalculate.Clear)return;this.KLineCalculate.Clear();};this.ResetDragDownload=function(){this.DragDownload.Day.Status=0;this.DragDownload.Day.IsEnd=false;this.DragDownload.Minute.Status=0;this.DragDownload.Minute.IsEnd=false;this.DragDownload.Tick.Status=0;this.DragDownload.Tick.IsEnd=false;};this.ResetZoomDownload=function(){this.ZoomDownload.Day.Status=0;this.ZoomDownload.Day.IsEnd=false;this.ZoomDownload.Minute.Status=0;this.ZoomDownload.Minute.IsEnd=false;this.ZoomDownload.Tick.Status=0;this.ZoomDownload.Tick.IsEnd=false;};this.ResetPage=function()//重置分页下载
7204
- {this.Page.Day.Finish=false;this.Page.Day.Index=0;this.Page.Minute.Finish=false;this.Page.Minute.Index=0;};this.AddCustomKLine=function(kline,option){var klineChart=this.ChartPaint[0];if(!klineChart)return;if(!kline)return;if(!klineChart.CustomKLine)klineChart.CustomKLine=new _map2.default();if(Array.isArray(kline)){for(var i=0;i<kline.length;++i){var item=kline[i];klineChart.CustomKLine.set(item.Key,item.Data);}}else if(kline){klineChart.CustomKLine.set(kline.Key,kline.Data);}if(option&&option.Draw==true)this.Draw();};this.ClearCustomKLine=function(option){var klineChart=this.ChartPaint[0];if(!klineChart)return;klineChart.ClearCustomKLine();if(option&&option.Draw==true)this.Draw();};this.StopAutoUpdate=function(){this.CancelAutoUpdate();this.AutoUpdateEvent(false,'KLineChartContainer::StopAutoUpdate');if(!this.IsAutoUpdate)return;this.IsAutoUpdate=false;};//沙盘操作 { ID: 1=开始, Data:绑定K线数据(可选)
7211
+ {this.Page.Day.Finish=false;this.Page.Day.Index=0;this.Page.Minute.Finish=false;this.Page.Minute.Index=0;};this.AddCustomKLine=function(kline,option){var klineChart=this.ChartPaint[0];if(!klineChart)return;if(!kline)return;if(!klineChart.CustomKLine)klineChart.CustomKLine=new _map2.default();if(Array.isArray(kline)){for(var i=0;i<kline.length;++i){var item=kline[i];klineChart.CustomKLine.set(item.Key,item.Data);}}else if(kline){klineChart.CustomKLine.set(kline.Key,kline.Data);}if(option&&option.Draw==true)this.Draw();};this.ClearCustomKLine=function(option){var klineChart=this.ChartPaint[0];if(!klineChart)return;klineChart.ClearCustomKLine();if(option&&option.Draw==true)this.Draw();};this.ClearKLineBreakPoint=function(option){var klineChart=this.ChartPaint[0];if(!klineChart)return;klineChart.ClearBreakPoint();if(option&&option.Draw==true)this.Draw();};this.StopAutoUpdate=function(){this.CancelAutoUpdate();this.AutoUpdateEvent(false,'KLineChartContainer::StopAutoUpdate');if(!this.IsAutoUpdate)return;this.IsAutoUpdate=false;};//沙盘操作 { ID: 1=开始, Data:绑定K线数据(可选)
7205
7212
  // ID: 2=更新数据, Data:绑定K线数据
7206
7213
  // ID: 3=结束, IsAutoUpdate:是否启动自动更新(可选) }
7207
7214
  this.SandTableOperator=function(obj){switch(obj.ID){case 1:this.StopAutoUpdate();if(obj.Data)this.ManualUpdateKData(obj);break;case 2:this.ManualUpdateKData(obj);break;case 3:if(obj.IsAutoUpdate)this.IsAutoUpdate=obj.IsAutoUpdate;this.ChangeSymbol(this.Symbol);break;}};//外部手动更新K线数据, 内部不计算周期和复权
@@ -7308,7 +7315,7 @@ border.TopSpace=15*pixelTatio;frame.GetEventCallback=function(id){return _this19
7308
7315
  frame.GetEventCallback=function(id){return _this20.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;frame.HorizontalMax=20;frame.HorizontalMin=10;frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.GetEventCallback=function(id){return _this20.GetEventCallback(id);};frame.YSplitOperator.GetEventCallback=function(id){return _this20.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this20.GetKLineChart();};frame.YSplitOperator.HQChart=this;frame.XSplitOperator.Symbol=this.Symbol;frame.XSplitOperator.Period=this.Period;//K线数据绑定
7309
7316
  var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};//创建主图K线画法
7310
7317
  this.CreateMainKLine=function(){var _this21=this;var kline=g_ChartPaintFactory.Create("ChartKLine");kline.Canvas=this.Canvas;kline.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;kline.ChartFrame=this.Frame.SubFrame[0].Frame;kline.Name="Main-KLine";kline.DrawType=this.KLineDrawType;kline.Identify="Main-KLine";kline.GetEventCallback=function(id){return _this21.GetEventCallback(id);};this.ChartPaint[0]=kline;this.TitlePaint[0]=new DynamicKLineTitlePainting();this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;this.TitlePaint[0].Canvas=this.Canvas;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
7311
- this.TitlePaint[0].LanguageID=this.LanguageID;this.TitlePaint[0].HQChart=this;this.TitlePaint[0].GetEventCallback=function(id){return _this21.GetEventCallback(id);};};//绑定主图K线数据
7318
+ this.TitlePaint[0].LanguageID=this.LanguageID;this.TitlePaint[0].HQChart=this;this.TitlePaint[0].GetEventCallback=function(id){return _this21.GetEventCallback(id);};};this.BindKLineBreakPoint=function(data){var klineChart=this.ChartPaint[0];if(!klineChart)return;if(!IFrameSplitOperator.IsNonEmptyArray(data.AryBreakPoint))return;klineChart.AryBreakPoint=data.AryBreakPoint.slice();};//绑定主图K线数据
7312
7319
  this.BindMainData=function(hisData,showCount,chartOperator){var isShowAll=false;//全部显示
7313
7320
  if(chartOperator&&chartOperator.IsShowAll===true)isShowAll=true;this.ChartPaint[0].Data=hisData;this.ChartPaint[0].Symbol=this.Symbol;if(this.KLineSize){if(!IFrameSplitOperator.IsNumber(this.KLineSize.DataWidth)){showCount=this.Frame.SubFrame[0].Frame.XPointCount-this.RightSpaceCount;}else{var obj=this.Frame.SetDataWidth(this.KLineSize.DataWidth);showCount=obj.XPointCount-this.RightSpaceCount;this.KLineSize.DataWidth=null;}}for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(isShowAll)item.XPointCount=hisData.Data.length+this.RightSpaceCount;else item.XPointCount=showCount+this.RightSpaceCount;item.Data=this.ChartPaint[0].Data;item.XSplitOperator.Symbol=this.Symbol;item.XSplitOperator.Period=this.Period;}this.TitlePaint[0].Data=this.ChartPaint[0].Data;//动态标题
7314
7321
  this.TitlePaint[0].Symbol=this.Symbol;this.TitlePaint[0].Name=this.Name;this.TitlePaint[0].Period=this.Period;this.ChartCorssCursor.StringFormatX.Data=this.ChartPaint[0].Data;//十字光标
@@ -7424,7 +7431,7 @@ var bindData=new ChartData();bindData.Data=aryDayData;bindData.Right=this.Right;
7424
7431
  {var newBindData=kLineCalculate.RecvHistoryData(bindData,{Symbol:this.Symbol,Function:"RecvMinuteHistoryData"});bindData=newBindData;this.FlowCapitalReady=true;}//绑定数据
7425
7432
  this.Symbol=data.symbol;this.Name=data.name;var chartOperator=null;//额外的图形控制
7426
7433
  if(data&&data.ChartOperator){var item=data.ChartOperator;chartOperator={};if(item.IsShowAll===true)chartOperator.IsShowAll=true;//全部显示
7427
- }this.BindMainData(bindData,this.PageSize,chartOperator);if(this.AfterBindMainData)this.AfterBindMainData("RecvMinuteHistoryData");this.Frame.SetSizeChage(true);var firstSubFrame;if(this.Frame.SubFrame[0])firstSubFrame=this.Frame.SubFrame[0].Frame;if(firstSubFrame&&firstSubFrame.YSplitOperator){firstSubFrame.YSplitOperator.Symbol=this.Symbol;firstSubFrame.YSplitOperator.Data=this.ChartPaint[0].Data;//K线数据
7434
+ }this.BindMainData(bindData,this.PageSize,chartOperator);this.BindKLineBreakPoint(data);if(this.AfterBindMainData)this.AfterBindMainData("RecvMinuteHistoryData");this.Frame.SetSizeChage(true);var firstSubFrame;if(this.Frame.SubFrame[0])firstSubFrame=this.Frame.SubFrame[0].Frame;if(firstSubFrame&&firstSubFrame.YSplitOperator){firstSubFrame.YSplitOperator.Symbol=this.Symbol;firstSubFrame.YSplitOperator.Data=this.ChartPaint[0].Data;//K线数据
7428
7435
  firstSubFrame.YSplitOperator.Period=this.Period;//周期
7429
7436
  }for(var i in this.OverlayChartPaint)//分钟数据不支持叠加 清空
7430
7437
  {var item=this.OverlayChartPaint[i];item.Data=null;//item.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID;
@@ -7603,7 +7610,7 @@ if(this.SourceData.DataType!=1)isDataTypeChange=true;break;case 10://分笔线
7603
7610
  if(this.SourceData.DataType!=2)isDataTypeChange=true;break;}}}this.Period=period;if(right!=null)this.Right=right;this.ReloadChartDrawPicture();//切换周期了 清空画图工具
7604
7611
  this.ClearRectSelect(true);this.Frame.ClearUpDonwFrameYData();this.ClearCustomKLine();this.ClearKLineCaluate();this.UnlockCorssCursor();var kLineDrawType=this.GetKLineDrawType();if(kLineDrawType==10||kLineDrawType==11||kLineDrawType==12||kLineDrawType==16)isDataTypeChange=true;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CHANGE_KLINE_PERIOD);if(event&&event.Callback){var sendData={IsApiPeriod:this.IsApiPeriod,Old:oldData,Now:{Period:this.Period,Right:this.Right,KLineDrawType:this.KLineDrawType,Symbol:this.Symbol},IsDataTypeChange:isDataTypeChange//数据类型是否改变 true 重新请求数据
7605
7612
  };event.Callback(event,sendData,this);isDataTypeChange=sendData.IsDataTypeChange;}if(isDataTypeChange==false&&!this.IsApiPeriod){this.ClearIndexRunCount();this.Update({UpdateCursorIndexType:2});//更新的时候 取消显示十字光标
7606
- return;}this.ClearIndexPaint();if(ChartData.IsDayPeriod(this.Period,true)){this.CancelAutoUpdate();//先停止定时器
7613
+ return;}this.ClearIndexPaint();this.ClearKLineBreakPoint();if(ChartData.IsDayPeriod(this.Period,true)){this.CancelAutoUpdate();//先停止定时器
7607
7614
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');//切换周期先停止更新
7608
7615
  this.ResetScrollBar();this.ResetOverlaySymbolStatus();this.ClearIndexRunCount();this.Frame.ClearYCoordinateMaxMin();this.UnlockCorssCursor();this.RequestHistoryData();//请求日线数据
7609
7616
  //this.ReqeustKLineInfoData();
@@ -7777,7 +7784,7 @@ this.UpdateFrameMaxMin();//调整坐标最大 最小值
7777
7784
  this.Frame.SetSizeChage(true);this.Draw();//叠加指标
7778
7785
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];this.BindOverlayIndexData(overlayItem,i,bindData);}}};//切换股票代码
7779
7786
  this.ChangeSymbol=function(symbol,option){this.CancelAutoUpdate();//先停止定时器
7780
- this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.ClearIndexRunCount();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
7787
+ this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineBreakPoint();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.ClearIndexRunCount();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
7781
7788
  this.ClearIndexPaint();//清空指标
7782
7789
  if(option){if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){var windows=option.Windows;for(var i=0;i<windows.length;++i){if(i>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7783
7790
  var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
@@ -8266,7 +8273,7 @@ if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this27.On
8266
8273
  };//创建子窗口
8267
8274
  this.CreateChildWindow=function(windowCount){var _this28=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=new MinuteFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;frame.GlobalOption=this.GlobalOption;if(i<2)frame.ChartBorder.TitleHeight=0;frame.XPointCount=243;frame.HQChart=this;frame.GetEventCallback=function(id){return _this28.GetEventCallback(id);};if(i>=2){}var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];if(i==0){frame.YSplitOperator=new FrameSplitMinutePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};frame.YSplitOperator.DayOffset=this.DayOffset;frame.YSplitOperator.GlobalOption=this.GlobalOption;frame.YSplitOperator.HQChart=this;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};if(i==1)frame.YSplitOperator.ShareAfterVol=this.ShareAfterVol;}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;frame.XSplitOperator.Operator();for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id,mainFrame){var _this29=this;var border=new ChartBorder();border.UIElement=this.UIElement;if(mainFrame&&mainFrame.ChartBorder&&mainFrame.ChartBorder.MultiDayMinute){var item=mainFrame.ChartBorder.MultiDayMinute;border.MultiDayMinute.Count=item.Count;border.MultiDayMinute.Left=item.Left;border.MultiDayMinute.Right=item.Right;}var frame=null;if(this.ClassName=="MinuteChartHScreenContainer")frame=new MinuteHScreenFrame();else frame=new MinuteFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
8268
8275
  frame.XPointCount=243;frame.GlobalOption=this.GlobalOption;frame.HQChart=this;frame.GetEventCallback=function(id){return _this29.GetEventCallback(id);};var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this29.GetEventCallback(id);};frame.YSplitOperator.GetEventCallback=function(id){return _this29.GetEventCallback(id);};frame.XSplitOperator.Symbol=this.Symbol;if(this.DayCount>1){var dayCount=this.DayCount;if(IFrameSplitOperator.IsNonEmptyArray(this.DayData))dayCount=this.DayData.length;frame.XSplitOperator.DayCount=dayCount;frame.XSplitOperator.DayData=this.DayData;frame.DayCount=dayCount;}//K线数据绑定
8269
- var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};this.AddNewSubFrame=function(option){var _this30=this;var mainFrame=this.Frame.SubFrame[0].Frame;var index=this.Frame.SubFrame.length;var subFrame=this.CreateSubFrameItem(index,mainFrame);var pixelRatio=GetDevicePixelRatio();subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[index]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[index].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this30.GetEventCallback(id);};titlePaint.MainTitlePaint=this.TitlePaint[0];this.TitlePaint[index+1]=titlePaint;this.SetSubFrameOption(subFrame,option);//最后一个显示X轴坐标
8276
+ var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};this.AddNewSubFrame=function(option){var _this30=this;var mainFrame=this.Frame.SubFrame[0].Frame;var index=this.Frame.SubFrame.length;var subFrame=this.CreateSubFrameItem(index,mainFrame);var pixelRatio=GetDevicePixelRatio();subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[index]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[index].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this30.GetEventCallback(id);};titlePaint.MainTitlePaint=this.TitlePaint[0];this.TitlePaint[index+1]=titlePaint;this.SetSubFrameOption(subFrame,option);this.UpdateSubFrameDataWidth(subFrame.Frame);//最后一个显示X轴坐标
8270
8277
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.UpdataDataoffset();//更新数据偏移
8271
8278
  this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
8272
8279
  this.Draw();return index;};this.UpdateXShowText=function(){var bLastFrame=true;for(var i=this.Frame.SubFrame.length-1;i>=0;--i){var item=this.Frame.SubFrame[i].Frame;var subFrame=this.Frame.SubFrame[i];if(bLastFrame){item.XSplitOperator.ShowText=true;if(subFrame.Height>0)bLastFrame=false;}else{item.XSplitOperator.ShowText=false;}}};//删除某一个窗口的指标
@@ -11788,7 +11795,7 @@ chart.Family=varItem.Draw.Icon.Family;chart.TextFont=g_JSChartResource.TIPICON.T
11788
11795
  if(IFrameSplitOperator.IsNumber(varItem.YOffset))svgYOffset=varItem.YOffset;if(varItem.Color)svgColor=this.GetColor(varItem.Color);if(varItem.DrawFontSize>0)svgSize=varItem.DrawFontSize;if(varItem.DrawVAlign>=0)svgVAlign=varItem.DrawVAlign;if(varItem.Draw&&IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.DrawData)&&varItem.Draw.Icon){var drawData=varItem.Draw.DrawData;var aryData=[];var isArrayTip=Array.isArray(varItem.Draw.Text);var singleTip=null;if(!isArrayTip&&varItem.Draw.Text)singleTip={Text:varItem.Draw.Text};for(var j=0;j<drawData.length;++j){var item=drawData[j];var kItem=chart.Data.Data[j];if(!IFrameSplitOperator.IsNumber(item))continue;var svgItem={Value:item,Date:kItem.Date,Time:kItem.Time,SVG:{Symbol:varItem.Draw.Icon.Symbol,Size:svgSize,Color:svgColor,YOffset:svgYOffset,VAlign:svgVAlign}};if(isArrayTip){var text=varItem.Draw.Text[j];if(text)svgItem.Tooltip={Text:text};}else{svgItem.Tooltip=singleTip;}aryData.push(svgItem);}chart.Texts=aryData;}chart.BuildCacheData();hqChart.ChartPaint.push(chart);};this.CreateDrawLastBarText=function(hqChart,windowIndex,varItem,id){var chart=new ChartDrawLastBarText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(hqChart.ChartPaint[0].IsMinuteFrame())chart.Data=hqChart.SourceData;else chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11789
11796
  var lastItem=varItem.Draw.DrawData;if(lastItem){if(lastItem.Color)lastItem.Color=this.GetColor(lastItem.Color);else lastItem.Color=this.GetDefaultColor(id);if(varItem.Color)lastItem.Color=this.GetColor(varItem.Color);if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)lastItem.TextBaseline='top';else if(varItem.DrawVAlign==1)lastItem.TextBaseline='middle';else if(varItem.DrawVAlign==2)lastItem.TextBaseline='bottom';}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)lastItem.TextAlign="left";else if(varItem.DrawAlign==1)lastItem.TextAlign="center";else if(varItem.DrawAlign==2)lastItem.TextAlign='right';}if(IFrameSplitOperator.IsNumber(varItem.YOffset))lastItem.YOffset=varItem.YOffset;if(IFrameSplitOperator.IsNumber(varItem.XOffset))lastItem.XOffset=varItem.XOffset;if(varItem.DrawFontSize>0)lastItem.FontSize=varItem.DrawFontSize;}chart.LastBarItem=lastItem;hqChart.ChartPaint.push(chart);};//创建通道
11790
11797
  this.CreateChannel=function(hqChart,windowIndex,varItem,id){var chart=new ChartChannel();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw.AreaColor)chart.AreaColor=varItem.Draw.AreaColor;else if(varItem.Color)chart.AreaColor=this.GetColor(varItem.Color);else chart.AreaColor=this.GetDefaultColor(id);if(varItem.Draw.Border.Color)chart.LineColor=varItem.Draw.Border.Color;else chart.LineColor=null;if(varItem.Draw.Border.Dotted)chart.LineDotted=varItem.Draw.Border.Dotted;if(varItem.Draw.Border.Width>0)chart.LineWidth=varItem.Draw.Border.Width;//let titleIndex=windowIndex+1;
11791
- chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreatePartLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartPartLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.LineWidth=width;}chart.Data.Data=varItem.Draw.DrawData;this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateMultiLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11798
+ chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreatePartLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartPartLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.LineWidth=width;}if(IFrameSplitOperator.IsBool(varItem.IsDotLine))chart.IsDotLine=varItem.IsDotLine;if(IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash))chart.LineDash=varItem.LineDash;chart.Data.Data=varItem.Draw.DrawData;this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateMultiLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11792
11799
  chart.Lines=varItem.Draw.DrawData;if(varItem.Draw.Name)chart.Name=varItem.Draw.Name;if(varItem.Draw.LineDash)chart.LineDash=varItem.Draw.LineDash;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin))chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;if(varItem.Draw.Arrow)//箭头配置
11793
11800
  {var item=varItem.Draw.Arrow;if(item.Start==true)chart.Arrow.Start=true;if(item.End==true)chart.Arrow.End=true;if(IFrameSplitOperator.IsNumber(item.Angle))chart.ArrawAngle=item.Angle;if(IFrameSplitOperator.IsNumber(item.Length))chart.ArrawLength=item.Length;if(IFrameSplitOperator.IsNumber(item.LineWidth))chart.ArrawLineWidth=item.LineWidth;}this.ReloadChartResource(hqChart,windowIndex,chart);this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;if(varItem.IsShowTitle===false){}else{var titleData=new DynamicTitleData(chart.Data,chart.Name,null);titleData.DataType="ChartMultiLine";titleData.Lines=chart.Lines;hqChart.TitlePaint[titleIndex].Data[i]=titleData;}};this.CreateMultiPoint=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiPoint();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.GetKData();//绑定K线
11794
11801
  chart.PointGroup=varItem.Draw.DrawData;if(varItem.Draw.Name)chart.Name=varItem.Draw.Name;chart.BuildCacheData();this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.Name,null);titleData.DataType="ChartMultiPoint";titleData.GetItemCallback=function(kItem){return chart.GetItem(kItem);};hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateMultiBar=function(hqChart,windowIndex,varItem,id){var chart=new ChartMultiBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.GetKData();//绑定K线
@@ -11910,7 +11917,7 @@ this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateTipIcon=
11910
11917
  if(IFrameSplitOperator.IsNumber(varItem.YOffset))svgYOffset=varItem.YOffset;if(varItem.Color)svgColor=this.GetColor(varItem.Color);if(varItem.DrawFontSize>0)svgSize=varItem.DrawFontSize;if(varItem.DrawVAlign>=0)svgVAlign=varItem.DrawVAlign;if(varItem.Draw&&IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.DrawData)&&varItem.Draw.Icon){var drawData=varItem.Draw.DrawData;var aryData=[];var isArrayTip=Array.isArray(varItem.Draw.Text);var singleTip=null;if(!isArrayTip&&varItem.Draw.Text)singleTip={Text:varItem.Draw.Text};for(var j=0;j<drawData.length;++j){var item=drawData[j];var kItem=chart.Data.Data[j];if(!IFrameSplitOperator.IsNumber(item))continue;var svgItem={Value:item,Date:kItem.Date,Time:kItem.Time,SVG:{Symbol:varItem.Draw.Icon.Symbol,Size:svgSize,Color:svgColor,YOffset:svgYOffset,VAlign:svgVAlign}};if(isArrayTip){var text=varItem.Draw.Text[j];if(text)svgItem.Tooltip={Text:text};}else{svgItem.Tooltip=singleTip;}aryData.push(svgItem);}chart.Texts=aryData;}chart.BuildCacheData();frame.ChartPaint.push(chart);};//创建通道
11911
11918
  this.CreateChannel=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartChannel();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Draw.AreaColor)chart.AreaColor=varItem.Draw.AreaColor;else if(varItem.Color)chart.AreaColor=this.GetColor(varItem.Color);else chart.AreaColor=this.GetDefaultColor(id);if(varItem.Draw.Border.Color)chart.LineColor=varItem.Draw.Border.Color;else chart.LineColor=null;if(varItem.Draw.Border.Dotted)chart.LineDotted=varItem.Draw.Border.Dotted;if(varItem.Draw.Border.Width>0)chart.LineWidth=varItem.Draw.Border.Width;//let titleIndex=windowIndex+1;
11912
11919
  chart.Data.Data=varItem.Draw.DrawData;frame.ChartPaint.push(chart);};//
11913
- this.CreatePartLine=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartPartLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.LineWidth=width;}chart.Data.Data=varItem.Draw.DrawData;this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateMultiLine=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11920
+ this.CreatePartLine=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartPartLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.LineWidth=width;}if(IFrameSplitOperator.IsBool(varItem.IsDotLine))chart.IsDotLine=varItem.IsDotLine;if(IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash))chart.LineDash=varItem.LineDash;chart.Data.Data=varItem.Draw.DrawData;this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateMultiLine=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11914
11921
  chart.Lines=varItem.Draw.DrawData;if(varItem.Draw.LineDash)chart.LineDash=varItem.Draw.LineDash;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin))chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;if(varItem.Draw.Arrow)//箭头配置
11915
11922
  {var item=varItem.Draw.Arrow;if(item.Start==true)chart.Arrow.Start=true;if(item.End==true)chart.Arrow.End=true;if(IFrameSplitOperator.IsNumber(item.Angle))chart.ArrawAngle=item.Angle;if(IFrameSplitOperator.IsNumber(item.Length))chart.ArrawLength=item.Length;if(IFrameSplitOperator.IsNumber(item.LineWidth))chart.ArrawLineWidth=item.LineWidth;}this.ReloadChartResource(hqChart,windowIndex,chart);this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateMultiPoint=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiPoint();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.GetKData();//绑定K线
11916
11923
  chart.PointGroup=varItem.Draw.DrawData;chart.BuildCacheData();var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);titleData.DataType="ChartMultiPoint";titleData.GetItemCallback=function(kItem){return chart.GetItem(kItem);};titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateBackgroud=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartBackground();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Color=drawData.Color;chart.ColorAngle=drawData.Angle;if(drawData.Data)chart.Data.Data=drawData.Data;}frame.ChartPaint.push(chart);};this.CreateMultiBar=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.GetKData();//绑定K线
@@ -14306,7 +14313,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
14306
14313
  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);};}/********************************************************************************
14307
14314
  * 版本信息输出
14308
14315
  *
14309
- */var HQCHART_VERSION="1.1.14374";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();//把给外界调用的方法暴露出来
14316
+ */var HQCHART_VERSION="1.1.14384";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();//把给外界调用的方法暴露出来
14310
14317
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
14311
14318
  // BaseIndex:BaseIndex,
14312
14319
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14375",
3
+ "version": "1.1.14386",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -21962,7 +21962,7 @@ function ScriptIndex(name,script,args,option)
21962
21962
 
21963
21963
  this.CreatePartLine=function(hqChart,windowIndex,varItem,i)
21964
21964
  {
21965
- let chart=new ChartPartLine();
21965
+ var chart=new ChartPartLine();
21966
21966
  chart.Canvas=hqChart.Canvas;
21967
21967
  chart.Name=varItem.Name;
21968
21968
  chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
@@ -21974,6 +21974,9 @@ function ScriptIndex(name,script,args,option)
21974
21974
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
21975
21975
  }
21976
21976
 
21977
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
21978
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
21979
+
21977
21980
  chart.Data.Data=varItem.Draw.DrawData;
21978
21981
 
21979
21982
  this.SetChartIndexName(chart);
@@ -23710,7 +23713,7 @@ function OverlayScriptIndex(name,script,args,option)
23710
23713
  {
23711
23714
  var overlayIndex=this.OverlayIndex;
23712
23715
  var frame=overlayIndex.Frame;
23713
- let chart=new ChartPartLine();
23716
+ var chart=new ChartPartLine();
23714
23717
  chart.Canvas=hqChart.Canvas;
23715
23718
  chart.Name=varItem.Name;
23716
23719
  chart.ChartBorder=frame.Frame.ChartBorder;
@@ -23723,6 +23726,9 @@ function OverlayScriptIndex(name,script,args,option)
23723
23726
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
23724
23727
  }
23725
23728
 
23729
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
23730
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
23731
+
23726
23732
  chart.Data.Data=varItem.Draw.DrawData;
23727
23733
  this.SetChartIndexName(chart);
23728
23734
  frame.ChartPaint.push(chart);
@@ -9053,6 +9053,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9053
9053
  this.TitlePaint[index+1]=titlePaint;
9054
9054
 
9055
9055
  this.SetSubFrameOption(subFrame,option);
9056
+ this.UpdateSubFrameDataWidth(subFrame.Frame);
9056
9057
 
9057
9058
  //最后一个显示X轴坐标
9058
9059
  for(var i=0;i<this.Frame.SubFrame.length;++i)
@@ -9072,6 +9073,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9072
9073
  return index;
9073
9074
  }
9074
9075
 
9076
+ this.UpdateSubFrameDataWidth=function(frame)
9077
+ {
9078
+ //同步柱子宽度
9079
+ var mainFrame=this.Frame.SubFrame[0].Frame;
9080
+ frame.XPointCount= mainFrame.XPointCount;
9081
+ frame.ZoomIndex= mainFrame.ZoomIndex;
9082
+ frame.DataWidth= mainFrame.DataWidth;
9083
+ frame.DistanceWidth= mainFrame.DistanceWidth;
9084
+ frame.LastCalculateStatus.Width=mainFrame.LastCalculateStatus.Width;
9085
+ frame.LastCalculateStatus.XPointCount=mainFrame.LastCalculateStatus.XPointCount;
9086
+ }
9087
+
9075
9088
  //增加一个指标窗口
9076
9089
  this.AddIndexWindow=function(indexName,option)
9077
9090
  {
@@ -25420,6 +25433,32 @@ function ChartKLine()
25420
25433
  Text:{ Color:g_JSChartResource.PriceGapStyple.Text.Color, Font: g_JSChartResource.PriceGapStyple.Text.Font }
25421
25434
  };
25422
25435
  this.AryPriceGapCache=[]; //缺口数据 { }
25436
+
25437
+ //面积图和收盘价线 断开点
25438
+ this.AryBreakPoint;
25439
+
25440
+ this.BuildDateTimeKey=function(item)
25441
+ {
25442
+ if (!item) return null;
25443
+
25444
+ if (!IFrameSplitOperator.IsNumber(item.Time)) return `${item.Date}`;
25445
+ return `${item.Date}-${item.Time}`;
25446
+ }
25447
+
25448
+ this.BuildBreakPoint=function()
25449
+ {
25450
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryBreakPoint)) return null;
25451
+
25452
+ var mapBreakPoint=new Map();
25453
+ for(var i=0;i<this.AryBreakPoint.length;++i)
25454
+ {
25455
+ var item=this.AryBreakPoint[i];
25456
+ var key=this.BuildDateTimeKey(item);
25457
+ if (key) mapBreakPoint.set(key, item);
25458
+ }
25459
+
25460
+ return mapBreakPoint;
25461
+ }
25423
25462
 
25424
25463
  this.ReloadResource=function(resource)
25425
25464
  {
@@ -25447,6 +25486,11 @@ function ChartKLine()
25447
25486
  this.CustomKLine=null;
25448
25487
  }
25449
25488
 
25489
+ this.ClearBreakPoint=function()
25490
+ {
25491
+ this.AryBreakPoint=null;
25492
+ }
25493
+
25450
25494
  this.GetCustomKLine=function(kItem)
25451
25495
  {
25452
25496
  if (!this.CustomKLine) return null;
@@ -25923,6 +25967,7 @@ function ChartKLine()
25923
25967
  }
25924
25968
 
25925
25969
  var bFirstPoint=true;
25970
+ var drawCount=0;
25926
25971
  this.Canvas.beginPath();
25927
25972
  this.Canvas.strokeStyle=this.CloseLineColor;
25928
25973
  if (IFrameSplitOperator.IsNumber(this.CloseLineWidth)) this.Canvas.lineWidth=this.CloseLineWidth;
@@ -25933,6 +25978,8 @@ function ChartKLine()
25933
25978
  this.ShowRange.ShowCount=xPointCount;
25934
25979
  this.DrawKRange.Start=this.Data.DataOffset;
25935
25980
 
25981
+ var mapBreakPoint=this.BuildBreakPoint(); //断点
25982
+
25936
25983
  var preKItemInfo=null;
25937
25984
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
25938
25985
  {
@@ -25958,8 +26005,9 @@ function ChartKLine()
25958
26005
  if (isHScreen) this.Canvas.lineTo(yClose,x);
25959
26006
  else this.Canvas.lineTo(x,yClose);
25960
26007
  }
26008
+ ++drawCount;
25961
26009
 
25962
- if (this.PriceGap.Enable )
26010
+ if (this.PriceGap.Enable)
25963
26011
  {
25964
26012
  var yLow=this.GetYFromData(data.Low, false);
25965
26013
  var yHigh=this.GetYFromData(data.High, false);
@@ -25976,9 +26024,23 @@ function ChartKLine()
25976
26024
 
25977
26025
  preKItemInfo=kItemInfo;
25978
26026
  }
26027
+
26028
+ //断开点
26029
+ if (mapBreakPoint)
26030
+ {
26031
+ var kItem=data;
26032
+ var key=this.BuildDateTimeKey(kItem);
26033
+ if (key && mapBreakPoint.has(key))
26034
+ {
26035
+ if (drawCount>0) this.Canvas.stroke();
26036
+
26037
+ bFirstPoint=true;
26038
+ drawCount=0;
26039
+ }
26040
+ }
25979
26041
  }
25980
26042
 
25981
- if (bFirstPoint==false) this.Canvas.stroke();
26043
+ if (drawCount>0) this.Canvas.stroke();
25982
26044
  }
25983
26045
 
25984
26046
  this.DrawKBar=function() //蜡烛头
@@ -33907,7 +33969,9 @@ function ChartPartLine()
33907
33969
  delete this.newMethod;
33908
33970
 
33909
33971
  this.ClassName='ChartPartLine'; //类名
33910
- this.LineWidth; //线段宽度
33972
+ this.LineWidth; //线段宽度
33973
+ this.IsDotLine=false; //虚线
33974
+ this.LineDash=[3,5]; //虚线设置
33911
33975
 
33912
33976
  this.Draw=function()
33913
33977
  {
@@ -33949,7 +34013,8 @@ function ChartPartLine()
33949
34013
 
33950
34014
  this.Canvas.save();
33951
34015
  if (this.LineWidth>0) this.Canvas.lineWidth=this.LineWidth * GetDevicePixelRatio();
33952
- var bFirstPoint=true;
34016
+ if (this.IsDotLine) this.Canvas.setLineDash(this.LineDash); //画虚线
34017
+
33953
34018
  var drawCount=0;
33954
34019
  var lastColor;
33955
34020
  var lastPoint={X:null,Y:null};
@@ -52230,7 +52295,7 @@ function FrameSplitKLineX()
52230
52295
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_XCOORDINATE);
52231
52296
  if (event && event.Callback)
52232
52297
  {
52233
- var data={ID:this.Frame.Identify, Frame:this.Frame };
52298
+ var data={ID:this.Frame.Identify, Frame:this.Frame, IsShowText:this.ShowText };
52234
52299
  event.Callback(event,data,this);
52235
52300
  }
52236
52301
  }
@@ -75153,6 +75218,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
75153
75218
  if (option && option.Draw==true) this.Draw();
75154
75219
  }
75155
75220
 
75221
+ this.ClearKLineBreakPoint=function(option)
75222
+ {
75223
+ var klineChart=this.ChartPaint[0];
75224
+ if (!klineChart) return;
75225
+
75226
+ klineChart.ClearBreakPoint();
75227
+
75228
+ if (option && option.Draw==true) this.Draw();
75229
+ }
75230
+
75156
75231
  this.StopAutoUpdate=function()
75157
75232
  {
75158
75233
  this.CancelAutoUpdate();
@@ -76299,6 +76374,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
76299
76374
  this.TitlePaint[0].GetEventCallback=(id)=>{ return this.GetEventCallback(id); };
76300
76375
  }
76301
76376
 
76377
+
76378
+ this.BindKLineBreakPoint=function(data)
76379
+ {
76380
+ var klineChart=this.ChartPaint[0];
76381
+ if (!klineChart) return;
76382
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.AryBreakPoint)) return;
76383
+ klineChart.AryBreakPoint=data.AryBreakPoint.slice();
76384
+ }
76385
+
76302
76386
  //绑定主图K线数据
76303
76387
  this.BindMainData=function(hisData, showCount, chartOperator)
76304
76388
  {
@@ -77265,10 +77349,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
77265
77349
  {
77266
77350
  var item=data.ChartOperator;
77267
77351
  chartOperator={ };
77268
- if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
77352
+ if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
77269
77353
  }
77270
77354
 
77271
77355
  this.BindMainData(bindData,this.PageSize,chartOperator);
77356
+ this.BindKLineBreakPoint(data);
77272
77357
  if (this.AfterBindMainData) this.AfterBindMainData("RecvMinuteHistoryData");
77273
77358
  this.Frame.SetSizeChage(true);
77274
77359
 
@@ -78395,6 +78480,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
78395
78480
  }
78396
78481
 
78397
78482
  this.ClearIndexPaint();
78483
+ this.ClearKLineBreakPoint();
78398
78484
 
78399
78485
  if (ChartData.IsDayPeriod(this.Period,true))
78400
78486
  {
@@ -79829,6 +79915,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
79829
79915
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');
79830
79916
  this.ClearRectSelect(true);
79831
79917
  this.ClearCustomKLine();
79918
+ this.ClearKLineBreakPoint();
79832
79919
  this.ClearKLineCaluate();
79833
79920
  this.HideTooltip();
79834
79921
  this.ResetScrollBar();
@@ -85299,6 +85386,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
85299
85386
  this.TitlePaint[index+1]=titlePaint;
85300
85387
 
85301
85388
  this.SetSubFrameOption(subFrame,option);
85389
+ this.UpdateSubFrameDataWidth(subFrame.Frame);
85302
85390
 
85303
85391
  //最后一个显示X轴坐标
85304
85392
  for(var i=0;i<this.Frame.SubFrame.length;++i)
@@ -12978,6 +12978,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12978
12978
  this.TitlePaint[index+1]=titlePaint;
12979
12979
 
12980
12980
  this.SetSubFrameOption(subFrame,option);
12981
+ this.UpdateSubFrameDataWidth(subFrame.Frame);
12981
12982
 
12982
12983
  //最后一个显示X轴坐标
12983
12984
  for(var i=0;i<this.Frame.SubFrame.length;++i)
@@ -12997,6 +12998,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12997
12998
  return index;
12998
12999
  }
12999
13000
 
13001
+ this.UpdateSubFrameDataWidth=function(frame)
13002
+ {
13003
+ //同步柱子宽度
13004
+ var mainFrame=this.Frame.SubFrame[0].Frame;
13005
+ frame.XPointCount= mainFrame.XPointCount;
13006
+ frame.ZoomIndex= mainFrame.ZoomIndex;
13007
+ frame.DataWidth= mainFrame.DataWidth;
13008
+ frame.DistanceWidth= mainFrame.DistanceWidth;
13009
+ frame.LastCalculateStatus.Width=mainFrame.LastCalculateStatus.Width;
13010
+ frame.LastCalculateStatus.XPointCount=mainFrame.LastCalculateStatus.XPointCount;
13011
+ }
13012
+
13000
13013
  //增加一个指标窗口
13001
13014
  this.AddIndexWindow=function(indexName,option)
13002
13015
  {
@@ -29345,6 +29358,32 @@ function ChartKLine()
29345
29358
  Text:{ Color:g_JSChartResource.PriceGapStyple.Text.Color, Font: g_JSChartResource.PriceGapStyple.Text.Font }
29346
29359
  };
29347
29360
  this.AryPriceGapCache=[]; //缺口数据 { }
29361
+
29362
+ //面积图和收盘价线 断开点
29363
+ this.AryBreakPoint;
29364
+
29365
+ this.BuildDateTimeKey=function(item)
29366
+ {
29367
+ if (!item) return null;
29368
+
29369
+ if (!IFrameSplitOperator.IsNumber(item.Time)) return `${item.Date}`;
29370
+ return `${item.Date}-${item.Time}`;
29371
+ }
29372
+
29373
+ this.BuildBreakPoint=function()
29374
+ {
29375
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryBreakPoint)) return null;
29376
+
29377
+ var mapBreakPoint=new Map();
29378
+ for(var i=0;i<this.AryBreakPoint.length;++i)
29379
+ {
29380
+ var item=this.AryBreakPoint[i];
29381
+ var key=this.BuildDateTimeKey(item);
29382
+ if (key) mapBreakPoint.set(key, item);
29383
+ }
29384
+
29385
+ return mapBreakPoint;
29386
+ }
29348
29387
 
29349
29388
  this.ReloadResource=function(resource)
29350
29389
  {
@@ -29372,6 +29411,11 @@ function ChartKLine()
29372
29411
  this.CustomKLine=null;
29373
29412
  }
29374
29413
 
29414
+ this.ClearBreakPoint=function()
29415
+ {
29416
+ this.AryBreakPoint=null;
29417
+ }
29418
+
29375
29419
  this.GetCustomKLine=function(kItem)
29376
29420
  {
29377
29421
  if (!this.CustomKLine) return null;
@@ -29848,6 +29892,7 @@ function ChartKLine()
29848
29892
  }
29849
29893
 
29850
29894
  var bFirstPoint=true;
29895
+ var drawCount=0;
29851
29896
  this.Canvas.beginPath();
29852
29897
  this.Canvas.strokeStyle=this.CloseLineColor;
29853
29898
  if (IFrameSplitOperator.IsNumber(this.CloseLineWidth)) this.Canvas.lineWidth=this.CloseLineWidth;
@@ -29858,6 +29903,8 @@ function ChartKLine()
29858
29903
  this.ShowRange.ShowCount=xPointCount;
29859
29904
  this.DrawKRange.Start=this.Data.DataOffset;
29860
29905
 
29906
+ var mapBreakPoint=this.BuildBreakPoint(); //断点
29907
+
29861
29908
  var preKItemInfo=null;
29862
29909
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
29863
29910
  {
@@ -29883,8 +29930,9 @@ function ChartKLine()
29883
29930
  if (isHScreen) this.Canvas.lineTo(yClose,x);
29884
29931
  else this.Canvas.lineTo(x,yClose);
29885
29932
  }
29933
+ ++drawCount;
29886
29934
 
29887
- if (this.PriceGap.Enable )
29935
+ if (this.PriceGap.Enable)
29888
29936
  {
29889
29937
  var yLow=this.GetYFromData(data.Low, false);
29890
29938
  var yHigh=this.GetYFromData(data.High, false);
@@ -29901,9 +29949,23 @@ function ChartKLine()
29901
29949
 
29902
29950
  preKItemInfo=kItemInfo;
29903
29951
  }
29952
+
29953
+ //断开点
29954
+ if (mapBreakPoint)
29955
+ {
29956
+ var kItem=data;
29957
+ var key=this.BuildDateTimeKey(kItem);
29958
+ if (key && mapBreakPoint.has(key))
29959
+ {
29960
+ if (drawCount>0) this.Canvas.stroke();
29961
+
29962
+ bFirstPoint=true;
29963
+ drawCount=0;
29964
+ }
29965
+ }
29904
29966
  }
29905
29967
 
29906
- if (bFirstPoint==false) this.Canvas.stroke();
29968
+ if (drawCount>0) this.Canvas.stroke();
29907
29969
  }
29908
29970
 
29909
29971
  this.DrawKBar=function() //蜡烛头
@@ -37832,7 +37894,9 @@ function ChartPartLine()
37832
37894
  delete this.newMethod;
37833
37895
 
37834
37896
  this.ClassName='ChartPartLine'; //类名
37835
- this.LineWidth; //线段宽度
37897
+ this.LineWidth; //线段宽度
37898
+ this.IsDotLine=false; //虚线
37899
+ this.LineDash=[3,5]; //虚线设置
37836
37900
 
37837
37901
  this.Draw=function()
37838
37902
  {
@@ -37874,7 +37938,8 @@ function ChartPartLine()
37874
37938
 
37875
37939
  this.Canvas.save();
37876
37940
  if (this.LineWidth>0) this.Canvas.lineWidth=this.LineWidth * GetDevicePixelRatio();
37877
- var bFirstPoint=true;
37941
+ if (this.IsDotLine) this.Canvas.setLineDash(this.LineDash); //画虚线
37942
+
37878
37943
  var drawCount=0;
37879
37944
  var lastColor;
37880
37945
  var lastPoint={X:null,Y:null};
@@ -56155,7 +56220,7 @@ function FrameSplitKLineX()
56155
56220
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_XCOORDINATE);
56156
56221
  if (event && event.Callback)
56157
56222
  {
56158
- var data={ID:this.Frame.Identify, Frame:this.Frame };
56223
+ var data={ID:this.Frame.Identify, Frame:this.Frame, IsShowText:this.ShowText };
56159
56224
  event.Callback(event,data,this);
56160
56225
  }
56161
56226
  }
@@ -79078,6 +79143,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
79078
79143
  if (option && option.Draw==true) this.Draw();
79079
79144
  }
79080
79145
 
79146
+ this.ClearKLineBreakPoint=function(option)
79147
+ {
79148
+ var klineChart=this.ChartPaint[0];
79149
+ if (!klineChart) return;
79150
+
79151
+ klineChart.ClearBreakPoint();
79152
+
79153
+ if (option && option.Draw==true) this.Draw();
79154
+ }
79155
+
79081
79156
  this.StopAutoUpdate=function()
79082
79157
  {
79083
79158
  this.CancelAutoUpdate();
@@ -80224,6 +80299,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
80224
80299
  this.TitlePaint[0].GetEventCallback=(id)=>{ return this.GetEventCallback(id); };
80225
80300
  }
80226
80301
 
80302
+
80303
+ this.BindKLineBreakPoint=function(data)
80304
+ {
80305
+ var klineChart=this.ChartPaint[0];
80306
+ if (!klineChart) return;
80307
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.AryBreakPoint)) return;
80308
+ klineChart.AryBreakPoint=data.AryBreakPoint.slice();
80309
+ }
80310
+
80227
80311
  //绑定主图K线数据
80228
80312
  this.BindMainData=function(hisData, showCount, chartOperator)
80229
80313
  {
@@ -81190,10 +81274,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
81190
81274
  {
81191
81275
  var item=data.ChartOperator;
81192
81276
  chartOperator={ };
81193
- if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
81277
+ if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
81194
81278
  }
81195
81279
 
81196
81280
  this.BindMainData(bindData,this.PageSize,chartOperator);
81281
+ this.BindKLineBreakPoint(data);
81197
81282
  if (this.AfterBindMainData) this.AfterBindMainData("RecvMinuteHistoryData");
81198
81283
  this.Frame.SetSizeChage(true);
81199
81284
 
@@ -82320,6 +82405,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
82320
82405
  }
82321
82406
 
82322
82407
  this.ClearIndexPaint();
82408
+ this.ClearKLineBreakPoint();
82323
82409
 
82324
82410
  if (ChartData.IsDayPeriod(this.Period,true))
82325
82411
  {
@@ -83754,6 +83840,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
83754
83840
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');
83755
83841
  this.ClearRectSelect(true);
83756
83842
  this.ClearCustomKLine();
83843
+ this.ClearKLineBreakPoint();
83757
83844
  this.ClearKLineCaluate();
83758
83845
  this.HideTooltip();
83759
83846
  this.ResetScrollBar();
@@ -89224,6 +89311,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89224
89311
  this.TitlePaint[index+1]=titlePaint;
89225
89312
 
89226
89313
  this.SetSubFrameOption(subFrame,option);
89314
+ this.UpdateSubFrameDataWidth(subFrame.Frame);
89227
89315
 
89228
89316
  //最后一个显示X轴坐标
89229
89317
  for(var i=0;i<this.Frame.SubFrame.length;++i)
@@ -123608,7 +123696,7 @@ function ScriptIndex(name,script,args,option)
123608
123696
 
123609
123697
  this.CreatePartLine=function(hqChart,windowIndex,varItem,i)
123610
123698
  {
123611
- let chart=new ChartPartLine();
123699
+ var chart=new ChartPartLine();
123612
123700
  chart.Canvas=hqChart.Canvas;
123613
123701
  chart.Name=varItem.Name;
123614
123702
  chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
@@ -123620,6 +123708,9 @@ function ScriptIndex(name,script,args,option)
123620
123708
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
123621
123709
  }
123622
123710
 
123711
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
123712
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
123713
+
123623
123714
  chart.Data.Data=varItem.Draw.DrawData;
123624
123715
 
123625
123716
  this.SetChartIndexName(chart);
@@ -125356,7 +125447,7 @@ function OverlayScriptIndex(name,script,args,option)
125356
125447
  {
125357
125448
  var overlayIndex=this.OverlayIndex;
125358
125449
  var frame=overlayIndex.Frame;
125359
- let chart=new ChartPartLine();
125450
+ var chart=new ChartPartLine();
125360
125451
  chart.Canvas=hqChart.Canvas;
125361
125452
  chart.Name=varItem.Name;
125362
125453
  chart.ChartBorder=frame.Frame.ChartBorder;
@@ -125369,6 +125460,9 @@ function OverlayScriptIndex(name,script,args,option)
125369
125460
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
125370
125461
  }
125371
125462
 
125463
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
125464
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
125465
+
125372
125466
  chart.Data.Data=varItem.Draw.DrawData;
125373
125467
  this.SetChartIndexName(chart);
125374
125468
  frame.ChartPaint.push(chart);
@@ -143072,7 +143166,7 @@ function ScrollBarBGChart()
143072
143166
 
143073
143167
 
143074
143168
 
143075
- var HQCHART_VERSION="1.1.14374";
143169
+ var HQCHART_VERSION="1.1.14384";
143076
143170
 
143077
143171
  function PrintHQChartVersion()
143078
143172
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14374";
8
+ var HQCHART_VERSION="1.1.14384";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -13022,6 +13022,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13022
13022
  this.TitlePaint[index+1]=titlePaint;
13023
13023
 
13024
13024
  this.SetSubFrameOption(subFrame,option);
13025
+ this.UpdateSubFrameDataWidth(subFrame.Frame);
13025
13026
 
13026
13027
  //最后一个显示X轴坐标
13027
13028
  for(var i=0;i<this.Frame.SubFrame.length;++i)
@@ -13041,6 +13042,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13041
13042
  return index;
13042
13043
  }
13043
13044
 
13045
+ this.UpdateSubFrameDataWidth=function(frame)
13046
+ {
13047
+ //同步柱子宽度
13048
+ var mainFrame=this.Frame.SubFrame[0].Frame;
13049
+ frame.XPointCount= mainFrame.XPointCount;
13050
+ frame.ZoomIndex= mainFrame.ZoomIndex;
13051
+ frame.DataWidth= mainFrame.DataWidth;
13052
+ frame.DistanceWidth= mainFrame.DistanceWidth;
13053
+ frame.LastCalculateStatus.Width=mainFrame.LastCalculateStatus.Width;
13054
+ frame.LastCalculateStatus.XPointCount=mainFrame.LastCalculateStatus.XPointCount;
13055
+ }
13056
+
13044
13057
  //增加一个指标窗口
13045
13058
  this.AddIndexWindow=function(indexName,option)
13046
13059
  {
@@ -29389,6 +29402,32 @@ function ChartKLine()
29389
29402
  Text:{ Color:g_JSChartResource.PriceGapStyple.Text.Color, Font: g_JSChartResource.PriceGapStyple.Text.Font }
29390
29403
  };
29391
29404
  this.AryPriceGapCache=[]; //缺口数据 { }
29405
+
29406
+ //面积图和收盘价线 断开点
29407
+ this.AryBreakPoint;
29408
+
29409
+ this.BuildDateTimeKey=function(item)
29410
+ {
29411
+ if (!item) return null;
29412
+
29413
+ if (!IFrameSplitOperator.IsNumber(item.Time)) return `${item.Date}`;
29414
+ return `${item.Date}-${item.Time}`;
29415
+ }
29416
+
29417
+ this.BuildBreakPoint=function()
29418
+ {
29419
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryBreakPoint)) return null;
29420
+
29421
+ var mapBreakPoint=new Map();
29422
+ for(var i=0;i<this.AryBreakPoint.length;++i)
29423
+ {
29424
+ var item=this.AryBreakPoint[i];
29425
+ var key=this.BuildDateTimeKey(item);
29426
+ if (key) mapBreakPoint.set(key, item);
29427
+ }
29428
+
29429
+ return mapBreakPoint;
29430
+ }
29392
29431
 
29393
29432
  this.ReloadResource=function(resource)
29394
29433
  {
@@ -29416,6 +29455,11 @@ function ChartKLine()
29416
29455
  this.CustomKLine=null;
29417
29456
  }
29418
29457
 
29458
+ this.ClearBreakPoint=function()
29459
+ {
29460
+ this.AryBreakPoint=null;
29461
+ }
29462
+
29419
29463
  this.GetCustomKLine=function(kItem)
29420
29464
  {
29421
29465
  if (!this.CustomKLine) return null;
@@ -29892,6 +29936,7 @@ function ChartKLine()
29892
29936
  }
29893
29937
 
29894
29938
  var bFirstPoint=true;
29939
+ var drawCount=0;
29895
29940
  this.Canvas.beginPath();
29896
29941
  this.Canvas.strokeStyle=this.CloseLineColor;
29897
29942
  if (IFrameSplitOperator.IsNumber(this.CloseLineWidth)) this.Canvas.lineWidth=this.CloseLineWidth;
@@ -29902,6 +29947,8 @@ function ChartKLine()
29902
29947
  this.ShowRange.ShowCount=xPointCount;
29903
29948
  this.DrawKRange.Start=this.Data.DataOffset;
29904
29949
 
29950
+ var mapBreakPoint=this.BuildBreakPoint(); //断点
29951
+
29905
29952
  var preKItemInfo=null;
29906
29953
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
29907
29954
  {
@@ -29927,8 +29974,9 @@ function ChartKLine()
29927
29974
  if (isHScreen) this.Canvas.lineTo(yClose,x);
29928
29975
  else this.Canvas.lineTo(x,yClose);
29929
29976
  }
29977
+ ++drawCount;
29930
29978
 
29931
- if (this.PriceGap.Enable )
29979
+ if (this.PriceGap.Enable)
29932
29980
  {
29933
29981
  var yLow=this.GetYFromData(data.Low, false);
29934
29982
  var yHigh=this.GetYFromData(data.High, false);
@@ -29945,9 +29993,23 @@ function ChartKLine()
29945
29993
 
29946
29994
  preKItemInfo=kItemInfo;
29947
29995
  }
29996
+
29997
+ //断开点
29998
+ if (mapBreakPoint)
29999
+ {
30000
+ var kItem=data;
30001
+ var key=this.BuildDateTimeKey(kItem);
30002
+ if (key && mapBreakPoint.has(key))
30003
+ {
30004
+ if (drawCount>0) this.Canvas.stroke();
30005
+
30006
+ bFirstPoint=true;
30007
+ drawCount=0;
30008
+ }
30009
+ }
29948
30010
  }
29949
30011
 
29950
- if (bFirstPoint==false) this.Canvas.stroke();
30012
+ if (drawCount>0) this.Canvas.stroke();
29951
30013
  }
29952
30014
 
29953
30015
  this.DrawKBar=function() //蜡烛头
@@ -37876,7 +37938,9 @@ function ChartPartLine()
37876
37938
  delete this.newMethod;
37877
37939
 
37878
37940
  this.ClassName='ChartPartLine'; //类名
37879
- this.LineWidth; //线段宽度
37941
+ this.LineWidth; //线段宽度
37942
+ this.IsDotLine=false; //虚线
37943
+ this.LineDash=[3,5]; //虚线设置
37880
37944
 
37881
37945
  this.Draw=function()
37882
37946
  {
@@ -37918,7 +37982,8 @@ function ChartPartLine()
37918
37982
 
37919
37983
  this.Canvas.save();
37920
37984
  if (this.LineWidth>0) this.Canvas.lineWidth=this.LineWidth * GetDevicePixelRatio();
37921
- var bFirstPoint=true;
37985
+ if (this.IsDotLine) this.Canvas.setLineDash(this.LineDash); //画虚线
37986
+
37922
37987
  var drawCount=0;
37923
37988
  var lastColor;
37924
37989
  var lastPoint={X:null,Y:null};
@@ -56199,7 +56264,7 @@ function FrameSplitKLineX()
56199
56264
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_XCOORDINATE);
56200
56265
  if (event && event.Callback)
56201
56266
  {
56202
- var data={ID:this.Frame.Identify, Frame:this.Frame };
56267
+ var data={ID:this.Frame.Identify, Frame:this.Frame, IsShowText:this.ShowText };
56203
56268
  event.Callback(event,data,this);
56204
56269
  }
56205
56270
  }
@@ -79122,6 +79187,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
79122
79187
  if (option && option.Draw==true) this.Draw();
79123
79188
  }
79124
79189
 
79190
+ this.ClearKLineBreakPoint=function(option)
79191
+ {
79192
+ var klineChart=this.ChartPaint[0];
79193
+ if (!klineChart) return;
79194
+
79195
+ klineChart.ClearBreakPoint();
79196
+
79197
+ if (option && option.Draw==true) this.Draw();
79198
+ }
79199
+
79125
79200
  this.StopAutoUpdate=function()
79126
79201
  {
79127
79202
  this.CancelAutoUpdate();
@@ -80268,6 +80343,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
80268
80343
  this.TitlePaint[0].GetEventCallback=(id)=>{ return this.GetEventCallback(id); };
80269
80344
  }
80270
80345
 
80346
+
80347
+ this.BindKLineBreakPoint=function(data)
80348
+ {
80349
+ var klineChart=this.ChartPaint[0];
80350
+ if (!klineChart) return;
80351
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.AryBreakPoint)) return;
80352
+ klineChart.AryBreakPoint=data.AryBreakPoint.slice();
80353
+ }
80354
+
80271
80355
  //绑定主图K线数据
80272
80356
  this.BindMainData=function(hisData, showCount, chartOperator)
80273
80357
  {
@@ -81234,10 +81318,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
81234
81318
  {
81235
81319
  var item=data.ChartOperator;
81236
81320
  chartOperator={ };
81237
- if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
81321
+ if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
81238
81322
  }
81239
81323
 
81240
81324
  this.BindMainData(bindData,this.PageSize,chartOperator);
81325
+ this.BindKLineBreakPoint(data);
81241
81326
  if (this.AfterBindMainData) this.AfterBindMainData("RecvMinuteHistoryData");
81242
81327
  this.Frame.SetSizeChage(true);
81243
81328
 
@@ -82364,6 +82449,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
82364
82449
  }
82365
82450
 
82366
82451
  this.ClearIndexPaint();
82452
+ this.ClearKLineBreakPoint();
82367
82453
 
82368
82454
  if (ChartData.IsDayPeriod(this.Period,true))
82369
82455
  {
@@ -83798,6 +83884,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
83798
83884
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');
83799
83885
  this.ClearRectSelect(true);
83800
83886
  this.ClearCustomKLine();
83887
+ this.ClearKLineBreakPoint();
83801
83888
  this.ClearKLineCaluate();
83802
83889
  this.HideTooltip();
83803
83890
  this.ResetScrollBar();
@@ -89268,6 +89355,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89268
89355
  this.TitlePaint[index+1]=titlePaint;
89269
89356
 
89270
89357
  this.SetSubFrameOption(subFrame,option);
89358
+ this.UpdateSubFrameDataWidth(subFrame.Frame);
89271
89359
 
89272
89360
  //最后一个显示X轴坐标
89273
89361
  for(var i=0;i<this.Frame.SubFrame.length;++i)
@@ -123652,7 +123740,7 @@ function ScriptIndex(name,script,args,option)
123652
123740
 
123653
123741
  this.CreatePartLine=function(hqChart,windowIndex,varItem,i)
123654
123742
  {
123655
- let chart=new ChartPartLine();
123743
+ var chart=new ChartPartLine();
123656
123744
  chart.Canvas=hqChart.Canvas;
123657
123745
  chart.Name=varItem.Name;
123658
123746
  chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
@@ -123664,6 +123752,9 @@ function ScriptIndex(name,script,args,option)
123664
123752
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
123665
123753
  }
123666
123754
 
123755
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
123756
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
123757
+
123667
123758
  chart.Data.Data=varItem.Draw.DrawData;
123668
123759
 
123669
123760
  this.SetChartIndexName(chart);
@@ -125400,7 +125491,7 @@ function OverlayScriptIndex(name,script,args,option)
125400
125491
  {
125401
125492
  var overlayIndex=this.OverlayIndex;
125402
125493
  var frame=overlayIndex.Frame;
125403
- let chart=new ChartPartLine();
125494
+ var chart=new ChartPartLine();
125404
125495
  chart.Canvas=hqChart.Canvas;
125405
125496
  chart.Name=varItem.Name;
125406
125497
  chart.ChartBorder=frame.Frame.ChartBorder;
@@ -125413,6 +125504,9 @@ function OverlayScriptIndex(name,script,args,option)
125413
125504
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
125414
125505
  }
125415
125506
 
125507
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
125508
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
125509
+
125416
125510
  chart.Data.Data=varItem.Draw.DrawData;
125417
125511
  this.SetChartIndexName(chart);
125418
125512
  frame.ChartPaint.push(chart);
@@ -152867,7 +152961,7 @@ function HQChartScriptWorker()
152867
152961
 
152868
152962
 
152869
152963
 
152870
- var HQCHART_VERSION="1.1.14374";
152964
+ var HQCHART_VERSION="1.1.14384";
152871
152965
 
152872
152966
  function PrintHQChartVersion()
152873
152967
  {