hqchart 1.1.15816 → 1.1.15823

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.
@@ -1400,7 +1400,7 @@ this.ClearChartDrawPicture=function(drawPicture,option){if(this.JSChartContainer
1400
1400
  this.JSChartContainer.ClearChartDrawPicture(drawPicture,option);}};//复制一个画图
1401
1401
  this.PasteChartDrawPicture=function(data,frameID,option){if(this.JSChartContainer&&typeof this.JSChartContainer.PasteChartDrawPicture=='function'){JSConsole.Chart.Log('[JSChart:PasteChartDrawPicture] ',data,frameID,option);return this.JSChartContainer.PasteChartDrawPicture(data,frameID,option);}};//重新加载配置
1402
1402
  this.ReloadResource=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.ReloadResource=='function'){JSConsole.Chart.Log('[JSChart:ReloadResource] ');this.JSChartContainer.ReloadResource(option);}};this.EnableSplashScreen=function(enable,option){if(this.JSChartContainer&&typeof this.JSChartContainer.EnableSplashScreen=='function'){JSConsole.Chart.Log('[JSChart:EnableSplashScreen] ');this.JSChartContainer.EnableSplashScreen(enable,option);}};this.Draw=function(){if(this.JSChartContainer&&typeof this.JSChartContainer.Draw=='function'){JSConsole.Chart.Log('[JSChart:Draw] ');this.JSChartContainer.Draw();}};this.SetFocus=function(){if(this.JSChartContainer&&typeof this.JSChartContainer.SetFocus=='function'){JSConsole.Chart.Log('[JSChart:SetFocus] ');this.JSChartContainer.SetFocus();}};//数据导出, option={ Start:{ Date, Time:可选}, End:{Date: Time:可选} }
1403
- this.ExportData=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.ExportData=='function'){JSConsole.Chart.Log('[JSChart:ExportData] ');return this.JSChartContainer.ExportData(option);}};this.ChangePriceGap=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.ChangePriceGap=='function'){JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');return this.JSChartContainer.ChangePriceGap(option);}};this.PopupMenuByTab=function(menuData,rtTab){if(this.JSChartContainer&&typeof this.JSChartContainer.PopupMenuByTab=='function'){JSConsole.Chart.Log('[JSChart:PopupMenuByTab] ');return this.JSChartContainer.PopupMenuByTab(menuData,rtTab);}};this.PopupMenuByDrapdown=function(menuData,rtButton){if(this.JSChartContainer&&typeof this.JSChartContainer.PopupMenuByDrapdown=='function'){JSConsole.Chart.Log('[JSChart:PopupMenuByDrapdown] ');return this.JSChartContainer.PopupMenuByDrapdown(menuData,rtButton);}};this.ExecuteMenuCommand=function(cmdID,aryArgs){if(this.JSChartContainer&&typeof this.JSChartContainer.ExecuteMenuCommand=='function'){JSConsole.Chart.Log('[JSChart:ExecuteMenuCommand] ');return this.JSChartContainer.ExecuteMenuCommand(cmdID,aryArgs);}};this.GetGraphicsDescription=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.GetGraphicsDescription=='function'){JSConsole.Chart.Log('[JSChart:GetGraphicsDescription] ');return this.JSChartContainer.GetGraphicsDescription(option);}};}JSChart.LastVersion=null;//最新的版本号
1403
+ this.ExportData=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.ExportData=='function'){JSConsole.Chart.Log('[JSChart:ExportData] ');return this.JSChartContainer.ExportData(option);}};this.ChangePriceGap=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.ChangePriceGap=='function'){JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');return this.JSChartContainer.ChangePriceGap(option);}};this.PopupMenuByTab=function(menuData,rtTab){if(this.JSChartContainer&&typeof this.JSChartContainer.PopupMenuByTab=='function'){JSConsole.Chart.Log('[JSChart:PopupMenuByTab] ');return this.JSChartContainer.PopupMenuByTab(menuData,rtTab);}};this.PopupMenuByDrapdown=function(menuData,rtButton){if(this.JSChartContainer&&typeof this.JSChartContainer.PopupMenuByDrapdown=='function'){JSConsole.Chart.Log('[JSChart:PopupMenuByDrapdown] ');return this.JSChartContainer.PopupMenuByDrapdown(menuData,rtButton);}};this.ExecuteMenuCommand=function(cmdID,aryArgs){if(this.JSChartContainer&&typeof this.JSChartContainer.ExecuteMenuCommand=='function'){JSConsole.Chart.Log('[JSChart:ExecuteMenuCommand] ');return this.JSChartContainer.ExecuteMenuCommand(cmdID,aryArgs);}};this.GetGraphicsDescription=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.GetGraphicsDescription=='function'){JSConsole.Chart.Log('[JSChart:GetGraphicsDescription] ');return this.JSChartContainer.GetGraphicsDescription(option);}};this.HideDivFrameToolbar=function(){if(this.JSChartContainer&&typeof this.JSChartContainer.HideDivFrameToolbar=='function'){JSConsole.Chart.Log('[JSChart:HideDivFrameToolbar] ');return this.JSChartContainer.HideDivFrameToolbar();}};}JSChart.LastVersion=null;//最新的版本号
1404
1404
  JSChart.EnableCanvasWillReadFrequently=false;//https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently
1405
1405
  JSChart.CorssCursorCanvasKey="hqchart_corsscursor";JSChart.TooltipCursorCanvasKey="hqchart_tooltip";JSChart.RectDragCanvasKey="hqchart_drag_rect";JSChart.LatestPointFlashKey="hqchart_point_flash";//最新数据点闪烁
1406
1406
  JSChart.KLineCountDownKey="hqchart_kline_countdown";//倒计时
@@ -2545,7 +2545,7 @@ this.GetIndexDataDescription=function(option){if(!IFrameSplitOperator.IsNonEmpty
2545
2545
  for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item||!item.ExportData)continue;if(["Main-KLine","Minute-Line","Minute-Average-Line","Minute-Vol-Bar","Minute-BuySell-Bar"].includes(item.Identify))continue;var frameID=item.ChartFrame.Identify;if(aryWindowIndex&&!aryWindowIndex.includes(frameID))continue;var guid=item.Identify;var data=item.ExportData(aryKData,range);if(!IFrameSplitOperator.IsNonEmptyArray(data))conintue;var indexData=null;if(mapIndex.has(guid)){indexData=mapIndex.get(guid);}else{indexData={Guid:guid,Name:item.IndexName,ID:item.IndexID,AryData:[]};mapIndex.set(guid,indexData);}for(var j=0;j<data.length;++j){var subItem=data[j];var outName="未定义名字";if(subItem.Name)outName=subItem.Name;indexData.AryData.push({Name:''+outName,Data:subItem.Data,Description:subItem.Description});}}//叠加指标
2546
2546
  for(var i=0,j=0,k=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(aryWindowIndex&&!aryWindowIndex.includes(i))continue;for(j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(!IFrameSplitOperator.IsNonEmptyArray(overlayItem.ChartPaint))continue;for(k=0;k<overlayItem.ChartPaint.length;++k){var chart=overlayItem.ChartPaint[k];var guid=chart.Identify;if(!chart||!chart.ExportData)continue;var data=chart.ExportData(aryKData,range);if(!IFrameSplitOperator.IsNonEmptyArray(data))continue;var indexData=null;if(mapIndex.has(guid)){indexData=mapIndex.get(guid);}else{indexData={Guid:guid,Name:chart.IndexName,ID:chart.IndexID,AryData:[]};mapIndex.set(guid,indexData);}for(var index=0;index<data.length;++index){var subItem=data[index];var outName="未定义名字";if(subItem.Name)outName=subItem.Name;indexData.AryData.push({Name:''+outName,Data:subItem.Data,Description:subItem.Description});}}}}if(mapIndex.size<=0)return null;var aryData=[];var bMinutePeriod=ChartData.IsMinutePeriod(this.Period,true);var startIndex=0,endIndex=0;if(range){startIndex=range.Start.Index;endIndex=range.End.Index;}for(var i=0;i<this.WindowIndex.length;++i){var item=this.WindowIndex[i];if(!item)continue;var guid=item.Guid;if(!mapIndex.has(guid))continue;var indexData=mapIndex.get(guid);var data=this.GetIndexItemDescription(aryKData,indexData,item,range);if(data)aryData.push(data);}for(var i=0,j=0,k=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];var indexInfo=overlayItem.Script;var guid=overlayItem.Identify;if(!mapIndex.has(guid))continue;var indexData=mapIndex.get(guid);var data=this.GetIndexItemDescription(aryKData,indexData,indexInfo,range);if(data)aryData.push(data);}}return aryData;};this.GetIndexItemDescription=function(aryKData,indexData,indexInfo,range){var bMinuteChart=this.IsMinuteContainer();var bMinutePeriod=false;if(bMinuteChart)bMinutePeriod=true;else bMinutePeriod=ChartData.IsMinutePeriod(this.Period,true);var startIndex=0,endIndex=aryKData.length-1;if(range){startIndex=range.Start.Index;endIndex=range.End.Index;}var strTitle=this.Name+' '+this.Symbol+' '+indexInfo.Name+'\u6307\u6807\u6570\u636E';var strText='\u3010'+strTitle+'\u3011\r\n';var strValue=null;if(indexInfo.Description)strValue=indexInfo.Description;if(indexInfo.FullDescription)strValue=indexInfo.FullDescription;strText+='\u6307\u6807\u89E3\u91CA:'+strValue+'\r\n';if(indexInfo.Script)strText+='\u6307\u6807\u516C\u5F0F:\r\n----------------------\r\n'+indexInfo.Script+'\r\n------------------------\r\n';if(IFrameSplitOperator.IsNonEmptyArray(indexInfo.Arguments))//参数
2547
2547
  {strValue="";for(var i=0;i<indexInfo.Arguments.length;++i){var argItem=indexInfo.Arguments[i];strValue+=argItem.Name+'='+argItem.Value+',';}strText+='\u6307\u6807\u53C2\u6570:'+strValue+'\r\n';}strText+="字段说明\r\n";strText+="1. Date:日期 格式YYYYMMDD\r\n";strText+="2. Time:时间 格式hhmm\r\n";strText+="原始数据如下\r\n";strText+="Date,Time";for(var i=0;i<indexData.AryData.length;++i){var indexItem=indexData.AryData[i];strText+=','+indexItem.Name;}strText+="\r\n";var count=0;for(var i=startIndex;i<=endIndex&&i<aryKData.length;++i){var kItem=aryKData[i];var time=null;if(bMinutePeriod)time=kItem.Time;strText+=kItem.Date+','+time;for(var j=0;j<indexData.AryData.length;++j){var indexItem=indexData.AryData[j];var value=null;if(indexItem.Data)value=indexItem.Data[i];strText+=','+value;}strText+="\r\n";++count;}strText+="\r\n\r\n";return{Title:strTitle,Content:strText,Type:"指标数据",Count:count};};//获取品种小数位数
2548
- this.GetSymbolDecimal=function(){return GetfloatPrecision(this.Symbol);};this.TryClickIndexTitle=function(x,y,e){if(!IFrameSplitOperator.IsNonEmptyArray(this.TitlePaint))return false;for(var i=0;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];if(!item||!item.IsClickTitle)continue;if(!item.IsClickTitle(x,y))continue;var data={Point:{X:x,Y:y},Title:item.Title,FrameID:item.Frame.Identify,Rect:item.TitleRect,e:e};JSConsole.Chart.Log('[JSChartContainer::TryClickIndexTitle] click title ',data);var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEXTITLE);if(event&&event.Callback)event.Callback(event,data,this);return true;}return false;};}function GetDevicePixelRatio(){if(typeof window=='undefined')return 1;return window.devicePixelRatio||1;}function GetFontHeight(context,font,word){if(!context)return null;if(font)context.font=font;var text='擎';if(IFrameSplitOperator.IsString(word))text=word;var fontInfo=context.measureText(text);var textHeight=fontInfo.fontBoundingBoxAscent+fontInfo.fontBoundingBoxDescent;if(!IFrameSplitOperator.IsNumber(textHeight))textHeight=fontInfo.width+2*GetDevicePixelRatio();return textHeight;}function IsPhoneWeb(){var userAgentInfo=navigator.userAgent;var Agents=new Array("Android","iPhone","SymbianOS","Windows Phone","iPad","iPod");for(var v=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0)return true;}return false;}function OnKeyDown(e)//键盘事件
2548
+ this.GetSymbolDecimal=function(){return GetfloatPrecision(this.Symbol);};this.TryClickIndexTitle=function(x,y,e){if(!IFrameSplitOperator.IsNonEmptyArray(this.TitlePaint))return false;for(var i=0;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];if(!item||!item.IsClickTitle)continue;if(!item.IsClickTitle(x,y))continue;var data={Point:{X:x,Y:y},Title:item.Title,FrameID:item.Frame.Identify,Rect:item.TitleRect,e:e};JSConsole.Chart.Log('[JSChartContainer::TryClickIndexTitle] click title ',data);var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEXTITLE);if(event&&event.Callback)event.Callback(event,data,this);return true;}return false;};this.HideDivFrameToolbar=function(){this.Frame.HideDivFrameToolbar();};}function GetDevicePixelRatio(){if(typeof window=='undefined')return 1;return window.devicePixelRatio||1;}function GetFontHeight(context,font,word){if(!context)return null;if(font)context.font=font;var text='擎';if(IFrameSplitOperator.IsString(word))text=word;var fontInfo=context.measureText(text);var textHeight=fontInfo.fontBoundingBoxAscent+fontInfo.fontBoundingBoxDescent;if(!IFrameSplitOperator.IsNumber(textHeight))textHeight=fontInfo.width+2*GetDevicePixelRatio();return textHeight;}function IsPhoneWeb(){var userAgentInfo=navigator.userAgent;var Agents=new Array("Android","iPhone","SymbianOS","Windows Phone","iPad","iPod");for(var v=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0)return true;}return false;}function OnKeyDown(e)//键盘事件
2549
2549
  {if(this.JSChartContainer&&this.JSChartContainer.OnKeyDown)this.JSChartContainer.OnKeyDown(e);}function OnKeyUp(e)//键盘事件
2550
2550
  {if(this.JSChartContainer&&this.JSChartContainer.OnKeyUp)this.JSChartContainer.OnKeyUp(e);}function OnWheel(e)//上下滚动事件
2551
2551
  {if(this.JSChartContainer&&this.JSChartContainer.OnWheel)this.JSChartContainer.OnWheel(e);}function ToFixed(number,precision){var b=1;if(isNaN(number))return number;if(number<0)b=-1;var multiplier=Math.pow(10,precision);var value=Math.round(Math.abs(number)*multiplier)/multiplier*b;if(/^(\d+(?:\.\d+)?)(e)([\-]?\d+)$/.test(value))var s=value.toFixed2(precision);else var s=value.toString();var rs=s.indexOf('.');if(rs<0&&precision>0){rs=s.length;s+='.';}while(s.length<=rs+precision){s+='0';}return s;}function IsRectOverlap(rt,rt2){if(Math.max(rt.Left,rt2.Left)<Math.min(rt.Right,rt2.Right)&&Math.max(rt.Top,rt2.Top)<Math.min(rt.Bottom,rt2.Bottom))return true;return false;}//获取文字高度和宽度
@@ -2886,7 +2886,7 @@ this.ReDrawToolbar=false;}};//Y轴面积背景
2886
2886
  this.DrawCustomHorizontalArea=function(){if(this.IsMinSize)return;if(this.ChartBorder.IsShowTitleOnly)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.CustomHorizontalInfo))return;for(var i=0;i<this.CustomHorizontalInfo.length;++i){var item=this.CustomHorizontalInfo[i];if(item.Type==5)this.DrawCustomAreaItem(item);}};//画边框
2887
2887
  this.SuperDrawBorder=this.DrawBorder;this.DrawBorder=function(){if(!this.IsShowBorder)return;if(this.IsMinSize)return;this.SuperDrawBorder();if(this.Identify==1)//走势图和成交量中间用粗线分割开
2888
2888
  {var border=this.ChartBorder.GetBorder();var left=ToFixedPoint(border.Left);var top=ToFixedPoint(border.Top);var right=ToFixedPoint(border.Right);this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();this.Canvas.moveTo(left,top);this.Canvas.lineTo(right,top);this.Canvas.save();this.Canvas.lineWidth=2*GetDevicePixelRatio();this.Canvas.stroke();this.Canvas.restore();}};this.DrawVolTitle=function(symbol){if(!MARKET_SUFFIX_NAME.IsShowMinuteVolTitle(symbol))return;if(this.Identify==1)//显示"成交量"
2889
- {var pixelRatio=GetDevicePixelRatio();var left=this.ChartBorder.GetLeft()+2*pixelRatio+this.YInsideOffset;var top=this.ChartBorder.GetTopEx()+2*pixelRatio;this.Canvas.textAlign='left';this.Canvas.textBaseline='top';if(g_JSChartResource.Minute.VolBarColor||g_JSChartResource.Minute.VolTitleColor){if(g_JSChartResource.Minute.VolBarColor)this.Canvas.fillStyle=g_JSChartResource.Minute.VolBarColor;else this.Canvas.fillStyle=g_JSChartResource.Minute.VolTitleColor;var languageID=this.YSplitOperator.LanguageID;var text=g_JSChartLocalization.GetText('MVol-Vol',languageID);this.Canvas.fillText(text,left,top);left+=this.Canvas.measureText(text).width;left+=6*GetDevicePixelRatio();}if(this.IsShowPositionTitle){text=g_JSChartLocalization.GetText('MVol-Position',languageID);this.Canvas.fillStyle=g_JSChartResource.Minute.PositionColor;this.Canvas.fillText(text,left,top);}}};this.DrawToolbar=function(){var bDraw=true;if(this.ToolbarButtonStyle==1)bDraw=false;if(g_JSChartResource.IsDOMFrameToolbar===true)bDraw=false;if(!this.DivFrameToolbar)return;if(!bDraw)this.HideToolbar();else this.DivFrameToolbar.Show(this.Identify);};//手绘,不用DOM,使用DOM太麻烦了
2889
+ {var pixelRatio=GetDevicePixelRatio();var left=this.ChartBorder.GetLeft()+2*pixelRatio+this.YInsideOffset;var top=this.ChartBorder.GetTopEx()+2*pixelRatio;this.Canvas.textAlign='left';this.Canvas.textBaseline='top';if(g_JSChartResource.Minute.VolBarColor||g_JSChartResource.Minute.VolTitleColor){if(g_JSChartResource.Minute.VolBarColor)this.Canvas.fillStyle=g_JSChartResource.Minute.VolBarColor;else this.Canvas.fillStyle=g_JSChartResource.Minute.VolTitleColor;var languageID=this.YSplitOperator.LanguageID;var text=g_JSChartLocalization.GetText('MVol-Vol',languageID);this.Canvas.fillText(text,left,top);left+=this.Canvas.measureText(text).width;left+=6*GetDevicePixelRatio();}if(this.IsShowPositionTitle){text=g_JSChartLocalization.GetText('MVol-Position',languageID);this.Canvas.fillStyle=g_JSChartResource.Minute.PositionColor;this.Canvas.fillText(text,left,top);}}};this.DrawToolbar=function(){var bDraw=true;if(this.ToolbarButtonStyle==1)bDraw=false;if(g_JSChartResource.IsDOMFrameToolbar===true)bDraw=false;if(!this.DivFrameToolbar)return;if(!bDraw){this.HideToolbar();}else{if(this.DivFrameToolbar.IsParentShow())this.DivFrameToolbar.Show(this.Identify);else this.HideToolbar();}};//手绘,不用DOM,使用DOM太麻烦了
2890
2890
  this.DrawToolbarV2=function(moveonPoint,mouseStatus){if(g_JSChartResource.IsDOMFrameToolbar===true)return;if(this.Identify==0&&this.IsShowCloseButton)this.DrawCloseBeforeButton(moveonPoint,mouseStatus);//盘前集合竞价关闭按钮
2891
2891
  if(this.ChartBorder.TitleHeight<5)return;var aryButton=[];if(this.Identify!=0&&this.Identify!=1)//价格图和成交量图只有自定义按钮
2892
2892
  {if(this.CloseIndex)aryButton.push({ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW,Style:this.CloseWindowButton});if(this.MaxMinWindow)aryButton.push({ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW,Style:this.MaxMinWindowButton});if(this.TitleWindow)aryButton.push({ID:JSCHART_BUTTON_ID.TITLE_WINDOW,Style:this.TitleWindowButton});if(this.ExportData)aryButton.push({ID:JSCHART_BUTTON_ID.EXPORT_DATA,Style:this.ExportDataButton});if(this.OverlayIndex)aryButton.push({ID:JSCHART_BUTTON_ID.OVERLAY_INDEX,Style:this.OverlayIndexButton});if(this.ChangeIndex)aryButton.push({ID:JSCHART_BUTTON_ID.CHANGE_INDEX,Style:this.ChangeIndexButton});if(this.ModifyIndex)aryButton.push({ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM,Style:this.ModifyIndexParamButton});if(this.AddIndexWindow)aryButton.push({ID:JSCHART_BUTTON_ID.ADD_INDEX_WINDOW,Style:this.AddIndexWindowButton});if(this.IndexHelp)aryButton.push({ID:JSCHART_BUTTON_ID.INDEX_HELP,Style:this.IndexHelpButton});if(this.IndexAIAnalyze)aryButton.push({ID:JSCHART_BUTTON_ID.INDEX_AI_ANALYZE,Style:this.IndexAIAnalyzeButton});}if(IFrameSplitOperator.IsNonEmptyArray(this.CustomToolbar)){for(var i=0;i<this.CustomToolbar.length;++i){var item=this.CustomToolbar[i];if(item.ID&&item.Style)aryButton.push({ID:item.ID,Style:item.Style,TooltipText:item.TooltipText,Data:item.Data});}}this.DrawTitleButton(aryButton,moveonPoint,mouseStatus);};this.DrawCloseBeforeButton=function(moveonPoint,mouseStatus){if(this.Identify!=0)return;var border=this.ChartBorder.GetBorder();if(border.DayBorder)return;if(this.ChartBorder.LeftExtendWidth<10)return;var rtButton={Left:border.Left,Top:border.TopEx,Width:this.BeforeCloseIcon.Size,Height:this.BeforeCloseIcon.Size};rtButton.Right=rtButton.Left+this.BeforeCloseIcon.Size;rtButton.Bottom=rtButton.Top+this.BeforeCloseIcon.Size;var item={Rect:rtButton,Name:"集合竞价关闭按钮",ID:JSCHART_BUTTON_ID.CLOSE_BEFOREOPEN_ID};var color=this.BeforeCloseIcon.Color;if(moveonPoint&&moveonPoint.X>=rtButton.Left&&moveonPoint.X<rtButton.Right&&moveonPoint.Y>=rtButton.Top&&moveonPoint.Y<=rtButton.Bottom){color=this.BeforeCloseIcon.MoveOnColor;if(mouseStatus)mouseStatus.MouseOnToolbar={Rect:rtButton,Item:item,Frame:this,Point:{X:moveonPoint.X,Y:moveonPoint.Y}};}var font=this.BeforeCloseIcon.Size+'px '+this.BeforeCloseIcon.Family;this.Canvas.font=font;this.Canvas.fillStyle=color;this.Canvas.textAlign='left';this.Canvas.textBaseline='top';this.Canvas.fillText(this.BeforeCloseIcon.Text,border.Left,border.TopEx);this.Buttons.push(item);};this.DrawMultiDayBeforeDataBG=function(border){var dayBorder=border.DayBorder;var top=ToFixedPoint(border.Top);var bottom=ToFixedPoint(border.Bottom);var height=bottom-top;this.Canvas.strokeStyle=this.MultiDayBorderPen;for(var i=0;i<dayBorder.length;++i){var drawCount=0;var item=dayBorder[i];var left=ToFixedPoint(item.Left);var right=ToFixedPoint(item.LeftEx);var width=right-left;if(width>3)//盘前
@@ -2984,7 +2984,7 @@ this.IsDrawTitleBG=g_JSChartResource.KLineToolbar.IsDrawTitleBG;this.IsShowNameA
2984
2984
  // Type:1, Space: 第几个空白间距, Line:{ Color:线段颜色, Type:线段类型 0 直线 1 虚线 }
2985
2985
  this.DrawCustomVerticalEvent;this.RightSpaceCount=0;this.Logarithmic=null;//{Up:上部 , Donw:下部 , OpenPrice:第一个开盘价}
2986
2986
  this.CustomToolbar=[];//自定义toolbar按钮 { ID:, Html:, Click } 2.0版本 { ID, Style:{ 见 g_JSChartResource.Buttons.CloseWindow}}
2987
- this.ToolbarType=0;this.DrawToolbar=function(){var bDraw=true;if(this.ToolbarButtonStyle==1)bDraw=false;if(g_JSChartResource.IsDOMFrameToolbar===true)bDraw=false;if(!this.DivFrameToolbar)return;if(!bDraw)this.HideToolbar();else this.DivFrameToolbar.Show(this.Identify);};//手绘,不用DOM,使用DOM太麻烦了
2987
+ this.ToolbarType=0;this.DrawToolbar=function(){var bDraw=true;if(this.ToolbarButtonStyle==1)bDraw=false;if(g_JSChartResource.IsDOMFrameToolbar===true)bDraw=false;if(!this.DivFrameToolbar)return;if(!bDraw){this.HideToolbar();}else{if(this.DivFrameToolbar.IsParentShow())this.DivFrameToolbar.Show(this.Identify);else this.HideToolbar();}};//手绘,不用DOM,使用DOM太麻烦了
2988
2988
  this.DrawToolbarV2=function(moveonPoint,mouseStatus){if(g_JSChartResource.IsDOMFrameToolbar===true)return;this.Buttons=[];if(this.IsMinSize==true)return;if(this.ChartBorder.TitleHeight<5)return;var aryButton=[];//第1个窗口不能关闭
2989
2989
  if(this.CloseIndex&&this.Identify!==0)aryButton.push({ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW,Style:this.CloseWindowButton});if(this.MaxMinWindow&&this.Identify!=0)aryButton.push({ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW,Style:this.MaxMinWindowButton});if(this.TitleWindow&&this.Identify!=0)aryButton.push({ID:JSCHART_BUTTON_ID.TITLE_WINDOW,Style:this.TitleWindowButton});if(this.ExportData)aryButton.push({ID:JSCHART_BUTTON_ID.EXPORT_DATA,Style:this.ExportDataButton});if(this.OverlayIndex)aryButton.push({ID:JSCHART_BUTTON_ID.OVERLAY_INDEX,Style:this.OverlayIndexButton});if(this.ChangeIndex)aryButton.push({ID:JSCHART_BUTTON_ID.CHANGE_INDEX,Style:this.ChangeIndexButton});if(this.ModifyIndex)aryButton.push({ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM,Style:this.ModifyIndexParamButton});if(this.AddIndexWindow)aryButton.push({ID:JSCHART_BUTTON_ID.ADD_INDEX_WINDOW,Style:this.AddIndexWindowButton});if(this.IndexHelp)aryButton.push({ID:JSCHART_BUTTON_ID.INDEX_HELP,Style:this.IndexHelpButton});if(this.IndexAIAnalyze)aryButton.push({ID:JSCHART_BUTTON_ID.INDEX_AI_ANALYZE,Style:this.IndexAIAnalyzeButton});if(IFrameSplitOperator.IsNonEmptyArray(this.CustomToolbar)){for(var i=0;i<this.CustomToolbar.length;++i){var item=this.CustomToolbar[i];if(item.ID&&item.Style){var btnItem={ID:item.ID,Style:item.Style,TooltipText:item.TooltipText,Data:item.Data};if(item.IsLeft===true)//左侧按钮
2990
2990
  {}else{aryButton.push(btnItem);//右侧按钮
@@ -3411,7 +3411,7 @@ this.PtInFrameBorder=function(x,y){var height=this.DragBorderHeight;for(var i=0;
3411
3411
  }var overlayRight=right+rightOffset;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(!overlayItem.RightWidth||!IFrameSplitOperator.IsNumber(overlayItem.RightWidth.Width))continue;var overlayWidth=overlayItem.RightWidth.Width;item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(overlayRight,top,overlayWidth,bottom-top);if(item.Frame.Canvas.isPointInPath(x,y)){return{Index:i,Right:true,Left:false,Position:position,IsOverlay:true,OverlayIndex:j};//Position 1=上面 2 下面 0=中间(TODO)
3412
3412
  }overlayRight+=overlayWidth;}}else{item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(right,top,rightWidth,bottom-top);if(item.Frame.Canvas.isPointInPath(x,y)){return{Index:i,Right:true,Left:false,Position:position,IsOverlay:false};//Position 1=上面 2 下面 0=中间(TODO)
3413
3413
  }}}var leftWidth=item.Frame.ChartBorder.Left;if(leftWidth>=10){item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(0,top,leftWidth,bottom-top);if(item.Frame.Canvas.isPointInPath(x,y)){return{Index:i,Right:false,Left:true,Position:position,IsOverlay:false};}}}return null;};this.SetDayCount=function(dayCount){this.ChartBorder.MultiDayMinute.Count=dayCount;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(!item.Frame)continue;item.Frame.DayCount=dayCount;item.Frame.ChartBorder.MultiDayMinute.Count=dayCount;}};//设置多日分时宽度
3414
- this.SetMultiDayMinuteWidth=function(obj){if(!obj)return;if(IFrameSplitOperator.IsNumber(obj.Left))this.ChartBorder.MultiDayMinute.Left=obj.Left;if(IFrameSplitOperator.IsNumber(obj.Right))this.ChartBorder.MultiDayMinute.Right=obj.Right;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(!item.Frame)continue;if(IFrameSplitOperator.IsNumber(obj.Left))item.Frame.ChartBorder.MultiDayMinute.Left=obj.Left;if(IFrameSplitOperator.IsNumber(obj.Right))item.Frame.ChartBorder.MultiDayMinute.Right=obj.Right;}};}//行情框架横屏
3414
+ this.SetMultiDayMinuteWidth=function(obj){if(!obj)return;if(IFrameSplitOperator.IsNumber(obj.Left))this.ChartBorder.MultiDayMinute.Left=obj.Left;if(IFrameSplitOperator.IsNumber(obj.Right))this.ChartBorder.MultiDayMinute.Right=obj.Right;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(!item.Frame)continue;if(IFrameSplitOperator.IsNumber(obj.Left))item.Frame.ChartBorder.MultiDayMinute.Left=obj.Left;if(IFrameSplitOperator.IsNumber(obj.Right))item.Frame.ChartBorder.MultiDayMinute.Right=obj.Right;}};this.HideDivFrameToolbar=function(){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(!item.Frame)continue;if(item.Frame.ToolbarButtonStyle==1)continue;if(!item.Frame.DivFrameToolbar)continue;item.Frame.DivFrameToolbar.Hide();}};}//行情框架横屏
3415
3415
  function HQTradeHScreenFrame(){this.newMethod=HQTradeFrame;//派生
3416
3416
  this.newMethod();delete this.newMethod;this.IsHScreen=true;//是否是横屏
3417
3417
  this.CalculateChartBorder=function()//计算每个子框架的边框信息
@@ -4074,14 +4074,15 @@ var xText=ptMax.Y;var yText=ptMax.X;if(IFrameSplitOperator.IsNumber(highYOffset)
4074
4074
  if(ptMax.Align=='left')text=leftArrow+text;else text=text+rightArrow;this.Canvas.fillText(text,0,0);this.Canvas.restore();var xText=ptMin.Y;var yText=ptMin.X;if(IFrameSplitOperator.IsNumber(lowYOffset))xText+=lowYOffset;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);var text=title.Low;this.Canvas.font=this.TextFont;if(title.LowColor)this.Canvas.fillStyle=title.LowColor;else this.Canvas.fillStyle=this.TextColor;this.Canvas.textAlign=ptMin.Align;this.Canvas.textBaseline='top';//var text=ptMin.Value.toFixed(defaultfloatPrecision);
4075
4075
  if(ptMin.Align=='left')text=leftArrow+text;else text=text+rightArrow;this.Canvas.fillText(text,0,0);this.Canvas.restore();};//画某一天的信息地雷
4076
4076
  this.DrawInfo=function(item){if(!this.InfoData||this.InfoData.size<=0)return;var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var bottom=this.ChartBorder.GetBottom();var top=this.ChartBorder.GetTop();var topTitle=this.ChartBorder.GetTopTitle();var key=''+item.DayData.Date;if(this.Data.DataType==1)key=item.DayData.Date+'-'+item.DayData.Time;if(!this.InfoData.has(key))return;var infoData=this.InfoData.get(key);if(!infoData||infoData.Data.length<=0)return;this.Canvas.restore();this.Canvas.save();this.ClipWindow(isHScreen);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
4077
- var iconDySize=dataWidth+distanceWidth;var minIconSize=18*pixelTatio;var maxIconSize=25*pixelTatio;if(g_JSChartResource.KLine.Info&&IFrameSplitOperator.IsNumber(g_JSChartResource.KLine.Info.MaxSize))maxIconSize=g_JSChartResource.KLine.Info.MaxSize;if(g_JSChartResource.KLine.Info&&IFrameSplitOperator.IsNumber(g_JSChartResource.KLine.Info.MinSize))minIconSize=g_JSChartResource.KLine.Info.MinSize;var bShowNum=true;if(iconDySize<=15)bShowNum=false;if(iconDySize<minIconSize)iconDySize=minIconSize;else if(iconDySize>maxIconSize)iconDySize=maxIconSize;var text='',title='';var mapImage=new _map2.default();var iconTop=item.YMax+1*pixelTatio;var iconBottom=item.YMin+1*pixelTatio+iconSize;var drawTop=true;var yOffset=0;for(var i in infoData.Data){var infoItem=infoData.Data[i];var imageInfo=mapImage.get(infoItem.InfoType);if(!imageInfo){var icon=JSKLineInfoMap.GetIconFont(infoItem.InfoType);this.Canvas.fillStyle=icon.Color;var iconSize=iconDySize;if(IFrameSplitOperator.IsNumber(icon.Size))iconSize=icon.Size;//固定大小
4077
+ var iconDySize=dataWidth+distanceWidth;var minIconSize=18*pixelTatio;var maxIconSize=25*pixelTatio;if(g_JSChartResource.KLine.Info&&IFrameSplitOperator.IsNumber(g_JSChartResource.KLine.Info.MaxSize))maxIconSize=g_JSChartResource.KLine.Info.MaxSize;if(g_JSChartResource.KLine.Info&&IFrameSplitOperator.IsNumber(g_JSChartResource.KLine.Info.MinSize))minIconSize=g_JSChartResource.KLine.Info.MinSize;var bShowNum=true;if(iconDySize<=15)bShowNum=false;if(iconDySize<minIconSize)iconDySize=minIconSize;else if(iconDySize>maxIconSize)iconDySize=maxIconSize;var text='',title='';var mapImage=new _map2.default();var iconTop=item.YMax+1*pixelTatio;var iconBottom=item.YMin+1*pixelTatio+iconSize;var drawTop=true;var yOffset=0,yTopOffset=0;for(var i in infoData.Data){var infoItem=infoData.Data[i];var imageInfo=mapImage.get(infoItem.InfoType);if(!imageInfo){var icon=JSKLineInfoMap.GetIconFont(infoItem.InfoType);this.Canvas.fillStyle=icon.Color;var iconSize=iconDySize;if(IFrameSplitOperator.IsNumber(icon.Size))iconSize=icon.Size;//固定大小
4078
4078
  this.Canvas.font=iconSize+'px '+icon.Family;var infoPosition=this.InfoPosition;if(IFrameSplitOperator.IsNumber(icon.Position))infoPosition=icon.Position;//固定输出位置
4079
4079
  var bShowNumber=true;if(IFrameSplitOperator.IsBool(icon.IsShowNumber))bShowNumber=icon.IsShowNumber;if(isHScreen){this.Canvas.textBaseline="middle";this.Canvas.textAlign="left";this.Canvas.fillText(icon.HScreenText,iconTop,item.XCenter,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:iconTop,Y:item.XCenter},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconTop+=iconSize;}else{this.Canvas.textBaseline="bottom";this.Canvas.textAlign="center";if(infoPosition===1)//底部
4080
- {var yBottom=bottom+yOffset;this.Canvas.fillText(icon.Text,item.XCenter,yBottom,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:yBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);yOffset-=iconSize;}else if(infoPosition===2)//顶部
4081
- {var yBottom=topTitle+iconSize+1;this.Canvas.fillText(icon.Text,item.XCenter,yBottom,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:yBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);}else{if(drawTop){this.Canvas.fillText(icon.Text,item.XCenter,iconTop,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconTop},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconTop-=iconSize;if(iconTop-iconSize<top)drawTop=false;}else//上面显示不下,就显示在下面
4082
- {this.Canvas.fillText(icon.Text,item.XCenter,iconBottom,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconBottom-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconBottom+=iconSize;}}}}else{imageInfo.Data.push(infoItem);}}var numText;if(g_JSChartResource.KLine.NumIcon){if(isHScreen)numText=g_JSChartResource.KLine.NumIcon.HScreenText;else numText=g_JSChartResource.KLine.NumIcon.Text;}var _iteratorNormalCompletion5=true;var _didIteratorError5=false;var _iteratorError5=undefined;try{for(var _iterator5=(0,_getIterator3.default)(mapImage),_step5;!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=true){var item=_step5.value;var value=item[1];if(value.Data.length>=2&&numText&&bShowNum&&value.IsShowNumber)//太小了 就不显示了
4080
+ {var yBottom=bottom+yOffset;var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);this.DrawInfoIcon(item,icon,iconRect);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:yBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);yOffset-=iconSize;}else if(infoPosition===2)//顶部
4081
+ {var yBottom=topTitle+iconSize+1+yTopOffset;var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);this.DrawInfoIcon(item,icon,iconRect);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:yBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);yTopOffset+=iconSize;}else{if(drawTop)//K线上面
4082
+ {var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);this.DrawInfoIcon(item,icon,iconRect);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconTop},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconTop-=iconSize;if(iconTop-iconSize<top)drawTop=false;}else//上面显示不下,就显示在K线下面
4083
+ {var iconRect=new Rect(item.XCenter-iconSize/2,iconBottom-iconSize,iconSize,iconSize);this.DrawInfoIcon(item,icon,iconRect);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconBottom+=iconSize;}}}}else{imageInfo.Data.push(infoItem);}}var numText;if(g_JSChartResource.KLine.NumIcon){if(isHScreen)numText=g_JSChartResource.KLine.NumIcon.HScreenText;else numText=g_JSChartResource.KLine.NumIcon.Text;}var _iteratorNormalCompletion5=true;var _didIteratorError5=false;var _iteratorError5=undefined;try{for(var _iterator5=(0,_getIterator3.default)(mapImage),_step5;!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=true){var item=_step5.value;var value=item[1];if(value.Data.length>=2&&numText&&bShowNum&&value.IsShowNumber)//太小了 就不显示了
4083
4084
  {var iconID=value.Data.length;if(iconID>=numText.length)iconID=0;this.Canvas.fillStyle=g_JSChartResource.KLine.NumIcon.Color;var text=numText[iconID];this.Canvas.fillText(text,value.TextRect.X,value.TextRect.Y,iconSize);}if(!isHScreen)this.InfoTooltipRect.push(value);//横屏没有tooltip
4084
- }}catch(err){_didIteratorError5=true;_iteratorError5=err;}finally{try{if(!_iteratorNormalCompletion5&&_iterator5.return){_iterator5.return();}}finally{if(_didIteratorError5){throw _iteratorError5;}}}this.Canvas.restore();this.Canvas.save();this.ClipClient(isHScreen);};//画交易图标
4085
+ }}catch(err){_didIteratorError5=true;_iteratorError5=err;}finally{try{if(!_iteratorNormalCompletion5&&_iterator5.return){_iterator5.return();}}finally{if(_didIteratorError5){throw _iteratorError5;}}}this.Canvas.restore();this.Canvas.save();this.ClipClient(isHScreen);};this.DrawInfoIcon=function(item,iconItem,rtIcon){if(iconItem.BGColor){this.Canvas.fillStyle=iconItem.BGColor;this.Canvas.fillRect(rtIcon.X,rtIcon.Y,rtIcon.Width,rtIcon.Height);}this.Canvas.fillStyle=iconItem.Color;this.Canvas.fillText(iconItem.Text,item.XCenter,rtIcon.Y+rtIcon.Height,rtIcon.Width);};//画交易图标
4085
4086
  this.DrawTradeIcon=function(){if(!this.TradeData)return;var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;var chartright=this.ChartBorder.GetRight();var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+2.0;chartright=this.ChartBorder.GetBottom();}var sellData=this.TradeData.Sell;var buyData=this.TradeData.Buy;var iconSize=dataWidth+distanceWidth;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
4086
4087
  var iconSizeMax=24*pixelTatio,iconSizeMin=12*pixelTatio;if(iconSize<iconSizeMin)iconSize=iconSizeMin;else if(iconSize>iconSizeMax)iconSize=iconSizeMax;this.Canvas.font=iconSize+'px '+this.TradeIcon.Family;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var data=this.Data.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var buy=false,sell=false;if(sellData&&i<sellData.length)sell=sellData[i]>0;if(buyData&&i<buyData.length)buy=buyData[i]>0;if(!sell&&!buy)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;if(buy){this.Canvas.fillStyle=this.TradeIcon.Buy.Color;if(isHScreen){this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillText(this.TradeIcon.Buy.HScreenText,yLow,x);}else{this.Canvas.textAlign='center';this.Canvas.textBaseline='top';this.Canvas.fillText(this.TradeIcon.Buy.Text,x,yLow);var iconRect=new Rect(x-iconSize/2,yLow,iconSize,iconSize);var iconData={Data:{Type:1,KData:data,Name:this.TradeData.Name,Param:this.TradeData.Param},Rect:iconRect,TextRect:{X:x,Y:yLow}};this.TradeIconTooltipRect.push(iconData);}}if(sell){this.Canvas.fillStyle=this.TradeIcon.Sell.Color;if(isHScreen){this.Canvas.textAlign='left';this.Canvas.textBaseline='middle';this.Canvas.fillText(this.TradeIcon.Sell.HScreenText,yHigh,x);}else{this.Canvas.textAlign='center';this.Canvas.textBaseline='bottom';this.Canvas.fillText(this.TradeIcon.Sell.Text,x,yHigh);var iconRect=new Rect(x-iconSize/2,yHigh-iconSize,iconSize,iconSize);var iconData={Data:{Type:2,KData:data,Name:this.TradeData.Name,Param:this.TradeData.Param},Rect:iconRect,TextRect:{X:x,Y:yHigh}};this.TradeIconTooltipRect.push(iconData);}}}};this.GetTooltipData=function(x,y,tooltip){if(!this.IsShow)return false;for(var i in this.TradeIconTooltipRect){var item=this.TradeIconTooltipRect[i];if(!item.Rect)continue;var rect=item.Rect;var left=rect.X,top=rect.Y;var right=left+rect.Width;var bottom=top+rect.Height;if(x>=left&&x<=right&&y>=top&&y<=bottom){JSConsole.Chart.Log('[ChartKLine::GetTooltipData] trade icon ',item);tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=2;//指标
4087
4088
  return true;}}for(var i in this.InfoTooltipRect){var item=this.InfoTooltipRect[i];if(!item.Rect)continue;var rect=item.Rect;var left=rect.X,top=rect.Y;var right=left+rect.Width;var bottom=top+rect.Height;if(x>=left&&x<=right&&y>=top&&y<=bottom){//JSConsole.Chart.Log('[ChartKLine::GetTooltipData] info ', item);
@@ -8723,11 +8724,12 @@ var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new Sc
8723
8724
  {obj.Update=true;}else{if(this.ChartPaint.length>0){var klinePaint=this.ChartPaint[0];klinePaint.InfoData=new _map2.default();}obj.Update=false;}//信息地雷信息
8724
8725
  if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartInfo))return;for(var i=0;i<this.ChartInfo.length;++i){this.ChartInfo[i].RequestData(this,obj);}};//设置K线信息地雷
8725
8726
  this.SetKLineInfo=function(aryInfo,bUpdate){this.ChartInfo=[];//先清空
8726
- for(var i in aryInfo){var infoItem=JSKLineInfoMap.Get(aryInfo[i]);if(!infoItem)continue;var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);}if(bUpdate==true)this.ReqeustKLineInfoData({FunctionName:"SetKLineInfo"});};//添加信息地雷
8727
- this.AddKLineInfo=function(infoName,bUpdate){var classInfo=JSKLineInfoMap.GetClassInfo(infoName);if(!classInfo){console.warn("[KLineChartContainer::AddKLineInfo] can't find infoname=",infoName);return;}for(var i in this.ChartInfo){var item=this.ChartInfo[i];if(item.ClassName==classInfo.ClassName)//已经存在
8728
- return;}var infoItem=JSKLineInfoMap.Get(infoName);if(!infoItem)return;var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);if(bUpdate==true){item.RequestData(this);//信息地雷信息
8729
- }};//更新信息地雷数据 Option :{ InsertNew:, 如果没有找到对应的地雷,是否插入新的地雷, Update:是否立即请求数据 }
8730
- this.UpdateKLineInfo=function(infoName,option){var classInfo=JSKLineInfoMap.GetClassInfo(infoName);if(!classInfo){console.warn("[KLineChartContainer::UpdateKLineInfo] can't find infoname=",infoName);return;}var bInsertNew=false,bUpdate=false;if(option){if(IFrameSplitOperator.IsBoolean(option.InsertNew))bInsertNew=option.InsertNew;if(IFrameSplitOperator.IsBoolean(option.Update))bUpdate=option.Update;}var finder=null;for(var i=0;i<this.ChartInfo.length;++i){var item=this.ChartInfo[i];if(item.ClassName==classInfo.ClassName){finder=item;break;}}if(!finder){if(bInsertNew===true){var infoItem=JSKLineInfoMap.Get(infoName);if(!infoItem)return;var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);finder=item;}else{return;}}if(bUpdate==true)finder.RequestData(this);//信息地雷信息
8727
+ for(var i in aryInfo){var infoItem=JSKLineInfoMap.Get(aryInfo[i]);if(!infoItem)continue;var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);}if(bUpdate==true)this.ReqeustKLineInfoData({FunctionName:"SetKLineInfo"});};//option={ ClassName:, Name: }
8728
+ this.GetKLineInfo=function(option){if(!option)return null;if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartInfo))return null;var className=null;if(option.Name){var classInfo=JSKLineInfoMap.GetClassInfo(option.Name);if(classInfo)className=classInfo.ClassName;}if(!className)return null;for(var i=0;i<this.ChartInfo.length;++i){var item=this.ChartInfo[i];if(item.ClassName==className)//已经存在
8729
+ return item;}return null;};//添加信息地雷
8730
+ this.AddKLineInfo=function(infoName,bUpdate){var item=this.GetKLineInfo({Name:infoName});if(item)return;var infoItem=JSKLineInfoMap.Get(infoName);if(!infoItem){console.warn('[KLineChartContainer::AddKLineInfo] can\'t find infoName='+infoName);return;}var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);if(bUpdate==true){item.RequestData(this);//信息地雷信息
8731
+ }};//更新信息地雷列表 Option :{ InsertNew:, 如果没有找到对应的地雷,是否插入新的地雷, Update:是否立即请求数据 }
8732
+ this.UpdateKLineInfo=function(infoName,option){var bInsertNew=false,bUpdate=false;if(option){if(IFrameSplitOperator.IsBoolean(option.InsertNew))bInsertNew=option.InsertNew;if(IFrameSplitOperator.IsBoolean(option.Update))bUpdate=option.Update;}var finder=this.GetKLineInfo({Name:infoName});if(!finder){if(bInsertNew===true){var infoItem=JSKLineInfoMap.Get(infoName);if(!infoItem){console.warn('[KLineChartContainer::UpdateKLineInfo] can\'t find infoname='+infoName);return;}var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);finder=item;}else{return;}}if(bUpdate==true)finder.RequestData(this);//信息地雷信息
8731
8733
  };//删除信息地理
8732
8734
  this.DeleteKLineInfo=function(infoName){var classInfo=JSKLineInfoMap.GetClassInfo(infoName);if(!classInfo){console.warn("[KLineChartContainer::DeleteKLineInfo] can't find infoname=",infoName);return;}for(var i=0;i<this.ChartInfo.length;++i){var item=this.ChartInfo[i];if(item.ClassName==classInfo.ClassName){this.ChartInfo.splice(i,1);this.UpdataChartInfo();this.Draw();break;}}};//清空所有的信息地理
8733
8735
  this.ClearKLineInfo=function(){if(!this.ChartInfo||this.ChartInfo.length<=0)return;this.ChartInfo=[];var klinePaint=this.ChartPaint[0];klinePaint.InfoData=null;this.Draw();};//增加叠加股票
@@ -10914,7 +10916,8 @@ if(item.ID==JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM&&frame&&frame.ModifyIndex===fal
10914
10916
  this.CreateArrayButton(aryButton);//重新创建
10915
10917
  this.UpdateStyle();};this.UpdateButton=function(){if(!this.DivToolbar)return;var aryButton=this.GetShowButtons();var bChange=false;if(aryButton.length!=this.AryButton.length){bChange=true;}else{for(var i=0;i<this.AryButton.length;++i){var leftItem=this.AryButton[i];var rightItem=aryButton[i];if(leftItem.ID!=rightItem.ID||leftItem.ClassName!=rightItem.ClassName){bChange=true;break;}}}if(!bChange)return;this.SetToolbar(aryButton);//重新设置按钮
10916
10918
  };this.Destroy=function(){this.HideTooltip();if(this.DivToolbar){if(this.DivHQChart.removeChild)this.DivHQChart.removeChild(this.DivToolbar);this.DivToolbar=null;}this.HQChart=null;this.DivHQChart=null;this.FrameID=-1;};this.Create=function(frame){var divToolbar=document.createElement("div");divToolbar.className='UMyChart_FrameToolbar_Div';divToolbar.id=this.ID;divToolbar.oncontextmenu=function(){return false;};//屏蔽右键系统菜单
10917
- this.DivToolbar=divToolbar;var aryButtons=this.GetShowButtons(frame);this.CreateArrayButton(aryButtons);this.DivHQChart.appendChild(divToolbar);this.UpdateStyle();if(!this.HQChart.JSToolbarTooltip){this.HQChart.JSToolbarTooltip=new JSToolbarTooltip();this.HQChart.JSToolbarTooltip.DivHQChart=this.DivHQChart;this.HQChart.JSToolbarTooltip.Create();}};this.UpdateStyle=function(){if(!this.DivToolbar)return;};this.ReloadResource=function(option){this.UpdateStyle();};this.CreateButton=function(item,divDom){var _this50=this;var btnDiv=document.createElement("div");btnDiv.className="UMyChart_FrameToolbar_Div_Button";btnDiv.onmouseover=function(e){_this50.OnHoverButton(e,item);};btnDiv.onmouseout=function(e){_this50.OnLeaveButton(e,item);};item.Div=btnDiv;var spanDom=document.createElement("span");spanDom.className=item.ClassName;spanDom.onmousedown=function(e){_this50.OnClickButton(e,item);};if(item.SpanText)spanDom.innerText=item.SpanText;item.Span=spanDom;btnDiv.appendChild(spanDom);divDom.appendChild(btnDiv);};this.OnClickButton=function(e,item){if(!this.FrameID<0)return;if(!this.HQChart)return;var frame=this.HQChart.Frame.SubFrame[this.FrameID].Frame;var button={ID:item.ID,Frame:frame,FrameID:this.FrameID};this.HQChart.ClickFrameButton(button,e);};this.OnHoverButton=function(e,item){if(!item.Span)return;this.ShowTooltip(e,item);};this.OnLeaveButton=function(e,item){if(!item.Span)return;this.HideTooltip();};this.Show=function(frameID){this.FrameID=frameID;if(!this.FrameID<0)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.HQChart.Frame.SubFrame))return;if(!this.HQChart.Frame.SubFrame[this.FrameID])return;var pixelTatio=GetDevicePixelRatio();var frame=this.HQChart.Frame.SubFrame[this.FrameID].Frame;var border=frame.GetBorder();var rtClient=this.HQChart.UIElement.getBoundingClientRect();var top=border.Top/pixelTatio;var right=border.RightEx/pixelTatio;var left=right-this.DivToolbar.offsetWidth-2;if(this.Top!=top||this.Left!=left){this.DivToolbar.style.top=top+"px";this.DivToolbar.style.left=left+"px";this.DivToolbar.style.height=frame.ChartBorder.TitleHeight/pixelTatio+"px";this.Top=top;this.Left=left;}if(this.DivToolbar.style.visibility!='visible')this.DivToolbar.style.visibility='visible';};this.Hide=function(){if(this.DivToolbar)this.DivToolbar.style.visibility="hidden";};this.HideTooltip=function(){if(this.HQChart.JSToolbarTooltip)this.HQChart.JSToolbarTooltip.Hide();};this.ShowTooltip=function(e,item){if(!this.HQChart.JSToolbarTooltip)return;if(!item.Div)return;var rtButton=item.Div.getBoundingClientRect();var rtHQChart=this.DivHQChart.getBoundingClientRect();var left=rtButton.left;var top=rtButton.bottom+2;var left=rtButton.left-rtHQChart.left;var top=this.DivToolbar.offsetHeight+this.DivToolbar.offsetTop;this.HQChart.JSToolbarTooltip.Show(top,left,{Text:item.Tooltip.Text});};}JSDivFrameToolbar.GetDfaultButtons=function(frame){var aryButton=[{ID:JSCHART_BUTTON_ID.INDEX_AI_ANALYZE,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-ai",Tooltip:{Text:"AI分析指标"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.INDEX_HELP,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-help",Tooltip:{Text:"帮助"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-index_param",Tooltip:{Text:"修改参数"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.CHANGE_INDEX,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-change_index",Tooltip:{Text:"切换指标"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.OVERLAY_INDEX,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-overlay_index",Tooltip:{Text:"叠加指标"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.ADD_INDEX_WINDOW,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-add",Tooltip:{Text:"增加指标窗口"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.TITLE_WINDOW,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-Title",Tooltip:{Text:"标题模式"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-maxmize-",Tooltip:{Text:"放大缩小"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-close",Tooltip:{Text:"关闭窗口"},Span:null,Div:null,TooltipSpan:null}];return aryButton;};//DOM工厂类
10919
+ this.DivToolbar=divToolbar;var aryButtons=this.GetShowButtons(frame);this.CreateArrayButton(aryButtons);this.DivHQChart.appendChild(divToolbar);this.UpdateStyle();if(!this.HQChart.JSToolbarTooltip){this.HQChart.JSToolbarTooltip=new JSToolbarTooltip();this.HQChart.JSToolbarTooltip.DivHQChart=this.DivHQChart;this.HQChart.JSToolbarTooltip.Create();}};this.IsParentShow=function(){if(!this.DivHQChart)return false;var style=window.getComputedStyle(this.DivHQChart);// 判断:display 不是 none,且 visibility 不是 hidden,且 opacity 不是 0
10920
+ return style.display!=='none'&&style.visibility!=='hidden'&&parseFloat(style.opacity)!==0;};this.UpdateStyle=function(){if(!this.DivToolbar)return;};this.ReloadResource=function(option){this.UpdateStyle();};this.CreateButton=function(item,divDom){var _this50=this;var btnDiv=document.createElement("div");btnDiv.className="UMyChart_FrameToolbar_Div_Button";btnDiv.onmouseover=function(e){_this50.OnHoverButton(e,item);};btnDiv.onmouseout=function(e){_this50.OnLeaveButton(e,item);};item.Div=btnDiv;var spanDom=document.createElement("span");spanDom.className=item.ClassName;spanDom.onmousedown=function(e){_this50.OnClickButton(e,item);};if(item.SpanText)spanDom.innerText=item.SpanText;item.Span=spanDom;btnDiv.appendChild(spanDom);divDom.appendChild(btnDiv);};this.OnClickButton=function(e,item){if(!this.FrameID<0)return;if(!this.HQChart)return;var frame=this.HQChart.Frame.SubFrame[this.FrameID].Frame;var button={ID:item.ID,Frame:frame,FrameID:this.FrameID};this.HQChart.ClickFrameButton(button,e);};this.OnHoverButton=function(e,item){if(!item.Span)return;this.ShowTooltip(e,item);};this.OnLeaveButton=function(e,item){if(!item.Span)return;this.HideTooltip();};this.Show=function(frameID){this.FrameID=frameID;if(!this.FrameID<0)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.HQChart.Frame.SubFrame))return;if(!this.HQChart.Frame.SubFrame[this.FrameID])return;var pixelTatio=GetDevicePixelRatio();var frame=this.HQChart.Frame.SubFrame[this.FrameID].Frame;var border=frame.GetBorder();var rtClient=this.HQChart.UIElement.getBoundingClientRect();var top=border.Top/pixelTatio;var right=border.RightEx/pixelTatio;var left=right-this.DivToolbar.offsetWidth-2;if(this.Top!=top||this.Left!=left){this.DivToolbar.style.top=top+"px";this.DivToolbar.style.left=left+"px";this.DivToolbar.style.height=frame.ChartBorder.TitleHeight/pixelTatio+"px";this.Top=top;this.Left=left;}if(this.DivToolbar.style.visibility!='visible')this.DivToolbar.style.visibility='visible';};this.Hide=function(){if(this.DivToolbar)this.DivToolbar.style.visibility="hidden";};this.HideTooltip=function(){if(this.HQChart.JSToolbarTooltip)this.HQChart.JSToolbarTooltip.Hide();};this.ShowTooltip=function(e,item){if(!this.HQChart.JSToolbarTooltip)return;if(!item.Div)return;var rtButton=item.Div.getBoundingClientRect();var rtHQChart=this.DivHQChart.getBoundingClientRect();var left=rtButton.left;var top=rtButton.bottom+2;var left=rtButton.left-rtHQChart.left;var top=this.DivToolbar.offsetHeight+this.DivToolbar.offsetTop;this.HQChart.JSToolbarTooltip.Show(top,left,{Text:item.Tooltip.Text});};}JSDivFrameToolbar.GetDfaultButtons=function(frame){var aryButton=[{ID:JSCHART_BUTTON_ID.INDEX_AI_ANALYZE,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-ai",Tooltip:{Text:"AI分析指标"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.INDEX_HELP,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-help",Tooltip:{Text:"帮助"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-index_param",Tooltip:{Text:"修改参数"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.CHANGE_INDEX,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-change_index",Tooltip:{Text:"切换指标"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.OVERLAY_INDEX,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-overlay_index",Tooltip:{Text:"叠加指标"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.ADD_INDEX_WINDOW,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-add",Tooltip:{Text:"增加指标窗口"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.TITLE_WINDOW,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-Title",Tooltip:{Text:"标题模式"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-maxmize-",Tooltip:{Text:"放大缩小"},Span:null,Div:null,TooltipSpan:null},{ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW,ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-close",Tooltip:{Text:"关闭窗口"},Span:null,Div:null,TooltipSpan:null}];return aryButton;};//DOM工厂类
10918
10921
  function JSDOMFactory(){//[key:name, { Create:function(divElement) { return new class(divElement); }} ]
10919
10922
  this.DataMap=new _map2.default([["JSDivFrameToolbar",{Create:function Create(option){return new JSDivFrameToolbar(option);}}]]);this.Create=function(name,option){if(!this.DataMap.has(name)){JSConsole.Chart.Warn('[JSDOMFactory::Create] can\'t find class='+name+'.');return null;}var item=this.DataMap.get(name);return item.Create(option);};this.Add=function(name,option){this.DataMap.set(name,{Create:option.Create});};}var g_JSDOMFactory=new JSDOMFactory();function JSToolbarTooltip(){this.DivTooltip=null;this.DivHQChart=null;this.Text=null;this.Left=-1;this.Top=-1;this.Create=function(){var divDom=document.createElement("div");divDom.className='UMyChart_Toolbar_Tooltip_Div';this.DivHQChart.appendChild(divDom);this.DivTooltip=divDom;this.UpdateStyle();};this.ReloadResource=function(option){this.UpdateStyle();};this.UpdateStyle=function(){if(!this.DivTooltip)return;};this.Show=function(top,left,tooltipData){if(!this.DivTooltip)return;if(this.Text!=tooltipData.Text)this.DivTooltip.innerHTML=tooltipData.Text;var right=left+this.DivTooltip.offsetWidth;if(right+5>=window.innerWidth)left=left-this.DivTooltip.offsetWidth;if(this.Top!=top||this.Left!=left){this.DivTooltip.style.top=top+"px";this.DivTooltip.style.left=left+"px";this.Top=top;this.Left=left;}if(this.DivTooltip.style.visibility!='visible')this.DivTooltip.style.visibility='visible';};this.Hide=function(){if(!this.DivTooltip)return;if(this.DivTooltip.style["visibility"]!='hidden')this.DivTooltip.style["visibility"]="hidden";};}/*
10920
10923
  Copyright (c) 2018 jones
@@ -15659,13 +15662,13 @@ this.OnCreatedCallback=null;this.KLine={Option:JSTooltipKLineChart.GetKLineOptio
15659
15662
  this.KLine.Option=(0,_assign2.default)(this.KLine.Option,item);if(IFrameSplitOperator.IsNonEmptyArray(option.Option.EventCallback))this.KLine.Option.EventCallback=option.Option.EventCallback;}if(option.OnCreatedCallback)this.OnCreatedCallback=option.OnCreatedCallback;}};this.Create=function(){var _this104=this;var divDom=document.createElement('div');divDom.className='UMyChart_Tooltip_KLine_Div';divDom.id=this.ID;var divChart=document.createElement('div');divChart.className='UMyChart_Tooltip_KLine_Chart_Div';divDom.appendChild(divChart);this.DivDialog=divDom;var chart=JSChart.Init(divChart);this.KLine.JSChart=chart;//语言跟主图保持一致
15660
15663
  if(this.HQChart)this.KLine.Option.Language=g_JSChartLocalization.GetLanguageName(this.HQChart.LanguageID);this.KLine.Option.OnCreatedCallback=function(chart){_this104.OnCreateHQChart(chart);};this.KLine.Option.NetworkFilter=function(data,callback){_this104.NetworkFilter(data,callback);};var reloadResourceEvent={event:JSCHART_EVENT_ID.ON_RELOAD_RESOURCE,callback:function callback(event,data,obj){_this104.LoadChartResource(obj);}};var splitXEvent={event:JSCHART_EVENT_ID.ON_SPLIT_XCOORDINATE,callback:function callback(event,data,obj){_this104.OnSplitXCoordinate(event,data,obj);}};var splitYEvent={event:JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE,callback:function callback(event,data,obj){_this104.OnSplitYCoordinate(event,data,obj);}};if(Array.isArray(this.KLine.Option.EventCallback)){this.KLine.Option.EventCallback.unshift(reloadResourceEvent,splitYEvent,splitYEvent);}else{this.KLine.Option.EventCallback=[reloadResourceEvent,splitXEvent,splitYEvent];}chart.SetOption(this.KLine.Option);//设置K线配置
15661
15664
  document.body.appendChild(divDom);this.UpdateStyle();if(!this.KLine.Option.EnableResize){if(this.KLine.JSChart)this.KLine.JSChart.OnSize({Type:1});}};this.UpdateStyle=function(){if(!this.DivDialog)return;if(this.BGColor)this.DivDialog.style['background-color']=this.BGColor;if(this.BorderColor)this.DivDialog.style['border-color']=this.BorderColor;};this.NetworkFilter=function(data,callback){if(!this.HQChart||!this.HQChart.NetworkFilter)return;this.HQChart.NetworkFilter(data,callback);};this.OnCreateHQChart=function(chart){this.LoadChartResource(chart);if(this.OnCreatedCallback)this.OnCreatedCallback(chart);};this.Destroy=function(){if(this.DivDialog){if(document&&document.body&&document.body.removeChild)document.body.removeChild(this.DivDialog);}this.DivDialog=null;this.TitleBox=null;if(!this.KLine.JSChart)this.KLine.JSChart.ChartDestory();this.KLine.JSChart=null;};this.IsShow=function(){if(!this.DivDialog)return false;return this.DivDialog.style.visibility==='visible';};this.Show=function(data,x,y){if(!this.DivDialog)this.Create();if(!data||!data.Symbol)return;var symbol=data.Symbol;if(this.KLine.JSChart){if(this.KLine.Symbol!=symbol){this.KLine.Symbol=symbol;this.KLine.JSChart.ChangeSymbol(symbol);}}if(IFrameSplitOperator.IsNumberV2(x,y)){}else if(data.Rect){var rtCell=data.Rect;var pixelRatio=GetDevicePixelRatio();var rtItem={Left:rtCell.Left/pixelRatio,Right:rtCell.Right/pixelRatio,Bottom:rtCell.Bottom/pixelRatio,Top:rtCell.Top/pixelRatio};rtItem.Width=rtItem.Right-rtItem.Left;rtItem.Height=rtItem.Bottom-rtItem.Top;//超出窗口调整位置
15662
- var height=this.DivDialog.offsetHeight;var width=this.DivDialog.offsetWidth;var x=rtItem.Right+data.Offset.Left;var y=rtItem.Bottom+data.Offset.Top;var xRight=window.innerWidth-5;var ybottom=window.innerHeight-5;if(x+width>xRight)x=rtItem.Left+data.Offset.Left-width;if(y+height>ybottom)y=rtItem.Top+data.Offset.Top-height;this.DivDialog.style.visibility='visible';this.DivDialog.style.top=y+"px";this.DivDialog.style.left=x+"px";}};this.Hide=function(){if(!this.DivDialog)return;if(this.DivDialog.style.visibility!='hidden')this.DivDialog.style.visibility='hidden';};this.ReloadResource=function(option){this.BGColor=g_JSChartResource.PopMinuteChart.BGColor;this.BorderColor=g_JSChartResource.PopMinuteChart.BorderColor;this.TitleFont=g_JSChartResource.PopMinuteChart.Title.Font;//指标标题字体
15665
+ var height=this.DivDialog.offsetHeight;var width=this.DivDialog.offsetWidth;var x=rtItem.Right+data.Offset.Left;var y=rtItem.Bottom+data.Offset.Top;var xRight=window.innerWidth-5;var ybottom=window.innerHeight-5;if(x+width>xRight)x=rtItem.Left+data.Offset.Left-width;if(y+height>ybottom)y=rtItem.Top+data.Offset.Top-height;this.DivDialog.style.visibility='visible';this.DivDialog.style.top=y+"px";this.DivDialog.style.left=x+"px";}};this.Hide=function(){if(!this.DivDialog)return;if(this.DivDialog.style.visibility!='hidden')this.DivDialog.style.visibility='hidden';if(this.KLine.JSChart)this.KLine.JSChart.HideDivFrameToolbar();};this.ReloadResource=function(option){this.BGColor=g_JSChartResource.PopMinuteChart.BGColor;this.BorderColor=g_JSChartResource.PopMinuteChart.BorderColor;this.TitleFont=g_JSChartResource.PopMinuteChart.Title.Font;//指标标题字体
15663
15666
  this.CorssCursorFont=g_JSChartResource.PopMinuteChart.CorssCursor.Font;//十字光标
15664
15667
  this.FrameSplitTextFont=g_JSChartResource.PopMinuteChart.Frame.Font;//刻度文字
15665
15668
  if(!this.DivDialog)return;this.UpdateStyle();if(this.KLine.JSChart)this.KLine.JSChart.ReloadResource(option);};this.LoadChartResource=function(chart){if(IFrameSplitOperator.IsNonEmptyArray(chart.TitlePaint)){for(var i=0;i<chart.TitlePaint.length;++i){var item=chart.TitlePaint[i];if(!item)continue;item.Font=this.TitleFont;}}if(IFrameSplitOperator.IsNonEmptyArray(chart.WindowIndex)){for(var i=0;i<chart.WindowIndex.length;++i)//去掉指标里面的字体
15666
15669
  {var item=chart.WindowIndex[i];if(!item)continue;item.TitleFont=null;}}if(chart.ChartCorssCursor){chart.ChartCorssCursor.Font=this.CorssCursorFont;}};this.OnSplitXCoordinate=function(event,data,obj){var frame=data.Frame;if(IFrameSplitOperator.IsNonEmptyArray(frame.VerticalInfo)){for(var i=0;i<frame.VerticalInfo.length;++i){var item=frame.VerticalInfo[i];if(!item)continue;if(item.Font)item.Font=this.FrameSplitTextFont;}}};this.OnSplitYCoordinate=function(event,data,obj){var frame=data.Frame;if(IFrameSplitOperator.IsNonEmptyArray(frame.HorizontalInfo)){for(var i=0;i<frame.HorizontalInfo.length;++i){var item=frame.HorizontalInfo[i];if(!item)continue;if(item.Font)item.Font=this.FrameSplitTextFont;}}};}JSTooltipKLineChart.GetKLineOption=function(){var option={Type:'历史K线图',//创建图形类型
15667
15670
  Windows://窗口指标
15668
- [{Index:"MA",Change:false,Modify:false},{Index:"MACD",Close:false,Change:false,Modify:false,MaxMin:false,TitleWindow:false}],//Language:'EN',
15671
+ [{Index:"MA",Change:false,Modify:false,TitleWindow:false},{Index:"MACD",Close:false,Change:false,Modify:false,MaxMin:false,TitleWindow:false}],//Language:'EN',
15669
15672
  Symbol:null,IsAutoUpdate:false,//是自动更新数据
15670
15673
  AutoUpdateFrequency:3000,//数据更新频率
15671
15674
  SplashTitle:'加载数据中......',IsShowRightMenu:false,//右键菜单
@@ -16396,7 +16399,7 @@ if(this.MouseOnItem){if(this.MouseOnItem.Data==item)color=this.TextConfig.MouseO
16396
16399
  */this.Canvas.restore();this.ResizeDataCount(endIndex);};this.ResizeDataCount=function(startIndex){if(!IFrameSplitOperator.IsNumber(startIndex))return;if(startIndex<=0)return;if(this.LimitCount<=0)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.AryText))return;if(this.Data.AryText.length<=this.LimitCount)return;var delCount=this.Data.AryText.length-this.LimitCount;for(var i=0;i<delCount&&i<startIndex;++i){this.Data.AryText.shift();}};this.GetTooltipData=function(x,y,tooltip){var rtClient=this.GetClientRect();if(x>=rtClient.Left&&x<=rtClient.Right){for(var i=0;i<this.AryRect.length;++i){var item=this.AryRect[i];if(Path2DHelper.PtInRect(x,y,item.Rect)){tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=1;return true;}}}return false;};this.ScrollStep=function(defaultStep){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.AryText))return false;if(!this.FirstItem)return false;var moveStep=this.MoveStep;if(IFrameSplitOperator.IsNumber(defaultStep))moveStep=defaultStep;var rtClient=this.GetClientRect();var left=rtClient.Left;var right=rtClient.Right;var width=this.FirstItem.Move.Width;var xOffset=this.FirstItem.Move.XOffset+moveStep;if(right-xOffset+width<left){var startIndex=this.GetDataIndex(this.FirstItem);nextIndex=startIndex-1;if(nextIndex<0){var index=this.Data.AryText.length-1;this.FirstItem=this.Data.AryText[index];this.FirstItem.Move={XOffset:0};}else{this.FirstItem=this.Data.AryText[nextIndex];this.FirstItem.Move={XOffset:xOffset-width};}}else{this.FirstItem.Move.XOffset=xOffset;}return true;};}/********************************************************************************
16397
16400
  * 版本信息输出
16398
16401
  *
16399
- */var HQCHART_VERSION="1.1.15815";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();//把给外界调用的方法暴露出来
16402
+ */var HQCHART_VERSION="1.1.15822";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();//把给外界调用的方法暴露出来
16400
16403
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
16401
16404
  // BaseIndex:BaseIndex,
16402
16405
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.15816",
3
+ "version": "1.1.15823",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -6521,6 +6521,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
6521
6521
  return this.JSChartContainer.GetGraphicsDescription(option);
6522
6522
  }
6523
6523
  }
6524
+
6525
+ this.HideDivFrameToolbar=function()
6526
+ {
6527
+ if(this.JSChartContainer && typeof(this.JSChartContainer.HideDivFrameToolbar)=='function')
6528
+ {
6529
+ JSConsole.Chart.Log('[JSChart:HideDivFrameToolbar] ');
6530
+ return this.JSChartContainer.HideDivFrameToolbar();
6531
+ }
6532
+ }
6524
6533
  }
6525
6534
 
6526
6535
  JSChart.LastVersion=null; //最新的版本号
@@ -17525,6 +17534,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
17525
17534
 
17526
17535
  return false;
17527
17536
  }
17537
+
17538
+ this.HideDivFrameToolbar=function()
17539
+ {
17540
+ this.Frame.HideDivFrameToolbar();
17541
+ }
17528
17542
  }
17529
17543
 
17530
17544
  function GetDevicePixelRatio()
@@ -21528,8 +21542,15 @@ function MinuteFrame()
21528
21542
  if (g_JSChartResource.IsDOMFrameToolbar===true) bDraw=false;
21529
21543
  if (!this.DivFrameToolbar) return;
21530
21544
 
21531
- if (!bDraw) this.HideToolbar();
21532
- else this.DivFrameToolbar.Show(this.Identify);
21545
+ if (!bDraw)
21546
+ {
21547
+ this.HideToolbar();
21548
+ }
21549
+ else
21550
+ {
21551
+ if (this.DivFrameToolbar.IsParentShow()) this.DivFrameToolbar.Show(this.Identify);
21552
+ else this.HideToolbar();
21553
+ }
21533
21554
  }
21534
21555
 
21535
21556
  //手绘,不用DOM,使用DOM太麻烦了
@@ -23786,8 +23807,15 @@ function KLineFrame()
23786
23807
  if (g_JSChartResource.IsDOMFrameToolbar===true) bDraw=false;
23787
23808
  if (!this.DivFrameToolbar) return;
23788
23809
 
23789
- if (!bDraw) this.HideToolbar();
23790
- else this.DivFrameToolbar.Show(this.Identify);
23810
+ if (!bDraw)
23811
+ {
23812
+ this.HideToolbar();
23813
+ }
23814
+ else
23815
+ {
23816
+ if (this.DivFrameToolbar.IsParentShow()) this.DivFrameToolbar.Show(this.Identify);
23817
+ else this.HideToolbar();
23818
+ }
23791
23819
  }
23792
23820
 
23793
23821
  //手绘,不用DOM,使用DOM太麻烦了
@@ -28272,6 +28300,20 @@ function HQTradeFrame()
28272
28300
  if (IFrameSplitOperator.IsNumber(obj.Right)) item.Frame.ChartBorder.MultiDayMinute.Right=obj.Right;
28273
28301
  }
28274
28302
  }
28303
+
28304
+
28305
+ this.HideDivFrameToolbar=function()
28306
+ {
28307
+ for(var i=0;i<this.SubFrame.length;++i)
28308
+ {
28309
+ var item=this.SubFrame[i];
28310
+ if (!item.Frame) continue;
28311
+ if (item.Frame.ToolbarButtonStyle==1) continue;
28312
+ if (!item.Frame.DivFrameToolbar) continue;
28313
+
28314
+ item.Frame.DivFrameToolbar.Hide();
28315
+ }
28316
+ }
28275
28317
  }
28276
28318
 
28277
28319
  //行情框架横屏
@@ -36035,7 +36077,7 @@ function ChartKLine()
36035
36077
  var iconTop=item.YMax+1*pixelTatio;
36036
36078
  var iconBottom=item.YMin+1*pixelTatio+iconSize;
36037
36079
  var drawTop=true;
36038
- var yOffset=0;
36080
+ var yOffset=0, yTopOffset=0;
36039
36081
  for(var i in infoData.Data)
36040
36082
  {
36041
36083
  var infoItem=infoData.Data[i];
@@ -36071,35 +36113,41 @@ function ChartKLine()
36071
36113
  if (infoPosition===1) //底部
36072
36114
  {
36073
36115
  var yBottom=bottom+yOffset;
36074
- this.Canvas.fillText(icon.Text,item.XCenter,yBottom,iconSize);
36075
36116
  var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);
36117
+ this.DrawInfoIcon(item, icon, iconRect);
36118
+
36076
36119
  var infoCache={ Data:new Array(infoItem), Rect:iconRect, Type:infoItem.InfoType, TextRect:{X:item.XCenter, Y:yBottom}, IsShowNumber:bShowNumber };
36077
36120
  mapImage.set(infoItem.InfoType,infoCache);
36078
36121
  yOffset-=iconSize;
36079
36122
  }
36080
36123
  else if (infoPosition===2) //顶部
36081
36124
  {
36082
- var yBottom=topTitle+iconSize+1;
36083
- this.Canvas.fillText(icon.Text,item.XCenter,yBottom,iconSize);
36125
+ var yBottom=topTitle+iconSize+1+yTopOffset;
36084
36126
  var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);
36127
+ this.DrawInfoIcon(item, icon, iconRect);
36128
+
36085
36129
  var infoCache={ Data:new Array(infoItem), Rect:iconRect, Type:infoItem.InfoType, TextRect:{X:item.XCenter, Y:yBottom}, IsShowNumber:bShowNumber };
36086
36130
  mapImage.set(infoItem.InfoType,infoCache);
36131
+
36132
+ yTopOffset+=iconSize;
36087
36133
  }
36088
36134
  else
36089
36135
  {
36090
- if (drawTop)
36136
+ if (drawTop) //K线上面
36091
36137
  {
36092
- this.Canvas.fillText(icon.Text,item.XCenter,iconTop,iconSize);
36093
36138
  var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);
36139
+ this.DrawInfoIcon(item, icon, iconRect);
36140
+
36094
36141
  var infoCache={ Data:new Array(infoItem), Rect:iconRect, Type:infoItem.InfoType, TextRect:{X:item.XCenter, Y:iconTop}, IsShowNumber:bShowNumber };
36095
36142
  mapImage.set(infoItem.InfoType,infoCache);
36096
36143
  iconTop-=iconSize;
36097
36144
  if (iconTop-iconSize<top ) drawTop=false;
36098
36145
  }
36099
- else //上面显示不下,就显示在下面
36146
+ else //上面显示不下,就显示在K线下面
36100
36147
  {
36101
- this.Canvas.fillText(icon.Text,item.XCenter,iconBottom,iconSize);
36102
36148
  var iconRect=new Rect(item.XCenter-iconSize/2,iconBottom-iconSize,iconSize,iconSize);
36149
+ this.DrawInfoIcon(item, icon, iconRect);
36150
+
36103
36151
  var infoCache={ Data:new Array(infoItem), Rect:iconRect, Type:infoItem.InfoType, TextRect:{X:item.XCenter, Y:iconBottom} , IsShowNumber:bShowNumber};
36104
36152
  mapImage.set(infoItem.InfoType,infoCache);
36105
36153
  iconBottom+=iconSize;
@@ -36139,6 +36187,18 @@ function ChartKLine()
36139
36187
  this.ClipClient(isHScreen);
36140
36188
  }
36141
36189
 
36190
+ this.DrawInfoIcon=function(item, iconItem, rtIcon)
36191
+ {
36192
+ if (iconItem.BGColor)
36193
+ {
36194
+ this.Canvas.fillStyle=iconItem.BGColor;
36195
+ this.Canvas.fillRect(rtIcon.X, rtIcon.Y, rtIcon.Width, rtIcon.Height);
36196
+ }
36197
+
36198
+ this.Canvas.fillStyle=iconItem.Color;
36199
+ this.Canvas.fillText(iconItem.Text,item.XCenter,rtIcon.Y+rtIcon.Height, rtIcon.Width);
36200
+ }
36201
+
36142
36202
  //画交易图标
36143
36203
  this.DrawTradeIcon=function()
36144
36204
  {
@@ -94991,25 +95051,44 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
94991
95051
  if (bUpdate==true) this.ReqeustKLineInfoData({ FunctionName:"SetKLineInfo" });
94992
95052
  }
94993
95053
 
94994
- //添加信息地雷
94995
- this.AddKLineInfo=function(infoName,bUpdate)
95054
+
95055
+ //option={ ClassName:, Name: }
95056
+ this.GetKLineInfo=function(option)
94996
95057
  {
94997
- var classInfo=JSKLineInfoMap.GetClassInfo(infoName);
94998
- if (!classInfo)
95058
+ if (!option) return null;
95059
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.ChartInfo)) return null;
95060
+
95061
+ var className=null;
95062
+ if (option.Name)
94999
95063
  {
95000
- console.warn("[KLineChartContainer::AddKLineInfo] can't find infoname=", infoName);
95001
- return;
95064
+ var classInfo=JSKLineInfoMap.GetClassInfo(option.Name);
95065
+ if (classInfo) className=classInfo.ClassName;
95002
95066
  }
95003
95067
 
95004
- for(var i in this.ChartInfo)
95068
+ if (!className) return null;
95069
+
95070
+ for(var i=0; i<this.ChartInfo.length; ++i)
95005
95071
  {
95006
95072
  var item=this.ChartInfo[i];
95007
- if (item.ClassName==classInfo.ClassName) //已经存在
95008
- return;
95073
+ if (item.ClassName==className) //已经存在
95074
+ return item;
95009
95075
  }
95010
95076
 
95077
+ return null;
95078
+ }
95079
+
95080
+ //添加信息地雷
95081
+ this.AddKLineInfo=function(infoName,bUpdate)
95082
+ {
95083
+ var item=this.GetKLineInfo({ Name:infoName });
95084
+ if (item) return;
95085
+
95011
95086
  var infoItem=JSKLineInfoMap.Get(infoName);
95012
- if (!infoItem) return;
95087
+ if (!infoItem)
95088
+ {
95089
+ console.warn(`[KLineChartContainer::AddKLineInfo] can't find infoName=${infoName}`);
95090
+ return;
95091
+ }
95013
95092
 
95014
95093
  var item=infoItem.Create();
95015
95094
  item.MaxRequestDataCount=this.MaxRequestDataCount;
@@ -95021,39 +95100,28 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
95021
95100
  }
95022
95101
  }
95023
95102
 
95024
- //更新信息地雷数据 Option :{ InsertNew:, 如果没有找到对应的地雷,是否插入新的地雷, Update:是否立即请求数据 }
95103
+ //更新信息地雷列表 Option :{ InsertNew:, 如果没有找到对应的地雷,是否插入新的地雷, Update:是否立即请求数据 }
95025
95104
  this.UpdateKLineInfo=function(infoName, option)
95026
95105
  {
95027
- var classInfo=JSKLineInfoMap.GetClassInfo(infoName);
95028
- if (!classInfo)
95029
- {
95030
- console.warn("[KLineChartContainer::UpdateKLineInfo] can't find infoname=", infoName);
95031
- return;
95032
- }
95033
-
95034
95106
  var bInsertNew=false, bUpdate=false;
95035
95107
  if (option)
95036
95108
  {
95037
95109
  if (IFrameSplitOperator.IsBoolean(option.InsertNew)) bInsertNew=option.InsertNew;
95038
95110
  if (IFrameSplitOperator.IsBoolean(option.Update)) bUpdate=option.Update;
95039
95111
  }
95040
- var finder=null;
95041
- for(var i=0;i<this.ChartInfo.length; ++i)
95042
- {
95043
- var item=this.ChartInfo[i];
95044
- if (item.ClassName==classInfo.ClassName)
95045
- {
95046
- finder=item;
95047
- break;
95048
- }
95049
- }
95050
95112
 
95113
+ var finder=this.GetKLineInfo({ Name:infoName });
95114
+
95051
95115
  if (!finder)
95052
95116
  {
95053
95117
  if (bInsertNew===true)
95054
95118
  {
95055
95119
  var infoItem=JSKLineInfoMap.Get(infoName);
95056
- if (!infoItem) return;
95120
+ if (!infoItem)
95121
+ {
95122
+ console.warn(`[KLineChartContainer::UpdateKLineInfo] can't find infoname=${infoName}`);
95123
+ return;
95124
+ }
95057
95125
 
95058
95126
  var item=infoItem.Create();
95059
95127
  item.MaxRequestDataCount=this.MaxRequestDataCount;
@@ -114731,7 +114799,6 @@ Path2DHelper.PtInRect=function(x, y, rect)
114731
114799
  //
114732
114800
  ///////////////////////////////////////////////////////////////////////////////////
114733
114801
 
114734
-
114735
114802
  function JSDivFrameToolbar()
114736
114803
  {
114737
114804
  this.DivToolbar=null;
@@ -114884,6 +114951,15 @@ function JSDivFrameToolbar()
114884
114951
  }
114885
114952
  }
114886
114953
 
114954
+ this.IsParentShow=function()
114955
+ {
114956
+ if (!this.DivHQChart) return false;
114957
+ const style=window.getComputedStyle(this.DivHQChart);
114958
+
114959
+ // 判断:display 不是 none,且 visibility 不是 hidden,且 opacity 不是 0
114960
+ return style.display !== 'none' && style.visibility !== 'hidden' && parseFloat(style.opacity) !== 0;
114961
+ }
114962
+
114887
114963
  this.UpdateStyle=function()
114888
114964
  {
114889
114965
  if (!this.DivToolbar) return;
@@ -167202,6 +167278,8 @@ function JSTooltipKLineChart()
167202
167278
  if (!this.DivDialog) return;
167203
167279
  if (this.DivDialog.style.visibility!='hidden')
167204
167280
  this.DivDialog.style.visibility='hidden';
167281
+
167282
+ if (this.KLine.JSChart) this.KLine.JSChart.HideDivFrameToolbar()
167205
167283
  }
167206
167284
 
167207
167285
 
@@ -167287,8 +167365,8 @@ JSTooltipKLineChart.GetKLineOption=function()
167287
167365
  Type:'历史K线图', //创建图形类型
167288
167366
  Windows: //窗口指标
167289
167367
  [
167290
- { Index:"MA",Change:false, Modify:false },
167291
- { Index:"MACD", Close:false, Change:false, Modify:false,MaxMin:false,TitleWindow:false },
167368
+ { Index:"MA", Change:false, Modify:false, TitleWindow:false },
167369
+ { Index:"MACD", Close:false, Change:false, Modify:false, MaxMin:false, TitleWindow:false },
167292
167370
  ],
167293
167371
 
167294
167372
  //Language:'EN',
@@ -177301,7 +177379,7 @@ function ChartScrollText()
177301
177379
 
177302
177380
 
177303
177381
 
177304
- var HQCHART_VERSION="1.1.15815";
177382
+ var HQCHART_VERSION="1.1.15822";
177305
177383
 
177306
177384
  function PrintHQChartVersion()
177307
177385
  {