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.
- package/lib/umychart.vue.js +24 -17
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +8 -2
- package/src/jscommon/umychart.js +94 -6
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +103 -9
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +103 -9
package/lib/umychart.vue.js
CHANGED
|
@@ -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
|
-
|
|
3479
|
-
this.
|
|
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
|
|
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.
|
|
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.
|
|
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
|
@@ -21962,7 +21962,7 @@ function ScriptIndex(name,script,args,option)
|
|
|
21962
21962
|
|
|
21963
21963
|
this.CreatePartLine=function(hqChart,windowIndex,varItem,i)
|
|
21964
21964
|
{
|
|
21965
|
-
|
|
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
|
-
|
|
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);
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -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 (
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
143169
|
+
var HQCHART_VERSION="1.1.14384";
|
|
143076
143170
|
|
|
143077
143171
|
function PrintHQChartVersion()
|
|
143078
143172
|
{
|
|
@@ -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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
152964
|
+
var HQCHART_VERSION="1.1.14384";
|
|
152871
152965
|
|
|
152872
152966
|
function PrintHQChartVersion()
|
|
152873
152967
|
{
|