hqchart 1.1.13138 → 1.1.13140

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.
@@ -1779,13 +1779,15 @@ this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.To
1779
1779
  {var left=x;var top=y;var format=g_DivTooltipDataForamt.Create('ChartDrawSVGDataStringFormat');format.Value=toolTip;format.Symbol=this.Symbol;format.Period=this.Period;format.LanguageID=this.LanguageID;if(!format.Operator())return;var width=format.Width;this.Tooltip.className='jchart-chartdrawsvg-tooltip';//ChartDrawSVG指标数据
1780
1780
  this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.Tooltip.style.top=top+xMove+"px";this.Tooltip.style.width=width+"px";this.Tooltip.style.height=null;this.Tooltip.innerHTML=format.Text;this.Tooltip.style.display="block";}};this.UpdateDOMTooltip=function(toolTipType,data){var _this12=this;if(!this.TooltipCache.IsShow)return;if(this.TooltipCache.Type!=toolTipType)return;if(!this.TooltipCache.Data)return;if(this.TooltipCache.Type===0){if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.Data))return;var lastItem=data.Data[data.Data.length-1];if(lastItem.Date!=this.TooltipCache.Data.Date)return;if(IFrameSplitOperator.IsNumber(lastItem.Time)&&lastItem.Time!=this.TooltipCache.Data.Time)return;var klinePaint=this.ChartPaint[0];var format=g_DivTooltipDataForamt.Create('HistoryDataStringFormat');format.Value={Data:lastItem,ChartPaint:klinePaint,Type:this.TooltipCache.Type};format.Symbol=this.Symbol;format.LanguageID=this.LanguageID;format.GetEventCallback=function(id){return _this12.GetEventCallback(id);};if(!format.Operator())return;if(format.Text==this.TooltipCache.InnerHTML)return;this.Tooltip.innerHTML=format.Text;this.TooltipCache.InnerHTML=format.Text;}};this.HideTooltip=function(){this.TooltipCache.IsShow=false;this.TooltipCache.Type=null;this.TooltipCache.InnerHTML=null;this.TooltipCache.Data=null;if(this.Tooltip.style.display!="none")this.Tooltip.style.display="none";};this.ShowSelectRect=function(x,y,x2,y2){var left=x;var top=y;var border=this.Frame.ChartBorder.GetBorder();var borderRight=border.Right;var borderLeft=border.Left;if(x>borderRight)x=borderRight;if(x2>borderRight)x2=borderRight;if(x<borderLeft)x=borderLeft;if(x2<borderLeft)x2=borderLeft;if(x>x2)left=x2;if(y>y2)top=y2;var width=Math.abs(x-x2);var height=Math.abs(y-y2);this.SelectRect.style.width=width+"px";this.SelectRect.style.height=height+"px";this.SelectRect.style.position="absolute";this.SelectRect.style.left=left+"px";this.SelectRect.style.top=top+"px";this.SelectRect.style.display="block";};this.UpdateSelectRect=function(start,end){if(!this.ChartPaint[0].Data)return;var paint=this.GetRectSelectPaint();if(!paint)return;var data=this.ChartPaint[0].Data;var startItem=data.Data[start];var endItem=data.Data[end];JSConsole.Chart.Log('[JSChartContainer::UpdateSelectRect]',startItem,endItem);paint.SetPoint(startItem,{Index:0,DataIndex:start});paint.SetPoint(endItem,{Index:1,DataIndex:end});this.Draw();};this.HideSelectRect=function(){this.SelectRect.style.display="none";};this.ResetFrameXYSplit=function(){if(typeof this.Frame.ResetXYSplit=='function')this.Frame.ResetXYSplit();};this.ResetFrameXSplit=function(){if(typeof this.Frame.ResetXSplit=='function')this.Frame.ResetXSplit();};this.UpdateFrameMaxMinV2=function(){var mapFrame=new _map2.default();//key=frameid, value:{ ChartPaint:[] }
1781
1781
  for(var i=0;i<this.Frame.SubFrame.length;++i){var subItem=this.Frame.SubFrame[i];if(!subItem||!subItem.Frame)continue;var frame=subItem.Frame;var key=frame.Identify;var item={ID:key,Frame:frame,ChartPaint:[],Max:null,Min:null,OverlayFrame:[],//共享坐标
1782
- SingleOverlay:[]//独立坐标
1783
- };for(var j=0;j<subItem.OverlayIndex.length;++j){var overlayItem=subItem.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(overlayFrame.IsShareY){if(!overlayFrame.MainFrame)continue;if(overlayFrame.IsCalculateYMaxMin===false)continue;//叠加坐标Y轴不调整
1782
+ SingleOverlay:[],//独立坐标
1783
+ MainOverlayFrame:[null,null]//叠加坐标在主坐标显示[0]=left [1]=right
1784
+ };for(var j=0;j<subItem.OverlayIndex.length;++j){var overlayItem=subItem.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(overlayFrame.IsShowMainFrame===1)item.MainOverlayFrame[0]=overlayFrame;else if(overlayFrame.IsShowMainFrame===2)item.MainOverlayFrame[1]=overlayFrame;if(overlayFrame.IsShareY){if(!overlayFrame.MainFrame)continue;if(overlayFrame.IsCalculateYMaxMin===false)continue;//叠加坐标Y轴不调整
1784
1785
  item.OverlayFrame.push(overlayFrame);for(var k=0;k<overlayItem.ChartPaint.length;++k){var chart=overlayItem.ChartPaint[k];item.ChartPaint.push(chart);}}else{item.SingleOverlay.push(overlayItem);}}mapFrame.set(key,item);}for(var i=0;i<this.ChartPaint.length;++i){var chart=this.ChartPaint[i];var key=chart.ChartFrame.Identify;if(!mapFrame.has(key))continue;var finder=mapFrame.get(key);finder.ChartPaint.push(chart);}for(var i=0;i<this.OverlayChartPaint.length;++i){var chart=this.OverlayChartPaint[i];if(!chart.ChartFrame)continue;var key=chart.ChartFrame.Identify;if(!mapFrame.has(key))continue;var finder=mapFrame.get(key);finder.ChartPaint.push(chart);}var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=(0,_getIterator3.default)(mapFrame),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var mapItem=_step3.value;var item=mapItem[1];var frame=item.Frame;//计算主框架最大最小
1785
1786
  for(var i=0;i<item.ChartPaint.length;++i){var chart=item.ChartPaint[i];if(chart.IsShow==false)continue;//隐藏的图形不计算
1786
1787
  if(chart.NotSupportMessage)continue;if(!chart.ChartFrame)continue;if(chart.IsExcludeYValue===true)continue;var range=chart.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(item.Max==null||item.Max<range.Max)item.Max=range.Max;if(item.Min==null||item.Min>range.Min)item.Min=range.Min;}if(item.Frame.YSpecificMaxMin)//固定坐标
1787
1788
  {item.Min=item.Frame.YSpecificMaxMin.Max;item.Max=item.Frame.YSpecificMaxMin.Min;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Max)||frame.YMaxMin.Max!=item.Max){frame.YMaxMin.Max=item.Max;frame.XYSplit=true;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Min)||frame.YMaxMin.Min!=item.Min){frame.YMaxMin.Min=item.Min;frame.XYSplit=true;}if(frame.XYSplit){var max=10,min=0;if(item.Max!=null)max=item.Max;if(item.Min!=null)min=item.Min;frame.HorizontalMax=max;frame.HorizontalMin=min;}else{frame.XSplit=true;}//共享Y轴叠加指标同步下坐标
1788
- for(var j=0;j<item.OverlayFrame.length;++j){item.OverlayFrame[j].XYSplit=true;}//独立坐标叠加指标
1789
+ for(var j=0;j<item.OverlayFrame.length;++j){item.OverlayFrame[j].XYSplit=true;}//叠加坐标显示在主图坐标 需要同步
1790
+ for(var i=0;i<item.MainOverlayFrame.length;++i){var subItem=item.MainOverlayFrame[i];if(subItem)subItem.XYSplit=true;}//独立坐标叠加指标
1789
1791
  for(var i=0;i<item.SingleOverlay.length;++i){var overlayItem=item.SingleOverlay[i];overlayItem.UpdateFrameMaxMin();}}}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return();}}finally{if(_didIteratorError3){throw _iteratorError3;}}}};this.UpdateFrameMaxMin=function(){this.UpdateFrameMaxMinV2();return;var frameMaxMinData=new Array();var chartPaint=new Array();for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsShow==false)continue;//隐藏的图形不计算
1790
1792
  chartPaint.push(this.ChartPaint[i]);}for(var i=0;i<this.OverlayChartPaint.length;++i){chartPaint.push(this.OverlayChartPaint[i]);}var aryNotSupport=[];for(var i=0;i<chartPaint.length;++i){var paint=chartPaint[i];if(paint.NotSupportMessage){aryNotSupport.push(paint);continue;}var range=paint.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;var frameItem=null;for(var j=0;j<frameMaxMinData.length;++j){if(frameMaxMinData[j].Frame==paint.ChartFrame){frameItem=frameMaxMinData[j];break;}}if(frameItem){if(frameItem.Range.Max<range.Max)frameItem.Range.Max=range.Max;if(frameItem.Range.Min>range.Min)frameItem.Range.Min=range.Min;}else{frameItem={OverlayFrame:[]};frameItem.Frame=paint.ChartFrame;frameItem.Range=range;frameMaxMinData.push(frameItem);}}//当前计算
1791
1793
  for(var i=0;i<aryNotSupport.length;++i){var paint=aryNotSupport[i];var range={Max:10,Min:1};var frameItem=null;for(var j=0;j<frameMaxMinData.length;++j){if(frameMaxMinData[j].Frame==paint.ChartFrame){frameItem=frameMaxMinData[j];break;}}if(frameItem)continue;frameItem={OverlayFrame:[]};frameItem.Frame=paint.ChartFrame;frameItem.Range=range;frameMaxMinData.push(frameItem);}var mapFrame=new _map2.default();for(var i=0;i<frameMaxMinData.length;++i){var item=frameMaxMinData[i];mapFrame.set(item.Frame.Identify,item);}//叠加坐标Y轴使用主图指标, 最大最小值
@@ -2095,6 +2097,7 @@ this.YTextExtend;//[0]=左 [1]=右 { Align:0=默认 1=左对齐 2=右对齐
2095
2097
  this.YRightTextInfo;//X轴延长线
2096
2098
  this.XTextExtend;//[0]=底部 { Align:0=默认(居中), 1=左对齐 }
2097
2099
  this.XLineExtend;//[0]=底部 { Mode:1, Color: } Mode=1 分割线 Mode=2短线
2100
+ this.FrameData={SubFrameItem:null};//窗口框架信息
2098
2101
  //画图工具刻度
2099
2102
  this.DrawPicture={BGColor:g_JSChartResource.DrawPicture.XYCoordinate.BGColor,TextBGColor:g_JSChartResource.DrawPicture.XYCoordinate.TextBGColor,TextColor:g_JSChartResource.DrawPicture.XYCoordinate.TextColor,Font:g_JSChartResource.DrawPicture.XYCoordinate.Font};this.IChartFramePainting_ReloadResource=this.ReloadResource;this.ReloadResource=function(resource){this.IChartFramePainting_ReloadResource(resource);if(!resource){this.ToolbarButtonStyle=g_JSChartResource.ToolbarButtonStyle;this.CloseWindowButton=CloneData(g_JSChartResource.Buttons.CloseWindow);this.OverlayIndexButton=CloneData(g_JSChartResource.Buttons.OverlayIndex);this.ChangeIndexButton=CloneData(g_JSChartResource.Buttons.ChangeIndex);this.ModifyIndexParamButton=CloneData(g_JSChartResource.Buttons.ModifyIndexParam);this.MaxMinWindowButton=CloneData(g_JSChartResource.Buttons.MaxMinWindow);this.TitleWindowButton=CloneData(g_JSChartResource.Buttons.TitleWindow);this.ButtonTooltip=CloneData(g_JSChartResource.Buttons.Tooltip);}};this.DrawFrame=function(){if(this.XPointCount>0){var dInterval=this.ChartBorder.GetWidth()/(6*this.XPointCount);//分6份, 数据4 间距2
2100
2103
  this.DistanceWidth=2*dInterval;this.DataWidth=4*dInterval;}this.DrawHorizontal();this.DrawVertical();};this.DrawTitleButton=function(aryButton,moveonPoint,mouseStatus){var border=this.GetBorder();if(this.IsHScreen){var y=border.Bottom-3;var x=border.RightTitle+this.ChartBorder.TitleHeight/2;this.Canvas.save();this.Canvas.translate(x,y);this.Canvas.rotate(90*Math.PI/180);//底部开始画
@@ -2173,7 +2176,7 @@ if(this.YSplitOperator&&this.YSplitOperator.CoordinateType==1)isYPercentage=true
2173
2176
  {if(item.ExtendData){if(item.ExtendData.Font)this.Canvas.font=item.ExtendData.Font;var width1=this.Canvas.measureText(item.Message[1][0]).width;var width2=this.Canvas.measureText(item.Message[1][1]).width;var width3=this.Canvas.measureText('/').width;textWidth=width1+width3;if(rightExtendWidth<width2)rightExtendWidth=width2;//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[1][1]}/${item.Message[1][0]} ${textWidth}, ${rightExtendWidth}`);
2174
2177
  }}else if(this.MultiTextFormat==2)//显示2行
2175
2178
  {textWidth=this.Canvas.measureText(item.Message[1][0]).width;var textWidth2=this.Canvas.measureText(item.Message[1][1]).width;if(textWidth<textWidth2)textWidth=textWidth2;}else if(this.MultiTextFormat==3){textWidth=this.GetMulitTextMaxWidth(item.Message[0]);}else//显示第1行
2176
- {textWidth=this.Canvas.measureText(item.Message[1][0]).width;if(isYPercentage){var perTextWidth=this.Canvas.measureText("-00.00%").width;if(perTextWidth>textWidth)textWidth=perTextWidth;}}}else{textWidth=this.Canvas.measureText(item.Message[1]).width;}if(width.Right==null||width.Right<textWidth)width.Right=textWidth;}}if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=rightExtendWidth;if(IFrameSplitOperator.IsNumber(width.Left))width.Left+=this.YTextPadding[0]+leftExtendLineWidth;if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=this.YTextPadding[1]+rightExtendLineWidth;return{TextWidth:width};};this.ClearToolbar=function(){if(!this.ToolbarID)return;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;this.ChartBorder.UIElement.parentNode.removeChild(divToolbar);this.ToolbarRect=null;};this.HideToolbar=function(){if(!this.ToolbarID)return;this.ToolbarRect=null;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;if(divToolbar.style.display!='none')divToolbar.style.display='none';};}function MinuteFrame(){this.newMethod=AverageWidthFrame;//派生
2179
+ {textWidth=this.Canvas.measureText(item.Message[1][0]).width;if(isYPercentage){var perTextWidth=this.Canvas.measureText("-00.00%").width;if(perTextWidth>textWidth)textWidth=perTextWidth;}}}else{textWidth=this.Canvas.measureText(item.Message[1]).width;}if(width.Right==null||width.Right<textWidth)width.Right=textWidth;}}if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=rightExtendWidth;if(IFrameSplitOperator.IsNumber(width.Left))width.Left+=this.YTextPadding[0]+leftExtendLineWidth;if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=this.YTextPadding[1]+rightExtendLineWidth;return{TextWidth:width};};this.ClearToolbar=function(){if(!this.ToolbarID)return;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;this.ChartBorder.UIElement.parentNode.removeChild(divToolbar);this.ToolbarRect=null;};this.HideToolbar=function(){if(!this.ToolbarID)return;this.ToolbarRect=null;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;if(divToolbar.style.display!='none')divToolbar.style.display='none';};this.GetMainOverlayFrame=function(){if(!this.FrameData||!this.FrameData.SubFrameItem)return null;var subFrame=this.FrameData.SubFrameItem;var leftFrame=null,rightFrame=null;for(var i=0;i<subFrame.OverlayIndex.length;++i){var item=subFrame.OverlayIndex[i];var overlayFrame=item.Frame;if(overlayFrame.IsShowMainFrame==2)rightFrame=overlayFrame;else if(overlayFrame.IsShowMainFrame==1)leftFrame=overlayFrame;}if(!leftFrame&&!rightFrame)return null;return[leftFrame,rightFrame];};}function MinuteFrame(){this.newMethod=AverageWidthFrame;//派生
2177
2180
  this.newMethod();delete this.newMethod;this.ClassName="MinuteFrame";this.DataWidth=1*GetDevicePixelRatio();this.DistanceWidth=1*GetDevicePixelRatio();this.MinuteCount=243;//每天的分钟个数
2178
2181
  this.BeforeBGColor=g_JSChartResource.Minute.Before.BGColor;//集合竞价背景
2179
2182
  this.AfterBGColor=g_JSChartResource.Minute.After.BGColor;this.MultiDayBorderPen=g_JSChartResource.MultiDayBorderPen;this.CustomHorizontalInfo=[];this.RightFrame=null;//右侧多重坐标
@@ -2274,7 +2277,7 @@ this.IsShareY=false;//使用和主框架公用Y轴
2274
2277
  this.IsCalculateYMaxMin=true;//是否计算Y最大最小值
2275
2278
  this.Draw=function(){this.SplitXYCoordinate();if(this.IsShow){}this.SizeChange=false;this.XYSplit=false;};this.DrawToolbar=function(){return;};this.GetScaleTextWidth=function(){return{TextWidth:0};};//分割x,y轴坐标信息
2276
2279
  this.SplitXYCoordinate=function(){if(this.XYSplit==false)return;if(this.IsShareY)//和主图指标共享Y轴坐标
2277
- {this.HorizontalMax=this.MainFrame.HorizontalMax;this.HorizontalMin=this.MainFrame.HorizontalMin;this.HorizontalInfo=[];for(var i in this.MainFrame.HorizontalInfo){var item=this.MainFrame.HorizontalInfo[i];this.HorizontalInfo.push(item);}}else//独立Y轴坐标
2280
+ {this.HorizontalMax=this.MainFrame.HorizontalMax;this.HorizontalMin=this.MainFrame.HorizontalMin;this.HorizontalInfo=[];for(var i=0;i<this.MainFrame.HorizontalInfo.length;++i){var item=this.MainFrame.HorizontalInfo[i];this.HorizontalInfo.push(item);}}else//独立Y轴坐标
2278
2281
  {if(this.YSplitOperator!=null)this.YSplitOperator.Operator();}// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
2279
2282
  };}function OverlayMinuteHScreenFrame(){this.newMethod=MinuteHScreenFrame;//派生
2280
2283
  this.newMethod();delete this.newMethod;this.ClassName="OverlayMinuteHScreenFrame";this.IsShow=true;//坐标是否显示
@@ -2388,6 +2391,7 @@ this.Canvas.strokeStyle=item.Data.Line.Color;this.Canvas.beginPath();if(item.IsH
2388
2391
  this.GetVerticalXCache=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.VerticalInfo))return null;var dataWidth=this.DataWidth;var distanceWidth=this.DistanceWidth;var xPointCount=this.XPointCount;var setIndex=new _set2.default();for(var i=0;i<this.VerticalInfo.length;++i){var item=this.VerticalInfo[i];setIndex.add(item.Value);}if(this.IsHScreen){var border=this.ChartBorder.GetHScreenBorder();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 mapX=new _map2.default();for(var i=0;i<xPointCount;++i,xOffset+=dataWidth+distanceWidth){var left=xOffset;var right=xOffset+dataWidth;var x=left+(right-left)/2;if(setIndex.has(i)){mapX.set(i,x);}}return mapX;};}function OverlayKLineFrame(){this.newMethod=KLineFrame;//派生
2389
2392
  this.newMethod();delete this.newMethod;this.ClassName='OverlayKLineFrame';this.MainFrame=null;//主框架
2390
2393
  this.IsShareY=false;//使用和主框架公用Y轴
2394
+ this.IsShowMainFrame=0;//是否显示在主框架坐标上 1=左边 2=右边
2391
2395
  this.IsCalculateYMaxMin=true;//是否计算Y最大最小值
2392
2396
  this.RightOffset=50;this.PenBorder=g_JSChartResource.OverlayFrame.BolderPen;//'rgb(0,0,0)'
2393
2397
  this.IsShow=g_JSChartResource.KLineToolbar.IsShowOverlayFrame;//坐标是否显示
@@ -2403,8 +2407,7 @@ if(this.IsHScreen){var borderBottom=this.ChartBorder.Bottom;var isDrawRight=bord
2403
2407
  this.SyncMainHorizontalInfo=function(){if(!this.MainFrame)return false;if(this.MainFrame.YMaxMin){this.YMaxMin.Max=this.MainFrame.YMaxMin.Max;this.YMaxMin.Min=this.MainFrame.YMaxMin.Min;}this.HorizontalMax=this.MainFrame.HorizontalMax;this.HorizontalMin=this.MainFrame.HorizontalMin;this.HorizontalInfo=[];for(var i=0;i<this.MainFrame.HorizontalInfo.length;++i){var item=this.MainFrame.HorizontalInfo[i];this.HorizontalInfo.push(item);}this.CoordinateType=this.MainFrame.CoordinateType;return true;};//分割x,y轴坐标信息
2404
2408
  this.SplitXYCoordinate=function(){if(this.XYSplit==false)return;if(this.IsShareY)//和主图指标共享Y轴坐标
2405
2409
  {this.SyncMainHorizontalInfo();}else//独立Y轴坐标
2406
- {if(this.YSplitOperator!=null)this.YSplitOperator.Operator();}// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
2407
- };//画Y轴
2410
+ {if(this.YSplitOperator!=null)this.YSplitOperator.Operator();}};//画Y轴
2408
2411
  this.DrawHorizontal=function(){var border=this.ChartBorder.GetBorder();var left=border.Left;var right=border.Right;var bottom=border.Bottom;var top=this.ChartBorder.GetTopTitle();var borderRight=this.ChartBorder.Right;right+=this.RightOffset;var xLine=this.GetXHorizontal();if(IFrameSplitOperator.IsNumber(this.BlankWidth))right+=this.BlankWidth;var rightExtendText=null;//右侧文字设置
2409
2412
  if(IFrameSplitOperator.IsNonEmptyArray(this.YTextExtend)){rightExtendText=this.YTextExtend[1];}var leftLine=null,rightLine=null;if(IFrameSplitOperator.IsNonEmptyArray(this.YLineExtend)){rightLine=this.YLineExtend[1];leftLine=this.YLineExtend[0];}var rightWidth=this.GetHorizontalWidth();//右侧宽度
2410
2413
  var yPrev=null;//上一个坐标y的值
@@ -5035,12 +5038,13 @@ this.IsEnableDragY=function(){return true;};this.Reset=function()//重置
5035
5038
  coordinate.Message[1]=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}coordinate.Message[0]=coordinate.Message[1];if(this.IsShowLeftText==false)this.Frame.HorizontalInfo[i].Message[0]=null;if(this.IsShowRightText==false)this.Frame.HorizontalInfo[i].Message[1]=null;this.Frame.HorizontalInfo.push(coordinate);}}else{for(var i=0,value=splitData.Min;i<splitData.Count;++i,value+=splitData.Interval){var coordinate=new CoordinateInfo();this.Frame.HorizontalInfo[i]=coordinate;coordinate.Value=value;if(IFrameSplitOperator.IsNumber(this.LineType))coordinate.LineType=this.LineType;var text=this.FormatValueString(value);this.Frame.HorizontalInfo[i].Message[0]=this.Frame.HorizontalInfo[i].Message[1]=text;if(this.IsShowLeftText==false)this.Frame.HorizontalInfo[i].Message[0]=null;if(this.IsShowRightText==false)this.Frame.HorizontalInfo[i].Message[1]=null;//this.Frame.HorizontalInfo[i].Font="14px 微软雅黑";
5036
5039
  //this.Frame.HorizontalInfo[i].TextColor="rgb(100,0,200)";
5037
5040
  //this.Frame.HorizontalInfo[i].LineColor="rgb(220,220,220)";
5038
- }}this.FilterIgnoreYValue();this.CustomCoordinate();if(this.SplitType!=1)this.Frame.HorizontalInfo=this.Filter(this.Frame.HorizontalInfo,splitData.Max>0&&splitData.Min<0);this.RightFrameSplitY();this.CallAcutionSplitY(this.SplitCount,splitData);if(this.EnableRemoveZero)this.RemoveZero(this.Frame.HorizontalInfo);this.DynamicMessageText();this.Frame.HorizontalMax=splitData.Max;this.Frame.HorizontalMin=splitData.Min;if(this.EnableZoomUpDown==true&&!this.FixedYMaxMin)this.FixedYMaxMin={Max:splitData.Max,Min:splitData.Min};if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);}}};this.FormatValueString=function(value){var text;if(this.StringFormat==1)//手机端格式 如果有万,亿单位了 去掉小数
5041
+ }}this.FilterIgnoreYValue();this.CustomCoordinate();if(this.SplitType!=1)this.Frame.HorizontalInfo=this.Filter(this.Frame.HorizontalInfo,splitData.Max>0&&splitData.Min<0);this.RightFrameSplitY();this.MainOverlayFrameSplitY();//主图Y轴绑定叠加Y轴坐标
5042
+ this.CallAcutionSplitY(this.SplitCount,splitData);if(this.EnableRemoveZero)this.RemoveZero(this.Frame.HorizontalInfo);this.DynamicMessageText();this.Frame.HorizontalMax=splitData.Max;this.Frame.HorizontalMin=splitData.Min;if(this.EnableZoomUpDown==true&&!this.FixedYMaxMin)this.FixedYMaxMin={Max:splitData.Max,Min:splitData.Min};if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);}}};this.FormatValueString=function(value){var text;if(this.StringFormat==1)//手机端格式 如果有万,亿单位了 去掉小数
5039
5043
  {var floatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(value)&&Math.abs(value)>1000)floatPrecision=0;text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}else if(this.StringFormat==2)//原始数据输出
5040
5044
  {text=''+value.toFixed(this.FloatPrecision);}else{var absValue=Math.abs(value);if(absValue<0.0000000001){text=0;}else if(absValue<this.FLOATPRECISION_RANGE[this.FLOATPRECISION_RANGE.length-1]){text=value.toExponential(2).toString();}else{var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision);//数据比小数位数还小, 调整小数位数
5041
5045
  text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}}return text;};this.FilterIgnoreYValue=function(){if(!this.IgnoreYValue||this.IgnoreYValue.length<=0)return;var setValue=new _set2.default(this.IgnoreYValue);this.Frame.HorizontalInfo=this.Frame.HorizontalInfo.filter(function(item){return!setValue.has(item.Value);});};this.DynamicMessageText=function(){if(this.SplitType==2){for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];if(item.Message[0])item.Message[0]+='%';if(item.Message[1])item.Message[1]+='%';}}};this.CallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var aryCallAcution=this.GetCallAcutionSplitY(count,splitData);if(!aryCallAcution)return;for(var i=0;i<this.Frame.HorizontalInfo.length;++i)//把显示的数据迁移到 Message[2] Message[3]
5042
5046
  {var item=this.Frame.HorizontalInfo[i];if(aryCallAcution.IsBeforeData){item.Message[2]=item.Message[0];item.Message[0]=null;}if(aryCallAcution.IsAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){item.Message[3]=item.Message[1];item.Message[1]=null;}}//集合竞价的坐标插入最后
5043
- for(var i=0;i<aryCallAcution.HorizontalInfo.length;++i){var item=aryCallAcution.HorizontalInfo[i];this.Frame.HorizontalInfo.push(item);}};this.GetCallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var isBeforeData=this.IsBeforeData==true&&this.BeforeOpenData&&(this.BeforeOpenData.Ver==2.0||this.BeforeOpenData.Ver==3.0);var isAfterData=this.IsAfterData==true&&this.AfterCloseData&&(this.AfterCloseData.Ver==2.0||this.AfterCloseData.Ver==3.0);if(isBeforeData||isAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);if(isBeforeData)var intervalLeft=(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)/(count-1);if(isAfterData)var intervalRight=(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=8;if(isBeforeData){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);}if(isAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);}aryHorizontalInfo.push(item);}return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isBeforeData,IsAfterData:isAfterData};}var isMultiDayBeforeData=false;var intervalLeft=null;if(this.MultiDayBeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){isMultiDayBeforeData=true;var firstDayData=this.MultiDayBeforeOpenData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalLeft=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}var isMultiDayAfterData=false;var intervalRight=null;if(this.MultiDayAfterCloseData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){isMultiDayAfterData=true;var firstDayData=this.MultiDayAfterCloseData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalRight=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}if(isMultiDayBeforeData||isMultiDayAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=9;var isVaild=false;if(intervalLeft!=null){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);isVaild=true;}if(intervalRight!=null&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);isVaild=true;}if(isVaild)aryHorizontalInfo.push(item);}if(IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isMultiDayBeforeData,IsAfterData:isMultiDayAfterData};}return null;};this.RightFrameSplitY=function(){if(!this.Frame.RightFrame)return;var rightFrame=this.Frame.RightFrame;if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}};this.CustomCoordinate=function(){this.Frame.CustomHorizontalInfo=[];var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Custom))return;for(var i=0;i<this.Custom.length;++i){var item=this.Custom[i];if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_INDEX_VALUE_ID)//当前屏最后一个数据
5047
+ for(var i=0;i<aryCallAcution.HorizontalInfo.length;++i){var item=aryCallAcution.HorizontalInfo[i];this.Frame.HorizontalInfo.push(item);}};this.GetCallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var isBeforeData=this.IsBeforeData==true&&this.BeforeOpenData&&(this.BeforeOpenData.Ver==2.0||this.BeforeOpenData.Ver==3.0);var isAfterData=this.IsAfterData==true&&this.AfterCloseData&&(this.AfterCloseData.Ver==2.0||this.AfterCloseData.Ver==3.0);if(isBeforeData||isAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);if(isBeforeData)var intervalLeft=(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)/(count-1);if(isAfterData)var intervalRight=(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=8;if(isBeforeData){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);}if(isAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);}aryHorizontalInfo.push(item);}return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isBeforeData,IsAfterData:isAfterData};}var isMultiDayBeforeData=false;var intervalLeft=null;if(this.MultiDayBeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){isMultiDayBeforeData=true;var firstDayData=this.MultiDayBeforeOpenData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalLeft=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}var isMultiDayAfterData=false;var intervalRight=null;if(this.MultiDayAfterCloseData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){isMultiDayAfterData=true;var firstDayData=this.MultiDayAfterCloseData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalRight=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}if(isMultiDayBeforeData||isMultiDayAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=9;var isVaild=false;if(intervalLeft!=null){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);isVaild=true;}if(intervalRight!=null&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);isVaild=true;}if(isVaild)aryHorizontalInfo.push(item);}if(IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isMultiDayBeforeData,IsAfterData:isMultiDayAfterData};}return null;};this.RightFrameSplitY=function(){if(!this.Frame.RightFrame)return;var rightFrame=this.Frame.RightFrame;if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}};this.MainOverlayFrameSplitY=function(){if(!this.Frame.GetMainOverlayFrame)return;var aryOverlayFrame=this.Frame.GetMainOverlayFrame();if(!aryOverlayFrame)return;if(aryOverlayFrame[1]){var rightFrame=aryOverlayFrame[1];if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}}if(aryOverlayFrame[0]){var leftFrame=aryOverlayFrame[0];if(leftFrame.YSplitOperator)leftFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=leftFrame.GetYData(y);item.Message[0]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}}};this.CustomCoordinate=function(){this.Frame.CustomHorizontalInfo=[];var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Custom))return;for(var i=0;i<this.Custom.length;++i){var item=this.Custom[i];if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_INDEX_VALUE_ID)//当前屏最后一个数据
5044
5048
  {this.CustomLatestIndexDataCoordinate(item);}else if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.FIXED_VALUE_ID)//自定义刻度
5045
5049
  {this.CustomFixedCoordinate(item);}else if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_OVERLAY_INDEX_VALUE_ID)//叠加指标当前屏最后一个数据
5046
5050
  {this.CustomLatestOverlayIndexDataCoordinate(item);}}};this.CustomFixedCoordinate=function(option)//固定坐标刻度
@@ -6629,7 +6633,7 @@ LANGUAGE_TRADITIONAL_CHINESE_ID:2//繁体中文 TC
6629
6633
  指标列表 指标信息都在这里,不够后面再加字段
6630
6634
  */function JSIndexMap(){}JSIndexMap.Get=function(id){var indexMap=new _map2.default([['CJL',{IsMainIndex:false,Create:function Create(){return new JSIndex_CJL();}}],//期货指标
6631
6635
  ["OX",{IsMainIndex:false,Create:function Create(){return new JSIndex_OX();}}],["可视范围成交量分布图",{IsMainIndex:true,Create:function Create(option){return new VolProfileVisibleRangeIndex(option);}}]]);return indexMap.get(id);};// 定制K线计算
6632
- function KLineCustomCalulate(){this.DataMap=new _map2.default([["RenkoCalculate",{Create:function Create(){return new RenkoCalculate();}}],["HeikinAshiCalculate",{Create:function Create(){return new HeikinAshiCalculate();}}],["LineBreakCalcuate",{Create:function Create(){return new LineBreakCalcuate();}}],["KagiCalculate",{Create:function Create(){return new RenkoCalculate();}}]]);this.Create=function(name){if(!this.DataMap.has(name))return null;var item=this.DataMap.get(name);return item.Create();};}var g_KLineCustomCalulate=new KLineCustomCalulate();///////////////////////////////////////////////////////////////////
6636
+ function KLineCustomCalulate(){this.DataMap=new _map2.default([["RenkoCalculate",{Create:function Create(){return new RenkoCalculate();}}],["HeikinAshiCalculate",{Create:function Create(){return new HeikinAshiCalculate();}}],["LineBreakCalcuate",{Create:function Create(){return new LineBreakCalcuate();}}],["KagiCalculate",{Create:function Create(){return new KagiCalculate();}}]]);this.Create=function(name){if(!this.DataMap.has(name))return null;var item=this.DataMap.get(name);return item.Create();};}var g_KLineCustomCalulate=new KLineCustomCalulate();///////////////////////////////////////////////////////////////////
6633
6637
  // renko candle
6634
6638
  //
6635
6639
  function RenkoCalculate(){this.BrickSize=0.05;//固定大小
@@ -6646,7 +6650,10 @@ this.CalculateATR=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.Source
6646
6650
  var total=0;for(var i=0;i<aryData.length;++i){total+=aryData[i];}var brickSize=total/aryData.length;var value=brickSize.toFixed(this.FloatPrecision);this.ATR.BrickSize=parseFloat(value);};}/////////////////////////////////////////////////////////////////////////
6647
6651
  //kagi candle
6648
6652
  //
6649
- function KagiCalculate(){}//////////////////////////////////////////////////////////////////
6653
+ function KagiCalculate(){this.Symbol;this.SourceData;this.FloatPrecision=2;//品种小数位数
6654
+ this.ATR={Count:14};//使用ATR计算砖块大小
6655
+ this.RecvHistoryData=function(sourceData,option)//历史日线数据
6656
+ {this.Symbol=option.Symbol;this.SourceData=sourceData;this.FloatPrecision=GetfloatPrecision(this.Symbol);return this.Calculate(sourceData);};this.Calculate=function(sourceData){var bindData=new ChartData();bindData.Data=[];bindData.Right=sourceData.Right;bindData.Period=sourceData.Period;bindData.DataType=sourceData.DataType;bindData.Symbol=sourceData.symbol;if(!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data))return bindData;var periodCount=this.ATR.Count;var kItem=sourceData.Data[0];this.LastData=HistoryData.Copy(kItem);for(var i=1;i<sourceData.Data.length;){}};}//////////////////////////////////////////////////////////////////
6650
6657
  // HeikinAshi
6651
6658
  //
6652
6659
  function HeikinAshiCalculate(){this.SourceData;this.Symbol;this.FloatPrecision=2;//品种小数位数
@@ -6822,10 +6829,10 @@ frame.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.
6822
6829
  if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this19.GetKLineChart();};frame.YSplitOperator.HQChart=this;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
6823
6830
  border.BottomSpace=15*pixelTatio;//主图上下留空间
6824
6831
  border.TopSpace=15*pixelTatio;frame.GetEventCallback=function(id){return _this19.GetEventCallback(id);};}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this19.GetKLineChart();};frame.YSplitOperator.HQChart=this;//frame.IsLocked = true;
6825
- }frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.LanguageID=this.LanguageID;frame.XSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();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){var _this20=this;var border=new ChartBorder();border.UIElement=this.UIElement;var frameClassName="KLineFrame";if(this.ClassName=="KLineChartHScreenContainer")frameClassName="KLineHScreenFrame";var frame=g_ChartFrameFactory.Create(frameClassName,{ID:id});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
6832
+ }frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.LanguageID=this.LanguageID;frame.XSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=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){var _this20=this;var border=new ChartBorder();border.UIElement=this.UIElement;var frameClassName="KLineFrame";if(this.ClassName=="KLineChartHScreenContainer")frameClassName="KLineHScreenFrame";var frame=g_ChartFrameFactory.Create(frameClassName,{ID:id});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
6826
6833
  frame.GetEventCallback=function(id){return _this20.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
6827
6834
  if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;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线数据绑定
6828
- 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();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线画法
6835
+ 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线画法
6829
6836
  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;//绑定叠加
6830
6837
  this.TitlePaint[0].LanguageID=this.LanguageID;this.TitlePaint[0].HQChart=this;this.TitlePaint[0].GetEventCallback=function(id){return _this21.GetEventCallback(id);};};//绑定主图K线数据
6831
6838
  this.BindMainData=function(hisData,showCount){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;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;//动态标题
@@ -7192,7 +7199,7 @@ if(!indexInfo){indexCustom=JSIndexMap.Get(indexName);//定制指标
7192
7199
  if(!indexCustom){console.warn('[KLineChartContainer::CreateOverlayIndex] can not find index['+indexName+']');return null;}}}var subFrame=this.Frame.SubFrame[windowIndex];var overlayFrame=new OverlayIndexItem();if(obj.Identify)overlayFrame.Identify=obj.Identify;//由外部指定id
7193
7200
  //var frame= this.ClassName==='KLineChartHScreenContainer' ? new OverlayKLineHScreenFrame() : new OverlayKLineFrame();
7194
7201
  var frame=this.CreateOverlayFrame();frame.Canvas=this.Canvas;frame.MainFrame=subFrame.Frame;frame.ChartBorder=subFrame.Frame.ChartBorder;frame.GetEventCallback=function(id){return _this22.GetEventCallback(id);};if(obj.ShowRightText===true)frame.IsShow=true;else if(obj.ShowRightText===false)frame.IsShow=false;if(IFrameSplitOperator.IsBool(obj.ShowToolbar))frame.IsShowToolbar=obj.ShowToolbar;//废弃
7195
- if(IFrameSplitOperator.IsBool(obj.IsShareY))frame.IsShareY=obj.IsShareY;//if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
7202
+ if(IFrameSplitOperator.IsBool(obj.IsShareY))frame.IsShareY=obj.IsShareY;if(IFrameSplitOperator.IsNumber(obj.IsShowMainFrame))frame.IsShowMainFrame=obj.IsShowMainFrame;//if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
7196
7203
  if(IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin))frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin;//是否计算Y最大最小值
7197
7204
  frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=frame.ChartBorder;frame.YSplitOperator.SplitCount=subFrame.Frame.YSplitOperator.SplitCount;frame.YSplitOperator.GetEventCallback=function(id){return _this22.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this22.GetKLineChart();};frame.YSplitOperator.OverlayIndex=overlayFrame;frame.YSplitOperator.HQChart=this;frame.YSplitOperator.OverlayIdentify=overlayFrame.Identify;if(obj.Frame){var item=obj.Frame;if(item.Custom)frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsBool(item.IsYDrawMainFrame))frame.IsYDrawMainFrame=item.IsYDrawMainFrame;//自定义刻度绘制在主图上
7198
7205
  if(IFrameSplitOperator.IsBool(item.IsShowToolbar))frame.IsShowToolbar=item.IsShowToolbar;//是否显示工具栏
@@ -13046,7 +13053,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
13046
13053
  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);};}/********************************************************************************
13047
13054
  * 版本信息输出
13048
13055
  *
13049
- */var HQCHART_VERSION="1.1.13137";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13056
+ */var HQCHART_VERSION="1.1.13139";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13050
13057
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
13051
13058
  // BaseIndex:BaseIndex,
13052
13059
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13138",
3
+ "version": "1.1.13140",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -6870,13 +6870,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6870
6870
  {
6871
6871
  ID:key, Frame:frame, ChartPaint:[] , Max:null, Min:null,
6872
6872
  OverlayFrame:[], //共享坐标
6873
- SingleOverlay:[] //独立坐标
6873
+ SingleOverlay:[], //独立坐标
6874
+ MainOverlayFrame:[null, null], //叠加坐标在主坐标显示[0]=left [1]=right
6874
6875
  };
6875
6876
 
6876
6877
  for(var j=0;j<subItem.OverlayIndex.length;++j)
6877
6878
  {
6878
6879
  var overlayItem=subItem.OverlayIndex[j];
6879
6880
  var overlayFrame=overlayItem.Frame;
6881
+
6882
+ if (overlayFrame.IsShowMainFrame===1) item.MainOverlayFrame[0]= overlayFrame;
6883
+ else if (overlayFrame.IsShowMainFrame===2) item.MainOverlayFrame[1]= overlayFrame;
6884
+
6880
6885
  if (overlayFrame.IsShareY)
6881
6886
  {
6882
6887
  if (!overlayFrame.MainFrame) continue;
@@ -6892,7 +6897,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6892
6897
  {
6893
6898
  item.SingleOverlay.push(overlayItem);
6894
6899
  }
6895
-
6896
6900
  }
6897
6901
 
6898
6902
  mapFrame.set(key, item);
@@ -6977,6 +6981,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6977
6981
  item.OverlayFrame[j].XYSplit=true;
6978
6982
  }
6979
6983
 
6984
+ //叠加坐标显示在主图坐标 需要同步
6985
+ for(var i=0;i<item.MainOverlayFrame.length;++i)
6986
+ {
6987
+ var subItem=item.MainOverlayFrame[i];
6988
+ if (subItem) subItem.XYSplit=true;
6989
+ }
6990
+
6980
6991
  //独立坐标叠加指标
6981
6992
  for(var i=0;i<item.SingleOverlay.length;++i)
6982
6993
  {
@@ -9959,6 +9970,8 @@ function AverageWidthFrame()
9959
9970
  this.XTextExtend; //[0]=底部 { Align:0=默认(居中), 1=左对齐 }
9960
9971
  this.XLineExtend; //[0]=底部 { Mode:1, Color: } Mode=1 分割线 Mode=2短线
9961
9972
 
9973
+ this.FrameData={ SubFrameItem:null }; //窗口框架信息
9974
+
9962
9975
  //画图工具刻度
9963
9976
 
9964
9977
  this.DrawPicture={
@@ -11908,6 +11921,25 @@ function AverageWidthFrame()
11908
11921
 
11909
11922
  if (divToolbar.style.display!='none') divToolbar.style.display='none';
11910
11923
  }
11924
+
11925
+ this.GetMainOverlayFrame=function()
11926
+ {
11927
+ if (!this.FrameData || !this.FrameData.SubFrameItem) return null;
11928
+
11929
+ var subFrame=this.FrameData.SubFrameItem;
11930
+ var leftFrame=null, rightFrame=null;
11931
+ for(var i=0;i<subFrame.OverlayIndex.length;++i)
11932
+ {
11933
+ var item=subFrame.OverlayIndex[i];
11934
+ var overlayFrame=item.Frame;
11935
+ if (overlayFrame.IsShowMainFrame==2) rightFrame=overlayFrame;
11936
+ else if (overlayFrame.IsShowMainFrame==1) leftFrame=overlayFrame;
11937
+ }
11938
+
11939
+ if (!leftFrame && !rightFrame) return null;
11940
+
11941
+ return [leftFrame, rightFrame];
11942
+ }
11911
11943
  }
11912
11944
 
11913
11945
  function MinuteFrame()
@@ -14017,7 +14049,7 @@ function OverlayMinuteFrame()
14017
14049
  this.HorizontalMax=this.MainFrame.HorizontalMax;
14018
14050
  this.HorizontalMin=this.MainFrame.HorizontalMin;
14019
14051
  this.HorizontalInfo=[];
14020
- for(var i in this.MainFrame.HorizontalInfo)
14052
+ for(var i=0; i<this.MainFrame.HorizontalInfo.length; ++i)
14021
14053
  {
14022
14054
  var item=this.MainFrame.HorizontalInfo[i];
14023
14055
  this.HorizontalInfo.push(item);
@@ -14027,7 +14059,7 @@ function OverlayMinuteFrame()
14027
14059
  {
14028
14060
  if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
14029
14061
  }
14030
-
14062
+
14031
14063
  // if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
14032
14064
  }
14033
14065
  }
@@ -15361,6 +15393,7 @@ function OverlayKLineFrame()
15361
15393
 
15362
15394
  this.MainFrame=null; //主框架
15363
15395
  this.IsShareY=false; //使用和主框架公用Y轴
15396
+ this.IsShowMainFrame=0; //是否显示在主框架坐标上 1=左边 2=右边
15364
15397
  this.IsCalculateYMaxMin=true; //是否计算Y最大最小值
15365
15398
  this.RightOffset=50;
15366
15399
  this.PenBorder=g_JSChartResource.OverlayFrame.BolderPen; //'rgb(0,0,0)'
@@ -15571,8 +15604,6 @@ function OverlayKLineFrame()
15571
15604
  {
15572
15605
  if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
15573
15606
  }
15574
-
15575
- // if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
15576
15607
  }
15577
15608
 
15578
15609
  //画Y轴
@@ -45753,6 +45784,7 @@ function FrameSplitY()
45753
45784
  if (this.SplitType!=1) this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0));
45754
45785
 
45755
45786
  this.RightFrameSplitY();
45787
+ this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
45756
45788
  this.CallAcutionSplitY(this.SplitCount,splitData);
45757
45789
 
45758
45790
  if (this.EnableRemoveZero) this.RemoveZero(this.Frame.HorizontalInfo);
@@ -45973,6 +46005,41 @@ function FrameSplitY()
45973
46005
  }
45974
46006
  }
45975
46007
 
46008
+ this.MainOverlayFrameSplitY=function()
46009
+ {
46010
+ if (!this.Frame.GetMainOverlayFrame) return;
46011
+ var aryOverlayFrame=this.Frame.GetMainOverlayFrame();
46012
+ if (!aryOverlayFrame ) return;
46013
+
46014
+ if (aryOverlayFrame[1])
46015
+ {
46016
+ var rightFrame=aryOverlayFrame[1];
46017
+ if (rightFrame.YSplitOperator) rightFrame.YSplitOperator.Operator();
46018
+
46019
+ for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
46020
+ {
46021
+ var item=this.Frame.HorizontalInfo[i];
46022
+ var y=this.Frame.GetYFromData(item.Value);
46023
+ var yValue=rightFrame.GetYData(y);
46024
+ item.Message[1] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
46025
+ }
46026
+ }
46027
+
46028
+ if (aryOverlayFrame[0])
46029
+ {
46030
+ var leftFrame=aryOverlayFrame[0];
46031
+ if (leftFrame.YSplitOperator) leftFrame.YSplitOperator.Operator();
46032
+
46033
+ for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
46034
+ {
46035
+ var item=this.Frame.HorizontalInfo[i];
46036
+ var y=this.Frame.GetYFromData(item.Value);
46037
+ var yValue=leftFrame.GetYData(y);
46038
+ item.Message[0] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
46039
+ }
46040
+ }
46041
+ }
46042
+
45976
46043
  this.CustomCoordinate=function()
45977
46044
  {
45978
46045
  this.Frame.CustomHorizontalInfo=[];
@@ -65483,7 +65550,7 @@ function KLineCustomCalulate()
65483
65550
  ["RenkoCalculate", { Create:function() { return new RenkoCalculate(); } }],
65484
65551
  ["HeikinAshiCalculate", { Create:function() { return new HeikinAshiCalculate(); } }],
65485
65552
  ["LineBreakCalcuate", { Create:function() { return new LineBreakCalcuate(); } }],
65486
- ["KagiCalculate", { Create:function(){ return new RenkoCalculate(); } }]
65553
+ ["KagiCalculate", { Create:function(){ return new KagiCalculate(); } }]
65487
65554
  ]
65488
65555
  );
65489
65556
 
@@ -65666,7 +65733,38 @@ function RenkoCalculate()
65666
65733
  //
65667
65734
  function KagiCalculate()
65668
65735
  {
65736
+ this.Symbol;
65737
+ this.SourceData;
65738
+ this.FloatPrecision=2; //品种小数位数
65739
+ this.ATR={ Count:14 }; //使用ATR计算砖块大小
65740
+
65741
+ this.RecvHistoryData=function(sourceData, option) //历史日线数据
65742
+ {
65743
+ this.Symbol=option.Symbol;
65744
+ this.SourceData=sourceData;
65745
+ this.FloatPrecision=GetfloatPrecision(this.Symbol);
65746
+ return this.Calculate(sourceData);
65747
+ }
65748
+
65749
+ this.Calculate=function(sourceData)
65750
+ {
65751
+ var bindData=new ChartData();
65752
+ bindData.Data=[]
65753
+ bindData.Right=sourceData.Right;
65754
+ bindData.Period=sourceData.Period;
65755
+ bindData.DataType=sourceData.DataType;
65756
+ bindData.Symbol=sourceData.symbol;
65669
65757
 
65758
+ if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
65759
+
65760
+ var periodCount=this.ATR.Count;
65761
+
65762
+ var kItem=sourceData.Data[0];
65763
+ this.LastData=HistoryData.Copy(kItem);
65764
+ for(var i=1; i<sourceData.Data.length; )
65765
+ {
65766
+ }
65767
+ }
65670
65768
  }
65671
65769
 
65672
65770
  //////////////////////////////////////////////////////////////////
@@ -67046,6 +67144,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
67046
67144
  }
67047
67145
 
67048
67146
  var subFrame=new SubFrameItem();
67147
+ frame.FrameData.SubFrameItem=subFrame;
67049
67148
  subFrame.Frame=frame;
67050
67149
  if (i==0)
67051
67150
  subFrame.Height=20;
@@ -67112,6 +67211,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
67112
67211
  }
67113
67212
 
67114
67213
  var subFrame=new SubFrameItem();
67214
+ frame.FrameData.SubFrameItem=subFrame;
67115
67215
  subFrame.Frame=frame;
67116
67216
  subFrame.Height=10;
67117
67217
 
@@ -69631,6 +69731,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
69631
69731
  else if (obj.ShowRightText===false) frame.IsShow=false;
69632
69732
  if (IFrameSplitOperator.IsBool(obj.ShowToolbar)) frame.IsShowToolbar=obj.ShowToolbar; //废弃
69633
69733
  if (IFrameSplitOperator.IsBool(obj.IsShareY)) frame.IsShareY=obj.IsShareY;
69734
+ if (IFrameSplitOperator.IsNumber(obj.IsShowMainFrame)) frame.IsShowMainFrame=obj.IsShowMainFrame;
69634
69735
  //if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
69635
69736
  if (IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin)) frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin; //是否计算Y最大最小值
69636
69737
 
@@ -10762,13 +10762,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10762
10762
  {
10763
10763
  ID:key, Frame:frame, ChartPaint:[] , Max:null, Min:null,
10764
10764
  OverlayFrame:[], //共享坐标
10765
- SingleOverlay:[] //独立坐标
10765
+ SingleOverlay:[], //独立坐标
10766
+ MainOverlayFrame:[null, null], //叠加坐标在主坐标显示[0]=left [1]=right
10766
10767
  };
10767
10768
 
10768
10769
  for(var j=0;j<subItem.OverlayIndex.length;++j)
10769
10770
  {
10770
10771
  var overlayItem=subItem.OverlayIndex[j];
10771
10772
  var overlayFrame=overlayItem.Frame;
10773
+
10774
+ if (overlayFrame.IsShowMainFrame===1) item.MainOverlayFrame[0]= overlayFrame;
10775
+ else if (overlayFrame.IsShowMainFrame===2) item.MainOverlayFrame[1]= overlayFrame;
10776
+
10772
10777
  if (overlayFrame.IsShareY)
10773
10778
  {
10774
10779
  if (!overlayFrame.MainFrame) continue;
@@ -10784,7 +10789,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10784
10789
  {
10785
10790
  item.SingleOverlay.push(overlayItem);
10786
10791
  }
10787
-
10788
10792
  }
10789
10793
 
10790
10794
  mapFrame.set(key, item);
@@ -10869,6 +10873,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10869
10873
  item.OverlayFrame[j].XYSplit=true;
10870
10874
  }
10871
10875
 
10876
+ //叠加坐标显示在主图坐标 需要同步
10877
+ for(var i=0;i<item.MainOverlayFrame.length;++i)
10878
+ {
10879
+ var subItem=item.MainOverlayFrame[i];
10880
+ if (subItem) subItem.XYSplit=true;
10881
+ }
10882
+
10872
10883
  //独立坐标叠加指标
10873
10884
  for(var i=0;i<item.SingleOverlay.length;++i)
10874
10885
  {
@@ -13851,6 +13862,8 @@ function AverageWidthFrame()
13851
13862
  this.XTextExtend; //[0]=底部 { Align:0=默认(居中), 1=左对齐 }
13852
13863
  this.XLineExtend; //[0]=底部 { Mode:1, Color: } Mode=1 分割线 Mode=2短线
13853
13864
 
13865
+ this.FrameData={ SubFrameItem:null }; //窗口框架信息
13866
+
13854
13867
  //画图工具刻度
13855
13868
 
13856
13869
  this.DrawPicture={
@@ -15800,6 +15813,25 @@ function AverageWidthFrame()
15800
15813
 
15801
15814
  if (divToolbar.style.display!='none') divToolbar.style.display='none';
15802
15815
  }
15816
+
15817
+ this.GetMainOverlayFrame=function()
15818
+ {
15819
+ if (!this.FrameData || !this.FrameData.SubFrameItem) return null;
15820
+
15821
+ var subFrame=this.FrameData.SubFrameItem;
15822
+ var leftFrame=null, rightFrame=null;
15823
+ for(var i=0;i<subFrame.OverlayIndex.length;++i)
15824
+ {
15825
+ var item=subFrame.OverlayIndex[i];
15826
+ var overlayFrame=item.Frame;
15827
+ if (overlayFrame.IsShowMainFrame==2) rightFrame=overlayFrame;
15828
+ else if (overlayFrame.IsShowMainFrame==1) leftFrame=overlayFrame;
15829
+ }
15830
+
15831
+ if (!leftFrame && !rightFrame) return null;
15832
+
15833
+ return [leftFrame, rightFrame];
15834
+ }
15803
15835
  }
15804
15836
 
15805
15837
  function MinuteFrame()
@@ -17909,7 +17941,7 @@ function OverlayMinuteFrame()
17909
17941
  this.HorizontalMax=this.MainFrame.HorizontalMax;
17910
17942
  this.HorizontalMin=this.MainFrame.HorizontalMin;
17911
17943
  this.HorizontalInfo=[];
17912
- for(var i in this.MainFrame.HorizontalInfo)
17944
+ for(var i=0; i<this.MainFrame.HorizontalInfo.length; ++i)
17913
17945
  {
17914
17946
  var item=this.MainFrame.HorizontalInfo[i];
17915
17947
  this.HorizontalInfo.push(item);
@@ -17919,7 +17951,7 @@ function OverlayMinuteFrame()
17919
17951
  {
17920
17952
  if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
17921
17953
  }
17922
-
17954
+
17923
17955
  // if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
17924
17956
  }
17925
17957
  }
@@ -19253,6 +19285,7 @@ function OverlayKLineFrame()
19253
19285
 
19254
19286
  this.MainFrame=null; //主框架
19255
19287
  this.IsShareY=false; //使用和主框架公用Y轴
19288
+ this.IsShowMainFrame=0; //是否显示在主框架坐标上 1=左边 2=右边
19256
19289
  this.IsCalculateYMaxMin=true; //是否计算Y最大最小值
19257
19290
  this.RightOffset=50;
19258
19291
  this.PenBorder=g_JSChartResource.OverlayFrame.BolderPen; //'rgb(0,0,0)'
@@ -19463,8 +19496,6 @@ function OverlayKLineFrame()
19463
19496
  {
19464
19497
  if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
19465
19498
  }
19466
-
19467
- // if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
19468
19499
  }
19469
19500
 
19470
19501
  //画Y轴
@@ -49645,6 +49676,7 @@ function FrameSplitY()
49645
49676
  if (this.SplitType!=1) this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0));
49646
49677
 
49647
49678
  this.RightFrameSplitY();
49679
+ this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
49648
49680
  this.CallAcutionSplitY(this.SplitCount,splitData);
49649
49681
 
49650
49682
  if (this.EnableRemoveZero) this.RemoveZero(this.Frame.HorizontalInfo);
@@ -49865,6 +49897,41 @@ function FrameSplitY()
49865
49897
  }
49866
49898
  }
49867
49899
 
49900
+ this.MainOverlayFrameSplitY=function()
49901
+ {
49902
+ if (!this.Frame.GetMainOverlayFrame) return;
49903
+ var aryOverlayFrame=this.Frame.GetMainOverlayFrame();
49904
+ if (!aryOverlayFrame ) return;
49905
+
49906
+ if (aryOverlayFrame[1])
49907
+ {
49908
+ var rightFrame=aryOverlayFrame[1];
49909
+ if (rightFrame.YSplitOperator) rightFrame.YSplitOperator.Operator();
49910
+
49911
+ for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
49912
+ {
49913
+ var item=this.Frame.HorizontalInfo[i];
49914
+ var y=this.Frame.GetYFromData(item.Value);
49915
+ var yValue=rightFrame.GetYData(y);
49916
+ item.Message[1] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
49917
+ }
49918
+ }
49919
+
49920
+ if (aryOverlayFrame[0])
49921
+ {
49922
+ var leftFrame=aryOverlayFrame[0];
49923
+ if (leftFrame.YSplitOperator) leftFrame.YSplitOperator.Operator();
49924
+
49925
+ for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
49926
+ {
49927
+ var item=this.Frame.HorizontalInfo[i];
49928
+ var y=this.Frame.GetYFromData(item.Value);
49929
+ var yValue=leftFrame.GetYData(y);
49930
+ item.Message[0] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
49931
+ }
49932
+ }
49933
+ }
49934
+
49868
49935
  this.CustomCoordinate=function()
49869
49936
  {
49870
49937
  this.Frame.CustomHorizontalInfo=[];
@@ -69375,7 +69442,7 @@ function KLineCustomCalulate()
69375
69442
  ["RenkoCalculate", { Create:function() { return new RenkoCalculate(); } }],
69376
69443
  ["HeikinAshiCalculate", { Create:function() { return new HeikinAshiCalculate(); } }],
69377
69444
  ["LineBreakCalcuate", { Create:function() { return new LineBreakCalcuate(); } }],
69378
- ["KagiCalculate", { Create:function(){ return new RenkoCalculate(); } }]
69445
+ ["KagiCalculate", { Create:function(){ return new KagiCalculate(); } }]
69379
69446
  ]
69380
69447
  );
69381
69448
 
@@ -69558,7 +69625,38 @@ function RenkoCalculate()
69558
69625
  //
69559
69626
  function KagiCalculate()
69560
69627
  {
69628
+ this.Symbol;
69629
+ this.SourceData;
69630
+ this.FloatPrecision=2; //品种小数位数
69631
+ this.ATR={ Count:14 }; //使用ATR计算砖块大小
69632
+
69633
+ this.RecvHistoryData=function(sourceData, option) //历史日线数据
69634
+ {
69635
+ this.Symbol=option.Symbol;
69636
+ this.SourceData=sourceData;
69637
+ this.FloatPrecision=GetfloatPrecision(this.Symbol);
69638
+ return this.Calculate(sourceData);
69639
+ }
69640
+
69641
+ this.Calculate=function(sourceData)
69642
+ {
69643
+ var bindData=new ChartData();
69644
+ bindData.Data=[]
69645
+ bindData.Right=sourceData.Right;
69646
+ bindData.Period=sourceData.Period;
69647
+ bindData.DataType=sourceData.DataType;
69648
+ bindData.Symbol=sourceData.symbol;
69561
69649
 
69650
+ if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
69651
+
69652
+ var periodCount=this.ATR.Count;
69653
+
69654
+ var kItem=sourceData.Data[0];
69655
+ this.LastData=HistoryData.Copy(kItem);
69656
+ for(var i=1; i<sourceData.Data.length; )
69657
+ {
69658
+ }
69659
+ }
69562
69660
  }
69563
69661
 
69564
69662
  //////////////////////////////////////////////////////////////////
@@ -70938,6 +71036,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
70938
71036
  }
70939
71037
 
70940
71038
  var subFrame=new SubFrameItem();
71039
+ frame.FrameData.SubFrameItem=subFrame;
70941
71040
  subFrame.Frame=frame;
70942
71041
  if (i==0)
70943
71042
  subFrame.Height=20;
@@ -71004,6 +71103,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71004
71103
  }
71005
71104
 
71006
71105
  var subFrame=new SubFrameItem();
71106
+ frame.FrameData.SubFrameItem=subFrame;
71007
71107
  subFrame.Frame=frame;
71008
71108
  subFrame.Height=10;
71009
71109
 
@@ -73523,6 +73623,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
73523
73623
  else if (obj.ShowRightText===false) frame.IsShow=false;
73524
73624
  if (IFrameSplitOperator.IsBool(obj.ShowToolbar)) frame.IsShowToolbar=obj.ShowToolbar; //废弃
73525
73625
  if (IFrameSplitOperator.IsBool(obj.IsShareY)) frame.IsShareY=obj.IsShareY;
73626
+ if (IFrameSplitOperator.IsNumber(obj.IsShowMainFrame)) frame.IsShowMainFrame=obj.IsShowMainFrame;
73526
73627
  //if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
73527
73628
  if (IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin)) frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin; //是否计算Y最大最小值
73528
73629
 
@@ -131655,7 +131756,7 @@ function ScrollBarBGChart()
131655
131756
 
131656
131757
 
131657
131758
 
131658
- var HQCHART_VERSION="1.1.13137";
131759
+ var HQCHART_VERSION="1.1.13139";
131659
131760
 
131660
131761
  function PrintHQChartVersion()
131661
131762
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13137";
8
+ var HQCHART_VERSION="1.1.13139";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -10806,13 +10806,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10806
10806
  {
10807
10807
  ID:key, Frame:frame, ChartPaint:[] , Max:null, Min:null,
10808
10808
  OverlayFrame:[], //共享坐标
10809
- SingleOverlay:[] //独立坐标
10809
+ SingleOverlay:[], //独立坐标
10810
+ MainOverlayFrame:[null, null], //叠加坐标在主坐标显示[0]=left [1]=right
10810
10811
  };
10811
10812
 
10812
10813
  for(var j=0;j<subItem.OverlayIndex.length;++j)
10813
10814
  {
10814
10815
  var overlayItem=subItem.OverlayIndex[j];
10815
10816
  var overlayFrame=overlayItem.Frame;
10817
+
10818
+ if (overlayFrame.IsShowMainFrame===1) item.MainOverlayFrame[0]= overlayFrame;
10819
+ else if (overlayFrame.IsShowMainFrame===2) item.MainOverlayFrame[1]= overlayFrame;
10820
+
10816
10821
  if (overlayFrame.IsShareY)
10817
10822
  {
10818
10823
  if (!overlayFrame.MainFrame) continue;
@@ -10828,7 +10833,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10828
10833
  {
10829
10834
  item.SingleOverlay.push(overlayItem);
10830
10835
  }
10831
-
10832
10836
  }
10833
10837
 
10834
10838
  mapFrame.set(key, item);
@@ -10913,6 +10917,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10913
10917
  item.OverlayFrame[j].XYSplit=true;
10914
10918
  }
10915
10919
 
10920
+ //叠加坐标显示在主图坐标 需要同步
10921
+ for(var i=0;i<item.MainOverlayFrame.length;++i)
10922
+ {
10923
+ var subItem=item.MainOverlayFrame[i];
10924
+ if (subItem) subItem.XYSplit=true;
10925
+ }
10926
+
10916
10927
  //独立坐标叠加指标
10917
10928
  for(var i=0;i<item.SingleOverlay.length;++i)
10918
10929
  {
@@ -13895,6 +13906,8 @@ function AverageWidthFrame()
13895
13906
  this.XTextExtend; //[0]=底部 { Align:0=默认(居中), 1=左对齐 }
13896
13907
  this.XLineExtend; //[0]=底部 { Mode:1, Color: } Mode=1 分割线 Mode=2短线
13897
13908
 
13909
+ this.FrameData={ SubFrameItem:null }; //窗口框架信息
13910
+
13898
13911
  //画图工具刻度
13899
13912
 
13900
13913
  this.DrawPicture={
@@ -15844,6 +15857,25 @@ function AverageWidthFrame()
15844
15857
 
15845
15858
  if (divToolbar.style.display!='none') divToolbar.style.display='none';
15846
15859
  }
15860
+
15861
+ this.GetMainOverlayFrame=function()
15862
+ {
15863
+ if (!this.FrameData || !this.FrameData.SubFrameItem) return null;
15864
+
15865
+ var subFrame=this.FrameData.SubFrameItem;
15866
+ var leftFrame=null, rightFrame=null;
15867
+ for(var i=0;i<subFrame.OverlayIndex.length;++i)
15868
+ {
15869
+ var item=subFrame.OverlayIndex[i];
15870
+ var overlayFrame=item.Frame;
15871
+ if (overlayFrame.IsShowMainFrame==2) rightFrame=overlayFrame;
15872
+ else if (overlayFrame.IsShowMainFrame==1) leftFrame=overlayFrame;
15873
+ }
15874
+
15875
+ if (!leftFrame && !rightFrame) return null;
15876
+
15877
+ return [leftFrame, rightFrame];
15878
+ }
15847
15879
  }
15848
15880
 
15849
15881
  function MinuteFrame()
@@ -17953,7 +17985,7 @@ function OverlayMinuteFrame()
17953
17985
  this.HorizontalMax=this.MainFrame.HorizontalMax;
17954
17986
  this.HorizontalMin=this.MainFrame.HorizontalMin;
17955
17987
  this.HorizontalInfo=[];
17956
- for(var i in this.MainFrame.HorizontalInfo)
17988
+ for(var i=0; i<this.MainFrame.HorizontalInfo.length; ++i)
17957
17989
  {
17958
17990
  var item=this.MainFrame.HorizontalInfo[i];
17959
17991
  this.HorizontalInfo.push(item);
@@ -17963,7 +17995,7 @@ function OverlayMinuteFrame()
17963
17995
  {
17964
17996
  if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
17965
17997
  }
17966
-
17998
+
17967
17999
  // if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
17968
18000
  }
17969
18001
  }
@@ -19297,6 +19329,7 @@ function OverlayKLineFrame()
19297
19329
 
19298
19330
  this.MainFrame=null; //主框架
19299
19331
  this.IsShareY=false; //使用和主框架公用Y轴
19332
+ this.IsShowMainFrame=0; //是否显示在主框架坐标上 1=左边 2=右边
19300
19333
  this.IsCalculateYMaxMin=true; //是否计算Y最大最小值
19301
19334
  this.RightOffset=50;
19302
19335
  this.PenBorder=g_JSChartResource.OverlayFrame.BolderPen; //'rgb(0,0,0)'
@@ -19507,8 +19540,6 @@ function OverlayKLineFrame()
19507
19540
  {
19508
19541
  if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
19509
19542
  }
19510
-
19511
- // if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
19512
19543
  }
19513
19544
 
19514
19545
  //画Y轴
@@ -49689,6 +49720,7 @@ function FrameSplitY()
49689
49720
  if (this.SplitType!=1) this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0));
49690
49721
 
49691
49722
  this.RightFrameSplitY();
49723
+ this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
49692
49724
  this.CallAcutionSplitY(this.SplitCount,splitData);
49693
49725
 
49694
49726
  if (this.EnableRemoveZero) this.RemoveZero(this.Frame.HorizontalInfo);
@@ -49909,6 +49941,41 @@ function FrameSplitY()
49909
49941
  }
49910
49942
  }
49911
49943
 
49944
+ this.MainOverlayFrameSplitY=function()
49945
+ {
49946
+ if (!this.Frame.GetMainOverlayFrame) return;
49947
+ var aryOverlayFrame=this.Frame.GetMainOverlayFrame();
49948
+ if (!aryOverlayFrame ) return;
49949
+
49950
+ if (aryOverlayFrame[1])
49951
+ {
49952
+ var rightFrame=aryOverlayFrame[1];
49953
+ if (rightFrame.YSplitOperator) rightFrame.YSplitOperator.Operator();
49954
+
49955
+ for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
49956
+ {
49957
+ var item=this.Frame.HorizontalInfo[i];
49958
+ var y=this.Frame.GetYFromData(item.Value);
49959
+ var yValue=rightFrame.GetYData(y);
49960
+ item.Message[1] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
49961
+ }
49962
+ }
49963
+
49964
+ if (aryOverlayFrame[0])
49965
+ {
49966
+ var leftFrame=aryOverlayFrame[0];
49967
+ if (leftFrame.YSplitOperator) leftFrame.YSplitOperator.Operator();
49968
+
49969
+ for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
49970
+ {
49971
+ var item=this.Frame.HorizontalInfo[i];
49972
+ var y=this.Frame.GetYFromData(item.Value);
49973
+ var yValue=leftFrame.GetYData(y);
49974
+ item.Message[0] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
49975
+ }
49976
+ }
49977
+ }
49978
+
49912
49979
  this.CustomCoordinate=function()
49913
49980
  {
49914
49981
  this.Frame.CustomHorizontalInfo=[];
@@ -69419,7 +69486,7 @@ function KLineCustomCalulate()
69419
69486
  ["RenkoCalculate", { Create:function() { return new RenkoCalculate(); } }],
69420
69487
  ["HeikinAshiCalculate", { Create:function() { return new HeikinAshiCalculate(); } }],
69421
69488
  ["LineBreakCalcuate", { Create:function() { return new LineBreakCalcuate(); } }],
69422
- ["KagiCalculate", { Create:function(){ return new RenkoCalculate(); } }]
69489
+ ["KagiCalculate", { Create:function(){ return new KagiCalculate(); } }]
69423
69490
  ]
69424
69491
  );
69425
69492
 
@@ -69602,7 +69669,38 @@ function RenkoCalculate()
69602
69669
  //
69603
69670
  function KagiCalculate()
69604
69671
  {
69672
+ this.Symbol;
69673
+ this.SourceData;
69674
+ this.FloatPrecision=2; //品种小数位数
69675
+ this.ATR={ Count:14 }; //使用ATR计算砖块大小
69676
+
69677
+ this.RecvHistoryData=function(sourceData, option) //历史日线数据
69678
+ {
69679
+ this.Symbol=option.Symbol;
69680
+ this.SourceData=sourceData;
69681
+ this.FloatPrecision=GetfloatPrecision(this.Symbol);
69682
+ return this.Calculate(sourceData);
69683
+ }
69684
+
69685
+ this.Calculate=function(sourceData)
69686
+ {
69687
+ var bindData=new ChartData();
69688
+ bindData.Data=[]
69689
+ bindData.Right=sourceData.Right;
69690
+ bindData.Period=sourceData.Period;
69691
+ bindData.DataType=sourceData.DataType;
69692
+ bindData.Symbol=sourceData.symbol;
69605
69693
 
69694
+ if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
69695
+
69696
+ var periodCount=this.ATR.Count;
69697
+
69698
+ var kItem=sourceData.Data[0];
69699
+ this.LastData=HistoryData.Copy(kItem);
69700
+ for(var i=1; i<sourceData.Data.length; )
69701
+ {
69702
+ }
69703
+ }
69606
69704
  }
69607
69705
 
69608
69706
  //////////////////////////////////////////////////////////////////
@@ -70982,6 +71080,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
70982
71080
  }
70983
71081
 
70984
71082
  var subFrame=new SubFrameItem();
71083
+ frame.FrameData.SubFrameItem=subFrame;
70985
71084
  subFrame.Frame=frame;
70986
71085
  if (i==0)
70987
71086
  subFrame.Height=20;
@@ -71048,6 +71147,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71048
71147
  }
71049
71148
 
71050
71149
  var subFrame=new SubFrameItem();
71150
+ frame.FrameData.SubFrameItem=subFrame;
71051
71151
  subFrame.Frame=frame;
71052
71152
  subFrame.Height=10;
71053
71153
 
@@ -73567,6 +73667,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
73567
73667
  else if (obj.ShowRightText===false) frame.IsShow=false;
73568
73668
  if (IFrameSplitOperator.IsBool(obj.ShowToolbar)) frame.IsShowToolbar=obj.ShowToolbar; //废弃
73569
73669
  if (IFrameSplitOperator.IsBool(obj.IsShareY)) frame.IsShareY=obj.IsShareY;
73670
+ if (IFrameSplitOperator.IsNumber(obj.IsShowMainFrame)) frame.IsShowMainFrame=obj.IsShowMainFrame;
73570
73671
  //if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
73571
73672
  if (IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin)) frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin; //是否计算Y最大最小值
73572
73673
 
@@ -134219,7 +134320,7 @@ function HQChartScriptWorker()
134219
134320
 
134220
134321
 
134221
134322
 
134222
- var HQCHART_VERSION="1.1.13137";
134323
+ var HQCHART_VERSION="1.1.13139";
134223
134324
 
134224
134325
  function PrintHQChartVersion()
134225
134326
  {