hqchart 1.1.14381 → 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.
@@ -3476,8 +3476,9 @@ LeftMargin:g_JSChartResource.OrderFlow_Style5.LeftMargin,RightMargin:g_JSChartRe
3476
3476
  this.ChartHeatMap;//=new ChartHeatMap();
3477
3477
  //未回补的价格缺口
3478
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=[];//缺口数据 { }
3479
- 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;//平盘
3480
- 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()//美国线
3481
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线颜色事件
3482
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)//求最大值
3483
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)//求最小值
@@ -3498,7 +3499,9 @@ var yTop=yClose-barWidth/2;if(isHScreen){this.Canvas.fillRect(yTop,aryX[2],barWi
3498
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)//把最左边的一个点连上
3499
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);//通知外部绘制最后一个点
3500
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()//收盘价线
3501
- {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()//蜡烛头
3502
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线颜色事件
3503
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)//求最大值
3504
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)//求最小值
@@ -3995,8 +3998,11 @@ this.Draw=function(){this.MaxMin=null;if(!this.IsShow||this.ChartFrame.IsMinSize
3995
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;}};}//彩色线段
3996
3999
  function ChartPartLine(){this.newMethod=IChartPainting;//派生
3997
4000
  this.newMethod();delete this.newMethod;this.ClassName='ChartPartLine';//类名
3998
- this.LineWidth;//线段宽度
3999
- 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)//接着上一个点连线
4000
4006
  {if(bHScreen)this.Canvas.moveTo(lastPoint.Y,lastPoint.X);//横屏坐标轴对调
4001
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);//横屏坐标轴对调
4002
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;//限制范围
@@ -7202,7 +7208,7 @@ this.KLineCalcOption=new _map2.default();//K线定制指标配置
7202
7208
  this.ScrollBar=null;//横向滚动条
7203
7209
  this.IsAutoSyncDataOffset=true;//增量更新时,是否移动当前屏数据
7204
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()//重置分页下载
7205
- {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线数据(可选)
7206
7212
  // ID: 2=更新数据, Data:绑定K线数据
7207
7213
  // ID: 3=结束, IsAutoUpdate:是否启动自动更新(可选) }
7208
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线数据, 内部不计算周期和复权
@@ -7309,7 +7315,7 @@ border.TopSpace=15*pixelTatio;frame.GetEventCallback=function(id){return _this19
7309
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线数据绑定
7310
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线画法
7311
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;//绑定叠加
7312
- 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线数据
7313
7319
  this.BindMainData=function(hisData,showCount,chartOperator){var isShowAll=false;//全部显示
7314
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;//动态标题
7315
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;//十字光标
@@ -7425,7 +7431,7 @@ var bindData=new ChartData();bindData.Data=aryDayData;bindData.Right=this.Right;
7425
7431
  {var newBindData=kLineCalculate.RecvHistoryData(bindData,{Symbol:this.Symbol,Function:"RecvMinuteHistoryData"});bindData=newBindData;this.FlowCapitalReady=true;}//绑定数据
7426
7432
  this.Symbol=data.symbol;this.Name=data.name;var chartOperator=null;//额外的图形控制
7427
7433
  if(data&&data.ChartOperator){var item=data.ChartOperator;chartOperator={};if(item.IsShowAll===true)chartOperator.IsShowAll=true;//全部显示
7428
- }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线数据
7429
7435
  firstSubFrame.YSplitOperator.Period=this.Period;//周期
7430
7436
  }for(var i in this.OverlayChartPaint)//分钟数据不支持叠加 清空
7431
7437
  {var item=this.OverlayChartPaint[i];item.Data=null;//item.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID;
@@ -7604,7 +7610,7 @@ if(this.SourceData.DataType!=1)isDataTypeChange=true;break;case 10://分笔线
7604
7610
  if(this.SourceData.DataType!=2)isDataTypeChange=true;break;}}}this.Period=period;if(right!=null)this.Right=right;this.ReloadChartDrawPicture();//切换周期了 清空画图工具
7605
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 重新请求数据
7606
7612
  };event.Callback(event,sendData,this);isDataTypeChange=sendData.IsDataTypeChange;}if(isDataTypeChange==false&&!this.IsApiPeriod){this.ClearIndexRunCount();this.Update({UpdateCursorIndexType:2});//更新的时候 取消显示十字光标
7607
- 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();//先停止定时器
7608
7614
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');//切换周期先停止更新
7609
7615
  this.ResetScrollBar();this.ResetOverlaySymbolStatus();this.ClearIndexRunCount();this.Frame.ClearYCoordinateMaxMin();this.UnlockCorssCursor();this.RequestHistoryData();//请求日线数据
7610
7616
  //this.ReqeustKLineInfoData();
@@ -7778,7 +7784,7 @@ this.UpdateFrameMaxMin();//调整坐标最大 最小值
7778
7784
  this.Frame.SetSizeChage(true);this.Draw();//叠加指标
7779
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);}}};//切换股票代码
7780
7786
  this.ChangeSymbol=function(symbol,option){this.CancelAutoUpdate();//先停止定时器
7781
- 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;//指数没有复权
7782
7788
  this.ClearIndexPaint();//清空指标
7783
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;//暂时不支持 动态增加/减少
7784
7790
  var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
@@ -11789,7 +11795,7 @@ chart.Family=varItem.Draw.Icon.Family;chart.TextFont=g_JSChartResource.TIPICON.T
11789
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线
11790
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);};//创建通道
11791
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;
11792
- 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线
11793
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)//箭头配置
11794
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线
11795
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线
@@ -11911,7 +11917,7 @@ this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateTipIcon=
11911
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);};//创建通道
11912
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;
11913
11919
  chart.Data.Data=varItem.Draw.DrawData;frame.ChartPaint.push(chart);};//
11914
- 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线
11915
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)//箭头配置
11916
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线
11917
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线
@@ -14307,7 +14313,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
14307
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);};}/********************************************************************************
14308
14314
  * 版本信息输出
14309
14315
  *
14310
- */var HQCHART_VERSION="1.1.14380";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();//把给外界调用的方法暴露出来
14311
14317
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
14312
14318
  // BaseIndex:BaseIndex,
14313
14319
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14381",
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);
@@ -25433,6 +25433,32 @@ function ChartKLine()
25433
25433
  Text:{ Color:g_JSChartResource.PriceGapStyple.Text.Color, Font: g_JSChartResource.PriceGapStyple.Text.Font }
25434
25434
  };
25435
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
+ }
25436
25462
 
25437
25463
  this.ReloadResource=function(resource)
25438
25464
  {
@@ -25460,6 +25486,11 @@ function ChartKLine()
25460
25486
  this.CustomKLine=null;
25461
25487
  }
25462
25488
 
25489
+ this.ClearBreakPoint=function()
25490
+ {
25491
+ this.AryBreakPoint=null;
25492
+ }
25493
+
25463
25494
  this.GetCustomKLine=function(kItem)
25464
25495
  {
25465
25496
  if (!this.CustomKLine) return null;
@@ -25936,6 +25967,7 @@ function ChartKLine()
25936
25967
  }
25937
25968
 
25938
25969
  var bFirstPoint=true;
25970
+ var drawCount=0;
25939
25971
  this.Canvas.beginPath();
25940
25972
  this.Canvas.strokeStyle=this.CloseLineColor;
25941
25973
  if (IFrameSplitOperator.IsNumber(this.CloseLineWidth)) this.Canvas.lineWidth=this.CloseLineWidth;
@@ -25946,6 +25978,8 @@ function ChartKLine()
25946
25978
  this.ShowRange.ShowCount=xPointCount;
25947
25979
  this.DrawKRange.Start=this.Data.DataOffset;
25948
25980
 
25981
+ var mapBreakPoint=this.BuildBreakPoint(); //断点
25982
+
25949
25983
  var preKItemInfo=null;
25950
25984
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
25951
25985
  {
@@ -25971,8 +26005,9 @@ function ChartKLine()
25971
26005
  if (isHScreen) this.Canvas.lineTo(yClose,x);
25972
26006
  else this.Canvas.lineTo(x,yClose);
25973
26007
  }
26008
+ ++drawCount;
25974
26009
 
25975
- if (this.PriceGap.Enable )
26010
+ if (this.PriceGap.Enable)
25976
26011
  {
25977
26012
  var yLow=this.GetYFromData(data.Low, false);
25978
26013
  var yHigh=this.GetYFromData(data.High, false);
@@ -25989,9 +26024,23 @@ function ChartKLine()
25989
26024
 
25990
26025
  preKItemInfo=kItemInfo;
25991
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
+ }
25992
26041
  }
25993
26042
 
25994
- if (bFirstPoint==false) this.Canvas.stroke();
26043
+ if (drawCount>0) this.Canvas.stroke();
25995
26044
  }
25996
26045
 
25997
26046
  this.DrawKBar=function() //蜡烛头
@@ -33920,7 +33969,9 @@ function ChartPartLine()
33920
33969
  delete this.newMethod;
33921
33970
 
33922
33971
  this.ClassName='ChartPartLine'; //类名
33923
- this.LineWidth; //线段宽度
33972
+ this.LineWidth; //线段宽度
33973
+ this.IsDotLine=false; //虚线
33974
+ this.LineDash=[3,5]; //虚线设置
33924
33975
 
33925
33976
  this.Draw=function()
33926
33977
  {
@@ -33962,7 +34013,8 @@ function ChartPartLine()
33962
34013
 
33963
34014
  this.Canvas.save();
33964
34015
  if (this.LineWidth>0) this.Canvas.lineWidth=this.LineWidth * GetDevicePixelRatio();
33965
- var bFirstPoint=true;
34016
+ if (this.IsDotLine) this.Canvas.setLineDash(this.LineDash); //画虚线
34017
+
33966
34018
  var drawCount=0;
33967
34019
  var lastColor;
33968
34020
  var lastPoint={X:null,Y:null};
@@ -75166,6 +75218,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
75166
75218
  if (option && option.Draw==true) this.Draw();
75167
75219
  }
75168
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
+
75169
75231
  this.StopAutoUpdate=function()
75170
75232
  {
75171
75233
  this.CancelAutoUpdate();
@@ -76312,6 +76374,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
76312
76374
  this.TitlePaint[0].GetEventCallback=(id)=>{ return this.GetEventCallback(id); };
76313
76375
  }
76314
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
+
76315
76386
  //绑定主图K线数据
76316
76387
  this.BindMainData=function(hisData, showCount, chartOperator)
76317
76388
  {
@@ -77278,10 +77349,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
77278
77349
  {
77279
77350
  var item=data.ChartOperator;
77280
77351
  chartOperator={ };
77281
- if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
77352
+ if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
77282
77353
  }
77283
77354
 
77284
77355
  this.BindMainData(bindData,this.PageSize,chartOperator);
77356
+ this.BindKLineBreakPoint(data);
77285
77357
  if (this.AfterBindMainData) this.AfterBindMainData("RecvMinuteHistoryData");
77286
77358
  this.Frame.SetSizeChage(true);
77287
77359
 
@@ -78408,6 +78480,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
78408
78480
  }
78409
78481
 
78410
78482
  this.ClearIndexPaint();
78483
+ this.ClearKLineBreakPoint();
78411
78484
 
78412
78485
  if (ChartData.IsDayPeriod(this.Period,true))
78413
78486
  {
@@ -79842,6 +79915,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
79842
79915
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');
79843
79916
  this.ClearRectSelect(true);
79844
79917
  this.ClearCustomKLine();
79918
+ this.ClearKLineBreakPoint();
79845
79919
  this.ClearKLineCaluate();
79846
79920
  this.HideTooltip();
79847
79921
  this.ResetScrollBar();
@@ -29358,6 +29358,32 @@ function ChartKLine()
29358
29358
  Text:{ Color:g_JSChartResource.PriceGapStyple.Text.Color, Font: g_JSChartResource.PriceGapStyple.Text.Font }
29359
29359
  };
29360
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
+ }
29361
29387
 
29362
29388
  this.ReloadResource=function(resource)
29363
29389
  {
@@ -29385,6 +29411,11 @@ function ChartKLine()
29385
29411
  this.CustomKLine=null;
29386
29412
  }
29387
29413
 
29414
+ this.ClearBreakPoint=function()
29415
+ {
29416
+ this.AryBreakPoint=null;
29417
+ }
29418
+
29388
29419
  this.GetCustomKLine=function(kItem)
29389
29420
  {
29390
29421
  if (!this.CustomKLine) return null;
@@ -29861,6 +29892,7 @@ function ChartKLine()
29861
29892
  }
29862
29893
 
29863
29894
  var bFirstPoint=true;
29895
+ var drawCount=0;
29864
29896
  this.Canvas.beginPath();
29865
29897
  this.Canvas.strokeStyle=this.CloseLineColor;
29866
29898
  if (IFrameSplitOperator.IsNumber(this.CloseLineWidth)) this.Canvas.lineWidth=this.CloseLineWidth;
@@ -29871,6 +29903,8 @@ function ChartKLine()
29871
29903
  this.ShowRange.ShowCount=xPointCount;
29872
29904
  this.DrawKRange.Start=this.Data.DataOffset;
29873
29905
 
29906
+ var mapBreakPoint=this.BuildBreakPoint(); //断点
29907
+
29874
29908
  var preKItemInfo=null;
29875
29909
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
29876
29910
  {
@@ -29896,8 +29930,9 @@ function ChartKLine()
29896
29930
  if (isHScreen) this.Canvas.lineTo(yClose,x);
29897
29931
  else this.Canvas.lineTo(x,yClose);
29898
29932
  }
29933
+ ++drawCount;
29899
29934
 
29900
- if (this.PriceGap.Enable )
29935
+ if (this.PriceGap.Enable)
29901
29936
  {
29902
29937
  var yLow=this.GetYFromData(data.Low, false);
29903
29938
  var yHigh=this.GetYFromData(data.High, false);
@@ -29914,9 +29949,23 @@ function ChartKLine()
29914
29949
 
29915
29950
  preKItemInfo=kItemInfo;
29916
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
+ }
29917
29966
  }
29918
29967
 
29919
- if (bFirstPoint==false) this.Canvas.stroke();
29968
+ if (drawCount>0) this.Canvas.stroke();
29920
29969
  }
29921
29970
 
29922
29971
  this.DrawKBar=function() //蜡烛头
@@ -37845,7 +37894,9 @@ function ChartPartLine()
37845
37894
  delete this.newMethod;
37846
37895
 
37847
37896
  this.ClassName='ChartPartLine'; //类名
37848
- this.LineWidth; //线段宽度
37897
+ this.LineWidth; //线段宽度
37898
+ this.IsDotLine=false; //虚线
37899
+ this.LineDash=[3,5]; //虚线设置
37849
37900
 
37850
37901
  this.Draw=function()
37851
37902
  {
@@ -37887,7 +37938,8 @@ function ChartPartLine()
37887
37938
 
37888
37939
  this.Canvas.save();
37889
37940
  if (this.LineWidth>0) this.Canvas.lineWidth=this.LineWidth * GetDevicePixelRatio();
37890
- var bFirstPoint=true;
37941
+ if (this.IsDotLine) this.Canvas.setLineDash(this.LineDash); //画虚线
37942
+
37891
37943
  var drawCount=0;
37892
37944
  var lastColor;
37893
37945
  var lastPoint={X:null,Y:null};
@@ -79091,6 +79143,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
79091
79143
  if (option && option.Draw==true) this.Draw();
79092
79144
  }
79093
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
+
79094
79156
  this.StopAutoUpdate=function()
79095
79157
  {
79096
79158
  this.CancelAutoUpdate();
@@ -80237,6 +80299,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
80237
80299
  this.TitlePaint[0].GetEventCallback=(id)=>{ return this.GetEventCallback(id); };
80238
80300
  }
80239
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
+
80240
80311
  //绑定主图K线数据
80241
80312
  this.BindMainData=function(hisData, showCount, chartOperator)
80242
80313
  {
@@ -81203,10 +81274,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
81203
81274
  {
81204
81275
  var item=data.ChartOperator;
81205
81276
  chartOperator={ };
81206
- if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
81277
+ if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
81207
81278
  }
81208
81279
 
81209
81280
  this.BindMainData(bindData,this.PageSize,chartOperator);
81281
+ this.BindKLineBreakPoint(data);
81210
81282
  if (this.AfterBindMainData) this.AfterBindMainData("RecvMinuteHistoryData");
81211
81283
  this.Frame.SetSizeChage(true);
81212
81284
 
@@ -82333,6 +82405,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
82333
82405
  }
82334
82406
 
82335
82407
  this.ClearIndexPaint();
82408
+ this.ClearKLineBreakPoint();
82336
82409
 
82337
82410
  if (ChartData.IsDayPeriod(this.Period,true))
82338
82411
  {
@@ -83767,6 +83840,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
83767
83840
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');
83768
83841
  this.ClearRectSelect(true);
83769
83842
  this.ClearCustomKLine();
83843
+ this.ClearKLineBreakPoint();
83770
83844
  this.ClearKLineCaluate();
83771
83845
  this.HideTooltip();
83772
83846
  this.ResetScrollBar();
@@ -123622,7 +123696,7 @@ function ScriptIndex(name,script,args,option)
123622
123696
 
123623
123697
  this.CreatePartLine=function(hqChart,windowIndex,varItem,i)
123624
123698
  {
123625
- let chart=new ChartPartLine();
123699
+ var chart=new ChartPartLine();
123626
123700
  chart.Canvas=hqChart.Canvas;
123627
123701
  chart.Name=varItem.Name;
123628
123702
  chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
@@ -123634,6 +123708,9 @@ function ScriptIndex(name,script,args,option)
123634
123708
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
123635
123709
  }
123636
123710
 
123711
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
123712
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
123713
+
123637
123714
  chart.Data.Data=varItem.Draw.DrawData;
123638
123715
 
123639
123716
  this.SetChartIndexName(chart);
@@ -125370,7 +125447,7 @@ function OverlayScriptIndex(name,script,args,option)
125370
125447
  {
125371
125448
  var overlayIndex=this.OverlayIndex;
125372
125449
  var frame=overlayIndex.Frame;
125373
- let chart=new ChartPartLine();
125450
+ var chart=new ChartPartLine();
125374
125451
  chart.Canvas=hqChart.Canvas;
125375
125452
  chart.Name=varItem.Name;
125376
125453
  chart.ChartBorder=frame.Frame.ChartBorder;
@@ -125383,6 +125460,9 @@ function OverlayScriptIndex(name,script,args,option)
125383
125460
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
125384
125461
  }
125385
125462
 
125463
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
125464
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
125465
+
125386
125466
  chart.Data.Data=varItem.Draw.DrawData;
125387
125467
  this.SetChartIndexName(chart);
125388
125468
  frame.ChartPaint.push(chart);
@@ -143086,7 +143166,7 @@ function ScrollBarBGChart()
143086
143166
 
143087
143167
 
143088
143168
 
143089
- var HQCHART_VERSION="1.1.14380";
143169
+ var HQCHART_VERSION="1.1.14384";
143090
143170
 
143091
143171
  function PrintHQChartVersion()
143092
143172
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14380";
8
+ var HQCHART_VERSION="1.1.14384";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -29402,6 +29402,32 @@ function ChartKLine()
29402
29402
  Text:{ Color:g_JSChartResource.PriceGapStyple.Text.Color, Font: g_JSChartResource.PriceGapStyple.Text.Font }
29403
29403
  };
29404
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
+ }
29405
29431
 
29406
29432
  this.ReloadResource=function(resource)
29407
29433
  {
@@ -29429,6 +29455,11 @@ function ChartKLine()
29429
29455
  this.CustomKLine=null;
29430
29456
  }
29431
29457
 
29458
+ this.ClearBreakPoint=function()
29459
+ {
29460
+ this.AryBreakPoint=null;
29461
+ }
29462
+
29432
29463
  this.GetCustomKLine=function(kItem)
29433
29464
  {
29434
29465
  if (!this.CustomKLine) return null;
@@ -29905,6 +29936,7 @@ function ChartKLine()
29905
29936
  }
29906
29937
 
29907
29938
  var bFirstPoint=true;
29939
+ var drawCount=0;
29908
29940
  this.Canvas.beginPath();
29909
29941
  this.Canvas.strokeStyle=this.CloseLineColor;
29910
29942
  if (IFrameSplitOperator.IsNumber(this.CloseLineWidth)) this.Canvas.lineWidth=this.CloseLineWidth;
@@ -29915,6 +29947,8 @@ function ChartKLine()
29915
29947
  this.ShowRange.ShowCount=xPointCount;
29916
29948
  this.DrawKRange.Start=this.Data.DataOffset;
29917
29949
 
29950
+ var mapBreakPoint=this.BuildBreakPoint(); //断点
29951
+
29918
29952
  var preKItemInfo=null;
29919
29953
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
29920
29954
  {
@@ -29940,8 +29974,9 @@ function ChartKLine()
29940
29974
  if (isHScreen) this.Canvas.lineTo(yClose,x);
29941
29975
  else this.Canvas.lineTo(x,yClose);
29942
29976
  }
29977
+ ++drawCount;
29943
29978
 
29944
- if (this.PriceGap.Enable )
29979
+ if (this.PriceGap.Enable)
29945
29980
  {
29946
29981
  var yLow=this.GetYFromData(data.Low, false);
29947
29982
  var yHigh=this.GetYFromData(data.High, false);
@@ -29958,9 +29993,23 @@ function ChartKLine()
29958
29993
 
29959
29994
  preKItemInfo=kItemInfo;
29960
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
+ }
29961
30010
  }
29962
30011
 
29963
- if (bFirstPoint==false) this.Canvas.stroke();
30012
+ if (drawCount>0) this.Canvas.stroke();
29964
30013
  }
29965
30014
 
29966
30015
  this.DrawKBar=function() //蜡烛头
@@ -37889,7 +37938,9 @@ function ChartPartLine()
37889
37938
  delete this.newMethod;
37890
37939
 
37891
37940
  this.ClassName='ChartPartLine'; //类名
37892
- this.LineWidth; //线段宽度
37941
+ this.LineWidth; //线段宽度
37942
+ this.IsDotLine=false; //虚线
37943
+ this.LineDash=[3,5]; //虚线设置
37893
37944
 
37894
37945
  this.Draw=function()
37895
37946
  {
@@ -37931,7 +37982,8 @@ function ChartPartLine()
37931
37982
 
37932
37983
  this.Canvas.save();
37933
37984
  if (this.LineWidth>0) this.Canvas.lineWidth=this.LineWidth * GetDevicePixelRatio();
37934
- var bFirstPoint=true;
37985
+ if (this.IsDotLine) this.Canvas.setLineDash(this.LineDash); //画虚线
37986
+
37935
37987
  var drawCount=0;
37936
37988
  var lastColor;
37937
37989
  var lastPoint={X:null,Y:null};
@@ -79135,6 +79187,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
79135
79187
  if (option && option.Draw==true) this.Draw();
79136
79188
  }
79137
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
+
79138
79200
  this.StopAutoUpdate=function()
79139
79201
  {
79140
79202
  this.CancelAutoUpdate();
@@ -80281,6 +80343,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
80281
80343
  this.TitlePaint[0].GetEventCallback=(id)=>{ return this.GetEventCallback(id); };
80282
80344
  }
80283
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
+
80284
80355
  //绑定主图K线数据
80285
80356
  this.BindMainData=function(hisData, showCount, chartOperator)
80286
80357
  {
@@ -81247,10 +81318,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
81247
81318
  {
81248
81319
  var item=data.ChartOperator;
81249
81320
  chartOperator={ };
81250
- if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
81321
+ if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
81251
81322
  }
81252
81323
 
81253
81324
  this.BindMainData(bindData,this.PageSize,chartOperator);
81325
+ this.BindKLineBreakPoint(data);
81254
81326
  if (this.AfterBindMainData) this.AfterBindMainData("RecvMinuteHistoryData");
81255
81327
  this.Frame.SetSizeChage(true);
81256
81328
 
@@ -82377,6 +82449,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
82377
82449
  }
82378
82450
 
82379
82451
  this.ClearIndexPaint();
82452
+ this.ClearKLineBreakPoint();
82380
82453
 
82381
82454
  if (ChartData.IsDayPeriod(this.Period,true))
82382
82455
  {
@@ -83811,6 +83884,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
83811
83884
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');
83812
83885
  this.ClearRectSelect(true);
83813
83886
  this.ClearCustomKLine();
83887
+ this.ClearKLineBreakPoint();
83814
83888
  this.ClearKLineCaluate();
83815
83889
  this.HideTooltip();
83816
83890
  this.ResetScrollBar();
@@ -123666,7 +123740,7 @@ function ScriptIndex(name,script,args,option)
123666
123740
 
123667
123741
  this.CreatePartLine=function(hqChart,windowIndex,varItem,i)
123668
123742
  {
123669
- let chart=new ChartPartLine();
123743
+ var chart=new ChartPartLine();
123670
123744
  chart.Canvas=hqChart.Canvas;
123671
123745
  chart.Name=varItem.Name;
123672
123746
  chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
@@ -123678,6 +123752,9 @@ function ScriptIndex(name,script,args,option)
123678
123752
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
123679
123753
  }
123680
123754
 
123755
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
123756
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
123757
+
123681
123758
  chart.Data.Data=varItem.Draw.DrawData;
123682
123759
 
123683
123760
  this.SetChartIndexName(chart);
@@ -125414,7 +125491,7 @@ function OverlayScriptIndex(name,script,args,option)
125414
125491
  {
125415
125492
  var overlayIndex=this.OverlayIndex;
125416
125493
  var frame=overlayIndex.Frame;
125417
- let chart=new ChartPartLine();
125494
+ var chart=new ChartPartLine();
125418
125495
  chart.Canvas=hqChart.Canvas;
125419
125496
  chart.Name=varItem.Name;
125420
125497
  chart.ChartBorder=frame.Frame.ChartBorder;
@@ -125427,6 +125504,9 @@ function OverlayScriptIndex(name,script,args,option)
125427
125504
  if (IFrameSplitOperator.IsPlusNumber(width)) chart.LineWidth=width;
125428
125505
  }
125429
125506
 
125507
+ if (IFrameSplitOperator.IsBool(varItem.IsDotLine)) chart.IsDotLine=varItem.IsDotLine;
125508
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) chart.LineDash=varItem.LineDash;
125509
+
125430
125510
  chart.Data.Data=varItem.Draw.DrawData;
125431
125511
  this.SetChartIndexName(chart);
125432
125512
  frame.ChartPaint.push(chart);
@@ -152881,7 +152961,7 @@ function HQChartScriptWorker()
152881
152961
 
152882
152962
 
152883
152963
 
152884
- var HQCHART_VERSION="1.1.14380";
152964
+ var HQCHART_VERSION="1.1.14384";
152885
152965
 
152886
152966
  function PrintHQChartVersion()
152887
152967
  {