hqchart 1.1.12760 → 1.1.12771

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.
@@ -1790,7 +1790,9 @@ var bDraw=false;if(drawPictureActive.Select.Guid&&drawPictureActive.Select.Chart
1790
1790
  this.SelectChartDrawPicture.DragInfo={Click:{X:e.clientX,Y:e.clientY}};}else{this.CurrentChartDrawPicture=null;this.SelectChartDrawPicture=null;}var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_DRAWPICTURE);//选中画图工具事件
1791
1791
  if(event&&event.Callback){var sendData={DrawPicture:drawPictrueData.ChartDrawPicture};event.Callback(event,sendData,this);}else{this.OnSelectChartPicture(drawPictrueData.ChartDrawPicture);//选中画图工具事件
1792
1792
  }}else{if(this.ClickChartTimer!=null){clearTimeout(this.ClickChartTimer);this.ClickChartTimer=null;}var self=this;var ptClick={X:this.ClickDownPoint.X,Y:this.ClickDownPoint.Y};this.ClickChartTimer=setTimeout(function(){self.TryClickPaintEvent(JSCHART_EVENT_ID.ON_CLICK_CHART_PAINT,ptClick,e);},250);var bSelectedChartChanged=false;if(this.SelectedChart.EnableSelected){var selectChart=this.PtInChart(x,y);if(selectChart){if(this.SelectedChart.Selected.Identify!=selectChart.Identify){this.SelectedChart.Selected.Identify=selectChart.Identify;this.SelectedChart.Selected.Chart=selectChart.Chart;bSelectedChartChanged=true;}if(this.EnableIndexChartDrag){this.IndexChartDrag={SelectedChart:selectChart,LastMove:{X:x,Y:y},Click:{X:x,Y:y}};this.IndexChartDrag.Info=this.GetSelectedChartInfo(selectChart);if(this.IndexChartDrag.Info)this.IndexChartDrag.Info.FrameID=this.Frame.PtInFrame(x,y);}}else{if(this.SelectedChart.Selected.Identify){this.SelectedChart.Selected.Identify=null;this.SelectedChart.Selected.Chart=null;bSelectedChartChanged=true;}}}else{if(this.SelectedChart.Selected.Identify){this.SelectedChart.Selected.Identify=null;bSelectedChartChanged=true;}}if(drawPictureActive.Select.Guid!=null&&this.SelectChartDrawPicture==null||bSelectedChartChanged){var drawType=0;if(drawPictureActive.Select.Guid&&drawPictureActive.Select.Chart&&drawPictureActive.Select.Chart.IsDrawMain)drawType=1;if(bSelectedChartChanged){var chart=selectedChart.Chart;if(chart&&chart.SetSelectedStatus){chart.SetSelectedStatus(0);drawType=1;}chart=this.SelectedChart.Selected.Chart;if(chart&&chart.SetSelectedStatus){chart.SetSelectedStatus(1);drawType=1;}}if(drawType==1)this.Draw();else this.DrawDynamicInfo();}else if(bDrawDynamicInfo){this.DrawDynamicInfo();}}}document.onmousemove=function(e){_this7.DocOnMouseMove(e);};document.onmouseup=function(e){_this7.DocOnMouseUp(e);};};this.DocOnMouseMove=function(e){//加载数据中,禁用鼠标事件
1793
- if(this.ChartSplashPaint&&this.IsEnableSplash==true)return;var drag=this.MouseDrag;if(!drag)return;var moveSetp=Math.abs(drag.LastMove.X-e.clientX);var moveSetpY=Math.abs(drag.LastMove.Y-e.clientY);var isDragSelectRect=this.RectSelectDrag&&this.RectSelectDrag.Index>=0;var isDragSubSelectRect=this.RectSelectDrag&&this.RectSelectDrag.Type==4;if(drag.CurrentMove){drag.CurrentMove.X=e.clientX;drag.CurrentMove.Y=e.clientY;}if(this.BorderDrag&&this.BorderDrag.Index>=0){if(Math.abs(drag.LastMove.Y-e.clientY)<5)return;var yMove=e.clientY-drag.LastMove.Y;this.OnMoveFromeBorder(this.BorderDrag.Index,yMove);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.YDrag&&this.YDrag.Index>=0){if(moveSetpY<5)return;var yMove=e.clientY-drag.LastMove.Y;//this.UIElement.style.cursor="n-resize";
1793
+ if(this.ChartSplashPaint&&this.IsEnableSplash==true)return;var drag=this.MouseDrag;if(!drag)return;var moveSetp=Math.abs(drag.LastMove.X-e.clientX);var moveSetpY=Math.abs(drag.LastMove.Y-e.clientY);var isDragSelectRect=this.RectSelectDrag&&this.RectSelectDrag.Index>=0;var isDragSubSelectRect=this.RectSelectDrag&&this.RectSelectDrag.Type==4;if(drag.CurrentMove){drag.CurrentMove.X=e.clientX;drag.CurrentMove.Y=e.clientY;}if(this.BorderDrag&&this.BorderDrag.Index>=0)//边框拖动
1794
+ {if(Math.abs(drag.LastMove.Y-e.clientY)<5)return;var yMove=e.clientY-drag.LastMove.Y;this.OnMoveFromeBorder(this.BorderDrag.Index,yMove);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.YDrag&&this.YDrag.Index>=0)//Y轴缩放
1795
+ {if(moveSetpY<5)return;var yMove=e.clientY-drag.LastMove.Y;//this.UIElement.style.cursor="n-resize";
1794
1796
  JSConsole.Chart.Log("[JSChartContainer::DocOnMouseMove] YDrag ",this.YDrag,yMove);this.OnZoomUpDownFrameY(this.YDrag,yMove);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.IndexChartDrag&&this.IndexChartDrag.SelectedChart){if(Math.abs(drag.LastMove.Y-e.clientY)<2&&Math.abs(drag.LastMove.X-e.clientX)<2)return;var chartMove=this.GetExtendChartByClassName("DragMovePaint");if(chartMove&&chartMove.Chart){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;chartMove.Chart.Point={X:x,Y:y};chartMove.Chart.IsShow=true;chartMove.Chart.Info=this.IndexChartDrag.Info;this.DrawDynamicInfo();}this.IndexChartDrag.LastMove.X=x;this.IndexChartDrag.LastMove.Y=y;drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.CustomChartDrag){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var sendData={X:x,Y:y,e:e,ChartDrag:this.CustomChartDrag,Drag:drag};this.TryDragMove_CustomChartDrag(sendData);}else if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==1||drawPicture.Status==2){if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<5)return;if(this.SetChartDrawPictureSecondPoint(e.clientX,e.clientY)){this.DrawDynamicInfo();}}else if(drawPicture.Status==3){if(this.SetChartDrawPictureThirdPoint(e.clientX,e.clientY)){this.DrawDynamicInfo();}}else if(drawPicture.Status==20)//画图工具移动
1795
1797
  {if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<1)return;if(this.SelectChartDrawPicture){if(this.SelectChartDrawPicture.EnableCtrlMove){if(!e.ctrlKey)return;}}if(this.SelectChartDrawPicture&&this.SelectChartDrawPicture.DragInfo)this.SelectChartDrawPicture.DragInfo.Move={X:e.clientX,Y:e.client};if(this.MoveChartDrawPicture(e.clientX-drag.LastMove.X,e.clientY-drag.LastMove.Y,false,drag)){this.DrawDynamicInfo();}}drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.DragMode==1||isDragSelectRect||isDragSubSelectRect)//数据上下左右拖拽
1796
1798
  {this.OnDragMode_One({X:moveSetp,Y:moveSetpY},e);}else if(this.DragMode==2)//区间选择
@@ -2580,9 +2582,10 @@ this.Buttons=[];this.CloseButton=CloneData(g_JSChartResource.Buttons.CloseOverla
2580
2582
  this.TitleColor=g_JSChartResource.OverlayFrame.TitleColor;this.TitleFont=g_JSChartResource.OverlayFrame.TitleFont;}};this.Draw=function(){this.Buttons=[];if(this.ChartBorder.IsShowTitleOnly)return;this.SplitXYCoordinate();if(this.IsShow){this.DrawVertical();this.DrawHorizontal();this.DrawTitle();}this.SizeChange=false;this.XYSplit=false;this.XSplit=false;};//Y轴刻度线 x坐标
2581
2583
  this.GetXHorizontal=function(){var border=this.ChartBorder.GetBorder();var x=border.Right;x+=this.RightOffset;if(this.Style==1){}else{x+=this.BlankWidth;}return x;};this.GetHorizontalWidth=function(){var width=null;if(this.YRightTextInfo&&IFrameSplitOperator.IsNumber(this.TextWidthIndex))width=this.YRightTextInfo.AryOverlayWidth[this.TextWidthIndex];return width;};this.DrawTitle=function()//画标题
2582
2584
  {if(!this.IsShowTitle)return;if(!this.Title)return;var border=this.ChartBorder.GetBorder();var top=this.ChartBorder.GetTopTitle();var bottom=border.Bottom;var xText=this.GetXHorizontal();var leftLine=null,rightLine=null;if(IFrameSplitOperator.IsNonEmptyArray(this.YLineExtend)){rightLine=this.YLineExtend[1];leftLine=this.YLineExtend[0];}if(this.Style==1){this.Canvas.textBaseline="bottom";if(rightLine&&rightLine.Width>0)xText+=rightLine.Width+1;else xText+=1;}else{this.Canvas.textBaseline="top";if(leftLine&&leftLine.Width>0)xText-=leftLine.Width;else xText-=2;}var yText=top+(bottom-top)/2;this.Canvas.fillStyle=this.TitleColor;this.Canvas.font=this.TitleFont;this.Canvas.textAlign="center";this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(this.Title,0,0);this.Canvas.restore();};this.GetScaleTextWidth=function(){if(!this.IsShow)return null;var border=this.ChartBorder.GetBorder();var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
2583
- if(this.IsHScreen){var borderBottom=this.ChartBorder.Bottom;var isDrawRight=borderBottom>10*pixelTatio&&this.IsShowYText[1]===true&&this.YTextPosition[1]!=2;}else{var borderRight=this.ChartBorder.Right;var isDrawRight=borderRight>10&&this.IsShowYText[1]===true&&this.YTextPosition[1]!=2;}if(!isDrawRight)return null;var width={Left:null,Right:0};for(var i=0;i<this.HorizontalInfo.length;++i){var textWidth=null;var item=this.HorizontalInfo[i];if(!item)continue;if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;textWidth=this.Canvas.measureText(item.Message[1]).width;if(this.YTextPadding&&IFrameSplitOperator.IsNumber(this.YTextPadding[1]))textWidth+=this.YTextPadding[1];if(width.Right<textWidth)width.Right=textWidth;}}if(IFrameSplitOperator.IsNonEmptyArray(this.YLineExtend)){var line=this.YLineExtend[1];if(line&&line.Width>0)width.Right+=line.Width;}return{TextWidth:width};};//分割x,y轴坐标信息
2585
+ if(this.IsHScreen){var borderBottom=this.ChartBorder.Bottom;var isDrawRight=borderBottom>10*pixelTatio&&this.IsShowYText[1]===true&&this.YTextPosition[1]!=2;}else{var borderRight=this.ChartBorder.Right;var isDrawRight=borderRight>10&&this.IsShowYText[1]===true&&this.YTextPosition[1]!=2;}if(!isDrawRight)return null;var width={Left:null,Right:0};for(var i=0;i<this.HorizontalInfo.length;++i){var textWidth=null;var item=this.HorizontalInfo[i];if(!item)continue;if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;textWidth=this.Canvas.measureText(item.Message[1]).width;if(this.YTextPadding&&IFrameSplitOperator.IsNumber(this.YTextPadding[1]))textWidth+=this.YTextPadding[1];if(width.Right<textWidth)width.Right=textWidth;}}if(IFrameSplitOperator.IsNonEmptyArray(this.YLineExtend)){var line=this.YLineExtend[1];if(line&&line.Width>0)width.Right+=line.Width;}return{TextWidth:width};};//同步主图坐标
2586
+ 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轴坐标信息
2584
2587
  this.SplitXYCoordinate=function(){if(this.XYSplit==false)return;if(this.IsShareY)//和主图指标共享Y轴坐标
2585
- {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);}this.CoordinateType=this.MainFrame.CoordinateType;}else//独立Y轴坐标
2588
+ {this.SyncMainHorizontalInfo();}else//独立Y轴坐标
2586
2589
  {if(this.YSplitOperator!=null)this.YSplitOperator.Operator();}// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
2587
2590
  };//画Y轴
2588
2591
  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;//右侧文字设置
@@ -2834,7 +2837,8 @@ this.DrawHorizontal=function(){}/*
2834
2837
  this.UpdateFrameMaxMin=function()//调整坐标最大 最小值
2835
2838
  {var value={Max:null,Min:null};if(this.Frame.IsShareY)//共享Y轴坐标
2836
2839
  {this.Frame.XYSplit=true;return;}if(this.Frame.YSpecificMaxMin)//固定坐标
2837
- {value.Max=this.Frame.YSpecificMaxMin.Max;value.Min=this.Frame.YSpecificMaxMin.Min;}else{for(var i in this.ChartPaint){var paint=this.ChartPaint[i];var range=paint.GetMaxMin();if(IFrameSplitOperator.IsNumber(range.Max)){if(value.Max==null||value.Max<range.Max)value.Max=range.Max;}if(IFrameSplitOperator.IsNumber(range.Min)){if(value.Min==null||value.Min>range.Min)value.Min=range.Min;}}}if(value.Max!=null&&value.Min!=null){this.Frame.HorizontalMax=value.Max;this.Frame.HorizontalMin=value.Min;this.Frame.XYSplit=true;}};}//行情框架
2840
+ {value.Max=this.Frame.YSpecificMaxMin.Max;value.Min=this.Frame.YSpecificMaxMin.Min;}else{for(var i=0;i<this.ChartPaint.length;++i){var paint=this.ChartPaint[i];if(paint.IsShow==false)continue;//隐藏的图形不计算
2841
+ var range=paint.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(IFrameSplitOperator.IsNumber(range.Max)){if(value.Max==null||value.Max<range.Max)value.Max=range.Max;}if(IFrameSplitOperator.IsNumber(range.Min)){if(value.Min==null||value.Min>range.Min)value.Min=range.Min;}}}if(!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Max)||this.Frame.YMaxMin.Max!=value.Max){this.Frame.YMaxMin.Max=value.Max;this.Frame.XYSplit=true;}if(!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Min)||this.Frame.YMaxMin.Min!=value.Min){this.Frame.YMaxMin.Min=value.Min;this.Frame.XYSplit=true;}if(this.Frame.XYSplit){var max=10,min=0;if(value.Max!=null)max=value.Max;if(value.Min!=null)min=value.Min;this.Frame.HorizontalMax=max;this.Frame.HorizontalMin=min;}else{this.Frame.XYSplit=true;}};}//行情框架
2838
2842
  function HQTradeFrame(){this.SubFrame=new Array();//SubFrameItem 数组
2839
2843
  this.SizeChange=true;//大小是否改变
2840
2844
  this.ChartBorder;this.Canvas;//画布
@@ -2850,7 +2854,7 @@ this.FixedRightWidth={Main:60,Overlay:80};this.ZoomWindowsInfo=null;//附图指
2850
2854
  this.ZoomStartWindowIndex=1;//允许缩放窗口起始位置
2851
2855
  this.GetExtendChartByClassName;this.GetEventCallback;this.OnMoveFromeBorder=function(index,yMove){if(this.SubFrame.length<=0)return false;var topFrame=this.SubFrame[index];var bottomFrame=null;for(var i=index+1;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height>0){bottomFrame=item;break;}}if(!topFrame||!bottomFrame)return false;var bottomBackup=topFrame.Frame.ChartBorder.Bottom;var topBackup=bottomFrame.Frame.ChartBorder.Top;topFrame.Frame.ChartBorder.Bottom-=yMove;bottomFrame.Frame.ChartBorder.Top+=yMove;var height=topFrame.Frame.ChartBorder.GetHeightEx();var height2=bottomFrame.Frame.ChartBorder.GetHeightEx();//缩小的时候 小于最小高度 不处理
2852
2856
  if(height<this.MinSubFrameHeight&&yMove<0||height2<this.MinSubFrameHeight&&yMove>0){topFrame.Frame.ChartBorder.Bottom=bottomBackup;bottomFrame.Frame.ChartBorder.Top=topBackup;return false;}return true;};this.ReDrawToolbar=function(){for(var i in this.SubFrame){this.SubFrame[i].Frame.ReDrawToolbar=true;}};this.SetFrameBorderSizeChange=function(){var firstFrame=this.SubFrame[0];if(!firstFrame||!firstFrame.Frame)return;var splitOper=firstFrame.Frame.YSplitOperator;if(!splitOper)return;if(splitOper.CoordinateType==2)//对数坐标 需要重新计算Y轴分割
2853
- {firstFrame.Frame.XYSplit=true;}};this.CancelZoomUpDownFrameY=function(obj){var index=obj.Index;if(this.SubFrame.length<=0)return false;if(!this.SubFrame[index])return false;var subFrame=this.SubFrame[index];var frame=subFrame.Frame;var splitOper=frame.YSplitOperator;if(splitOper.FixedYMaxMin){splitOper.FixedYMaxMin=null;splitOper.EnableZoomUpDown=false;frame.XYSplit=true;for(var i in subFrame.OverlayIndex){var item=subFrame.OverlayIndex[i];if(item.Frame.IsShareY)item.Frame.XYSplit=true;}JSConsole.Chart.Log('[HQTradeFrame::CancelZoomUpDownFrameY]');return true;}return false;};this.OnZoomUpDownFrameY=function(obj,yMove){var index=obj.Index;if(this.SubFrame.length<=0)return false;if(!this.SubFrame[index])return false;var subFrame=this.SubFrame[index];var frame=subFrame.Frame;var top=frame.ChartBorder.GetTopEx();var bottom=frame.ChartBorder.GetBottomEx();var maxValue=frame.HorizontalMax;var minValue=frame.HorizontalMin;var moveStep=(maxValue-minValue)*Math.abs(yMove)/(bottom-top);var splitOper=frame.YSplitOperator;var newFixedYMaxMin={Max:maxValue,Min:minValue};if(obj.Position==1){var step=yMove>0?-moveStep:moveStep;newFixedYMaxMin.Max+=step;}else if(obj.Position==2){var step=yMove>0?-moveStep:moveStep;newFixedYMaxMin.Min+=step;}else if(obj.Position==0){var step=yMove>0?moveStep:-moveStep;newFixedYMaxMin.Max+=step;newFixedYMaxMin.Min-=step;}else{return false;}if(newFixedYMaxMin.Max>newFixedYMaxMin.Min){splitOper.FixedYMaxMin=newFixedYMaxMin;splitOper.EnableZoomUpDown=true;frame.XYSplit=true;for(var i in subFrame.OverlayIndex){var item=subFrame.OverlayIndex[i];if(item.Frame.IsShareY)item.Frame.XYSplit=true;}JSConsole.Chart.Log('[HQTradeFrame::OnZoomUpDownFrameY] Max='+newFixedYMaxMin.Max+', Min='+newFixedYMaxMin.Min);return true;}return false;};this.OnUpDonwFrameY=function(obj,yMove){var index=obj.Index;if(this.SubFrame.length<=0)return false;if(!this.SubFrame[index])return false;var subFrame=this.SubFrame[index];var frame=subFrame.Frame;var top=frame.ChartBorder.GetTopEx();var bottom=frame.ChartBorder.GetBottomEx();var splitOper=frame.YSplitOperator;if(!splitOper)return false;var maxValue=frame.HorizontalMax;var minValue=frame.HorizontalMin;var moveStep=(maxValue-minValue)*Math.abs(yMove)/(bottom-top);var step=yMove>0?-moveStep:moveStep;var newFixedYMaxMin={Max:maxValue,Min:minValue};newFixedYMaxMin.Max-=step;newFixedYMaxMin.Min-=step;splitOper.FixedYMaxMin=newFixedYMaxMin;splitOper.EnableZoomUpDown=true;frame.XYSplit=true;for(var i in subFrame.OverlayIndex){var item=subFrame.OverlayIndex[i];if(item.Frame.IsShareY)item.Frame.XYSplit=true;}JSConsole.Chart.Log('[HQTradeFrame::OnUpDonwFrameY] Max='+newFixedYMaxMin.Max+', Min='+newFixedYMaxMin.Min+', yMove='+yMove+', moveStep='+moveStep);return true;};this.ClearUpDonwFrameYData=function(option)//清空上下拖拽的数据
2857
+ {firstFrame.Frame.XYSplit=true;}};this.CancelZoomUpDownFrameY=function(obj){var index=obj.Index;if(this.SubFrame.length<=0)return false;if(!this.SubFrame[index])return false;var subFrame=this.SubFrame[index];var frame=subFrame.Frame;var splitOper=frame.YSplitOperator;if(splitOper.FixedYMaxMin){splitOper.FixedYMaxMin=null;splitOper.EnableZoomUpDown=false;frame.XYSplit=true;for(var i in subFrame.OverlayIndex){var item=subFrame.OverlayIndex[i];if(item.Frame.IsShareY)item.Frame.XYSplit=true;}JSConsole.Chart.Log('[HQTradeFrame::CancelZoomUpDownFrameY]');return true;}return false;};this.OnZoomUpDownFrameY=function(obj,yMove){var index=obj.Index;if(this.SubFrame.length<=0)return false;if(!this.SubFrame[index])return false;var subFrame=this.SubFrame[index];var frame=subFrame.Frame;var top=frame.ChartBorder.GetTopEx();var bottom=frame.ChartBorder.GetBottomEx();var maxValue=frame.HorizontalMax;var minValue=frame.HorizontalMin;var moveStep=(maxValue-minValue)*Math.abs(yMove)/(bottom-top);var splitOper=frame.YSplitOperator;var newFixedYMaxMin={Max:maxValue,Min:minValue};if(obj.Position==1){var step=yMove>0?-moveStep:moveStep;newFixedYMaxMin.Max+=step;}else if(obj.Position==2){var step=yMove>0?-moveStep:moveStep;newFixedYMaxMin.Min+=step;}else if(obj.Position==0){var step=yMove>0?moveStep:-moveStep;newFixedYMaxMin.Max+=step;newFixedYMaxMin.Min-=step;}else{return false;}if(newFixedYMaxMin.Max>newFixedYMaxMin.Min){splitOper.FixedYMaxMin=newFixedYMaxMin;splitOper.EnableZoomUpDown=true;frame.XYSplit=true;for(var i=0;i<subFrame.OverlayIndex.length;++i){var item=subFrame.OverlayIndex[i];if(item.Frame.IsShareY)item.Frame.XYSplit=true;}JSConsole.Chart.Log('[HQTradeFrame::OnZoomUpDownFrameY] Max='+newFixedYMaxMin.Max+', Min='+newFixedYMaxMin.Min);return true;}return false;};this.OnUpDonwFrameY=function(obj,yMove){var index=obj.Index;if(this.SubFrame.length<=0)return false;if(!this.SubFrame[index])return false;var subFrame=this.SubFrame[index];var frame=subFrame.Frame;var top=frame.ChartBorder.GetTopEx();var bottom=frame.ChartBorder.GetBottomEx();var splitOper=frame.YSplitOperator;if(!splitOper)return false;var maxValue=frame.HorizontalMax;var minValue=frame.HorizontalMin;var moveStep=(maxValue-minValue)*Math.abs(yMove)/(bottom-top);var step=yMove>0?-moveStep:moveStep;var newFixedYMaxMin={Max:maxValue,Min:minValue};newFixedYMaxMin.Max-=step;newFixedYMaxMin.Min-=step;splitOper.FixedYMaxMin=newFixedYMaxMin;splitOper.EnableZoomUpDown=true;frame.XYSplit=true;for(var i in subFrame.OverlayIndex){var item=subFrame.OverlayIndex[i];if(item.Frame.IsShareY)item.Frame.XYSplit=true;}JSConsole.Chart.Log('[HQTradeFrame::OnUpDonwFrameY] Max='+newFixedYMaxMin.Max+', Min='+newFixedYMaxMin.Min+', yMove='+yMove+', moveStep='+moveStep);return true;};this.ClearUpDonwFrameYData=function(option)//清空上下拖拽的数据
2854
2858
  {if(this.SubFrame.length<=0)return;if(option){var index=option.Index;if(index<0||index>=this.SubFrame.length)return;var item=this.SubFrame[index];if(!item||!item.Frame||!item.Frame.YSplitOperator)return;var splitOper=item.Frame.YSplitOperator;if(splitOper.EnableZoomUpDown==true)splitOper.FixedYMaxMin=null;}else{for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(!item||!item.Frame||!item.Frame.YSplitOperator)continue;var splitOper=item.Frame.YSplitOperator;if(splitOper.EnableZoomUpDown==true)splitOper.FixedYMaxMin=null;}}};this.ClearCoordinateText=function(option)//清空X,Y轴刻度文字, 线段保留
2855
2859
  {for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(!item.Frame)continue;item.Frame.ClearCoordinateText(option);}};this.RestoreIndexWindows=function(){if(!this.ZoomWindowsInfo)return false;var subFrame=this.SubFrame[this.ZoomWindowsInfo.FrameID];for(var i=this.ZoomStartWindowIndex;i<this.ZoomWindowsInfo.Data.length;++i){var restoreItem=this.ZoomWindowsInfo.Data[i];var frameItem=this.SubFrame[i];frameItem.Height=restoreItem.Height;frameItem.Frame.IsMinSize=false;frameItem.Frame.ReDrawToolbar=true;frameItem.Frame.XSplitOperator.ShowText=restoreItem.ShowXText;frameItem.Frame.XYSplit=true;for(var j=0;j<frameItem.OverlayIndex.length;++j){var overlayItem=frameItem.OverlayIndex[j];overlayItem.Frame.IsMinSize=false;}}this.ZoomWindowsInfo=null;return true;};this.ZoomIndexWindow=function(frameID,option){var subFrame=this.SubFrame[frameID];if(!subFrame)return false;subFrame.Frame.ChartBorder.IsShowTitleOnly=false;if(this.ZoomWindowsInfo)//还原
2856
2860
  {return this.RestoreIndexWindows();}else//放大
@@ -2865,8 +2869,11 @@ var minValue=frame.HorizontalMin;frame.YSplitOperator.Operator();var value=frame
2865
2869
  //frame.HorizontalMax=maxValue;
2866
2870
  //frame.HorizontalMin=minValue;
2867
2871
  if(value&&value.TextWidth){var widthItem=value.TextWidth;if(IFrameSplitOperator.IsNumber(widthItem.Left)){if(width.Left==null||width.Left<widthItem.Left)width.Left=widthItem.Left;}if(IFrameSplitOperator.IsNumber(widthItem.Right)){if(width.Right==null||width.Right<widthItem.Right)width.Right=widthItem.Right;}}//右侧叠加指标
2868
- if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){for(var j=0,k=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(!overlayItem.Frame)continue;var maxValue=overlayItem.Frame.HorizontalMax;//最大最小要还原
2869
- var minValue=overlayItem.Frame.HorizontalMin;overlayItem.Frame.YSplitOperator.Operator();var value=overlayItem.Frame.GetScaleTextWidth();overlayItem.Frame.HorizontalMax=maxValue;overlayItem.Frame.HorizontalMin=minValue;overlayItem.RightWidth={Index:-1,Width:0};if(!value||!value.TextWidth)continue;var widthItem=value.TextWidth;if(!IFrameSplitOperator.IsNumber(widthItem.Right))continue;overlayItem.RightWidth.Index=k;overlayItem.RightWidth.Width=widthItem.Right;if(aryOverlayWidth[k]){aryOverlayWidth[k][i]=overlayItem.RightWidth;}else{aryOverlayWidth[k]=[];aryOverlayWidth[k][i]=overlayItem.RightWidth;}++k;}}}var overlayWidth=[];for(var i=0;i<aryOverlayWidth.length;++i){var colItem=aryOverlayWidth[i];var max=0;for(var j=0;j<colItem.length;++j){if(!colItem[j])continue;var item=colItem[j].Width;if(max<item)max=item;}if(max>0)max+=this.OverlayBlankWidth;for(var j=0;j<colItem.length;++j){if(!colItem[j])continue;colItem[j].Width=max;}overlayWidth[i]=max;}for(var i=0;i<overlayWidth.length;++i){var value=overlayWidth[i];if(!IFrameSplitOperator.IsNumber(value))continue;width.OverlayRight+=value;}width.AryOverlayWidth=overlayWidth;return width;};this.IsFrameXYSplit=function(){for(var i in this.SubFrame){var item=this.SubFrame[i];if(item.Frame.XYSplit)return true;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Frame.XYSplit)return true;}}return false;};this.Draw=function(option){if(this.SizeChange===true){this.CalculateChartBorder();}var isSplash=false;//是否过场动画
2872
+ if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){for(var j=0,k=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(!overlayItem.Frame)continue;if(overlayItem.Frame.IsShareY){if(overlayItem.Frame.SyncMainHorizontalInfo)overlayItem.Frame.SyncMainHorizontalInfo();var value=overlayItem.Frame.GetScaleTextWidth();}else{var maxValue=overlayItem.Frame.HorizontalMax;//最大最小要还原
2873
+ var minValue=overlayItem.Frame.HorizontalMin;overlayItem.Frame.YSplitOperator.Operator();var value=overlayItem.Frame.GetScaleTextWidth();//数据原始范围存储在YMaxMin, 不需要还原HorizontalMax,HorizontalMin
2874
+ //overlayItem.Frame.HorizontalMax=maxValue;
2875
+ //overlayItem.Frame.HorizontalMin=minValue;
2876
+ }overlayItem.RightWidth={Index:-1,Width:0};if(!value||!value.TextWidth)continue;var widthItem=value.TextWidth;if(!IFrameSplitOperator.IsNumber(widthItem.Right))continue;overlayItem.RightWidth.Index=k;overlayItem.RightWidth.Width=widthItem.Right;if(aryOverlayWidth[k]){aryOverlayWidth[k][i]=overlayItem.RightWidth;}else{aryOverlayWidth[k]=[];aryOverlayWidth[k][i]=overlayItem.RightWidth;}++k;}}}var overlayWidth=[];for(var i=0;i<aryOverlayWidth.length;++i){var colItem=aryOverlayWidth[i];var max=0;for(var j=0;j<colItem.length;++j){if(!colItem[j])continue;var item=colItem[j].Width;if(max<item)max=item;}if(max>0)max+=this.OverlayBlankWidth;for(var j=0;j<colItem.length;++j){if(!colItem[j])continue;colItem[j].Width=max;}overlayWidth[i]=max;}for(var i=0;i<overlayWidth.length;++i){var value=overlayWidth[i];if(!IFrameSplitOperator.IsNumber(value))continue;width.OverlayRight+=value;}width.AryOverlayWidth=overlayWidth;return width;};this.IsFrameXYSplit=function(){for(var i in this.SubFrame){var item=this.SubFrame[i];if(item.Frame.XYSplit)return true;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Frame.XYSplit)return true;}}return false;};this.Draw=function(option){if(this.SizeChange===true){this.CalculateChartBorder();}var isSplash=false;//是否过场动画
2870
2877
  if(option&&option.IsEnableSplash===true)isSplash=true;if(isSplash==false&&(this.AutoLeftBorder||this.AutoRightBorder)&&this.IsFrameXYSplit()){this.AutoRightOverlayWidth=[];var textWidth=this.GetScaleTextWidth();var bSizeChange=false;if(IFrameSplitOperator.IsNumber(textWidth.Left)&&this.AutoLeftBorder){var blank=0;if(IFrameSplitOperator.IsNumber(this.AutoLeftBorder.Blank))blank=this.AutoLeftBorder.Blank;var value=textWidth.Left+blank;if(IFrameSplitOperator.IsNumber(this.AutoLeftBorder.MinWidth)){if(this.AutoLeftBorder.MinWidth>value)value=this.AutoLeftBorder.MinWidth;}if(this.IsHScreen)this.ChartBorder.Top=value;else this.ChartBorder.Left=value;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(this.IsHScreen)item.Frame.ChartBorder.Top=value;else item.Frame.ChartBorder.Left=value;}}if(IFrameSplitOperator.IsNumber(textWidth.Right)){if(this.AutoRightBorder)//自动调整右侧间距
2871
2878
  {var rightTextInfo={};var blank=0;if(IFrameSplitOperator.IsNumber(this.AutoRightBorder.Blank))blank=this.AutoRightBorder.Blank;var value=textWidth.Right+blank;if(IFrameSplitOperator.IsNumber(this.AutoRightBorder.MinWidth)){if(this.AutoRightBorder.MinWidth>value)value=this.AutoRightBorder.MinWidth;}this.AuotRightWidth=value;rightTextInfo.MainTextWidth=value;//主图坐标宽度
2872
2879
  if(IFrameSplitOperator.IsNonEmptyArray(textWidth.AryOverlayWidth))rightTextInfo.AryOverlayWidth=textWidth.AryOverlayWidth;if(IFrameSplitOperator.IsPlusNumber(textWidth.OverlayRight)){this.AuotRightWidth=value;value+=textWidth.OverlayRight;}if(this.GetExtendChartRightWidth){var extendWidth=this.GetExtendChartRightWidth();if(this.GetExtendChartByClassName){var finder=this.GetExtendChartByClassName("StockChip");if(finder&&finder.Chart){finder.Chart.Left=value;}}value+=extendWidth;}if(this.IsHScreen){if(this.ChartBorder.Bottom!=value)bSizeChange=true;this.ChartBorder.Bottom=value;}else{if(this.ChartBorder.Right!=value)bSizeChange=true;this.ChartBorder.Right=value;}for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(this.IsHScreen)item.Frame.ChartBorder.Bottom=value;else item.Frame.ChartBorder.Right=value;item.Frame.ReDrawToolbar=true;item.Frame.YRightTextInfo=rightTextInfo;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];overlayItem.Frame.YRightTextInfo=rightTextInfo;}}}else{var rightTextInfo={};rightTextInfo.MainTextWidth=this.FixedRightWidth.Main;if(textWidth.OverlayRight==0)//无叠加直接最右边
@@ -7077,10 +7084,11 @@ this.CreateChartDrawPictureByStorage();//创建画图工具
7077
7084
  this.UpdataDataoffset();//更新数据偏移
7078
7085
  this.UpdatePointByCursorIndex();//更新十字光标位子
7079
7086
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
7080
- this.Frame.SetSizeChage(true);this.Draw();};this.ReqeustHistoryMinuteData=function(){var self=this;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.EnableSplash(true);this.FlowCapitalReady=false;this.ResetPage();//重置分页
7087
+ this.Frame.SetSizeChage(true);this.Draw();};this.RequestHistoryMinuteData=function(){var self=this;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.EnableSplash(true);this.FlowCapitalReady=false;this.ResetPage();//重置分页
7081
7088
  this.ResetDragDownload();this.ResetZoomDownload();this.Draw();if(this.NetworkFilter){var kLineDrawType=this.GetKLineDrawType();var obj={Name:'KLineChartContainer::ReqeustHistoryMinuteData',//类名::
7082
7089
  Explain:'1分钟K线数据',Request:{Url:self.MinuteKLineApiUrl,Type:'POST',Data:{symbol:self.Symbol,count:self.MaxRequestMinuteDayCount,field:["name","symbol","yclose","open","price","high","low","vol"],period:this.Period,right:this.Right,klineDrawType:kLineDrawType}},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){self.ChartSplashPaint.EnableSplash(false);self.RecvMinuteHistoryData(data);var page=self.Page.Minute;if(page.Enable==true&&page.Finish==false){self.ReqeustHistoryMinutePageData();}else{self.AutoUpdateEvent(true,'KLineChartContainer::ReqeustHistoryMinuteData');self.AutoUpdate();}});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
7083
- }JSNetwork.HttpRequest({url:this.MinuteKLineApiUrl,data:{"field":["name","symbol","yclose","open","price","high","low","vol"],"symbol":self.Symbol,"start":-1,"count":self.MaxRequestMinuteDayCount},type:"post",dataType:"json",async:true,success:function success(data){self.ChartSplashPaint.EnableSplash(false);self.RecvMinuteHistoryData(data);var page=self.Page.Minute;if(page.Enable==true&&page.Finish==false){self.ReqeustHistoryMinutePageData();}else{self.AutoUpdateEvent(true,'KLineChartContainer::ReqeustHistoryMinuteData');self.AutoUpdate();}}});};this.RecvMinuteHistoryData=function(data){if(this.EnableVerifyRecvData&&data.symbol!=this.Symbol){JSConsole.Chart.Warn('[KLineChartContainer::RecvMinuteHistoryData] recv data symbol not match. HQChart['+this.Symbol+'] , Recv['+data.symbol+']');return;}var aryDayData=KLineChartContainer.JsonDataToMinuteHistoryData(data);//原始数据
7090
+ }JSNetwork.HttpRequest({url:this.MinuteKLineApiUrl,data:{"field":["name","symbol","yclose","open","price","high","low","vol"],"symbol":self.Symbol,"start":-1,"count":self.MaxRequestMinuteDayCount},type:"post",dataType:"json",async:true,success:function success(data){self.ChartSplashPaint.EnableSplash(false);self.RecvMinuteHistoryData(data);var page=self.Page.Minute;if(page.Enable==true&&page.Finish==false){self.ReqeustHistoryMinutePageData();}else{self.AutoUpdateEvent(true,'KLineChartContainer::ReqeustHistoryMinuteData');self.AutoUpdate();}}});};//支持老版本
7091
+ this.ReqeustHistoryMinuteData=this.RequestHistoryMinuteData;this.RecvMinuteHistoryData=function(data){if(this.EnableVerifyRecvData&&data.symbol!=this.Symbol){JSConsole.Chart.Warn('[KLineChartContainer::RecvMinuteHistoryData] recv data symbol not match. HQChart['+this.Symbol+'] , Recv['+data.symbol+']');return;}var aryDayData=KLineChartContainer.JsonDataToMinuteHistoryData(data);//原始数据
7084
7092
  var sourceData=new ChartData();sourceData.Data=aryDayData;sourceData.DataType=1;//0=日线数据 1=分钟数据
7085
7093
  sourceData.Symbol=data.symbol;this.SourceData=sourceData;if(this.BeforeBindMainData)this.BeforeBindMainData("RecvMinuteHistoryData");//显示的数据
7086
7094
  var bindData=new ChartData();bindData.Data=aryDayData;bindData.Right=this.Right;bindData.Period=this.Period;bindData.DataType=1;bindData.Symbol=data.symbol;if(bindData.Right>0&&!this.IsApiPeriod&&this.RightFormula>=1)//复权
@@ -7262,7 +7270,7 @@ this.ResetScrollBar();this.ResetOverlaySymbolStatus();this.ClearIndexRunCount();
7262
7270
  //this.ReqeustKLineInfoData();
7263
7271
  }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)||ChartData.IsMilliSecondPeriod(this.Period)){this.CancelAutoUpdate();//先停止定时器
7264
7272
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');//切换周期先停止更新
7265
- this.ResetScrollBar();this.ResetOverlaySymbolStatus();this.ClearIndexRunCount();this.Frame.ClearYCoordinateMaxMin();this.ReqeustHistoryMinuteData();//请求分钟数据
7273
+ this.ResetScrollBar();this.ResetOverlaySymbolStatus();this.ClearIndexRunCount();this.Frame.ClearYCoordinateMaxMin();this.RequestHistoryMinuteData();//请求分钟数据
7266
7274
  }else if(ChartData.IsTickPeriod(this.Period)){this.CancelAutoUpdate();//先停止定时器
7267
7275
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');this.ResetScrollBar();this.ClearIndexRunCount();this.Frame.ClearYCoordinateMaxMin();this.RequestTickData();//请求分笔数据
7268
7276
  }};//复权切换
@@ -7272,7 +7280,7 @@ this.AutoUpdateEvent(false,'KLineChartContainer::ChangeRight');//切换复权先
7272
7280
  this.ClearIndexPaint();this.ResetOverlaySymbolStatus();this.ResetScrollBar();this.RequestHistoryData();//请求日线数据
7273
7281
  }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)||ChartData.IsMilliSecondPeriod(this.Period)){this.CancelAutoUpdate();//先停止定时器
7274
7282
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeRight');//切换复权先停止更新
7275
- this.ClearIndexPaint();this.ResetOverlaySymbolStatus();this.ResetScrollBar();this.ReqeustHistoryMinuteData();//请求分钟数据
7283
+ this.ClearIndexPaint();this.ResetOverlaySymbolStatus();this.ResetScrollBar();this.RequestHistoryMinuteData();//请求分钟数据
7276
7284
  }}};//设置第1屏的起始日期
7277
7285
  this.SetFirstShowDate=function(obj){if(!obj||!obj.Date)return;var option={ID:JSCHART_OPERATOR_ID.OP_GOTO,Date:obj.Date};if(IFrameSplitOperator.IsNumber(obj.Time))option.Time=obj.Time;if(IFrameSplitOperator.IsNumber(obj.PageSize))option.PageSize=obj.PageSize;this.ChartOperator(option);};//删除某一个窗口的指标, bCallDestory=是否调用图形销毁函数
7278
7286
  this.DeleteIndexPaint=function(windowIndex,bCallDestroy){var paint=new Array();//踢出当前窗口的指标画法
@@ -7352,7 +7360,7 @@ scriptIndex.Create(this,windowIndex);overlayFrame.Script=scriptIndex;}var event=
7352
7360
  {if(!this.DeleteOverlayIndex(identify,null))return;this.UpdateFrameMaxMin();//重新计算坐标范围
7353
7361
  this.Frame.ResetXYSplit(true);this.Draw();};this.ChangeKLineDrawType=function(drawType,isDraw,option){if(this.KLineDrawType==drawType&&!option)return;var oldKLineType=this.KLineDrawType;this.KLineDrawType=drawType;var setKLineType=new _set2.default([5,7,8,10,11,12,17]);if(setKLineType.has(oldKLineType)||setKLineType.has(drawType)){var chart=this.ChartPaint[0];if(chart)chart.DrawType=this.KLineDrawType;this.CancelAutoUpdate();//先停止定时器
7354
7362
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeKLineDrawType');if(ChartData.IsDayPeriod(this.Period,true)){this.ResetOverlaySymbolStatus();this.RequestHistoryData();//请求日线数据
7355
- }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)||ChartData.IsMilliSecondPeriod(this.Period)){this.ResetOverlaySymbolStatus();this.ReqeustHistoryMinuteData();//请求分钟数据
7363
+ }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)||ChartData.IsMilliSecondPeriod(this.Period)){this.ResetOverlaySymbolStatus();this.RequestHistoryMinuteData();//请求分钟数据
7356
7364
  }return;}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(i==0){item.DrawType=this.KLineDrawType;if(option){if(IFrameSplitOperator.IsBool(option.IsThinAKBar))item.IsThinAKBar=option.IsThinAKBar;}}else if(item.ClassName=='ChartVolStick'){item.KLineDrawType=this.KLineDrawType;}}for(var i in this.OverlayChartPaint)//叠加K线样式修改
7357
7365
  {var item=this.OverlayChartPaint[i];item.DrawType=this.KLineDrawType;}if(isDraw==false)return;this.UpdateFrameMaxMin();//调整坐标最大 最小值
7358
7366
  this.Frame.SetSizeChage(true);this.Draw();};//修改坐标类型
@@ -7433,7 +7441,7 @@ var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new Sc
7433
7441
  }else if(item.API){var apiItem=item.API;this.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(item.Args)indexInfo.Args=item.Args;indexInfo.ID=indexID;this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7434
7442
  }}}}}this.ReloadChartDrawPicture();this.Frame.ClearUpDonwFrameYData();if(ChartData.IsDayPeriod(this.Period,true)){this.ClearStockCache();this.RequestHistoryData();//请求日线数据
7435
7443
  //this.ReqeustKLineInfoData();
7436
- }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)||ChartData.IsMilliSecondPeriod(this.Period)){this.ClearStockCache();this.ReqeustHistoryMinuteData();//请求分钟数据
7444
+ }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)||ChartData.IsMilliSecondPeriod(this.Period)){this.ClearStockCache();this.RequestHistoryMinuteData();//请求分钟数据
7437
7445
  }else if(ChartData.IsTickPeriod(this.Period)){this.ClearStockCache();this.RequestTickData();}};this.ReqeustKLineInfoData=function(obj){if(obj&&obj.FunctionName=="RecvDragDayData")//增量更新
7438
7446
  {obj.Update=true;}else{if(this.ChartPaint.length>0){var klinePaint=this.ChartPaint[0];klinePaint.InfoData=new _map2.default();}obj.Update=false;}//信息地雷信息
7439
7447
  if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartInfo))return;for(var i=0;i<this.ChartInfo.length;++i){this.ChartInfo[i].RequestData(this,obj);}};//设置K线信息地雷
@@ -12912,7 +12920,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
12912
12920
  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);};}/********************************************************************************
12913
12921
  * 版本信息输出
12914
12922
  *
12915
- */var HQCHART_VERSION="1.1.12759";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();//把给外界调用的方法暴露出来
12923
+ */var HQCHART_VERSION="1.1.12770";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();//把给外界调用的方法暴露出来
12916
12924
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12917
12925
  // BaseIndex:BaseIndex,
12918
12926
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.12760",
3
+ "version": "1.1.12771",
4
4
  "description": "stock chart",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -3595,7 +3595,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3595
3595
  drag.CurrentMove.Y=e.clientY;
3596
3596
  }
3597
3597
 
3598
- if (this.BorderDrag && this.BorderDrag.Index>=0)
3598
+ if (this.BorderDrag && this.BorderDrag.Index>=0) //边框拖动
3599
3599
  {
3600
3600
  if(Math.abs(drag.LastMove.Y-e.clientY)<5) return;
3601
3601
 
@@ -3606,7 +3606,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3606
3606
  drag.LastMove.X=e.clientX;
3607
3607
  drag.LastMove.Y=e.clientY;
3608
3608
  }
3609
- else if (this.YDrag && this.YDrag.Index>=0)
3609
+ else if (this.YDrag && this.YDrag.Index>=0) //Y轴缩放
3610
3610
  {
3611
3611
  if(moveSetpY<5) return;
3612
3612
 
@@ -14964,6 +14964,7 @@ function OverlayKLineFrame()
14964
14964
  {
14965
14965
  this.Buttons=[];
14966
14966
  if (this.ChartBorder.IsShowTitleOnly) return;
14967
+
14967
14968
  this.SplitXYCoordinate();
14968
14969
 
14969
14970
  if (this.IsShow)
@@ -15094,6 +15095,31 @@ function OverlayKLineFrame()
15094
15095
  return { TextWidth:width };
15095
15096
  }
15096
15097
 
15098
+ //同步主图坐标
15099
+ this.SyncMainHorizontalInfo=function()
15100
+ {
15101
+ if (!this.MainFrame) return false;
15102
+
15103
+ if (this.MainFrame.YMaxMin)
15104
+ {
15105
+ this.YMaxMin.Max=this.MainFrame.YMaxMin.Max;
15106
+ this.YMaxMin.Min=this.MainFrame.YMaxMin.Min;
15107
+ }
15108
+
15109
+ this.HorizontalMax=this.MainFrame.HorizontalMax;
15110
+ this.HorizontalMin=this.MainFrame.HorizontalMin;
15111
+ this.HorizontalInfo=[];
15112
+ for(var i=0;i<this.MainFrame.HorizontalInfo.length; ++i)
15113
+ {
15114
+ var item=this.MainFrame.HorizontalInfo[i];
15115
+ this.HorizontalInfo.push(item);
15116
+ }
15117
+
15118
+ this.CoordinateType=this.MainFrame.CoordinateType;
15119
+
15120
+ return true;
15121
+ }
15122
+
15097
15123
  //分割x,y轴坐标信息
15098
15124
  this.SplitXYCoordinate=function()
15099
15125
  {
@@ -15101,16 +15127,7 @@ function OverlayKLineFrame()
15101
15127
 
15102
15128
  if (this.IsShareY) //和主图指标共享Y轴坐标
15103
15129
  {
15104
- this.HorizontalMax=this.MainFrame.HorizontalMax;
15105
- this.HorizontalMin=this.MainFrame.HorizontalMin;
15106
- this.HorizontalInfo=[];
15107
- for(var i in this.MainFrame.HorizontalInfo)
15108
- {
15109
- var item=this.MainFrame.HorizontalInfo[i];
15110
- this.HorizontalInfo.push(item);
15111
- }
15112
-
15113
- this.CoordinateType=this.MainFrame.CoordinateType;
15130
+ this.SyncMainHorizontalInfo();
15114
15131
  }
15115
15132
  else //独立Y轴坐标
15116
15133
  {
@@ -16388,10 +16405,12 @@ function OverlayIndexItem()
16388
16405
  }
16389
16406
  else
16390
16407
  {
16391
- for(var i in this.ChartPaint)
16408
+ for(var i=0;i<this.ChartPaint.length;++i)
16392
16409
  {
16393
16410
  var paint=this.ChartPaint[i];
16411
+ if (paint.IsShow==false) continue; //隐藏的图形不计算
16394
16412
  var range=paint.GetMaxMin();
16413
+ if (range==null || range.Max==null || range.Min==null) continue;
16395
16414
 
16396
16415
  if (IFrameSplitOperator.IsNumber(range.Max))
16397
16416
  {
@@ -16405,10 +16424,29 @@ function OverlayIndexItem()
16405
16424
  }
16406
16425
  }
16407
16426
 
16408
- if (value.Max!=null && value.Min!=null)
16427
+ if (!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Max) || this.Frame.YMaxMin.Max!=value.Max)
16428
+ {
16429
+ this.Frame.YMaxMin.Max=value.Max;
16430
+ this.Frame.XYSplit=true;
16431
+ }
16432
+
16433
+ if (!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Min) || this.Frame.YMaxMin.Min!=value.Min)
16434
+ {
16435
+ this.Frame.YMaxMin.Min=value.Min;
16436
+ this.Frame.XYSplit=true;
16437
+ }
16438
+
16439
+ if (this.Frame.XYSplit)
16440
+ {
16441
+ var max=10, min=0;
16442
+ if (value.Max!=null) max=value.Max;
16443
+ if (value.Min!=null) min=value.Min;
16444
+
16445
+ this.Frame.HorizontalMax=max;
16446
+ this.Frame.HorizontalMin=min;
16447
+ }
16448
+ else
16409
16449
  {
16410
- this.Frame.HorizontalMax=value.Max;
16411
- this.Frame.HorizontalMin=value.Min;
16412
16450
  this.Frame.XYSplit=true;
16413
16451
  }
16414
16452
  }
@@ -16575,7 +16613,7 @@ function HQTradeFrame()
16575
16613
  splitOper.EnableZoomUpDown=true;
16576
16614
  frame.XYSplit=true;
16577
16615
 
16578
- for(var i in subFrame.OverlayIndex)
16616
+ for(var i=0;i<subFrame.OverlayIndex.length;++i)
16579
16617
  {
16580
16618
  var item=subFrame.OverlayIndex[i];
16581
16619
  if (item.Frame.IsShareY) item.Frame.XYSplit=true;
@@ -16939,14 +16977,25 @@ function HQTradeFrame()
16939
16977
  var overlayItem=item.OverlayIndex[j];
16940
16978
  if (!overlayItem.Frame) continue;
16941
16979
 
16942
- var maxValue=overlayItem.Frame.HorizontalMax; //最大最小要还原
16943
- var minValue=overlayItem.Frame.HorizontalMin;
16980
+ if (overlayItem.Frame.IsShareY)
16981
+ {
16982
+ if (overlayItem.Frame.SyncMainHorizontalInfo)
16983
+ overlayItem.Frame.SyncMainHorizontalInfo();
16944
16984
 
16945
- overlayItem.Frame.YSplitOperator.Operator();
16946
- var value=overlayItem.Frame.GetScaleTextWidth();
16947
-
16948
- overlayItem.Frame.HorizontalMax=maxValue;
16949
- overlayItem.Frame.HorizontalMin=minValue;
16985
+ var value=overlayItem.Frame.GetScaleTextWidth();
16986
+ }
16987
+ else
16988
+ {
16989
+ var maxValue=overlayItem.Frame.HorizontalMax; //最大最小要还原
16990
+ var minValue=overlayItem.Frame.HorizontalMin;
16991
+
16992
+ overlayItem.Frame.YSplitOperator.Operator();
16993
+ var value=overlayItem.Frame.GetScaleTextWidth();
16994
+
16995
+ //数据原始范围存储在YMaxMin, 不需要还原HorizontalMax,HorizontalMin
16996
+ //overlayItem.Frame.HorizontalMax=maxValue;
16997
+ //overlayItem.Frame.HorizontalMin=minValue;
16998
+ }
16950
16999
 
16951
17000
  overlayItem.RightWidth={ Index:-1, Width:0 };
16952
17001
  if (!value || !value.TextWidth) continue;
@@ -67265,7 +67314,7 @@ function KLineChartContainer(uielement,OffscreenElement)
67265
67314
  this.Draw();
67266
67315
  }
67267
67316
 
67268
- this.ReqeustHistoryMinuteData=function()
67317
+ this.RequestHistoryMinuteData=function()
67269
67318
  {
67270
67319
  var self=this;
67271
67320
  this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);
@@ -67343,6 +67392,8 @@ function KLineChartContainer(uielement,OffscreenElement)
67343
67392
  });
67344
67393
  }
67345
67394
 
67395
+ //支持老版本
67396
+ this.ReqeustHistoryMinuteData=this.RequestHistoryMinuteData;
67346
67397
 
67347
67398
  this.RecvMinuteHistoryData=function(data)
67348
67399
  {
@@ -68515,7 +68566,7 @@ function KLineChartContainer(uielement,OffscreenElement)
68515
68566
  this.ResetOverlaySymbolStatus();
68516
68567
  this.ClearIndexRunCount();
68517
68568
  this.Frame.ClearYCoordinateMaxMin();
68518
- this.ReqeustHistoryMinuteData(); //请求分钟数据
68569
+ this.RequestHistoryMinuteData(); //请求分钟数据
68519
68570
  }
68520
68571
  else if (ChartData.IsTickPeriod(this.Period))
68521
68572
  {
@@ -68565,7 +68616,7 @@ function KLineChartContainer(uielement,OffscreenElement)
68565
68616
  this.ClearIndexPaint();
68566
68617
  this.ResetOverlaySymbolStatus();
68567
68618
  this.ResetScrollBar();
68568
- this.ReqeustHistoryMinuteData(); //请求分钟数据
68619
+ this.RequestHistoryMinuteData(); //请求分钟数据
68569
68620
  }
68570
68621
  }
68571
68622
  }
@@ -69056,7 +69107,7 @@ function KLineChartContainer(uielement,OffscreenElement)
69056
69107
  else if (ChartData.IsMinutePeriod(this.Period,true) || ChartData.IsSecondPeriod(this.Period) || ChartData.IsMilliSecondPeriod(this.Period))
69057
69108
  {
69058
69109
  this.ResetOverlaySymbolStatus();
69059
- this.ReqeustHistoryMinuteData(); //请求分钟数据
69110
+ this.RequestHistoryMinuteData(); //请求分钟数据
69060
69111
  }
69061
69112
 
69062
69113
  return;
@@ -69906,7 +69957,7 @@ function KLineChartContainer(uielement,OffscreenElement)
69906
69957
  else if (ChartData.IsMinutePeriod(this.Period,true) || ChartData.IsSecondPeriod(this.Period) || ChartData.IsMilliSecondPeriod(this.Period))
69907
69958
  {
69908
69959
  this.ClearStockCache();
69909
- this.ReqeustHistoryMinuteData(); //请求分钟数据
69960
+ this.RequestHistoryMinuteData(); //请求分钟数据
69910
69961
  }
69911
69962
  else if (ChartData.IsTickPeriod(this.Period))
69912
69963
  {
@@ -7739,7 +7739,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7739
7739
  drag.CurrentMove.Y=e.clientY;
7740
7740
  }
7741
7741
 
7742
- if (this.BorderDrag && this.BorderDrag.Index>=0)
7742
+ if (this.BorderDrag && this.BorderDrag.Index>=0) //边框拖动
7743
7743
  {
7744
7744
  if(Math.abs(drag.LastMove.Y-e.clientY)<5) return;
7745
7745
 
@@ -7750,7 +7750,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7750
7750
  drag.LastMove.X=e.clientX;
7751
7751
  drag.LastMove.Y=e.clientY;
7752
7752
  }
7753
- else if (this.YDrag && this.YDrag.Index>=0)
7753
+ else if (this.YDrag && this.YDrag.Index>=0) //Y轴缩放
7754
7754
  {
7755
7755
  if(moveSetpY<5) return;
7756
7756
 
@@ -19108,6 +19108,7 @@ function OverlayKLineFrame()
19108
19108
  {
19109
19109
  this.Buttons=[];
19110
19110
  if (this.ChartBorder.IsShowTitleOnly) return;
19111
+
19111
19112
  this.SplitXYCoordinate();
19112
19113
 
19113
19114
  if (this.IsShow)
@@ -19238,6 +19239,31 @@ function OverlayKLineFrame()
19238
19239
  return { TextWidth:width };
19239
19240
  }
19240
19241
 
19242
+ //同步主图坐标
19243
+ this.SyncMainHorizontalInfo=function()
19244
+ {
19245
+ if (!this.MainFrame) return false;
19246
+
19247
+ if (this.MainFrame.YMaxMin)
19248
+ {
19249
+ this.YMaxMin.Max=this.MainFrame.YMaxMin.Max;
19250
+ this.YMaxMin.Min=this.MainFrame.YMaxMin.Min;
19251
+ }
19252
+
19253
+ this.HorizontalMax=this.MainFrame.HorizontalMax;
19254
+ this.HorizontalMin=this.MainFrame.HorizontalMin;
19255
+ this.HorizontalInfo=[];
19256
+ for(var i=0;i<this.MainFrame.HorizontalInfo.length; ++i)
19257
+ {
19258
+ var item=this.MainFrame.HorizontalInfo[i];
19259
+ this.HorizontalInfo.push(item);
19260
+ }
19261
+
19262
+ this.CoordinateType=this.MainFrame.CoordinateType;
19263
+
19264
+ return true;
19265
+ }
19266
+
19241
19267
  //分割x,y轴坐标信息
19242
19268
  this.SplitXYCoordinate=function()
19243
19269
  {
@@ -19245,16 +19271,7 @@ function OverlayKLineFrame()
19245
19271
 
19246
19272
  if (this.IsShareY) //和主图指标共享Y轴坐标
19247
19273
  {
19248
- this.HorizontalMax=this.MainFrame.HorizontalMax;
19249
- this.HorizontalMin=this.MainFrame.HorizontalMin;
19250
- this.HorizontalInfo=[];
19251
- for(var i in this.MainFrame.HorizontalInfo)
19252
- {
19253
- var item=this.MainFrame.HorizontalInfo[i];
19254
- this.HorizontalInfo.push(item);
19255
- }
19256
-
19257
- this.CoordinateType=this.MainFrame.CoordinateType;
19274
+ this.SyncMainHorizontalInfo();
19258
19275
  }
19259
19276
  else //独立Y轴坐标
19260
19277
  {
@@ -20532,10 +20549,12 @@ function OverlayIndexItem()
20532
20549
  }
20533
20550
  else
20534
20551
  {
20535
- for(var i in this.ChartPaint)
20552
+ for(var i=0;i<this.ChartPaint.length;++i)
20536
20553
  {
20537
20554
  var paint=this.ChartPaint[i];
20555
+ if (paint.IsShow==false) continue; //隐藏的图形不计算
20538
20556
  var range=paint.GetMaxMin();
20557
+ if (range==null || range.Max==null || range.Min==null) continue;
20539
20558
 
20540
20559
  if (IFrameSplitOperator.IsNumber(range.Max))
20541
20560
  {
@@ -20549,10 +20568,29 @@ function OverlayIndexItem()
20549
20568
  }
20550
20569
  }
20551
20570
 
20552
- if (value.Max!=null && value.Min!=null)
20571
+ if (!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Max) || this.Frame.YMaxMin.Max!=value.Max)
20572
+ {
20573
+ this.Frame.YMaxMin.Max=value.Max;
20574
+ this.Frame.XYSplit=true;
20575
+ }
20576
+
20577
+ if (!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Min) || this.Frame.YMaxMin.Min!=value.Min)
20578
+ {
20579
+ this.Frame.YMaxMin.Min=value.Min;
20580
+ this.Frame.XYSplit=true;
20581
+ }
20582
+
20583
+ if (this.Frame.XYSplit)
20584
+ {
20585
+ var max=10, min=0;
20586
+ if (value.Max!=null) max=value.Max;
20587
+ if (value.Min!=null) min=value.Min;
20588
+
20589
+ this.Frame.HorizontalMax=max;
20590
+ this.Frame.HorizontalMin=min;
20591
+ }
20592
+ else
20553
20593
  {
20554
- this.Frame.HorizontalMax=value.Max;
20555
- this.Frame.HorizontalMin=value.Min;
20556
20594
  this.Frame.XYSplit=true;
20557
20595
  }
20558
20596
  }
@@ -20719,7 +20757,7 @@ function HQTradeFrame()
20719
20757
  splitOper.EnableZoomUpDown=true;
20720
20758
  frame.XYSplit=true;
20721
20759
 
20722
- for(var i in subFrame.OverlayIndex)
20760
+ for(var i=0;i<subFrame.OverlayIndex.length;++i)
20723
20761
  {
20724
20762
  var item=subFrame.OverlayIndex[i];
20725
20763
  if (item.Frame.IsShareY) item.Frame.XYSplit=true;
@@ -21083,14 +21121,25 @@ function HQTradeFrame()
21083
21121
  var overlayItem=item.OverlayIndex[j];
21084
21122
  if (!overlayItem.Frame) continue;
21085
21123
 
21086
- var maxValue=overlayItem.Frame.HorizontalMax; //最大最小要还原
21087
- var minValue=overlayItem.Frame.HorizontalMin;
21124
+ if (overlayItem.Frame.IsShareY)
21125
+ {
21126
+ if (overlayItem.Frame.SyncMainHorizontalInfo)
21127
+ overlayItem.Frame.SyncMainHorizontalInfo();
21088
21128
 
21089
- overlayItem.Frame.YSplitOperator.Operator();
21090
- var value=overlayItem.Frame.GetScaleTextWidth();
21091
-
21092
- overlayItem.Frame.HorizontalMax=maxValue;
21093
- overlayItem.Frame.HorizontalMin=minValue;
21129
+ var value=overlayItem.Frame.GetScaleTextWidth();
21130
+ }
21131
+ else
21132
+ {
21133
+ var maxValue=overlayItem.Frame.HorizontalMax; //最大最小要还原
21134
+ var minValue=overlayItem.Frame.HorizontalMin;
21135
+
21136
+ overlayItem.Frame.YSplitOperator.Operator();
21137
+ var value=overlayItem.Frame.GetScaleTextWidth();
21138
+
21139
+ //数据原始范围存储在YMaxMin, 不需要还原HorizontalMax,HorizontalMin
21140
+ //overlayItem.Frame.HorizontalMax=maxValue;
21141
+ //overlayItem.Frame.HorizontalMin=minValue;
21142
+ }
21094
21143
 
21095
21144
  overlayItem.RightWidth={ Index:-1, Width:0 };
21096
21145
  if (!value || !value.TextWidth) continue;
@@ -71409,7 +71458,7 @@ function KLineChartContainer(uielement,OffscreenElement)
71409
71458
  this.Draw();
71410
71459
  }
71411
71460
 
71412
- this.ReqeustHistoryMinuteData=function()
71461
+ this.RequestHistoryMinuteData=function()
71413
71462
  {
71414
71463
  var self=this;
71415
71464
  this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);
@@ -71487,6 +71536,8 @@ function KLineChartContainer(uielement,OffscreenElement)
71487
71536
  });
71488
71537
  }
71489
71538
 
71539
+ //支持老版本
71540
+ this.ReqeustHistoryMinuteData=this.RequestHistoryMinuteData;
71490
71541
 
71491
71542
  this.RecvMinuteHistoryData=function(data)
71492
71543
  {
@@ -72659,7 +72710,7 @@ function KLineChartContainer(uielement,OffscreenElement)
72659
72710
  this.ResetOverlaySymbolStatus();
72660
72711
  this.ClearIndexRunCount();
72661
72712
  this.Frame.ClearYCoordinateMaxMin();
72662
- this.ReqeustHistoryMinuteData(); //请求分钟数据
72713
+ this.RequestHistoryMinuteData(); //请求分钟数据
72663
72714
  }
72664
72715
  else if (ChartData.IsTickPeriod(this.Period))
72665
72716
  {
@@ -72709,7 +72760,7 @@ function KLineChartContainer(uielement,OffscreenElement)
72709
72760
  this.ClearIndexPaint();
72710
72761
  this.ResetOverlaySymbolStatus();
72711
72762
  this.ResetScrollBar();
72712
- this.ReqeustHistoryMinuteData(); //请求分钟数据
72763
+ this.RequestHistoryMinuteData(); //请求分钟数据
72713
72764
  }
72714
72765
  }
72715
72766
  }
@@ -73200,7 +73251,7 @@ function KLineChartContainer(uielement,OffscreenElement)
73200
73251
  else if (ChartData.IsMinutePeriod(this.Period,true) || ChartData.IsSecondPeriod(this.Period) || ChartData.IsMilliSecondPeriod(this.Period))
73201
73252
  {
73202
73253
  this.ResetOverlaySymbolStatus();
73203
- this.ReqeustHistoryMinuteData(); //请求分钟数据
73254
+ this.RequestHistoryMinuteData(); //请求分钟数据
73204
73255
  }
73205
73256
 
73206
73257
  return;
@@ -74050,7 +74101,7 @@ function KLineChartContainer(uielement,OffscreenElement)
74050
74101
  else if (ChartData.IsMinutePeriod(this.Period,true) || ChartData.IsSecondPeriod(this.Period) || ChartData.IsMilliSecondPeriod(this.Period))
74051
74102
  {
74052
74103
  this.ClearStockCache();
74053
- this.ReqeustHistoryMinuteData(); //请求分钟数据
74104
+ this.RequestHistoryMinuteData(); //请求分钟数据
74054
74105
  }
74055
74106
  else if (ChartData.IsTickPeriod(this.Period))
74056
74107
  {
@@ -131226,7 +131277,7 @@ function ScrollBarBGChart()
131226
131277
 
131227
131278
 
131228
131279
 
131229
- var HQCHART_VERSION="1.1.12759";
131280
+ var HQCHART_VERSION="1.1.12770";
131230
131281
 
131231
131282
  function PrintHQChartVersion()
131232
131283
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12759";
8
+ var HQCHART_VERSION="1.1.12770";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -7783,7 +7783,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7783
7783
  drag.CurrentMove.Y=e.clientY;
7784
7784
  }
7785
7785
 
7786
- if (this.BorderDrag && this.BorderDrag.Index>=0)
7786
+ if (this.BorderDrag && this.BorderDrag.Index>=0) //边框拖动
7787
7787
  {
7788
7788
  if(Math.abs(drag.LastMove.Y-e.clientY)<5) return;
7789
7789
 
@@ -7794,7 +7794,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7794
7794
  drag.LastMove.X=e.clientX;
7795
7795
  drag.LastMove.Y=e.clientY;
7796
7796
  }
7797
- else if (this.YDrag && this.YDrag.Index>=0)
7797
+ else if (this.YDrag && this.YDrag.Index>=0) //Y轴缩放
7798
7798
  {
7799
7799
  if(moveSetpY<5) return;
7800
7800
 
@@ -19152,6 +19152,7 @@ function OverlayKLineFrame()
19152
19152
  {
19153
19153
  this.Buttons=[];
19154
19154
  if (this.ChartBorder.IsShowTitleOnly) return;
19155
+
19155
19156
  this.SplitXYCoordinate();
19156
19157
 
19157
19158
  if (this.IsShow)
@@ -19282,6 +19283,31 @@ function OverlayKLineFrame()
19282
19283
  return { TextWidth:width };
19283
19284
  }
19284
19285
 
19286
+ //同步主图坐标
19287
+ this.SyncMainHorizontalInfo=function()
19288
+ {
19289
+ if (!this.MainFrame) return false;
19290
+
19291
+ if (this.MainFrame.YMaxMin)
19292
+ {
19293
+ this.YMaxMin.Max=this.MainFrame.YMaxMin.Max;
19294
+ this.YMaxMin.Min=this.MainFrame.YMaxMin.Min;
19295
+ }
19296
+
19297
+ this.HorizontalMax=this.MainFrame.HorizontalMax;
19298
+ this.HorizontalMin=this.MainFrame.HorizontalMin;
19299
+ this.HorizontalInfo=[];
19300
+ for(var i=0;i<this.MainFrame.HorizontalInfo.length; ++i)
19301
+ {
19302
+ var item=this.MainFrame.HorizontalInfo[i];
19303
+ this.HorizontalInfo.push(item);
19304
+ }
19305
+
19306
+ this.CoordinateType=this.MainFrame.CoordinateType;
19307
+
19308
+ return true;
19309
+ }
19310
+
19285
19311
  //分割x,y轴坐标信息
19286
19312
  this.SplitXYCoordinate=function()
19287
19313
  {
@@ -19289,16 +19315,7 @@ function OverlayKLineFrame()
19289
19315
 
19290
19316
  if (this.IsShareY) //和主图指标共享Y轴坐标
19291
19317
  {
19292
- this.HorizontalMax=this.MainFrame.HorizontalMax;
19293
- this.HorizontalMin=this.MainFrame.HorizontalMin;
19294
- this.HorizontalInfo=[];
19295
- for(var i in this.MainFrame.HorizontalInfo)
19296
- {
19297
- var item=this.MainFrame.HorizontalInfo[i];
19298
- this.HorizontalInfo.push(item);
19299
- }
19300
-
19301
- this.CoordinateType=this.MainFrame.CoordinateType;
19318
+ this.SyncMainHorizontalInfo();
19302
19319
  }
19303
19320
  else //独立Y轴坐标
19304
19321
  {
@@ -20576,10 +20593,12 @@ function OverlayIndexItem()
20576
20593
  }
20577
20594
  else
20578
20595
  {
20579
- for(var i in this.ChartPaint)
20596
+ for(var i=0;i<this.ChartPaint.length;++i)
20580
20597
  {
20581
20598
  var paint=this.ChartPaint[i];
20599
+ if (paint.IsShow==false) continue; //隐藏的图形不计算
20582
20600
  var range=paint.GetMaxMin();
20601
+ if (range==null || range.Max==null || range.Min==null) continue;
20583
20602
 
20584
20603
  if (IFrameSplitOperator.IsNumber(range.Max))
20585
20604
  {
@@ -20593,10 +20612,29 @@ function OverlayIndexItem()
20593
20612
  }
20594
20613
  }
20595
20614
 
20596
- if (value.Max!=null && value.Min!=null)
20615
+ if (!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Max) || this.Frame.YMaxMin.Max!=value.Max)
20616
+ {
20617
+ this.Frame.YMaxMin.Max=value.Max;
20618
+ this.Frame.XYSplit=true;
20619
+ }
20620
+
20621
+ if (!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Min) || this.Frame.YMaxMin.Min!=value.Min)
20622
+ {
20623
+ this.Frame.YMaxMin.Min=value.Min;
20624
+ this.Frame.XYSplit=true;
20625
+ }
20626
+
20627
+ if (this.Frame.XYSplit)
20628
+ {
20629
+ var max=10, min=0;
20630
+ if (value.Max!=null) max=value.Max;
20631
+ if (value.Min!=null) min=value.Min;
20632
+
20633
+ this.Frame.HorizontalMax=max;
20634
+ this.Frame.HorizontalMin=min;
20635
+ }
20636
+ else
20597
20637
  {
20598
- this.Frame.HorizontalMax=value.Max;
20599
- this.Frame.HorizontalMin=value.Min;
20600
20638
  this.Frame.XYSplit=true;
20601
20639
  }
20602
20640
  }
@@ -20763,7 +20801,7 @@ function HQTradeFrame()
20763
20801
  splitOper.EnableZoomUpDown=true;
20764
20802
  frame.XYSplit=true;
20765
20803
 
20766
- for(var i in subFrame.OverlayIndex)
20804
+ for(var i=0;i<subFrame.OverlayIndex.length;++i)
20767
20805
  {
20768
20806
  var item=subFrame.OverlayIndex[i];
20769
20807
  if (item.Frame.IsShareY) item.Frame.XYSplit=true;
@@ -21127,14 +21165,25 @@ function HQTradeFrame()
21127
21165
  var overlayItem=item.OverlayIndex[j];
21128
21166
  if (!overlayItem.Frame) continue;
21129
21167
 
21130
- var maxValue=overlayItem.Frame.HorizontalMax; //最大最小要还原
21131
- var minValue=overlayItem.Frame.HorizontalMin;
21168
+ if (overlayItem.Frame.IsShareY)
21169
+ {
21170
+ if (overlayItem.Frame.SyncMainHorizontalInfo)
21171
+ overlayItem.Frame.SyncMainHorizontalInfo();
21132
21172
 
21133
- overlayItem.Frame.YSplitOperator.Operator();
21134
- var value=overlayItem.Frame.GetScaleTextWidth();
21135
-
21136
- overlayItem.Frame.HorizontalMax=maxValue;
21137
- overlayItem.Frame.HorizontalMin=minValue;
21173
+ var value=overlayItem.Frame.GetScaleTextWidth();
21174
+ }
21175
+ else
21176
+ {
21177
+ var maxValue=overlayItem.Frame.HorizontalMax; //最大最小要还原
21178
+ var minValue=overlayItem.Frame.HorizontalMin;
21179
+
21180
+ overlayItem.Frame.YSplitOperator.Operator();
21181
+ var value=overlayItem.Frame.GetScaleTextWidth();
21182
+
21183
+ //数据原始范围存储在YMaxMin, 不需要还原HorizontalMax,HorizontalMin
21184
+ //overlayItem.Frame.HorizontalMax=maxValue;
21185
+ //overlayItem.Frame.HorizontalMin=minValue;
21186
+ }
21138
21187
 
21139
21188
  overlayItem.RightWidth={ Index:-1, Width:0 };
21140
21189
  if (!value || !value.TextWidth) continue;
@@ -71453,7 +71502,7 @@ function KLineChartContainer(uielement,OffscreenElement)
71453
71502
  this.Draw();
71454
71503
  }
71455
71504
 
71456
- this.ReqeustHistoryMinuteData=function()
71505
+ this.RequestHistoryMinuteData=function()
71457
71506
  {
71458
71507
  var self=this;
71459
71508
  this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);
@@ -71531,6 +71580,8 @@ function KLineChartContainer(uielement,OffscreenElement)
71531
71580
  });
71532
71581
  }
71533
71582
 
71583
+ //支持老版本
71584
+ this.ReqeustHistoryMinuteData=this.RequestHistoryMinuteData;
71534
71585
 
71535
71586
  this.RecvMinuteHistoryData=function(data)
71536
71587
  {
@@ -72703,7 +72754,7 @@ function KLineChartContainer(uielement,OffscreenElement)
72703
72754
  this.ResetOverlaySymbolStatus();
72704
72755
  this.ClearIndexRunCount();
72705
72756
  this.Frame.ClearYCoordinateMaxMin();
72706
- this.ReqeustHistoryMinuteData(); //请求分钟数据
72757
+ this.RequestHistoryMinuteData(); //请求分钟数据
72707
72758
  }
72708
72759
  else if (ChartData.IsTickPeriod(this.Period))
72709
72760
  {
@@ -72753,7 +72804,7 @@ function KLineChartContainer(uielement,OffscreenElement)
72753
72804
  this.ClearIndexPaint();
72754
72805
  this.ResetOverlaySymbolStatus();
72755
72806
  this.ResetScrollBar();
72756
- this.ReqeustHistoryMinuteData(); //请求分钟数据
72807
+ this.RequestHistoryMinuteData(); //请求分钟数据
72757
72808
  }
72758
72809
  }
72759
72810
  }
@@ -73244,7 +73295,7 @@ function KLineChartContainer(uielement,OffscreenElement)
73244
73295
  else if (ChartData.IsMinutePeriod(this.Period,true) || ChartData.IsSecondPeriod(this.Period) || ChartData.IsMilliSecondPeriod(this.Period))
73245
73296
  {
73246
73297
  this.ResetOverlaySymbolStatus();
73247
- this.ReqeustHistoryMinuteData(); //请求分钟数据
73298
+ this.RequestHistoryMinuteData(); //请求分钟数据
73248
73299
  }
73249
73300
 
73250
73301
  return;
@@ -74094,7 +74145,7 @@ function KLineChartContainer(uielement,OffscreenElement)
74094
74145
  else if (ChartData.IsMinutePeriod(this.Period,true) || ChartData.IsSecondPeriod(this.Period) || ChartData.IsMilliSecondPeriod(this.Period))
74095
74146
  {
74096
74147
  this.ClearStockCache();
74097
- this.ReqeustHistoryMinuteData(); //请求分钟数据
74148
+ this.RequestHistoryMinuteData(); //请求分钟数据
74098
74149
  }
74099
74150
  else if (ChartData.IsTickPeriod(this.Period))
74100
74151
  {
@@ -131384,7 +131435,7 @@ function HQChartScriptWorker()
131384
131435
 
131385
131436
 
131386
131437
 
131387
- var HQCHART_VERSION="1.1.12759";
131438
+ var HQCHART_VERSION="1.1.12770";
131388
131439
 
131389
131440
  function PrintHQChartVersion()
131390
131441
  {