hqchart 1.1.14864 → 1.1.14874

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.
@@ -1777,7 +1777,7 @@ this.JSPopMenu.Inital(this);};this.InitalDrawToolDialog=function(){if(this.Dialo
1777
1777
  this.ShowAddIndexWindowDialog=function(option){if(!this.DialogSearchIndex)return;var data=option;if(!data)data={};data.OpType=3;data.Title='\u589E\u52A0\u6307\u6807\u7A97\u53E3';this.DialogSearchIndex.SetOpData(data);this.DialogSearchIndex.Show();};this.ShowModifyIndexParamDialog=function(data){if(!this.DialogModifyIndexParam)return;if(data.Type==1){var indexScript=this.WindowIndex[data.WindowIndex];if(!indexScript)return;data.IndexScript=indexScript;data.Title='['+indexScript.Name+']\u53C2\u6570\u4FEE\u6539 \u7A97\u53E3['+(data.WindowIndex+1)+']';}else if(data.Type==2){var overlayIndex=this.GetOverlayIndexByIdentify(data.Identify);if(!overlayIndex||!overlayIndex.OverlayItem.Script)return;var indexScript=overlayIndex.OverlayItem.Script;data.IndexScript=indexScript;data.Title='['+indexScript.Name+']\u53C2\u6570\u4FEE\u6539 \u53E0\u52A0\u7A97\u53E3['+(data.WindowIndex+1)+']';}this.DialogModifyIndexParam.SetIndexData(data);this.DialogModifyIndexParam.Show();};this.DrawSelectRectDialog=function(){};this.IsShowSelectRectDialog=function(){if(!this.DialogSelectRect)return false;return this.DialogSelectRect.IsShow();};this.ShowDrawToolDialog=function(x,y){if(!this.DialogDrawTool)return;var rtClient=this.UIElement.getBoundingClientRect();var rtScroll=GetScrollPosition();var top=this.UIElement.offsetTop+15;var left=this.UIElement.offsetWidth-this.DialogDrawTool.DivDialog.offsetWidth-15;left+=rtClient.left+rtScroll.Left;top+=rtClient.top+rtScroll.Top;this.DialogDrawTool.Show(left,top);};this.IsShowDrawToolDialog=function(){if(!this.DialogDrawTool)return false;return this.DialogDrawTool.IsShow();};this.ShowModifyDrawDialog=function(chart,x,y){if(!this.DialogModifyDraw)return;this.DialogModifyDraw.SetChartPicture(chart);if(this.DialogModifyDraw.IsShow())return;var rtClient=this.UIElement.getBoundingClientRect();var rtScroll=GetScrollPosition();var top=this.UIElement.offsetTop+15;var left=(this.UIElement.offsetWidth-this.DialogModifyDraw.DivDialog.offsetWidth)/2;left+=rtClient.left+rtScroll.Left;top+=rtClient.top+rtScroll.Top;this.DialogModifyDraw.Show(left,top);};this.CloseModifyDrawDialog=function(){if(!this.DialogModifyDraw)return;this.DialogModifyDraw.Close();};this.IsShowTooltipDialog=function(){if(!this.DialogTooltip)return false;return this.DialogTooltip.IsShow();};this.CloseTooltipDialog=function(){if(!this.DialogTooltip)return;this.DialogTooltip.Close();};this.HideFloatTooltip=function(){if(!this.FloatTooltip)return;this.FloatTooltip.Hide();};this.DestroyTooltipDialog=function(){if(!this.DialogTooltip)return;this.DialogTooltip.Destroy();this.DialogTooltip=null;};this.DestroyFloatTooltip=function(){if(!this.FloatTooltip)return;this.FloatTooltip.Destroy();this.FloatTooltip=null;};this.DestroySearchIndexDialog=function(){if(!this.DialogSearchIndex)return;this.DialogSearchIndex.Destroy();this.DialogSearchIndex=null;};this.DestroyDialogDrawTool=function(){if(!this.DialogDrawTool)return;this.DialogDrawTool.Destroy();this.DialogDrawTool=null;};this.DestroyDialogModifyIndexParam=function(){if(!this.DialogModifyIndexParam)return;this.DialogModifyIndexParam.Destroy();this.DialogModifyIndexParam=null;};this.DestroyDialogSelectRect=function(){if(!this.DialogSelectRect)return;this.DialogSelectRect.Destroy();this.DialogSelectRect=null;};this.DestroyDialogModifyDraw=function(){if(!this.DialogModifyDraw)return;this.DialogModifyDraw.Destroy();this.DialogModifyDraw=null;};this.DestroyPopMenu=function(){if(!this.JSPopMenu)return;this.JSPopMenu.Destroy();this.JSPopMenu=null;};//隐藏内置的弹框div
1778
1778
  this.HideAllPopDiv=function(){this.HideFloatTooltip();this.CloseTooltipDialog();if(this.DialogDrawTool)this.DialogDrawTool.Close();this.CloseModifyDrawDialog();if(this.DialogSelectRect)this.DialogSelectRect.Close();if(this.DialogSearchIndex)this.DialogSearchIndex.Close();if(this.DialogModifyIndexParam)this.DialogModifyIndexParam.Close();};//obj={ Element:, Canvas: }
1779
1779
  this.SetCorssCursorElement=function(obj){if(!obj||!obj.Element||!obj.Canvas)return;this.CorssCursorElement=obj.Element;this.CorssCursorCanvas=obj.Canvas;};this.StopDisplayLatest=function(){this.GlobalOption.IsDisplayLatest=false;if(this.DisplayLatestOption.Timer){clearTimeout(this.DisplayLatestOption.Timer);this.DisplayLatestOption.Timer=null;}};this.StartStopDisplayLatest=function(){var _this6=this;this.StopDisplayLatest();if(!this.DisplayLatestOption.Enable)return;this.DisplayLatestOption.Timer=setTimeout(function(){if(_this6.DisplayLatest){JSConsole.Chart.Log('[JSChartContainer:StartStopDisplayLatest] call this.DisplayLatest()');_this6.DisplayLatest();}},this.DisplayLatestOption.DelayTime);};this.StopDrawDynamicInfo=function(){if(this.DrawDynamicInfoOption.Timer){clearTimeout(this.DrawDynamicInfoOption.Timer);this.DrawDynamicInfoOption.Timer=null;}};this.StartLatestPointFlash=function(){var _this7=this;this.LatestPointFlashOption.Timer=setInterval(function(){_this7.DrawLatestPoint();},this.LatestPointFlashOption.DelayTime);};this.StopLatestPointFlash=function(){if(this.LatestPointFlashOption.Timer){clearInterval(this.LatestPointFlashOption.Timer);this.LatestPointFlashOption.Timer=null;}};this.DrawLatestPoint=function(){var finder=this.GetExtendChartByClassName("LatestPointFlashPaint");if(finder&&finder.Chart)finder.Chart.Draw();};this.SetLatestPointFlash=function(flashCount,option){if(!IFrameSplitOperator.IsNumber(flashCount))return;var finder=this.GetExtendChartByClassName("LatestPointFlashPaint");if(!finder||!finder.Chart)return false;var chart=finder.Chart;chart.FlashCount=flashCount;};this.ChartDestroy=function()//销毁
1780
- {this.IsDestroy=true;this.StopAutoUpdate();this.DestroyTooltipDialog();this.DestroyFloatTooltip();this.DestroySearchIndexDialog();this.DestroyDialogModifyIndexParam();this.DestroyDialogDrawTool();this.DestroyDialogModifyDraw();this.DestroyDialogSelectRect();this.DestroyPopMenu();this.StopLatestPointFlash();document.oncontextmenu=null;this.RemoveAllEventListener();};this.ChartDestory=this.ChartDestroy;//老版本写错了,需要兼容下
1780
+ {this.IsDestroy=true;this.StopAutoUpdate();this.DestroyTooltipDialog();this.DestroyFloatTooltip();this.DestroySearchIndexDialog();this.DestroyDialogModifyIndexParam();this.DestroyDialogDrawTool();this.DestroyDialogModifyDraw();this.DestroyDialogSelectRect();this.DestroyPopMenu();if(this.DestroyPopMinuteChart)this.DestroyPopMinuteChart();this.StopLatestPointFlash();document.oncontextmenu=null;this.RemoveAllEventListener();};this.ChartDestory=this.ChartDestroy;//老版本写错了,需要兼容下
1781
1781
  //设置焦点
1782
1782
  this.SetFocus=function(){if(this.UIElement)this.UIElement.focus();};//设置事件回调
1783
1783
  //{event:事件id, callback:回调函数}
@@ -2682,9 +2682,9 @@ for(var i=0;i<this.VerticalInfo.length;++i){var item=this.VerticalInfo[i];var x=
2682
2682
  this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();this.Canvas.setLineDash([]);}else{this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();}}}if(item.BG&&this.DrawDayVertical){this.DrawDayVertical(item,x,border);}if(item.Message[0]!=null&&this.ChartBorder.Bottom>5*pixelRatio){if(IFrameSplitOperator.IsObject(item.Message[0])){var textObj=item.Message[0];if(!textObj.Font)textObj.Font=item.Font;if(!textObj.TextColor)textObj.TextColor=item.TextColor;var drawInfo=this.GetMultiLineVTextSize(textObj);if(drawInfo){drawInfo.XCenter=x;var rtBottom={Left:0,Right:right,Top:bottom+2*pixelRatio,Bottom:border.Height};rtBottom.Width=rtBottom.Right-rtBottom.Left;rtBottom.Height=rtBottom.Bottom-rtBottom.Top;drawInfo.RectBottom=rtBottom;drawInfo.TextRightPrev=textRightPrev;this.DrawMultiLineVText(drawInfo);if(drawInfo.TextRight)textRightPrev=drawInfo.TextRight;}}else{if(item.Font)this.Canvas.font=item.Font;var textLeft=0;this.Canvas.strokeStyle=item.TextColor;var testWidth=this.Canvas.measureText(item.Message[0]).width;var textHeight=this.Canvas.measureText("擎").width;if(bottomTextExtend&&bottomTextExtend.Align==1){this.Canvas.textAlign="left";this.Canvas.textBaseline="top";textLeft=x;}else{if(x<testWidth/2){this.Canvas.textAlign="left";this.Canvas.textBaseline="top";textLeft=x;}else if(x+testWidth/2>=this.ChartBorder.GetChartWidth()){this.Canvas.textAlign="right";this.Canvas.textBaseline="top";textLeft=x-testWidth;}else{this.Canvas.textAlign="center";this.Canvas.textBaseline="top";textLeft=x-testWidth/2;}}if(textRightPrev==null||textLeft>textRightPrev){var yText=bottom;if(item.LineType==3){var lineLength=this.ShortXLineLength*pixelRatio;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,yText);this.Canvas.lineTo(xFixed,yText+lineLength);this.Canvas.stroke();yText+=lineLength+2*pixelRatio;}if(bottomLineExtend){if(bottomLineExtend.Mode===1){if(item.Value>1){if(bottomLineExtend.Color)this.Canvas.strokeStyle=bottomLineExtend.Color;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,bottom);this.Canvas.lineTo(xFixed,border.ChartHeight);this.Canvas.stroke();x+=1;}}else if(bottomLineExtend.Mode===2){if(bottomLineExtend.Width>=1){var lineLength=bottomLineExtend.Width;if(bottomLineExtend.Color)this.Canvas.strokeStyle=bottomLineExtend.Color;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,yText);this.Canvas.lineTo(xFixed,yText+lineLength);this.Canvas.stroke();yText+=lineLength+2;}}}//item.TextBGColor="rgb(0,255,0)";
2683
2683
  if(item.TextBGColor)//文字背景色
2684
2684
  {var rtText={Left:textLeft,Top:yText+this.XBottomOffset,Width:testWidth,Height:textHeight};this.Canvas.fillStyle=item.TextBGColor;this.Canvas.fillRect(rtText.Left-1,rtText.Top,rtText.Width+2,rtText.Height);}this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(this.VerticalInfo[i].Message[0],x,yText+this.XBottomOffset);textRightPrev=textLeft+testWidth;}}}xPrev=x;}};//{Font:, AryText:[ { AryText:[{ Text:, Color: }], }, ] }
2685
- this.GetMultiLineVTextSize=function(obj){if(obj.Font)this.Canvas.font=obj.Font;var lineHeight=this.Canvas.measureText('擎').width;var aryLine=[];for(var i=0;i<obj.AryText.length;++i){var item=obj.AryText[i];var lineInfo={Width:0,Height:lineHeight,AryText:[],Align:2,Margin:{Top:1,Bottom:1},YOffset:-1};if(item.Margin){if(IFrameSplitOperator.IsNumber(item.Margin.Top))lineInfo.Margin.Top=item.Margin.Top;if(IFrameSplitOperator.IsNumber(item.Margin.Bottom))lineInfo.Margin.Bottom=item.Margin.Bottom;}if(IFrameSplitOperator.IsNumber(item.YOffset))lineInfo.YOffset=item.YOffset;lineInfo.Height=lineHeight+lineInfo.Margin.Top+lineInfo.Margin.Bottom;for(var j=0;j<item.AryText.length;++j){var subItem=item.AryText[j];if(!subItem||!subItem.Text)continue;var width=this.Canvas.measureText(subItem.Text).width;var textItem={Width:width,Text:subItem.Text,Color:obj.TextColor,Margin:{Left:0,Right:0}};if(subItem.Color)textItem.Color=subItem.Color;if(subItem.Margin){if(IFrameSplitOperator.IsNumber(subItem.Margin.Left))textItem.Margin.Left=subItem.Margin.Left;if(IFrameSplitOperator.IsNumber(subItem.Margin.Right))textItem.Margin.Right=subItem.Margin.Right;}textItem.Width=width+textItem.Margin.Right+textItem.Margin.Left;lineInfo.Width+=textItem.Width;lineInfo.AryText.push(textItem);}aryLine.push(lineInfo);}if(aryLine.length<=0)return null;var width=0,height=0;for(var i=0;i<aryLine.length;++i){var item=aryLine[i];if(width<item.Width)width=item.Width;height+=item.Height;}if(width<=0||height<=0)return null;return{Width:width,Height:height,AryLine:aryLine,Align:2};//Align 1=left 2=center 3=right
2686
- };//X轴底部文字多行输出
2687
- this.DrawMultiLineVText=function(drawInfo){var xLeft=drawInfo.XCenter-drawInfo.Width/2;if(drawInfo.TextRightPrev!=null&&drawInfo.TextRightPrev>xLeft)return false;this.Canvas.font=drawInfo.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="bottom";var yText=drawInfo.RectBottom.Top;var textRight=null;for(var i=0,j=0;i<drawInfo.AryLine.length;++i){var lineItem=drawInfo.AryLine[i];if(lineItem.Align==2)var xLeft=drawInfo.XCenter-lineItem.Width/2;if(xLeft<1)xLeft=1;yText+=lineItem.Height;for(j=0;j<lineItem.AryText.length;++j){var item=lineItem.AryText[j];this.Canvas.fillStyle=item.Color;this.Canvas.fillText(item.Text,xLeft+item.Margin.Left,yText+lineItem.YOffset);xLeft+=item.Width;}if(textRight==null||textRight<xLeft)textRight=xLeft;}drawInfo.TextRight=textRight;return true;};//Y坐标转y轴数值
2685
+ this.GetMultiLineVTextSize=function(obj){if(obj.Font)this.Canvas.font=obj.Font;var lineHeight=this.Canvas.measureText('擎').width;var aryLine=[];for(var i=0;i<obj.AryText.length;++i){var item=obj.AryText[i];var lineInfo={Width:0,Height:lineHeight,AryText:[],Align:2,Margin:{Top:1,Bottom:1},YOffset:-1};if(item.Margin){if(IFrameSplitOperator.IsNumber(item.Margin.Top))lineInfo.Margin.Top=item.Margin.Top;if(IFrameSplitOperator.IsNumber(item.Margin.Bottom))lineInfo.Margin.Bottom=item.Margin.Bottom;}if(IFrameSplitOperator.IsNumber(item.YOffset))lineInfo.YOffset=item.YOffset;if(IFrameSplitOperator.IsNumber(item.Align))lineInfo.Align=item.Align;lineInfo.Height=lineHeight+lineInfo.Margin.Top+lineInfo.Margin.Bottom;for(var j=0;j<item.AryText.length;++j){var subItem=item.AryText[j];if(!subItem||!subItem.Text)continue;var width=this.Canvas.measureText(subItem.Text).width;var textItem={Width:width,Text:subItem.Text,Color:obj.TextColor,Margin:{Left:0,Right:0}};if(subItem.Color)textItem.Color=subItem.Color;if(subItem.Margin){if(IFrameSplitOperator.IsNumber(subItem.Margin.Left))textItem.Margin.Left=subItem.Margin.Left;if(IFrameSplitOperator.IsNumber(subItem.Margin.Right))textItem.Margin.Right=subItem.Margin.Right;}textItem.Width=width+textItem.Margin.Right+textItem.Margin.Left;lineInfo.Width+=textItem.Width;lineInfo.AryText.push(textItem);}aryLine.push(lineInfo);}if(aryLine.length<=0)return null;var width=0,height=0;for(var i=0;i<aryLine.length;++i){var item=aryLine[i];if(width<item.Width)width=item.Width;height+=item.Height;}if(width<=0||height<=0)return null;var drawInfo={Width:width,Height:height,AryLine:aryLine,Align:2};//Align 1=left 2=center 3=right
2686
+ if(IFrameSplitOperator.IsNumber(obj.Align))drawInfo.Align=obj.Align;return drawInfo;};//X轴底部文字多行输出
2687
+ this.DrawMultiLineVText=function(drawInfo){var xLeft=drawInfo.XCenter-drawInfo.Width/2;if(drawInfo.Align==1)xLeft=drawInfo.XCenter;if(drawInfo.TextRightPrev!=null&&drawInfo.TextRightPrev>xLeft)return false;this.Canvas.font=drawInfo.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="bottom";var yText=drawInfo.RectBottom.Top;var textRight=null;for(var i=0,j=0;i<drawInfo.AryLine.length;++i){var lineItem=drawInfo.AryLine[i];if(drawInfo.Align==1){var xLeft=drawInfo.XCenter-drawInfo.Width/2;if(lineItem.Align==1)xLeft=drawInfo.XCenter;else if(lineItem.Align==2)xLeft=drawInfo.XCenter+drawInfo.Width-lineItem.Width;}else{var xLeft=drawInfo.XCenter-lineItem.Width/2;if(lineItem.Align==1)xLeft=drawInfo.XCenter-drawInfo.Width/2;else if(lineItem.Align==2)xLeft=drawInfo.XCenter+drawInfo.Width/2-lineItem.Width;}if(xLeft<1)xLeft=1;yText+=lineItem.Height;for(j=0;j<lineItem.AryText.length;++j){var item=lineItem.AryText[j];this.Canvas.fillStyle=item.Color;this.Canvas.fillText(item.Text,xLeft+item.Margin.Left,yText+lineItem.YOffset);xLeft+=item.Width;}if(textRight==null||textRight<xLeft)textRight=xLeft;}drawInfo.TextRight=textRight;return true;};//Y坐标转y轴数值
2688
2688
  this.GetYData=function(y,isLimit){if(this.Logarithmic&&this.GetYLogarithmicFromData){return this.GetYLogarithmicData(y);}if(this.CoordinateType==1)//反转坐标
2689
2689
  {if(isLimit==false){return(y-this.ChartBorder.GetTopEx())/this.ChartBorder.GetHeightEx()*(this.HorizontalMax-this.HorizontalMin)+this.HorizontalMin;}else{if(y<this.ChartBorder.GetTopEx())return this.HorizontalMin;if(y>this.ChartBorder.GetBottomEx())return this.HorizontalMax;return(y-this.ChartBorder.GetTopEx())/this.ChartBorder.GetHeightEx()*(this.HorizontalMax-this.HorizontalMin)+this.HorizontalMin;}}else{if(isLimit==false){return(this.ChartBorder.GetBottomEx()-y)/this.ChartBorder.GetHeightEx()*(this.HorizontalMax-this.HorizontalMin)+this.HorizontalMin;}else{if(y<this.ChartBorder.GetTopEx())return this.HorizontalMax;if(y>this.ChartBorder.GetBottomEx())return this.HorizontalMin;return(this.ChartBorder.GetBottomEx()-y)/this.ChartBorder.GetHeightEx()*(this.HorizontalMax-this.HorizontalMin)+this.HorizontalMin;}}};//X坐标转x轴数值
2690
2690
  this.GetXData=function(x){if(x<=this.ChartBorder.GetLeft())return 0;if(x>=this.ChartBorder.GetRight())return this.XPointCount;return(x-this.ChartBorder.GetLeft())*(this.XPointCount*1.0/this.ChartBorder.GetWidth());};//选中的画图工具X,Y轴坐标信息
@@ -2990,7 +2990,7 @@ for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
2990
2990
  {var item=this.HorizontalInfo[i];var y=this.GetYFromData(item.Value);if(y!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
2991
2991
  if(y>=bottom-2)this.Canvas.textBaseline='bottom';else if(y<=top+2)this.Canvas.textBaseline='top';else this.Canvas.textBaseline="middle";if(leftLine&&leftLine.Width>0)//左边
2992
2992
  {this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();this.Canvas.moveTo(xLine-leftLine.Width,ToFixedPoint(y));this.Canvas.lineTo(xLine,ToFixedPoint(y));this.Canvas.stroke();}if(rightLine&&rightLine.Width>0){this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();this.Canvas.moveTo(xLine+rightLine.Width,ToFixedPoint(y));this.Canvas.lineTo(xLine,ToFixedPoint(y));this.Canvas.stroke();}//坐标信息 右边 间距小于10 不画坐标
2993
- if(item.Message[1]!=null&&borderRight>10){if(item.Font!=null)this.Canvas.font=item.Font;var text=item.Message[1];if(Array.isArray(item.Message[1]))text=item.Message[1][0];if(rightExtendText&&rightExtendText.Align){var textWidth=rightWidth;this.Canvas.textAlign="right";var xRight=border.Right+this.RightOffset+textWidth-this.YTextPadding[1];this.Canvas.fillText(text,xRight,y);}else{var xText=right+2;if(rightLine&&rightLine.Width>0)xText+=rightLine.Width;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="left";this.Canvas.fillText(text,xText,y);}}yPrev=y;}};//画X轴
2993
+ if(item.Message[1]!=null&&borderRight>10){if(item.Font!=null)this.Canvas.font=item.Font;var text=item.Message[1];if(Array.isArray(item.Message[1]))text=item.Message[1][0];this.Canvas.fillStyle=item.TextColor;if(rightExtendText&&rightExtendText.Align){var textWidth=rightWidth;this.Canvas.textAlign="right";var xRight=border.Right+this.RightOffset+textWidth-this.YTextPadding[1];this.Canvas.fillText(text,xRight,y);}else{var xText=right+2;if(rightLine&&rightLine.Width>0)xText+=rightLine.Width;this.Canvas.textAlign="left";this.Canvas.fillText(text,xText,y);}}yPrev=y;}};//画X轴
2994
2994
  this.DrawVertical=function(){var border=this.ChartBorder.GetBorder();var top=border.TopEx;var bottom=border.BottomEx;var right=this.GetXHorizontal();this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(right),ToFixedPoint(top));this.Canvas.lineTo(ToFixedPoint(right),ToFixedPoint(bottom));this.Canvas.stroke();};this.DrawToolbar=function(moveonPoint,isMinSize,mouseStatus){this.Buttons=[];if(isMinSize==true)return;if(this.ChartBorder.IsShowTitleOnly)return;if(this.ChartBorder.TitleHeight<5)return;if(!this.IsShowToolbar)return;var aryButton=[];aryButton.push({ID:JSCHART_BUTTON_ID.MODIFY_OVERLAY_INDEX_PARAM,Style:this.ModifyIndexParamButton});aryButton.push({ID:JSCHART_BUTTON_ID.CLOSE_OVERLAY_INDEX,Style:this.CloseWindowButton});if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_OVERLAY_TOOLBAR);if(event&&event.Callback){var sendData={PreventDefault:false,DefaultButton:aryButton,AryButton:null,Guid:this.Guid};event.Callback(event,sendData,this);if(sendData.PreventDefault){this.DrawToolbarButton(sendData.AryButton,moveonPoint,mouseStatus);return;}}}this.DrawToolbarButton(aryButton,moveonPoint,mouseStatus);};this.DrawToolbarButton=function(aryButton,moveonPoint,mouseStatus){if(!IFrameSplitOperator.IsNonEmptyArray(aryButton))return;var border=this.ChartBorder.GetBorder();var yButton=border.Top+this.ChartBorder.TitleHeight/2;var rightWidth=this.GetHorizontalWidth();var xBotton=border.Right+this.RightOffset+rightWidth-this.CloseButton.MerginLeft;for(var i=aryButton.length-1;i>=0;--i){var item=aryButton[i];var size=item.Style.Size;var font=size+'px '+item.Style.Family;var rtButton={Left:xBotton-size-item.Style.MerginLeft,Top:yButton-size/2,Right:xBotton,Bottom:yButton+size/2,Width:size+item.Style.MerginLeft,Height:size};var color=this.CloseButton.Color;if(moveonPoint&&moveonPoint.X>=rtButton.Left&&moveonPoint.X<rtButton.Right&&moveonPoint.Y>=rtButton.Top&&moveonPoint.Y<=rtButton.Bottom){color=item.Style.MoveOnColor;if(mouseStatus)mouseStatus.MouseOnToolbar={Rect:rtButton,Item:item,Frame:this,Point:{X:moveonPoint.X,Y:moveonPoint.Y}};}this.Canvas.fillStyle=color;this.Canvas.font=font;this.Canvas.textAlign="right";this.Canvas.textBaseline="middle";this.Canvas.fillText(item.Style.Text,xBotton,yButton);this.Buttons.push({ID:item.ID,Rect:rtButton});xBotton=rtButton.Left;}};this.DrawCustomItem=function(item,mapTextRect)//显示自定义Y刻度
2995
2995
  {if(!this.IsShow&&!this.IsYDrawMainFrame)return;if(!item.Message[1]&&!item.Message[0])return;if(item.Value>this.HorizontalMax||item.Value<this.HorizontalMin){//this.DrawOutRangeCustomItem(item, mapTextRect);
2996
2996
  this.SendDrawCountDownEvent({IsShow:false});return;}var border=this.GetBorder();var left=border.Left;var right=border.Right+this.RightOffset;if(this.IsYDrawMainFrame)right=border.Right;var bottom=border.Bottom;var top=border.Top;var borderRight=this.ChartBorder.Right;var borderLeft=this.ChartBorder.Left;var titleHeight=this.ChartBorder.TitleHeight;if(this.IsHScreen){borderLeft=this.ChartBorder.Top;borderRight=this.ChartBorder.Bottom;top=border.Top;bottom=border.Bottom;}var pixelTatio=GetDevicePixelRatio();var defaultTextHeight=18*pixelTatio;var textHeight=defaultTextHeight;var y=this.GetYFromData(item.Value);var position=0;var emptyBGColor;if(item.ExtendData&&item.ExtendData.Custom){var customItem=item.ExtendData.Custom;if(IFrameSplitOperator.IsNumber(customItem.Position))position=customItem.Position;if(customItem.EmptyBGColor)emptyBGColor=customItem.EmptyBGColor;}if(item.Message[0])// 左
@@ -4149,14 +4149,15 @@ this.BorderColor;//分割线颜色
4149
4149
  this.RowCount=5;//行数
4150
4150
  this.RowHeight=10;//行高
4151
4151
  this.RowHeightType=1;//0=均分 1=固定高度
4152
- this.TextFontConfig=CloneData(g_JSChartResource.ChartKLineTable.TextFont);this.ItemMergin=CloneData(g_JSChartResource.ChartKLineTable.ItemMergin);this.TextFont;this.TextColor='rgb(0,0,0)';this.AryTableData=[];this.MapCache=null;//key=date/date-time value={ Date:, Time:, Data:[ ] }
4152
+ this.TextFontConfig=CloneData(g_JSChartResource.ChartKLineTable.TextFont);this.ItemMergin=CloneData(g_JSChartResource.ChartKLineTable.ItemMergin);this.TextFont;this.TextColor='rgb(0,0,0)';this.Style=0;//0=全部窗口模式 1=顶部指定行数 2=底部指定行数;
4153
+ this.AryTableData=[];this.MapCache=null;//key=date/date-time value={ Date:, Time:, Data:[ ] }
4153
4154
  this.GetKValue=ChartData.GetKValue;this.AryCellRect=[];//保存单元格信息
4154
4155
  this.BuildCacheData=function(){var mapData=new _map2.default();this.MapCache=mapData;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryTableData))return;for(var i=0;i<this.AryTableData.length;++i){var item=this.AryTableData[i];var key=this.BuildKey(item);mapData.set(key,item);}};//绘制背景色
4155
- this.DrawBG=function(rtBG){if(!this.BGColor)return;if(this.BGColor){this.Canvas.fillStyle=this.BGColor;this.Canvas.fillRect(rtBG.Left+1,rtBG.Top,rtBG.Width-1,rtBG.Height);}};this.DrawBorder=function(rtBG){if(!this.BorderColor)return;var yLine=rtBG.Top;for(var i=0;i<30;++i){this.Canvas.beginPath();this.Canvas.moveTo(rtBG.Left,ToFixedPoint(yLine));this.Canvas.lineTo(rtBG.Right,ToFixedPoint(yLine));this.Canvas.stroke();yLine+=this.RowHeight;if(yLine>=rtBG.Bottom)break;}};//计算行高
4156
+ this.DrawBG=function(rtBG){if(!this.BGColor)return;this.Canvas.fillStyle=this.BGColor;if((this.Style===1||this.Style===2)&&this.RowHeightType==1){var height=this.RowCount*this.RowHeight;height=Math.min(rtBG.Height,height);this.Canvas.fillRect(rtBG.Left+1,rtBG.Top,rtBG.Width-2,height);}else{this.Canvas.fillRect(rtBG.Left+1,rtBG.Top,rtBG.Width-1,rtBG.Height);}};this.DrawBorder=function(rtBG){if(!this.BorderColor)return;var lineCount=30;if(this.Style===1||this.Style===2)lineCount=this.RowCount+1;var yLine=rtBG.Top;for(var i=0;i<lineCount;++i){this.Canvas.beginPath();this.Canvas.moveTo(rtBG.Left,ToFixedPoint(yLine));this.Canvas.lineTo(rtBG.Right,ToFixedPoint(yLine));this.Canvas.stroke();yLine+=this.RowHeight;if(yLine>=rtBG.Bottom)break;}};//计算行高
4156
4157
  this.CalculateRowHeight=function(rtBG){if(this.RowHeightType==1){this.RowHeight=this.TextFontConfig.FontMaxSize+this.ItemMergin.Top+this.ItemMergin.Bottom;}else{this.RowHeight=rtBG.Height/this.RowCount;}};this.Draw=function(){this.AryCellRect=[];if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryTableData))return;if(!this.MapCache||this.MapCache.size<=0)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen)return;if(this.RowCount<=0)return;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();var height=border.Bottom-border.TopTitle;var xOffset=border.LeftEx+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var top=border.TopTitle;var bottom=border.Bottom;//绘制背景
4157
- var rtBG={Left:border.LeftEx,Top:top,Right:border.RightEx,Bottom:bottom};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;this.DrawBG(rtBG);this.CalculateRowHeight(rtBG);var itemHeight=this.RowHeight;var itemWidth=dataWidth+distanceWidth;if(itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom>0)itemHeight=itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom;if(itemWidth-this.ItemMergin.Left-this.ItemMergin.Right>0)itemWidth=itemWidth-this.ItemMergin.Left-this.ItemMergin.Right;var font=this.GetDynamicTextFont(itemHeight,itemWidth);this.TextFont=font;this.Canvas.font=this.TextFont;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var left=xOffset;var right=xOffset+dataWidth+distanceWidth;if(right>chartright)break;var x=left+(right-left)/2;if(x>chartright)break;var bDrawName=false;if(j==0&&this.RowNamePosition===1)bDrawName=true;if(bDrawName)this.DrawRowName(top,bottom,left,right);var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!bDrawName)this.DrawRow(mapItem,top,bottom,left,right);//绘制一列
4158
- }if(this.RowNamePosition==3)this.DrawRightRowName();this.DrawBorder(rtBG);};this.DrawRowName=function(top,bottom,left,right){if(!IFrameSplitOperator.IsNonEmptyArray(this.RowName))return;var x=left,y=top,width=right-left;var yOffset=3;if(this.ItemMergin.YOffset)yOffset=this.ItemMergin.YOffset;for(var i=0;i<this.RowName.length;++i){var item=this.RowName[i];var rtBG={Left:x,Top:y,Right:right,Height:this.RowHeight,Width:width};rtBG.Bottom=rtBG.Top+this.RowHeight;var yText=rtBG.Bottom-yOffset;if(item.Name&&rtBG.Width>10){this.Canvas.fillStyle=item.Color?item.Color:this.TextColor;this.Canvas.textBaseline='bottom';if(item.TextAlign=='right'){this.Canvas.textAlign='right';this.Canvas.fillText(item.Name,rtBG.Right-2,yText,width-4);}else if(item.TextAlign=='center'){this.Canvas.textAlign='center';this.Canvas.fillText(item.Name,rtBG.Left+rtBG.Width/2,yText,width-4);}else{this.Canvas.textAlign='left';this.Canvas.fillText(item.Name,rtBG.Left+2,yText,width-4);}}y+=this.RowHeight;}};//绘制右侧行名
4159
- this.DrawRightRowName=function(){var border=this.ChartFrame.GetBorder();if(this.BGColor){var rtRightBG={Left:border.RightEx,Top:border.Top,Right:border.ChartWidth,Bottom:border.Bottom};rtRightBG.Width=rtRightBG.Right-rtRightBG.Left;rtRightBG.Height=rtRightBG.Bottom-rtRightBG.Top;this.Canvas.fillStyle=this.BGColor;this.Canvas.fillRect(rtRightBG.Left+1,rtRightBG.Top,rtRightBG.Width-1,rtRightBG.Height);}var x=border.RightEx,y=border.TopTitle;var yOffset=3;if(this.ItemMergin.YOffset)yOffset=this.ItemMergin.YOffset;for(var i=0;i<this.RowName.length;++i){var item=this.RowName[i];var rtBG={Left:x,Top:y,Right:border.ChartWidth,Height:this.RowHeight};rtBG.Bottom=rtBG.Top+this.RowHeight;rtBG.Width=rtBG.Right-rtBG.Left;var yText=rtBG.Bottom-yOffset;if(rtBG.Bottom>border.Bottom)break;if(item.Name&&rtBG.Width>10){this.Canvas.fillStyle=item.Color?item.Color:this.TextColor;this.Canvas.textBaseline='bottom';this.Canvas.textAlign='left';this.Canvas.fillText(item.Name,rtBG.Left+2,yText);}y+=this.RowHeight;}};this.DrawRow=function(data,top,bottom,left,right){if(!IFrameSplitOperator.IsNonEmptyArray(data.Data))return;var x=left,y=top,width=right-left;var yOffset=3;if(this.ItemMergin.YOffset)yOffset=this.ItemMergin.YOffset;for(var i=0;i<data.Data.length;++i,y+=this.RowHeight){var item=data.Data[i];if(!item)continue;var rtBG={Left:x,Top:y,Right:right,Height:this.RowHeight,Width:width};rtBG.Bottom=rtBG.Top+this.RowHeight;if(rtBG.Bottom>bottom)break;if(IFrameSplitOperator.IsNonEmptyArray(item.AryText))//左右显示
4158
+ if(this.Style===1){var rtBG={Left:border.LeftEx,Top:border.TopTitle,Right:border.RightEx,Bottom:border.TopEx};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;}else if(this.Style===2){var rtBG={Left:border.LeftEx,Top:border.BottomEx,Right:border.RightEx,Bottom:border.Bottom};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;top=rtBG.Top;}else{var rtBG={Left:border.LeftEx,Top:top,Right:border.RightEx,Bottom:bottom};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;}this.CalculateRowHeight(rtBG);this.DrawBG(rtBG);var itemHeight=this.RowHeight;var itemWidth=dataWidth+distanceWidth;if(itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom>0)itemHeight=itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom;if(itemWidth-this.ItemMergin.Left-this.ItemMergin.Right>0)itemWidth=itemWidth-this.ItemMergin.Left-this.ItemMergin.Right;var font=this.GetDynamicTextFont(itemHeight,itemWidth);this.TextFont=font;this.Canvas.font=this.TextFont;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var left=xOffset;var right=xOffset+dataWidth+distanceWidth;if(right>chartright)break;var x=left+(right-left)/2;if(x>chartright)break;var bDrawName=false;if(j==0&&this.RowNamePosition===1)bDrawName=true;if(bDrawName)this.DrawRowName(top,bottom,left,right);var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!bDrawName)this.DrawRow(mapItem,top,bottom,left,right);//绘制一列
4159
+ }if(this.RowNamePosition==3)this.DrawRightRowName(rtBG);this.DrawBorder(rtBG);};this.DrawRowName=function(top,bottom,left,right){if(!IFrameSplitOperator.IsNonEmptyArray(this.RowName))return;var x=left,y=top,width=right-left;var yOffset=3;if(this.ItemMergin.YOffset)yOffset=this.ItemMergin.YOffset;for(var i=0;i<this.RowName.length;++i){var item=this.RowName[i];var rtBG={Left:x,Top:y,Right:right,Height:this.RowHeight,Width:width};rtBG.Bottom=rtBG.Top+this.RowHeight;var yText=rtBG.Bottom-yOffset;if(item.Name&&rtBG.Width>10){this.Canvas.fillStyle=item.Color?item.Color:this.TextColor;this.Canvas.textBaseline='bottom';if(item.TextAlign=='right'){this.Canvas.textAlign='right';this.Canvas.fillText(item.Name,rtBG.Right-2,yText,width-4);}else if(item.TextAlign=='center'){this.Canvas.textAlign='center';this.Canvas.fillText(item.Name,rtBG.Left+rtBG.Width/2,yText,width-4);}else{this.Canvas.textAlign='left';this.Canvas.fillText(item.Name,rtBG.Left+2,yText,width-4);}}y+=this.RowHeight;}};//绘制右侧行名
4160
+ this.DrawRightRowName=function(rtBG){var border=this.ChartFrame.GetBorder();if(this.BGColor){if(this.Style===1){var height=this.RowCount*this.RowHeight;height=Math.min(rtBG.Height,height);var width=border.ChartWidth-rtBG.Right-2;var maxTextWidth=0;for(var i=0;i<this.RowName.length;++i){var item=this.RowName[i];if(!item||!item.Name)continue;var textWidth=this.Canvas.measureText(item.Name).width;if(textWidth>maxTextWidth)maxTextWidth=textWidth;}if(maxTextWidth>0){maxTextWidth+=4;width=Math.min(width,maxTextWidth);}var rtRightBG={Left:rtBG.Right+1,Top:rtBG.Top+1,Width:width,Height:height};rtRightBG.Right=rtRightBG.Left+rtRightBG.Width;rtRightBG.Bottom=rtRightBG.Top+rtRightBG.Height;this.Canvas.fillStyle=this.BGColor;this.Canvas.fillRect(rtRightBG.Left,rtRightBG.Top,rtRightBG.Width,rtRightBG.Height);}else{var rtRightBG={Left:border.RightEx,Top:border.Top,Right:border.ChartWidth,Bottom:border.Bottom};rtRightBG.Width=rtRightBG.Right-rtRightBG.Left;rtRightBG.Height=rtRightBG.Bottom-rtRightBG.Top;this.Canvas.fillStyle=this.BGColor;this.Canvas.fillRect(rtRightBG.Left+1,rtRightBG.Top,rtRightBG.Width-2,rtRightBG.Height);}}var x=rtBG.Right,y=rtBG.Top;var yOffset=3;if(this.ItemMergin.YOffset)yOffset=this.ItemMergin.YOffset;for(var i=0;i<this.RowName.length;++i){var item=this.RowName[i];var rtBG={Left:x,Top:y,Right:border.ChartWidth,Height:this.RowHeight};rtBG.Bottom=rtBG.Top+this.RowHeight;rtBG.Width=rtBG.Right-rtBG.Left;var yText=rtBG.Bottom-yOffset;if(rtBG.Bottom>border.Bottom)break;if(item.Name&&rtBG.Width>10){this.Canvas.fillStyle=item.Color?item.Color:this.TextColor;this.Canvas.textBaseline='bottom';this.Canvas.textAlign='left';this.Canvas.fillText(item.Name,rtBG.Left+2,yText);}y+=this.RowHeight;}};this.DrawRow=function(data,top,bottom,left,right){if(!IFrameSplitOperator.IsNonEmptyArray(data.Data))return;var x=left,y=top,width=right-left;var yOffset=3;if(this.ItemMergin.YOffset)yOffset=this.ItemMergin.YOffset;for(var i=0;i<data.Data.length;++i,y+=this.RowHeight){var item=data.Data[i];if(!item)continue;var rtBG={Left:x,Top:y,Right:right,Height:this.RowHeight,Width:width};rtBG.Bottom=rtBG.Top+this.RowHeight;if(rtBG.Bottom>bottom)break;if(IFrameSplitOperator.IsNonEmptyArray(item.AryText))//左右显示
4160
4161
  {var subCellWidth=rtBG.Width/item.AryText.length;var xCell=rtBG.Left;for(var j=0;j<item.AryText.length;++j){var subItem=item.AryText[j];var rtSubBG={Left:xCell,Top:rtBG.Top,Bottom:rtBG.Bottom,Width:subCellWidth,Height:rtBG.Height};rtSubBG.Right=rtSubBG.Left+rtSubBG.Width;if(subItem&&subItem.BGColor){this.Canvas.fillStyle=subItem.BGColor;this.Canvas.fillRect(rtSubBG.Left,rtSubBG.Top,rtSubBG.Width,rtSubBG.Height);}if(subItem&&subItem.Color&&subCellWidth>10){this.Canvas.fillStyle=subItem.Color;this.Canvas.textBaseline='bottom';var yText=rtSubBG.Bottom-yOffset;if(subItem.TextAlign=='right'){this.Canvas.textAlign='right';this.Canvas.fillText(subItem.Text,rtSubBG.Right-2,yText,width-4);}else if(subItem.TextAlign=='center'){this.Canvas.textAlign='center';this.Canvas.fillText(subItem.Text,rtSubBG.Left+rtSubBG.Width/2,yText,width-4);}else{this.Canvas.textAlign='left';this.Canvas.fillText(subItem.Text,rtSubBG.Left+2,yText,width-4);}}if(rtBG.Width>5){this.AryCellRect.push({Item:{Cell:item,Colunm:data,RowIndex:i,SubCell:subItem,SubIndex:j,Tooltip:subItem.Tooltip,Type:2},Rect:rtSubBG});}xCell+=subCellWidth;}}else{if(item.BGColor){this.Canvas.fillStyle=item.BGColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}if(item.Text&&rtBG.Width>10){if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.TextColor;this.Canvas.textBaseline='bottom';var yText=rtBG.Bottom-yOffset;if(item.TextAlign=='right'){this.Canvas.textAlign='right';this.Canvas.fillText(item.Text,rtBG.Right-2,yText,width-4);}else if(item.TextAlign=='center'){this.Canvas.textAlign='center';this.Canvas.fillText(item.Text,rtBG.Left+rtBG.Width/2,yText,width-4);}else{this.Canvas.textAlign='left';this.Canvas.fillText(item.Text,rtBG.Left+2,yText,width-4);}}if(rtBG.Width>5){this.AryCellRect.push({Item:{Cell:item,Colunm:data,RowIndex:i,Tooltip:item.Tooltip,Type:1},Rect:rtBG});}}}};this.GetDynamicTextFont=function(cellHeight,width,fontOption){var fontSize=parseInt(cellHeight)-2;if(cellHeight<5)fontSize=parseInt(cellHeight);//高度太小了就不要上下间距了
4161
4162
  if(fontSize>this.TextFontConfig.FontMaxSize)fontSize=this.TextFontConfig.FontMaxSize;else if(fontSize<=0)fontSize=1;var font=this.FormatFontString(fontSize,this.TextFontConfig.Family,fontOption);return font;};this.FormatFontString=function(fontSize,family,option){var font;if(!option){font=fontSize+'px '+family;}else{if(option.Weight)font=option.Weight+' '+fontSize+'px '+family;}return font;};this.GetMaxMin=function(){return{Min:0,Max:this.RowCount};};this.GetTooltipData=function(x,y,tooltip){if(!this.IsShow)return false;for(var i=0;i<this.AryCellRect.length;++i){var item=this.AryCellRect[i];if(!item.Rect)continue;var rect=item.Rect;if(x>=rect.Left&&x<=rect.Right&&y>=rect.Top&&y<=rect.Bottom){var data=item.Item;JSConsole.Chart.Log('[ChartKLineTable::GetTooltipData] cell',item);tooltip.Data={Rect:item.Rect,Item:data};tooltip.ChartPaint=this;tooltip.Type=9;//ChartKLineTable
4162
4163
  return true;}}return false;};}//表格
@@ -6441,11 +6442,42 @@ var angle=Math.atan2(ptStart.Y-ptEnd.Y,ptStart.X-ptEnd.X)*180/Math.PI,angle1=(an
6441
6442
  this.CalculateExtendLinePoint=function(ptStart,ptEnd){var result={};var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();var top=this.Frame.ChartBorder.GetTopEx();var bottom=this.Frame.ChartBorder.GetBottom();var a=ptEnd.X-ptStart.X;var b=ptEnd.Y-ptStart.Y;if(a>0){var b2=bottom-ptStart.Y;var a2=a*b2/b;var pt=new Point();pt.X=ptStart.X+a2;pt.Y=bottom;result.End=pt;var b2=ptEnd.Y-top;var a2=a*b2/b;var pt2=new Point();pt2.Y=top;pt2.X=ptEnd.X-a2;result.Start=pt2;}else{var b2=bottom-ptStart.Y;var a2=Math.abs(a)*b2/b;var pt=new Point();pt.X=ptStart.X-a2;;pt.Y=bottom;result.End=pt;var b2=ptEnd.Y-top;var a2=Math.abs(a)*b2/b;var pt2=new Point();pt2.Y=top;pt2.X=ptEnd.X+a2;result.Start=pt2;}return result;};//计算2个点线的,点0->点1->延长线的点
6442
6443
  this.CalculateExtendLineEndPoint=function(aryPoint){var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();var bottom=this.Frame.ChartBorder.GetBottomEx();var top=this.Frame.ChartBorder.GetTopEx();var a=aryPoint[1].X-aryPoint[0].X;var b=aryPoint[1].Y-aryPoint[0].Y;if(a>0){var a1=right-aryPoint[0].X;var b1=a1*b/a;var y=b1+aryPoint[0].Y;if(y>=top&&y<=bottom){var pt=new Point();pt.X=right;pt.Y=y;return pt;}if(b>0){var b2=bottom-aryPoint[0].Y;var a2=a*b2/b;var x=a2+aryPoint[0].X;var pt2=new Point();pt2.X=x;pt2.Y=bottom;return pt2;}else if(b==0){var pt2=new Point();pt2.X=right;pt2.Y=aryPoint[0].Y;return pt2;}else{var b2=top-aryPoint[0].Y;var a2=a*b2/b;var x=a2+aryPoint[0].X;var pt2=new Point();pt2.X=x;pt2.Y=top;return pt2;}}else{var a1=aryPoint[0].X-left;var b1=a1*b/Math.abs(a);var y=b1+aryPoint[0].Y;if(y>=top&&y<=bottom){var pt=new Point();pt.X=left;pt.Y=y;return pt;}if(b>0){var b2=bottom-aryPoint[0].Y;var a2=a*b2/b;var x=a2+aryPoint[0].X;var pt2=new Point();pt2.X=x;pt2.Y=bottom;return pt2;}else if(b==0){var pt2=new Point();pt2.X=left;pt2.Y=aryPoint[0].Y;return pt2;}else{var b2=top-aryPoint[0].Y;var a2=a*b2/b;var x=a2+aryPoint[0].X;var pt2=new Point();pt2.X=x;pt2.Y=top;return pt2;}}};//坐标是否在点上 返回在第几个点上
6443
6444
  this.IsPointInXYValue=function(x,y,option){if(!this.Frame)return-1;var data=this.Frame.Data;if(!data)return-1;if(!this.Value)return-1;var radius=5;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))radius+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))radius+=this.Option.Zoom;var isHScreen=this.Frame.IsHScreen;radius*=GetDevicePixelRatio();for(var i=0;i<this.Value.length;++i)//是否在点上
6444
- {var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset);pt.X=this.Frame.GetYFromData(item.YValue);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset);pt.Y=this.Frame.GetYFromData(item.YValue);}this.Canvas.beginPath();this.Canvas.arc(pt.X,pt.Y,radius,0,360);if(this.Canvas.isPointInPath(x,y))return i;}return-1;};//坐标是否在线段上 返回在第几个线段上
6445
- this.IsPointInLine=function(x,y,option){if(!this.LinePoint)return-1;var lineWidth=5;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))lineWidth+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))lineWidth+=this.Option.Zoom;var pixel=GetDevicePixelRatio();lineWidth*=pixel;for(var i=0;i<this.LinePoint.length;++i){var item=this.LinePoint[i];var ptStart=item.Start;var ptEnd=item.End;this.Canvas.beginPath();if(ptStart.X==ptEnd.X)//竖线
6446
- {this.Canvas.moveTo(ptStart.X-lineWidth,ptStart.Y);this.Canvas.lineTo(ptStart.X+lineWidth,ptStart.Y);this.Canvas.lineTo(ptEnd.X+lineWidth,ptEnd.Y);this.Canvas.lineTo(ptEnd.X-lineWidth,ptEnd.Y);}else{this.Canvas.moveTo(ptStart.X,ptStart.Y+lineWidth);this.Canvas.lineTo(ptStart.X,ptStart.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y+lineWidth);}this.Canvas.closePath();//this.Canvas.fillStyle='RGB(22,100,100)';
6447
- //this.Canvas.fill();
6448
- if(this.Canvas.isPointInPath(x,y))return i;}return-1;};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
6445
+ {var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset);pt.X=this.Frame.GetYFromData(item.YValue);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset);pt.Y=this.Frame.GetYFromData(item.YValue);}if(Path2DHelper.PtInPoint(x,y,pt,radius))return i;/*
6446
+ this.Canvas.beginPath();
6447
+ this.Canvas.arc(pt.X,pt.Y,radius,0,360);
6448
+ if (this.Canvas.isPointInPath(x,y)) return i;
6449
+ */}return-1;};//坐标是否在线段上 返回在第几个线段上
6450
+ this.IsPointInLine=function(x,y,option){if(!this.LinePoint)return-1;var lineWidth=5;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))lineWidth+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))lineWidth+=this.Option.Zoom;var pixel=GetDevicePixelRatio();lineWidth*=pixel;for(var i=0;i<this.LinePoint.length;++i){var item=this.LinePoint[i];var ptStart=item.Start;var ptEnd=item.End;if(Path2DHelper.PtInLine(x,y,ptStart,ptEnd,lineWidth)){return i;}}return-1;/*
6451
+ for(var i=0;i<this.LinePoint.length; ++i)
6452
+ {
6453
+ var item=this.LinePoint[i];
6454
+ var ptStart=item.Start;
6455
+ var ptEnd=item.End;
6456
+ this.Canvas.beginPath();
6457
+ if (ptStart.X==ptEnd.X) //竖线
6458
+ {
6459
+ this.Canvas.moveTo(ptStart.X-lineWidth,ptStart.Y);
6460
+ this.Canvas.lineTo(ptStart.X+lineWidth,ptStart.Y);
6461
+ this.Canvas.lineTo(ptEnd.X+lineWidth,ptEnd.Y);
6462
+ this.Canvas.lineTo(ptEnd.X-lineWidth,ptEnd.Y);
6463
+ }
6464
+ else
6465
+ {
6466
+ this.Canvas.moveTo(ptStart.X,ptStart.Y+lineWidth);
6467
+ this.Canvas.lineTo(ptStart.X,ptStart.Y-lineWidth);
6468
+ this.Canvas.lineTo(ptEnd.X,ptEnd.Y-lineWidth);
6469
+ this.Canvas.lineTo(ptEnd.X,ptEnd.Y+lineWidth);
6470
+ }
6471
+ this.Canvas.closePath();
6472
+
6473
+ //this.Canvas.fillStyle='RGB(22,100,100)';
6474
+ //this.Canvas.fill();
6475
+ if (this.Canvas.isPointInPath(x,y))
6476
+ return i;
6477
+ }
6478
+
6479
+ return -1;
6480
+ */};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
6449
6481
  this.IsPointIn_XYValue_Line=function(x,y,option){if(this.Status!=10)return-1;var value=this.IsPointInXYValue(x,y,option);if(value>=0)return value;value=this.IsPointInLine(x,y,option);if(value>=0)return 100;return-1;};this.DrawLine=function(ptStart,ptEnd,isDottedline){if(isDottedline)this.Canvas.setLineDash([5,10]);this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();if(isDottedline)this.Canvas.setLineDash([]);};this.CreateLineData=function(ptStart,ptEnd){var line={Start:new Point(),End:new Point()};line.Start.Y=ptStart.Y;line.Start.X=ptStart.X;line.End.Y=ptEnd.Y;line.End.X=ptEnd.X;return line;};//导出成存储格式
6450
6482
  this.ExportStorageData=function(){var storageData={ClassName:this.ClassName,Symbol:this.Symbol,Guid:this.Guid,Period:this.Period,Value:[],FrameID:this.Frame.Identify,LineColor:this.LineColor,AreaColor:this.AreaColor,LineWidth:this.LineWidth,Right:this.Right,EnableSave:this.EnableSave,IsShowYCoordinate:this.IsShowYCoordinate};for(var i=0;i<this.Value.length;++i){var item=this.Value[i];storageData.Value.push({XValue:item.XValue,YValue:item.YValue,DateTime:item.DateTime});}if(this.Text)storageData.Text=this.Text;//如果有文本, 也导出
6451
6483
  if(this.FontOption)storageData.FontOption=this.FontOption;//字体也导出
@@ -6633,8 +6665,38 @@ this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.fillRec
6633
6665
  this.DrawPoint(drawPoint);};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
6634
6666
  this.IsPointIn=function(x,y,option){if(this.IsFrameMinSize())return-1;if(!this.Frame||this.Status!=10)return-1;var data=this.Frame.Data;if(!data)return-1;var nIndex=this.IsPointInXYValue(x,y,option);if(nIndex>=0)return nIndex;var aryPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!aryPoint||aryPoint.length!=2)return-1;//是否在矩形边框上
6635
6667
  var linePoint=[{X:aryPoint[0].X,Y:aryPoint[0].Y},{X:aryPoint[1].X,Y:aryPoint[0].Y}];if(this.IsPointInLine(linePoint,x,y,option))return 100;linePoint=[{X:aryPoint[1].X,Y:aryPoint[0].Y},{X:aryPoint[1].X,Y:aryPoint[1].Y}];if(this.IsPointInLine2(linePoint,x,y,option))return 100;linePoint=[{X:aryPoint[1].X,Y:aryPoint[1].Y},{X:aryPoint[0].X,Y:aryPoint[1].Y}];if(this.IsPointInLine(linePoint,x,y,option))return 100;linePoint=[{X:aryPoint[0].X,Y:aryPoint[1].Y},{X:aryPoint[0].X,Y:aryPoint[0].Y}];if(this.IsPointInLine2(linePoint,x,y,option))return 100;return-1;};//点是否在线段上 水平线段
6636
- this.IsPointInLine=function(aryPoint,x,y,option){var radius=5;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))radius+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))radius+=this.Option.Zoom;var pixel=GetDevicePixelRatio();radius*=pixel;this.Canvas.beginPath();this.Canvas.moveTo(aryPoint[0].X,aryPoint[0].Y+radius);this.Canvas.lineTo(aryPoint[0].X,aryPoint[0].Y-radius);this.Canvas.lineTo(aryPoint[1].X,aryPoint[1].Y-radius);this.Canvas.lineTo(aryPoint[1].X,aryPoint[1].Y+radius);this.Canvas.closePath();if(this.Canvas.isPointInPath(x,y))return true;};//垂直线段
6637
- this.IsPointInLine2=function(aryPoint,x,y,option){var radius=5;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))radius+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))radius+=this.Option.Zoom;var pixel=GetDevicePixelRatio();radius*=pixel;this.Canvas.beginPath();this.Canvas.moveTo(aryPoint[0].X-radius,aryPoint[0].Y);this.Canvas.lineTo(aryPoint[0].X+radius,aryPoint[0].Y);this.Canvas.lineTo(aryPoint[1].X+radius,aryPoint[1].Y);this.Canvas.lineTo(aryPoint[1].X-radius,aryPoint[1].Y);this.Canvas.closePath();if(this.Canvas.isPointInPath(x,y))return true;};}//画图工具-弧形
6668
+ this.IsPointInLine=function(aryPoint,x,y,option){var lineWidth=5;var pixel=GetDevicePixelRatio();if(IFrameSplitOperator.IsPlusNumber(this.LineWidth)&&this.LineWidth>lineWidth)lineWidth=this.LineWidth;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))lineWidth+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))lineWidth+=this.Option.Zoom;lineWidth*=pixel;if(Path2DHelper.PtInLine(x,y,aryPoint[0],aryPoint[1],lineWidth))return true;return false;/*
6669
+ var radius=5;
6670
+ if (option && IFrameSplitOperator.IsNumber(option.Zoom)) radius+=option.Zoom;
6671
+ else if (this.Option && IFrameSplitOperator.IsNumber(this.Option.Zoom)) radius+=this.Option.Zoom;
6672
+ var pixel=GetDevicePixelRatio();
6673
+ radius*=pixel;
6674
+
6675
+ this.Canvas.beginPath();
6676
+ this.Canvas.moveTo(aryPoint[0].X,aryPoint[0].Y+radius);
6677
+ this.Canvas.lineTo(aryPoint[0].X,aryPoint[0].Y-radius);
6678
+ this.Canvas.lineTo(aryPoint[1].X,aryPoint[1].Y-radius);
6679
+ this.Canvas.lineTo(aryPoint[1].X,aryPoint[1].Y+radius);
6680
+ this.Canvas.closePath();
6681
+ if (this.Canvas.isPointInPath(x,y))
6682
+ return true;
6683
+ */};//垂直线段
6684
+ this.IsPointInLine2=function(aryPoint,x,y,option){return this.IsPointInLine(aryPoint,x,y,option);/*
6685
+ var radius=5;
6686
+ if (option && IFrameSplitOperator.IsNumber(option.Zoom)) radius+=option.Zoom;
6687
+ else if (this.Option && IFrameSplitOperator.IsNumber(this.Option.Zoom)) radius+=this.Option.Zoom;
6688
+ var pixel=GetDevicePixelRatio();
6689
+ radius*=pixel;
6690
+
6691
+ this.Canvas.beginPath();
6692
+ this.Canvas.moveTo(aryPoint[0].X-radius,aryPoint[0].Y);
6693
+ this.Canvas.lineTo(aryPoint[0].X+radius,aryPoint[0].Y);
6694
+ this.Canvas.lineTo(aryPoint[1].X+radius,aryPoint[1].Y);
6695
+ this.Canvas.lineTo(aryPoint[1].X-radius,aryPoint[1].Y);
6696
+ this.Canvas.closePath();
6697
+ if (this.Canvas.isPointInPath(x,y))
6698
+ return true;
6699
+ */};}//画图工具-弧形
6638
6700
  function ChartDrawPictureArc(){this.newMethod=IChartDrawPicture;//派生
6639
6701
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureArc';this.Draw=function(){if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=2)return;this.ClipFrame();//this.Canvas.beginPath();
6640
6702
  //this.Canvas.rect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);
@@ -7645,7 +7707,7 @@ this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.
7645
7707
  if(this.EnableIndexChartDrag)this.CreateExtendChart("DragMovePaint");this.CreateDragSelectRect(option?option.DragSelectRect:null);//子窗口动态标题
7646
7708
  for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this23.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;titlePaint.HQChart=this;this.TitlePaint.push(titlePaint);}this.ChartCorssCursor.StringFormatX.Frame=this.Frame.SubFrame[0].Frame;this.ChartCorssCursor.StringFormatY.Frame=this.Frame;if(option)this.AddDefaultEventListener(option.Listener);this.InitalPopMinuteChart(option);};this.InitalPopMinuteChart=function(option){if(!option)return false;if(option.PopMinuteChart&&option.PopMinuteChart.Enable)//新的配置格式
7647
7709
  {var item=option.PopMinuteChart;this.PopMinuteChart=new JSPopMinuteChart();this.PopMinuteChart.Inital(this,item);this.PopMinuteChart.Create();return true;}else if(option.KLine&&option.KLine.KLineDoubleClick===true)//旧的格式 不要使用了
7648
- {this.PopMinuteChart=new JSPopMinuteChart();this.PopMinuteChart.Inital(this);this.PopMinuteChart.Create();return true;}return false;};this.DestroyPopMinuteChart=function(){if(!this.PopMinuteChart)return;this.PopMinuteChart.Destroy();this.PopMinuteChart=null;};this.ShowMinuteChartDialog=function(data,x,y){if(!this.PopMinuteChart)return;if(!ChartData.IsDayPeriod(this.Period,true))return;//只支持日K
7710
+ {this.PopMinuteChart=new JSPopMinuteChart();this.PopMinuteChart.Inital(this);this.PopMinuteChart.Create();return true;}return false;};this.DestroyPopMinuteChart=function(){if(!this.PopMinuteChart)return;this.PopMinuteChart.Destroy();this.PopMinuteChart=null;};this.ClosePopMinuteChart=function(){if(!this.PopMinuteChart)return;this.PopMinuteChart.Close();};this.ShowMinuteChartDialog=function(data,x,y){if(!this.PopMinuteChart)return;if(!ChartData.IsDayPeriod(this.Period,true))return;//只支持日K
7649
7711
  if(!data.Tooltip||!data.Chart)return;var pixelRatio=GetDevicePixelRatio();var rtClient=this.UIElement.getBoundingClientRect();var rtScroll=GetScrollPosition();x+=rtClient.left+rtScroll.Left;y+=rtClient.top+rtScroll.Top;var item=data.Tooltip.Data;var date=item.Date;var symbol=null;if(data.Tooltip.ChartPaint&&data.Tooltip.ChartPaint.Name=="DRAWKLINE"){if(item.Symbol)symbol=item.Symbol;else if(data.Tooltip.Symbol)symbol=data.Tooltip.Symbol;}else{symbol=data.Chart.Symbol;}if(!symbol)return;this.PopMinuteChart.Show({Date:date,Symbol:symbol,Data:data.Tooltip.Data,Chart:data.Tooltip.ChartPaint},x/pixelRatio,y/pixelRatio);};//Alt+W 区间统计
7650
7712
  //Alt+数字 切换多个窗口
7651
7713
  //Ctrl+I
@@ -8059,7 +8121,7 @@ this.BindAllOverlayIndexData(bindData);};this.ClearIndexPaint=function(){//清
8059
8121
  if(this.Frame&&this.Frame.SubFrame){for(var i=0;i<this.Frame.SubFrame.length;++i){this.DeleteIndexPaint(i,true);var item=this.Frame.SubFrame[i];if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){for(var j=0;j<item.OverlayIndex.length;++j)//清空叠加指标
8060
8122
  {var overlayItem=item.OverlayIndex[j];for(var k=0;k<overlayItem.ChartPaint.length;++k){var overlayChart=overlayItem.ChartPaint[k];if(overlayChart&&overlayChart.OnDestroy)overlayChart.OnDestroy();}overlayItem.ChartPaint=[];}}}}//清空叠加标题
8061
8123
  for(var i=1;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];item.OverlayIndex=new _map2.default();}};//周期切换
8062
- this.ChangePeriod=function(period,option){var oldData={Period:this.Period,Right:this.Right,KLineDrawType:this.KLineDrawType,Symbol:this.Symbol};var isChangeKLineDrawType=false;var isReload=false;//是否重新请求数据
8124
+ this.ChangePeriod=function(period,option){this.ClosePopMinuteChart();var oldData={Period:this.Period,Right:this.Right,KLineDrawType:this.KLineDrawType,Symbol:this.Symbol};var isChangeKLineDrawType=false;var isReload=false;//是否重新请求数据
8063
8125
  var right=null;//复权
8064
8126
  if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.DrawType))isChangeKLineDrawType=true;if(IFrameSplitOperator.IsNumber(item.Right))right=item.Right;if(IFrameSplitOperator.IsNumber(item.DataWidth))this.KLineSize={DataWidth:item.DataWidth};}if(IFrameSplitOperator.IsBool(option.Reload))isReload=option.Reload;if(IFrameSplitOperator.IsBool(option.IsApiPeriod))this.IsApiPeriod=option.IsApiPeriod;};if(this.Period==period&&isReload==false){if(isChangeKLineDrawType)this.ChangeKLineDrawType(option.KLine.DrawType);return;}if(isChangeKLineDrawType)this.ChangeKLineDrawType(option.KLine.DrawType,false);//切换K线类型, 不重绘
8065
8127
  var isDataTypeChange=true;if(this.SourceData){var isDataTypeChange=false;if(period>CUSTOM_DAY_PERIOD_START&&period<=CUSTOM_DAY_PERIOD_END){if(this.SourceData.DataType!=0)isDataTypeChange=true;}else if(period>CUSTOM_MINUTE_PERIOD_START&&period<=CUSTOM_MINUTE_PERIOD_END||period>CUSTOM_SECOND_PERIOD_START&&period<=CUSTOM_SECOND_PERIOD_END||period>CUSTOM_MILLISECOND_PERIOD_START&&period<=CUSTOM_MILLISECOND_PERIOD_END){if(this.SourceData.DataType!=1)isDataTypeChange=true;else if(ChartData.IsSecondPeriod(period))isDataTypeChange=true;else if(ChartData.IsMilliSecondPeriod(period))isDataTypeChange=true;}else{switch(period){case 0://日线
@@ -8254,7 +8316,7 @@ this.UpdateFrameMaxMin();//调整坐标最大 最小值
8254
8316
  this.Frame.SetSizeChage(true);this.Draw();//叠加指标
8255
8317
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];this.BindOverlayIndexData(overlayItem,i,bindData);}}};//切换股票代码
8256
8318
  this.ChangeSymbol=function(symbol,option){this.CancelAutoUpdate();//先停止定时器
8257
- this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineBreakPoint();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.ClearIndexRunCount();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;if(IFrameSplitOperator.IsNumber(item.DataWidth))this.KLineSize={DataWidth:item.DataWidth};}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
8319
+ this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineBreakPoint();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.ClearIndexRunCount();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();this.ClosePopMinuteChart();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;if(IFrameSplitOperator.IsNumber(item.DataWidth))this.KLineSize={DataWidth:item.DataWidth};}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
8258
8320
  this.ClearIndexPaint();//清空指标
8259
8321
  if(option){if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){var windows=option.Windows;for(var i=0;i<windows.length;++i){if(i>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
8260
8322
  var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
@@ -10249,7 +10311,15 @@ return stock;}function GetLocalTime(i)//得到标准时区的时间的函数
10249
10311
  {if(typeof i!=='number')return;var d=new Date();//得到1970年一月一日到现在的秒数
10250
10312
  var len=d.getTime();//本地时间与GMT时间的时间偏移差
10251
10313
  var offset=d.getTimezoneOffset()*60000;//得到现在的格林尼治时间
10252
- var utcTime=len+offset;return new Date(utcTime+3600000*i);}/*
10314
+ var utcTime=len+offset;return new Date(utcTime+3600000*i);}//图形路径方法
10315
+ function Path2DHelper(){}var PI2=Math.PI*2;//点是否在线段上
10316
+ Path2DHelper.PtInLine=function(x,y,pt,pt2,lineWidth){if(lineWidth<=0)return false;var x0=pt.X,y0=pt.Y;var x1=pt2.X,y1=pt2.Y;var _l=lineWidth;var _a=0;var _b=x0;// Quick reject
10317
+ if(y>y0+_l&&y>y1+_l||y<y0-_l&&y<y1-_l||x>x0+_l&&x>x1+_l||x<x0-_l&&x<x1-_l){return false;}if(x0!==x1){_a=(y0-y1)/(x0-x1);_b=(x0*y1-x1*y0)/(x0-x1);}else{return Math.abs(x-x0)<=_l/2;}var tmp=_a*x-y+_b;var _s=tmp*tmp/(_a*_a+1);return _s<=_l/2*_l/2;};//点是否在圆点上
10318
+ Path2DHelper.PtInPoint=function(x,y,ptCenter,radius){if(radius<=0)return false;var cx=ptCenter.X;var cy=ptCenter.Y;x-=cx;y-=cy;var d=Math.sqrt(x*x+y*y);//到圆心的距离
10319
+ if(d>radius)return false;return true;};Path2DHelper.PtInArc=function(x,y,ptCenter,radius,startAngle,endAngle,lineWidth,anticlockwise){if(lineWidth<=0)return false;var _l=lineWidth;var cx=ptCenter.X;var cy=ptCenter.Y;x-=cx;y-=cy;var d=Math.sqrt(x*x+y*y);if(d-_l>r||d+_l<r)return false;// TODO
10320
+ if(Math.abs(startAngle-endAngle)%PI2<1e-4){// Is a circle
10321
+ return true;}if(anticlockwise){var tmp=startAngle;startAngle=Path2DHelper.FormatRadian(endAngle);endAngle=Path2DHelper.FormatRadian(tmp);}else{startAngle=Path2DHelper.FormatRadian(startAngle);endAngle=Path2DHelper.FormatRadian(endAngle);}if(startAngle>endAngle)endAngle+=PI2;var angle=Math.atan2(y,x);if(angle<0)angle+=PI2;return angle>=startAngle&&angle<=endAngle||angle+PI2>=startAngle&&angle+PI2<=endAngle;};//统一弧度方向
10322
+ Path2DHelper.FormatRadian=function(angle){angle%=PI2;if(angle<0)angle+=PI2;return angle;};/*
10253
10323
  Copyright (c) 2018 jones
10254
10324
 
10255
10325
  http://www.apache.org/licenses/LICENSE-2.0
@@ -12451,7 +12521,7 @@ var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;if(ySpliter){ySpliter.
12451
12521
  var titleInfo={Data:[],Title:this.Name,Frame:this.OverlayIndex.Frame.Frame,Script:this,IsShowIndexTitle:this.IsShowIndexTitle};var indexParam='';for(var i in this.Arguments){var _item28=this.Arguments[i];if(indexParam.length>0)indexParam+=',';indexParam+=_item28.Value.toString();}if(indexParam.length>0)titleInfo.Title=this.Name+'('+indexParam+')';var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments,this.OverlayIndex.Identify);}this.OverlayIndex.Frame.Frame.Title=this.Name;//给子框架设置标题
12452
12522
  if(hqChart.Frame.SubFrame[windowIndex]){var mainFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(mainFrame)this.OverlayIndex.Frame.Frame.XPointCount=mainFrame.XPointCount;//跟主窗口同步下页面显示数据个数
12453
12523
  }for(var i=0;i<this.OutVar.length;++i){var _item29=this.OutVar[i];if(_item29.IsExData===true)continue;//扩展数据不显示图形
12454
- if(_item29.Type==0){this.CreateLine(hqChart,windowIndex,_item29,i,_item29.Type);}else if(_item29.Type==1){switch(_item29.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item29,i);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item29,i);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item29,i);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item29,i);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item29,i);break;case'DRAWKLINE':this.CreateKLine(hqChart,windowIndex,_item29,i);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item29,i);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item29,i);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item29,i);break;case'DRAWNUMBER':case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item29,i);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item29,i);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item29,i);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item29,i);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item29,i);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item29,i);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item29,i);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item29,i);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item29,i);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item29,i);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item29,i);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item29,i);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item29,i);break;case"DRAWTITLE":this.CreateTitle(hqChart,windowIndex,_item29,i);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item29,i);break;case"DRAW_SIMPLE_TABLE":this.CreateSimpleTable(hqChart,windowIndex,_item29,i);break;case"DRAW_SIMPLE_PIE":this.CreateSimplePie(hqChart,windowIndex,_item29,i);break;case"DRAW_SIMPLE_DOUGHNUT":this.CreateSimpleDoughnut(hqChart,windowIndex,_item29,i);break;case"DRAW_SIMPLE_RADAR":this.CreateSimpleRadar(hqChart,windowIndex,_item29,i);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item29,i);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item29,i);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item29,i);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item29,i);break;case SCRIPT_CHART_NAME.BASELINE_BAR:this.CreateBaseLineBar(hqChart,windowIndex,_item29,i);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item29,i);break;default:{var find=g_ScriptIndexChartFactory.Get(_item29.Draw.DrawType);//外部挂接
12524
+ if(_item29.Type==0){this.CreateLine(hqChart,windowIndex,_item29,i,_item29.Type);}else if(_item29.Type==1){switch(_item29.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item29,i);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item29,i);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item29,i);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item29,i);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item29,i);break;case'DRAWKLINE':this.CreateKLine(hqChart,windowIndex,_item29,i);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item29,i);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item29,i);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item29,i);break;case'DRAWNUMBER':case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item29,i);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item29,i);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item29,i);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item29,i);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item29,i);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item29,i);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item29,i);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item29,i);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item29,i);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item29,i);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item29,i);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item29,i);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item29,i);break;case"DRAWTITLE":this.CreateTitle(hqChart,windowIndex,_item29,i);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item29,i);break;case"DRAW_SIMPLE_TABLE":this.CreateSimpleTable(hqChart,windowIndex,_item29,i);break;case"DRAW_SIMPLE_PIE":this.CreateSimplePie(hqChart,windowIndex,_item29,i);break;case"DRAW_SIMPLE_DOUGHNUT":this.CreateSimpleDoughnut(hqChart,windowIndex,_item29,i);break;case"DRAW_SIMPLE_RADAR":this.CreateSimpleRadar(hqChart,windowIndex,_item29,i);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item29,i);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item29,i);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item29,i);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item29,i);break;case SCRIPT_CHART_NAME.BASELINE_BAR:this.CreateBaseLineBar(hqChart,windowIndex,_item29,i);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item29,i);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item29,i);break;default:{var find=g_ScriptIndexChartFactory.Get(_item29.Draw.DrawType);//外部挂接
12455
12525
  if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item29,i,this);}break;}}else if(_item29.Type==2){this.CreateMACD(hqChart,windowIndex,_item29,i);}else if(_item29.Type==3){this.CreatePointDot(hqChart,windowIndex,_item29,i,hisData);}else if(_item29.Type==4){this.CreateLineStick(hqChart,windowIndex,_item29,i);}else if(_item29.Type==5){this.CreateStick(hqChart,windowIndex,_item29,i);}else if(_item29.Type==6){this.CreateVolStick(hqChart,windowIndex,_item29,i,hisData);}else if(_item29.Type==7){this.CreateLine(hqChart,windowIndex,_item29,i,_item29.Type);}else if(_item29.Type==8){this.CreateLine(hqChart,windowIndex,_item29,i,_item29.Type);}var titleData=titleInfo.Data[i];if(titleData){if(this.FloatPrecision>=0)titleData.FloatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.StringFormat))titleData.StringFormat=this.StringFormat;}}/*
12456
12526
  hqChart.TitlePaint[titleIndex].Title=this.Name;
12457
12527
 
@@ -12496,8 +12566,9 @@ if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.
12496
12566
  this.CreateIcon=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartSingleText();chart.Canvas=hqChart.Canvas;chart.TextAlign='center';chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)chart.Direction=1;else if(varItem.DrawVAlign==1)chart.Direction=0;else if(varItem.DrawVAlign==2)chart.Direction=2;}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)chart.TextAlign="left";else if(varItem.DrawAlign==1)chart.TextAlign="center";else if(varItem.DrawAlign==2)chart.TextAlign='right';}if(IFrameSplitOperator.IsNumber(varItem.XOffset))chart.ShowOffset.X=varItem.XOffset;if(IFrameSplitOperator.IsNumber(varItem.YOffset))chart.ShowOffset.Y=varItem.YOffset;chart.Data.Data=varItem.Draw.DrawData;var icon=varItem.Draw.Icon;if(icon.IconFont==true){chart.IconFont={Family:icon.Family,Text:icon.Symbol,Color:icon.Color};}else{chart.Text=icon.Symbol;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else if(icon.Color)chart.Color=icon.Color;else chart.Color='rgb(0,0,0)';}//var titleIndex=windowIndex+1;
12497
12567
  //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
12498
12568
  this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateTipIcon=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartDrawSVG();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.GetKData();chart.Family=varItem.Draw.Icon.Family;chart.TextFont=g_JSChartResource.TIPICON.TextFont;var svgSize=g_JSChartResource.TIPICON.Size;var svgColor=g_JSChartResource.TIPICON.Color;var svgYOffset=0;var svgVAlign=2;//上下对齐方式
12499
- if(IFrameSplitOperator.IsNumber(varItem.YOffset))svgYOffset=varItem.YOffset;if(varItem.Color)svgColor=this.GetColor(varItem.Color);if(varItem.DrawFontSize>0)svgSize=varItem.DrawFontSize;if(varItem.DrawVAlign>=0)svgVAlign=varItem.DrawVAlign;if(varItem.Draw&&IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.DrawData)&&varItem.Draw.Icon){var drawData=varItem.Draw.DrawData;var aryData=[];var isArrayTip=Array.isArray(varItem.Draw.Text);var singleTip=null;if(!isArrayTip&&varItem.Draw.Text)singleTip={Text:varItem.Draw.Text};for(var j=0;j<drawData.length;++j){var item=drawData[j];var kItem=chart.Data.Data[j];if(!IFrameSplitOperator.IsNumber(item))continue;var svgItem={Value:item,Date:kItem.Date,Time:kItem.Time,SVG:{Symbol:varItem.Draw.Icon.Symbol,Size:svgSize,Color:svgColor,YOffset:svgYOffset,VAlign:svgVAlign}};if(isArrayTip){var text=varItem.Draw.Text[j];if(text)svgItem.Tooltip={Text:text};}else{svgItem.Tooltip=singleTip;}aryData.push(svgItem);}chart.Texts=aryData;}chart.BuildCacheData();frame.ChartPaint.push(chart);};this.CreateBaseLineBar=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartBaseLineBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.HQChart=hqChart;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.GetKData();//绑定K线
12500
- chart.AryData=varItem.Draw.DrawData;var config=varItem.Draw.Config;if(config){if(config.UpColor)chart.UpColor=config.UpColor;if(config.DownColor)chart.DownColor=config.DownColor;if(IFrameSplitOperator.IsNumber(config.DefaultMax))chart.DefaultMax=config.DefaultMax;}chart.BuildCacheData();frame.ChartPaint.push(chart);};//创建通道
12569
+ if(IFrameSplitOperator.IsNumber(varItem.YOffset))svgYOffset=varItem.YOffset;if(varItem.Color)svgColor=this.GetColor(varItem.Color);if(varItem.DrawFontSize>0)svgSize=varItem.DrawFontSize;if(varItem.DrawVAlign>=0)svgVAlign=varItem.DrawVAlign;if(varItem.Draw&&IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.DrawData)&&varItem.Draw.Icon){var drawData=varItem.Draw.DrawData;var aryData=[];var isArrayTip=Array.isArray(varItem.Draw.Text);var singleTip=null;if(!isArrayTip&&varItem.Draw.Text)singleTip={Text:varItem.Draw.Text};for(var j=0;j<drawData.length;++j){var item=drawData[j];var kItem=chart.Data.Data[j];if(!IFrameSplitOperator.IsNumber(item))continue;var svgItem={Value:item,Date:kItem.Date,Time:kItem.Time,SVG:{Symbol:varItem.Draw.Icon.Symbol,Size:svgSize,Color:svgColor,YOffset:svgYOffset,VAlign:svgVAlign}};if(isArrayTip){var text=varItem.Draw.Text[j];if(text)svgItem.Tooltip={Text:text};}else{svgItem.Tooltip=singleTip;}aryData.push(svgItem);}chart.Texts=aryData;}chart.BuildCacheData();this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateBaseLineBar=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartBaseLineBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.HQChart=hqChart;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.GetKData();//绑定K线
12570
+ chart.AryData=varItem.Draw.DrawData;var config=varItem.Draw.Config;if(config){if(config.UpColor)chart.UpColor=config.UpColor;if(config.DownColor)chart.DownColor=config.DownColor;if(IFrameSplitOperator.IsNumber(config.DefaultMax))chart.DefaultMax=config.DefaultMax;}chart.BuildCacheData();frame.ChartPaint.push(chart);};this.CreateKLineTable=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartKLineTable();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.HQChart=hqChart;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.GetKData();//绑定K线
12571
+ chart.AryTableData=varItem.Draw.DrawData;if(IFrameSplitOperator.IsNumber(varItem.Draw.RowCount))chart.RowCount=varItem.Draw.RowCount;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.RowName))chart.RowName=varItem.Draw.RowName;var config=varItem.Draw.Config;if(config){if(config.BGColor)chart.BGColor=config.BGColor;if(config.TextColor)chart.TextColor=config.TextColor;if(config.BorderColor)chart.BorderColor=config.BorderColor;if(IFrameSplitOperator.IsNumber(config.RowNamePosition))chart.RowNamePosition=config.RowNamePosition;if(IFrameSplitOperator.IsNumber(config.RowHeightType))chart.RowHeightType=config.RowHeightType;if(IFrameSplitOperator.IsNumber(config.Style))chart.Style=config.Style;if(config.ItemMergin){var subItem=config.ItemMergin;if(IFrameSplitOperator.IsNumber(subItem.Left))chart.ItemMergin.Left=subItem.Left;if(IFrameSplitOperator.IsNumber(subItem.Top))chart.ItemMergin.Top=subItem.Top;if(IFrameSplitOperator.IsNumber(subItem.Bottom))chart.ItemMergin.Bottom=subItem.Bottom;if(IFrameSplitOperator.IsNumber(subItem.Right))chart.ItemMergin.Right=subItem.Right;if(IFrameSplitOperator.IsNumber(subItem.YOffset))chart.ItemMergin.YOffset=subItem.YOffset;}if(config.TextFont){var subItem=config.TextFont;if(IFrameSplitOperator.IsNumber(subItem.FontMaxSize))chart.TextFontConfig.FontMaxSize=subItem.FontMaxSize;if(subItem.Family)chart.TextFontConfig.Family=subItem.Family;}}chart.BuildCacheData();frame.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);titleData.DataType="ChartKLineTable";titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;};//创建通道
12501
12572
  this.CreateChannel=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartChannel();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Draw.AreaColor)chart.AreaColor=varItem.Draw.AreaColor;else if(varItem.Color)chart.AreaColor=this.GetColor(varItem.Color);else chart.AreaColor=this.GetDefaultColor(id);if(varItem.Draw.Border.Color)chart.LineColor=varItem.Draw.Border.Color;else chart.LineColor=null;if(varItem.Draw.Border.Dotted)chart.LineDotted=varItem.Draw.Border.Dotted;if(varItem.Draw.Border.Width>0)chart.LineWidth=varItem.Draw.Border.Width;//let titleIndex=windowIndex+1;
12502
12573
  chart.Data.Data=varItem.Draw.DrawData;frame.ChartPaint.push(chart);};//
12503
12574
  this.CreatePartLine=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartPartLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.LineWidth=width;}if(IFrameSplitOperator.IsBool(varItem.IsDotLine))chart.IsDotLine=varItem.IsDotLine;if(IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash))chart.LineDash=varItem.LineDash;chart.Data.Data=varItem.Draw.DrawData;this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateMultiLine=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
@@ -15096,7 +15167,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
15096
15167
  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);};}/********************************************************************************
15097
15168
  * 版本信息输出
15098
15169
  *
15099
- */var HQCHART_VERSION="1.1.14863";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
15170
+ */var HQCHART_VERSION="1.1.14873";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
15100
15171
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
15101
15172
  // BaseIndex:BaseIndex,
15102
15173
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14864",
3
+ "version": "1.1.14874",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -23081,6 +23081,9 @@ function OverlayScriptIndex(name,script,args,option)
23081
23081
  case SCRIPT_CHART_NAME.BASELINE_BAR:
23082
23082
  this.CreateBaseLineBar(hqChart,windowIndex,item,i);
23083
23083
  break;
23084
+ case SCRIPT_CHART_NAME.KLINE_TABLE:
23085
+ this.CreateKLineTable(hqChart,windowIndex,item,i);
23086
+ break;
23084
23087
  case "DRAWCOLORKLINE":
23085
23088
  this.CreateDrawColorKLine(hqChart,windowIndex,item,i);
23086
23089
  break;
@@ -23890,6 +23893,7 @@ function OverlayScriptIndex(name,script,args,option)
23890
23893
  }
23891
23894
 
23892
23895
  chart.BuildCacheData();
23896
+ this.SetChartIndexName(chart);
23893
23897
  frame.ChartPaint.push(chart);
23894
23898
  }
23895
23899
 
@@ -23920,6 +23924,61 @@ function OverlayScriptIndex(name,script,args,option)
23920
23924
  frame.ChartPaint.push(chart);
23921
23925
  }
23922
23926
 
23927
+ this.CreateKLineTable=function(hqChart,windowIndex,varItem,id)
23928
+ {
23929
+ var overlayIndex=this.OverlayIndex;
23930
+ var frame=overlayIndex.Frame;
23931
+ var chart=new ChartKLineTable();
23932
+ chart.Canvas=hqChart.Canvas;
23933
+ chart.Name=varItem.Name;
23934
+ chart.HQChart=hqChart;
23935
+ chart.ChartBorder=frame.Frame.ChartBorder;
23936
+ chart.ChartFrame=frame.Frame;
23937
+ chart.Identify=overlayIndex.Identify;
23938
+
23939
+ chart.Data=hqChart.GetKData(); //绑定K线
23940
+ chart.AryTableData=varItem.Draw.DrawData;
23941
+ if (IFrameSplitOperator.IsNumber(varItem.Draw.RowCount)) chart.RowCount=varItem.Draw.RowCount;
23942
+ if (IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.RowName)) chart.RowName=varItem.Draw.RowName;
23943
+
23944
+ var config=varItem.Draw.Config;
23945
+ if (config)
23946
+ {
23947
+ if (config.BGColor) chart.BGColor=config.BGColor;
23948
+ if (config.TextColor) chart.TextColor=config.TextColor;
23949
+ if (config.BorderColor) chart.BorderColor=config.BorderColor;
23950
+ if (IFrameSplitOperator.IsNumber(config.RowNamePosition)) chart.RowNamePosition=config.RowNamePosition;
23951
+ if (IFrameSplitOperator.IsNumber(config.RowHeightType)) chart.RowHeightType=config.RowHeightType;
23952
+ if (IFrameSplitOperator.IsNumber(config.Style)) chart.Style=config.Style;
23953
+
23954
+ if (config.ItemMergin)
23955
+ {
23956
+ var subItem=config.ItemMergin;
23957
+ if (IFrameSplitOperator.IsNumber(subItem.Left)) chart.ItemMergin.Left=subItem.Left;
23958
+ if (IFrameSplitOperator.IsNumber(subItem.Top)) chart.ItemMergin.Top=subItem.Top;
23959
+ if (IFrameSplitOperator.IsNumber(subItem.Bottom)) chart.ItemMergin.Bottom=subItem.Bottom;
23960
+ if (IFrameSplitOperator.IsNumber(subItem.Right)) chart.ItemMergin.Right=subItem.Right;
23961
+ if (IFrameSplitOperator.IsNumber(subItem.YOffset)) chart.ItemMergin.YOffset=subItem.YOffset;
23962
+ }
23963
+
23964
+ if (config.TextFont)
23965
+ {
23966
+ var subItem=config.TextFont;
23967
+ if (IFrameSplitOperator.IsNumber(subItem.FontMaxSize)) chart.TextFontConfig.FontMaxSize=subItem.FontMaxSize;
23968
+ if (subItem.Family) chart.TextFontConfig.Family=subItem.Family;
23969
+ }
23970
+ }
23971
+
23972
+ chart.BuildCacheData();
23973
+ frame.ChartPaint.push(chart);
23974
+
23975
+ var titleIndex=windowIndex+1;
23976
+ var titlePaint=hqChart.TitlePaint[titleIndex];
23977
+ var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);
23978
+ titleData.DataType="ChartKLineTable";
23979
+ titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
23980
+ }
23981
+
23923
23982
 
23924
23983
  //创建通道
23925
23984
  this.CreateChannel=function(hqChart,windowIndex,varItem,id)