hqchart 1.1.12935 → 1.1.12939

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.
@@ -68,7 +68,7 @@ this.Get=function(id){if(!this.DataMap.has(id))return null;return this.DataMap.g
68
68
  ]);}JSIndexScript.AddIndex=function(aryIndex)//添加自定义指标
69
69
  {for(var i in aryIndex){g_CustomIndex.Add(aryIndex[i]);}};//修改指标属性
70
70
  JSIndexScript.ModifyAttribute=function(indexInfo,attribute){if(!attribute)return;if(attribute.Args)indexInfo.Args=attribute.Args;//外部可以设置参数
71
- if(IFrameSplitOperator.IsNumber(attribute.FloatPrecision))indexInfo.FloatPrecision=attribute.FloatPrecision;if(IFrameSplitOperator.IsNumber(attribute.StringFormat))indexInfo.StringFormat=attribute.StringFormat;if(IFrameSplitOperator.IsBool(attribute.IsSync))indexInfo.IsSync=attribute.IsSync;if(IFrameSplitOperator.IsBool(attribute.IsShortTitle))indexInfo.IsShortTitle=attribute.IsShortTitle;if(attribute.TitleFont)indexInfo.TitleFont=attribute.TitleFont;if(attribute.Lock)indexInfo.Lock=attribute.Lock;if(attribute.YAxis){var item=attribute.YAxis;if(!indexInfo.YAxis)indexInfo.YAxis={};if(IFrameSplitOperator.IsNumber(item.FloatPrecision))indexInfo.YAxis.FloatPrecision=item.FloatPrecision;if(IFrameSplitOperator.IsNumber(item.StringFormat))indexInfo.YAxis.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsBool(item.EnableRemoveZero))indexInfo.YAxis.EnableRemoveZero=item.EnableRemoveZero;}};JSIndexScript.prototype.Get=function(id){var data=g_CustomIndex.Get(id);if(data)return data;var func=this.DataMap.get(id);if(func){var data=func();data.ID=id;return data;}return null;};JSIndexScript.prototype.Search=function(name){var result=[];var reg=new RegExp(name,'i');this.DataMap.forEach(function(value,key){if(key.indexOf('交易系统-')!=0&&key.indexOf('五彩K线-')!=0&&key.search(reg)>=0)result.push(key);});return result;};JSIndexScript.prototype.MA=function(){var data={Name:'MA',Description:'均线',IsMainIndex:true,StringFormat:2,Args:[{Name:'M1',Value:5},{Name:'M2',Value:10},{Name:'M3',Value:20}],OutName:[{Name:'MA1',DynamicName:"MA{M1}"},{Name:'MA2',DynamicName:"MA{M2}"},{Name:'MA3',DynamicName:"MA{M3}"}],Script://脚本
71
+ if(IFrameSplitOperator.IsNumber(attribute.FloatPrecision))indexInfo.FloatPrecision=attribute.FloatPrecision;if(IFrameSplitOperator.IsNumber(attribute.StringFormat))indexInfo.StringFormat=attribute.StringFormat;if(IFrameSplitOperator.IsBool(attribute.IsSync))indexInfo.IsSync=attribute.IsSync;if(IFrameSplitOperator.IsBool(attribute.IsShortTitle))indexInfo.IsShortTitle=attribute.IsShortTitle;if(attribute.TitleFont)indexInfo.TitleFont=attribute.TitleFont;if(attribute.Lock)indexInfo.Lock=attribute.Lock;if(IFrameSplitOperator.IsNumber(attribute.YSplitType))indexInfo.YSplitType=attribute.YSplitType;if(attribute.YAxis){var item=attribute.YAxis;if(!indexInfo.YAxis)indexInfo.YAxis={};if(IFrameSplitOperator.IsNumber(item.FloatPrecision))indexInfo.YAxis.FloatPrecision=item.FloatPrecision;if(IFrameSplitOperator.IsNumber(item.StringFormat))indexInfo.YAxis.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsBool(item.EnableRemoveZero))indexInfo.YAxis.EnableRemoveZero=item.EnableRemoveZero;}};JSIndexScript.prototype.Get=function(id){var data=g_CustomIndex.Get(id);if(data)return data;var func=this.DataMap.get(id);if(func){var data=func();data.ID=id;return data;}return null;};JSIndexScript.prototype.Search=function(name){var result=[];var reg=new RegExp(name,'i');this.DataMap.forEach(function(value,key){if(key.indexOf('交易系统-')!=0&&key.indexOf('五彩K线-')!=0&&key.search(reg)>=0)result.push(key);});return result;};JSIndexScript.prototype.MA=function(){var data={Name:'MA',Description:'均线',IsMainIndex:true,StringFormat:2,Args:[{Name:'M1',Value:5},{Name:'M2',Value:10},{Name:'M3',Value:20}],OutName:[{Name:'MA1',DynamicName:"MA{M1}"},{Name:'MA2',DynamicName:"MA{M2}"},{Name:'MA3',DynamicName:"MA{M3}"}],Script://脚本
72
72
  'MA1:MA(CLOSE,M1);\n\
73
73
  MA2:MA(CLOSE,M2);\n\
74
74
  MA3:MA(CLOSE,M3);'};return data;};JSIndexScript.prototype.MA4=function(){var data={Name:'MA',Description:'均线',IsMainIndex:true,StringFormat:2,Args:[{Name:'M1',Value:5},{Name:'M2',Value:10},{Name:'M3',Value:20},{Name:'M4',Value:60}],OutName:[{Name:'MA1',DynamicName:"MA{M1}"},{Name:'MA2',DynamicName:"MA{M2}"},{Name:'MA3',DynamicName:"MA{M3}"},{Name:'MA4',DynamicName:"MA{M4}"}],Script://脚本
@@ -1387,7 +1387,7 @@ var scriptData=new JSIndexScript();if(option.ColorIndex)//五彩K线
1387
1387
  }}for(var i=0;i<option.Windows.length;++i){var item=option.Windows[i];if(item.Script){chart.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
1388
1388
  }else if(item.JsonData){chart.WindowIndex[i]=new JsonDataIndex(item.Name,item.Script,item.Args,item);//脚本执行
1389
1389
  }else if(item.Local&&item.Local.Data){chart.WindowIndex[i]=new LocalJsonDataIndex(item.Local.Name,item.Local.Args,{JsonData:item.Local.Data});}else if(item.API)//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
1390
- {var apiItem=item.API;chart.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create(item.Option);if(chart.WindowIndex[i].SetArgs)chart.WindowIndex[i].SetArgs(item.Args);chart.CreateWindowIndex(i);}else{var _indexInfo2=scriptData.Get(item.Index);if(!_indexInfo2)continue;JSIndexScript.ModifyAttribute(_indexInfo2,item);_indexInfo2.ID=item.Index;chart.WindowIndex[i]=new ScriptIndex(_indexInfo2.Name,_indexInfo2.Script,_indexInfo2.Args,_indexInfo2);//脚本执行
1390
+ {var apiItem=item.API;chart.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create(item.Option);if(chart.WindowIndex[i].SetArgs)chart.WindowIndex[i].SetArgs(item.Args);chart.CreateWindowIndex(i);}else{var scriptData=new JSIndexScript();var _indexInfo2=scriptData.Get(item.Index);if(!_indexInfo2)continue;JSIndexScript.ModifyAttribute(_indexInfo2,item);_indexInfo2.ID=item.Index;chart.WindowIndex[i]=new ScriptIndex(_indexInfo2.Name,_indexInfo2.Script,_indexInfo2.Args,_indexInfo2);//脚本执行
1391
1391
  if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(item.IsDrawTitleBG==true)chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))chart.Frame.SubFrame[i].Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))chart.Frame.SubFrame[i].Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}//叠加指标宽度
1392
1392
  if(option.OverlayIndexFrameWidth>40)chart.Frame.FixedRightWidth.Overlay=option.OverlayIndexFrameWidth;//叠加指标
1393
1393
  if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Windows>=chart.Frame.SubFrame.length)continue;var itemString=(0,_stringify2.default)(item);var obj=JSON.parse(itemString);if(item.Index)obj.IndexName=item.Index;if(item.Windows>=0)obj.WindowIndex=item.Windows;chart.CreateOverlayWindowsIndex(obj);}}this.AdjustTitleHeight(chart);return chart;};//自定义指数历史K线图
@@ -1453,8 +1453,8 @@ if(item.IsShowRightText==false)chart.Frame.SubFrame[i].Frame.YSplitOperator.IsSh
1453
1453
  }}if(option.KLine){if(option.KLine.ShowKLine==false)chart.ChartPaint[0].IsShow=false;if(option.KLine.InfoPosition>0)chart.ChartPaint[0].InfoPosition=option.KLine.InfoPosition;if(option.KLine.IsShowMaxMinPrice==false)chart.ChartPaint[0].IsShowMaxMinPrice=option.KLine.IsShowMaxMinPrice;}if(option.KLineTitle)//股票名称 日期 周期
1454
1454
  {if(option.KLineTitle.IsShowName==false)chart.TitlePaint[0].IsShowName=false;if(option.KLineTitle.IsShowSettingInfo==false)chart.TitlePaint[0].IsShowSettingInfo=false;if(option.KLineTitle.IsShow==false)chart.TitlePaint[0].IsShow=false;}if(IFrameSplitOperator.IsNonEmptyArray(option.Overlay))//叠加股票
1455
1455
  {for(var i=0;i<option.Overlay.length;++i){var item=option.Overlay[i];chart.OverlaySymbol(item.Symbol,item);}}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){//创建子窗口的指标
1456
- var scriptData=new JSIndexScript();for(var i=0;i<option.Windows.length;++i){var item=option.Windows[i];if(item.Script){chart.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
1457
- }else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create();chart.CreateWindowIndex(i);}else{var indexInfo=scriptData.Get(item.Index);if(!indexInfo)continue;if(item.Lock)indexInfo.Lock=item.Lock;chart.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
1456
+ for(var i=0;i<option.Windows.length;++i){var item=option.Windows[i];if(item.Script){chart.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
1457
+ }else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create();chart.CreateWindowIndex(i);}else{var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(item.Index);if(!indexInfo)continue;if(item.Lock)indexInfo.Lock=item.Lock;chart.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
1458
1458
  }}if(item.Modify!=null)chart.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)chart.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)chart.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;}}this.AdjustTitleHeight(chart);return chart;};//深度图
1459
1459
  this.CreateDepthChartContainer=function(option){var chart=null;chart=new DepthChartContainer(this.CanvasElement);if(option.NetworkFilter)chart.NetworkFilter=option.NetworkFilter;if(option.EnableScrollUpDown==true)chart.EnableScrollUpDown=option.EnableScrollUpDown;if(IFrameSplitOperator.IsPlusNumber(option.MaxVolRate))chart.MaxVolRate=option.MaxVolRate;if(option.ZoomStepPixel>0)chart.ZoomStepPixel=option.ZoomStepPixel;if(IFrameSplitOperator.IsString(option.SplashTitle))chart.LoadDataSplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableVerifyRecvData))chart.EnableVerifyRecvData=option.EnableVerifyRecvData;if(option.Language){var value=g_JSChartLocalization.GetLanguageID(option.Language);if(IFrameSplitOperator.IsNumber(value))chart.LanguageID=value;}chart.Create(option.Listener);if(option.Border){if(IFrameSplitOperator.IsNumber(option.Border.Left))chart.Frame.ChartBorder.Left=option.Border.Left;else option.Border.Left=chart.Frame.ChartBorder.Left;if(IFrameSplitOperator.IsNumber(option.Border.Right))chart.Frame.ChartBorder.Right=option.Border.Right;else option.Border.Right=chart.Frame.ChartBorder.Right;if(IFrameSplitOperator.IsNumber(option.Border.Top))chart.Frame.ChartBorder.Top=option.Border.Top;else option.Border.Top=chart.Frame.ChartBorder.Top;if(IFrameSplitOperator.IsNumber(option.Border.Bottom))chart.Frame.ChartBorder.Bottom=option.Border.Bottom;else option.Border.Bottom=chart.Frame.ChartBorder.Bottom;}this.AdjustChartBorder(chart);if(option.CorssCursorTouchEnd===true)chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(option.CorssCursorInfo){var item=option.CorssCursorInfo;if(IFrameSplitOperator.IsNumber(item.HPenType))chart.ChartCorssCursor.HPenType=item.HPenType;if(IFrameSplitOperator.IsNumber(item.VPenType))chart.ChartCorssCursor.VPenType=item.VPenType;if(IFrameSplitOperator.IsBool(item.IsShowTooltip))chart.ChartCorssCursor.IsShowTooltip=item.IsShowTooltip;}if(option.Frame){var item=option.Frame;if(item.SplitCount)chart.Frame.YSplitOperator.SplitCount=item.SplitCount;if(IFrameSplitOperator.IsNumber(item.SplitType))chart.Frame.YSplitOperator.SplitType=item.SplitType;if(IFrameSplitOperator.IsNumber(item.Height))chart.Frame.Height=item.Height;if(IFrameSplitOperator.IsNumber(item.YLineType))chart.Frame.YSplitOperator.LineType=item.YLineType;if(IFrameSplitOperator.IsNumber(item.XLineType))chart.Frame.XSplitOperator.LineType=item.XLineType;if(Array.isArray(item.IgnoreYValue))chart.Frame.YSplitOperator.IgnoreYValue=item.IgnoreYValue;if(item.IsShowLeftText===false||item.IsShowLeftText===true){chart.Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
1460
1460
  }if(item.IsShowRightText===false||item.IsShowRightText===true){chart.Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
@@ -2090,7 +2090,9 @@ if(this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenCo
2090
2090
  };//区间选择
2091
2091
  this.GetRectSelectPaint=function(){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ClassName=="RectSelectPaint")return item;}return null;};this.SetRectSelectData=function(kItem,index){var paint=this.GetRectSelectPaint();if(!paint)return false;if(paint.GetPointCount()==2){if(!paint.SpaceReselected)return false;var oldPreventClose=paint.PreventClose;//备份下
2092
2092
  paint.PreventClose=false;paint.ClearPoint();paint.PreventClose=oldPreventClose;//还原
2093
- }return paint.SetPoint(kItem,{DataIndex:index});};this.MoveRectSelectPoint=function(obj){var paint=this.GetRectSelectPaint();if(!paint)return false;if(!this.ChartPaint[0]||!this.ChartPaint[0].Data)return false;var kData=this.ChartPaint[0].Data;if(!this.Frame.SubFrame[0])return false;var subFrame=this.Frame.SubFrame[0].Frame;if(!subFrame)false;var pixelTatio=GetDevicePixelRatio();var x=(obj.X-uielement.getBoundingClientRect().left)*pixelTatio;var index=subFrame.GetXData(x);index=parseInt(index.toFixed(0));var dataIndex=index+kData.DataOffset;if(dataIndex>=kData.Data.length)dataIndex=kData.Data.length-1;var item=kData.Data[dataIndex];JSConsole.Chart.Log("[KLineChartContainer::MoveRectSelectPoint] point, item",obj.PointIndex,item);if(!paint.SetPoint(item,{Index:obj.PointIndex,DataIndex:dataIndex}))return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SELECT_RECT);if(event){var selectData=paint.GetSelectRectData();var data={X:obj.X,Y:obj.Y,SelectData:selectData,RectSelectPaint:paint};event.Callback(event,data,this);}return true;};this.MoveSubRectSelect=function(obj){var paint=this.GetRectSelectPaint();if(!paint)return false;if(!paint.MoveSubRect(obj.Step,obj.IsLeft))return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SUB_SELECT_RECT);if(event){var subRectData={Start:paint.SubClient.FirstPoint,End:paint.SubClient.SecondPoint};var data={X:obj.X,Y:obj.Y,SubRectSelectData:subRectData,RectSelectPaint:paint};event.Callback(event,data,this);}return true;};this.ClearRectSelect=function(bEnforce){var paint=this.GetRectSelectPaint();if(!paint)return false;if(bEnforce)paint.PreventClose=false;return paint.ClearPoint();};//删除叠加指标, 没有重绘
2093
+ }return paint.SetPoint(kItem,{DataIndex:index});};this.MoveRectSelectPoint=function(obj){var paint=this.GetRectSelectPaint();if(!paint)return false;if(!this.ChartPaint[0]||!this.ChartPaint[0].Data)return false;var kData=this.ChartPaint[0].Data;if(!this.Frame.SubFrame[0])return false;var subFrame=this.Frame.SubFrame[0].Frame;if(!subFrame)false;var pixelTatio=GetDevicePixelRatio();var x=(obj.X-uielement.getBoundingClientRect().left)*pixelTatio;var index=subFrame.GetXData(x);index=parseInt(index.toFixed(0));var dataIndex=index+kData.DataOffset;if(dataIndex>=kData.Data.length)dataIndex=kData.Data.length-1;var item=kData.Data[dataIndex];JSConsole.Chart.Log("[KLineChartContainer::MoveRectSelectPoint] point, item",obj.PointIndex,item);if(!paint.SetPoint(item,{Index:obj.PointIndex,DataIndex:dataIndex}))return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SELECT_RECT);if(event){var selectData=paint.GetSelectRectData();var data={X:obj.X,Y:obj.Y,SelectData:selectData,RectSelectPaint:paint};event.Callback(event,data,this);}return true;};this.MoveSubRectSelect=function(obj){var paint=this.GetRectSelectPaint();if(!paint)return false;if(!paint.MoveSubRect(obj.Step,obj.IsLeft))return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SUB_SELECT_RECT);if(event){var subRectData={Start:paint.SubClient.FirstPoint,End:paint.SubClient.SecondPoint};var data={X:obj.X,Y:obj.Y,SubRectSelectData:subRectData,RectSelectPaint:paint};event.Callback(event,data,this);}return true;};this.ClearRectSelect=function(bEnforce){var paint=this.GetRectSelectPaint();if(!paint)return false;if(bEnforce)paint.PreventClose=false;return paint.ClearPoint();};//删除指定窗口的所有叠加指标
2094
+ this.DeleteWindowsOverlayIndex=function(windowIndex){if(!IFrameSplitOperator.IsNumber(windowIndex))return;if(windowIndex<0||windowIndex>=this.Frame.SubFrame.length)return;var subFrame=this.Frame.SubFrame[windowIndex];if(!IFrameSplitOperator.IsNonEmptyArray(subFrame.OverlayIndex))return;var aryIndexID=[];for(var i=0;i<subFrame.OverlayIndex.length;++i){var overlayItem=subFrame.OverlayIndex[i];aryIndexID.push(overlayItem.Identify);for(var j=0;j<overlayItem.ChartPaint.length;++j)//图形销毁事件
2095
+ {var overlayChart=overlayItem.ChartPaint[j];if(overlayChart&&overlayChart.OnDestroy)overlayChart.OnDestroy();}overlayItem.ChartPaint=[];}subFrame.OverlayIndex=[];var titlePaint=this.TitlePaint[windowIndex+1];for(var i=0;i<aryIndexID.length;++i){var identify=aryIndexID[i];if(titlePaint.OverlayIndex.has(identify))titlePaint.OverlayIndex.delete(identify);if(titlePaint.OverlayDynamicTitle.has(identify))titlePaint.OverlayDynamicTitle.delete(identify);}};//删除叠加指标, 没有重绘
2094
2096
  this.DeleteOverlayIndex=function(identify,windowIndex){var findIndex=null;if(IFrameSplitOperator.IsNumber(windowIndex)){if(windowIndex>=0&&windowIndex<this.Frame.SubFrame.length){var item=this.Frame.SubFrame[windowIndex];for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===identify){for(var k=0;k<overlayItem.ChartPaint.length;++k)//图形销毁事件
2095
2097
  {var overlayChart=overlayItem.ChartPaint[k];if(overlayChart&&overlayChart.OnDestroy)overlayChart.OnDestroy();}item.OverlayIndex.splice(j,1);findIndex=windowIndex;break;}}}}else{for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===identify){for(var k=0;k<overlayItem.ChartPaint.length;++k)//图形销毁事件
2096
2098
  {var overlayChart=overlayItem.ChartPaint[k];if(overlayChart&&overlayChart.OnDestroy)overlayChart.OnDestroy();}item.OverlayIndex.splice(j,1);findIndex=i;break;}}}}if(findIndex==null){console.warn('[JSChartContainer::DeleteOverlayIndex] can\'t find overlay index. [identify='+identify+']');return false;}var windowsIndex=findIndex+1;var titlePaint=this.TitlePaint[windowsIndex];if(titlePaint.OverlayIndex.has(identify))titlePaint.OverlayIndex.delete(identify);if(titlePaint.OverlayDynamicTitle.has(identify))titlePaint.OverlayDynamicTitle.delete(identify);return true;};this.FindScriptIndex=function(guid,windowsIndex){if(IFrameSplitOperator.IsNumber(windowsIndex)&&windowsIndex>=0){if(windowsIndex>=this.Frame.SubFrame.length)return null;var item=this.WindowIndex[windowsIndex];if(item&&item.Guid==guid)return{Type:0,Data:item,WindowIndex:windowsIndex};var item=this.Frame.SubFrame[windowsIndex];for(var i=0;i<item.OverlayIndex.length;++i){var overlayItem=item.OverlayIndex[i];if(overlayItem.Identify===guid)return{Type:1,Data:overlayItem,WindowIndex:windowsIndex,OverlayIndex:i};}}else{for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.WindowIndex[i];if(item&&item.Guid==guid)return{Type:0,Data:item,WindowIndex:i};var item=this.Frame.SubFrame[i];for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===guid)return{Type:1,Data:overlayItem,WindowIndex:i,OverlayIndex:j};}}}return null;};//移动指标 src={ WindowIndex:指标窗口索引,IndexID:指标ID } dest={ WindowIndex:指标窗口索引 } , option={ Operator: 0=移动, 1=复制 }
@@ -2885,7 +2887,7 @@ if(option&&option.IsEnableSplash===true)isSplash=true;if(isSplash==false&&(this.
2885
2887
  {var rightTextInfo={};var blank=0;if(IFrameSplitOperator.IsNumber(this.AutoRightBorder.Blank))blank=this.AutoRightBorder.Blank;var value=textWidth.Right+blank;if(IFrameSplitOperator.IsNumber(this.AutoRightBorder.MinWidth)){if(this.AutoRightBorder.MinWidth>value)value=this.AutoRightBorder.MinWidth;}this.AuotRightWidth=value;rightTextInfo.MainTextWidth=value;//主图坐标宽度
2886
2888
  if(IFrameSplitOperator.IsNonEmptyArray(textWidth.AryOverlayWidth))rightTextInfo.AryOverlayWidth=textWidth.AryOverlayWidth;if(IFrameSplitOperator.IsPlusNumber(textWidth.OverlayRight)){this.AuotRightWidth=value;value+=textWidth.OverlayRight;}if(this.GetExtendChartRightWidth){var extendWidth=this.GetExtendChartRightWidth();if(this.GetExtendChartByClassName){var finder=this.GetExtendChartByClassName("StockChip");if(finder&&finder.Chart){finder.Chart.Left=value;}}value+=extendWidth;}if(this.IsHScreen){if(this.ChartBorder.Bottom!=value)bSizeChange=true;this.ChartBorder.Bottom=value;}else{if(this.ChartBorder.Right!=value)bSizeChange=true;this.ChartBorder.Right=value;}for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(this.IsHScreen)item.Frame.ChartBorder.Bottom=value;else item.Frame.ChartBorder.Right=value;item.Frame.ReDrawToolbar=true;item.Frame.YRightTextInfo=rightTextInfo;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];overlayItem.Frame.YRightTextInfo=rightTextInfo;}}}else{var rightTextInfo={};rightTextInfo.MainTextWidth=this.FixedRightWidth.Main;if(textWidth.OverlayRight==0)//无叠加直接最右边
2887
2889
  {if(this.IsHScreen)rightTextInfo.MainTextWidth=this.ChartBorder.Bottom;else rightTextInfo.MainTextWidth=this.ChartBorder.Right;}else if(IFrameSplitOperator.IsNonEmptyArray(textWidth.AryOverlayWidth)){for(var i=0;i<textWidth.AryOverlayWidth.length;++i){textWidth.AryOverlayWidth[i]=this.FixedRightWidth.Overlay;}rightTextInfo.AryOverlayWidth=textWidth.AryOverlayWidth;}for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];item.Frame.ReDrawToolbar=true;item.Frame.YRightTextInfo=rightTextInfo;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];overlayItem.Frame.YRightTextInfo=rightTextInfo;}}}}this.SetSizeChage(true);}for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;item.Frame.Draw();if(this.AutoRightBorder){var rightOffset=this.AuotRightWidth;for(var j=0,index=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];//把主坐标部分设置给子坐标下来
2888
- overlayItem.Frame.DataWidth=item.Frame.DataWidth;overlayItem.Frame.DistanceWidth=item.Frame.DistanceWidth;overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.RightOffset=rightOffset;overlayItem.Frame.BlankWidth=0;overlayItem.Frame.TextWidthIndex=index;if(IFrameSplitOperator.IsNumber(this.OverlayBlankWidth))overlayItem.Frame.BlankWidth=this.OverlayBlankWidth;overlayItem.Frame.Draw();rightOffset+=overlayItem.RightWidth.Width;if(overlayItem.Frame.IsShow)++index;}}else{var rightOffset=this.FixedRightWidth.Main;if(item.Frame.RightTextMaxWidth>rightOffset)rightOffset=item.Frame.RightTextMaxWidth;for(var j=0,index=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];//把主坐标部分设置给子坐标下来
2890
+ overlayItem.Frame.DataWidth=item.Frame.DataWidth;overlayItem.Frame.DistanceWidth=item.Frame.DistanceWidth;overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.RightOffset=rightOffset;overlayItem.Frame.BlankWidth=0;overlayItem.Frame.TextWidthIndex=index;if(IFrameSplitOperator.IsNumber(this.OverlayBlankWidth))overlayItem.Frame.BlankWidth=this.OverlayBlankWidth;overlayItem.Frame.Draw();if(overlayItem.RightWidth)rightOffset+=overlayItem.RightWidth.Width;if(overlayItem.Frame.IsShow)++index;}}else{var rightOffset=this.FixedRightWidth.Main;if(item.Frame.RightTextMaxWidth>rightOffset)rightOffset=item.Frame.RightTextMaxWidth;for(var j=0,index=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];//把主坐标部分设置给子坐标下来
2889
2891
  overlayItem.Frame.DataWidth=item.Frame.DataWidth;overlayItem.Frame.DistanceWidth=item.Frame.DistanceWidth;overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.RightOffset=rightOffset;overlayItem.Frame.BlankWidth=0;overlayItem.Frame.TextWidthIndex=index;if(IFrameSplitOperator.IsNumber(this.OverlayBlankWidth))overlayItem.Frame.BlankWidth=this.OverlayBlankWidth;overlayItem.Frame.Draw();if(overlayItem.Frame.IsShow){rightOffset+=this.FixedRightWidth.Overlay;++index;}}}}this.SizeChange=false;};this.DrawOveraly=function(bDrawFirst){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;//高度是0 不画
2890
2892
  for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];for(var k=0;k<overlayItem.ChartPaint.length;++k){var chartItem=overlayItem.ChartPaint[k];if(chartItem.IsShow){if(bDrawFirst){if(chartItem.IsDrawFirst)chartItem.Draw();}else{if(!chartItem.IsDrawFirst)chartItem.Draw();}}}}}};this.DrawOveralySelectedStatus=function(selectedInfo){if(!selectedInfo.MoveOn.Identify&&!selectedInfo.Selected.Identify)return;for(var i in this.SubFrame){var item=this.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];for(var k in overlayItem.ChartPaint){var chart=overlayItem.ChartPaint[k];if(!chart.IsShow)continue;if(!chart.Identify)continue;if(chart.Identify!=selectedInfo.MoveOn.Identify&&chart.Identify!=selectedInfo.Selected.Identify)continue;if(chart.DrawSelectedStatus)chart.DrawSelectedStatus();}}}};this.PtInOveralyChart=function(x,y){var result=null;for(var i in this.SubFrame){var item=this.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];for(var k in overlayItem.ChartPaint){var chart=overlayItem.ChartPaint[k];if(!chart.IsShow)continue;if(chart.IsHideScriptIndex())continue;if(chart.PtInChart){result=chart.PtInChart(x,y);if(result)return result;}}}}return null;};this.DrawPictureCoordinate=function(drawPicture,option){if(!drawPicture||!drawPicture.Frame)return false;if(!IFrameSplitOperator.IsNonEmptyArray(drawPicture.Point))return false;if(!drawPicture.GetXYCoordinate)return false;var range=drawPicture.GetXYCoordinate();drawPicture.Frame.DrawPictureYCoordinate(drawPicture,range,option);for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(!item||!item.Frame)continue;if(!item.Frame.XSplitOperator.ShowText)continue;item.Frame.DrawPictureXCoordinate(drawPicture,range,option);break;}return true;};this.DrawLock=function(){for(var i in this.SubFrame){var item=this.SubFrame[i];item.Frame.DrawLock();}};this.DrawLogo=function(){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Frame.DrawLogo){item.Frame.DrawLogo();break;}}};this.CalculateLock=function(){for(var i in this.SubFrame){var item=this.SubFrame[i];item.Frame.CalculateLock();}};this.DrawInsideHorizontal=function(){for(var i in this.SubFrame){var item=this.SubFrame[i];if(item.Frame.DrawInsideHorizontal)item.Frame.DrawInsideHorizontal();}};this.DrawCustomHorizontal=function()//定制Y轴自定义刻度
2891
2893
  {for(var i in this.SubFrame){var item=this.SubFrame[i];if(item.Frame.DrawCustomHorizontal)item.Frame.DrawCustomHorizontal();for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Frame&&overlayItem.Frame.DrawCustomHorizontal)overlayItem.Frame.DrawCustomHorizontal();}}};this.DrawEx=function(option){for(var i in this.SubFrame){var item=this.SubFrame[i];if((item.Frame.ClassName=="MinuteFrame"||item.Frame.ClassName=="MinuteHScreenFrame")&&i==1){item.Frame.DrawVolTitle(option.Symbol);}}};this.DrawCustomVertical=function(event){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];item.Frame.DrawCustomVerticalEvent=event;if(item.Frame.DrawCustomVertical)item.Frame.DrawCustomVertical();}};this.DrawToolbar=function(mouseStatus){var moveonPoint=null;if(mouseStatus&&mouseStatus.MoveOnPoint)moveonPoint=mouseStatus.MoveOnPoint;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;var frame=item.Frame;if(!frame)continue;if(frame.ToolbarButtonStyle==1){if(frame.DrawToolbarV2)frame.DrawToolbarV2(moveonPoint,mouseStatus);}for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(!overlayFrame.IsShow)continue;if(overlayFrame.DrawToolbar)overlayFrame.DrawToolbar(moveonPoint,frame.IsMinSize,mouseStatus);}}};this.SetSizeChage=function(sizeChange){this.SizeChange=sizeChange;for(var i in this.SubFrame){var item=this.SubFrame[i];item.Frame.SizeChange=sizeChange;for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];if(overlayItem.Frame)overlayItem.Frame.SizeChange=sizeChange;}}//画布的位置
@@ -7331,19 +7333,21 @@ var subFrame=this.Frame.SubFrame[i];if(item.Modify!=null)this.Frame.SubFrame[i].
7331
7333
  }if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))subFrame.Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))subFrame.Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}var bindData=this.ChartPaint[0].Data;this.BindIndexData(i,bindData);//执行脚本
7332
7334
  }//this.UpdataDataoffset(); //更新数据偏移
7333
7335
  }};this.ChangeIndexTemplate=function(option)//切换指标模板 可以设置指标窗口个数 每个窗口的指标
7334
- {var _this23=this;if(!option.Windows)return;var count=option.Windows.length;if(count<=0)return;var currentLength=this.Frame.SubFrame.length;var period=null,right=null;if(option.KLine){if(IFrameSplitOperator.IsNumber(option.KLine.Period)&&option.KLine.Period!=this.Period)period=option.KLine.Period;//周期
7336
+ {var _this23=this;if(!option.Windows)return;var count=option.Windows.length;if(count<=0)return;var currentLength=this.Frame.SubFrame.length;var period=null,right=null,symbol=null;if(option.Symbol)symbol=option.Symbol;if(option.KLine){if(IFrameSplitOperator.IsNumber(option.KLine.Period)&&option.KLine.Period!=this.Period)period=option.KLine.Period;//周期
7335
7337
  if(IFrameSplitOperator.IsNumber(option.KLine.Right)&&option.KLine.Right!=this.Right)right=option.KLine.Right;//复权
7336
- }var bRefreshData=period!=null||right!=null;//清空所有的指标图型
7337
- for(var i=0;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.SubFrame[i];frame.YSpecificMaxMin=null;frame.IsLocked=false;frame.YSplitScale=null;}if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);}else{for(var i=currentLength;i<count;++i)//创建新的指标窗口
7338
- {var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=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;this.TitlePaint[i+1]=titlePaint;}}var systemScript=new JSIndexScript();for(var i=0;i<count;++i){var windowIndex=i;var item=option.Windows[i];var frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[i];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;if(item.Script)//自定义指标脚本
7338
+ }var bRefreshData=period!=null||right!=null||symbol!=null;//清空所有的指标图型
7339
+ for(var i=0;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.SubFrame[i];frame.YSpecificMaxMin=null;frame.IsLocked=false;frame.YSplitScale=null;}if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);}else{for(var i=currentLength;i<count;++i)//创建新的指标窗口
7340
+ {var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=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;this.TitlePaint[i+1]=titlePaint;}}for(var i=0;i<count;++i){var windowIndex=i;var item=option.Windows[i];var frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[i];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;var frame=this.Frame.SubFrame[i];this.DeleteWindowsOverlayIndex(i);//清空叠加指标
7341
+ if(item.Script)//自定义指标脚本
7339
7342
  {this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7340
7343
  }else if(item.API)//后台指标
7341
- {var apiItem=item.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexItem=JSIndexMap.Get(indexID);if(indexItem){this.WindowIndex[i]=indexItem.Create();this.CreateWindowIndex(windowIndex);}else{var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7342
- }}}this.SetSubFrameAttribute(this.Frame.SubFrame[i],item,frameItem);}//最后一个显示X轴坐标
7343
- for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}if(!bRefreshData){var bindData=this.ChartPaint[0].Data;for(var i=0;i<count;++i)//请求指标
7344
- {this.BindIndexData(i,bindData);}this.UpdataDataoffset();//更新数据偏移
7344
+ {var apiItem=item.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexItem=JSIndexMap.Get(indexID);if(indexItem){this.WindowIndex[i]=indexItem.Create();this.CreateWindowIndex(windowIndex);}else{var systemScript=new JSIndexScript();var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7345
+ }}}this.SetSubFrameAttribute(frame,item,frameItem);}//最后一个显示X轴坐标
7346
+ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}//叠加指标
7347
+ var aryOverlayIndex=[];if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Index)item.IndexName=item.Index;if(item.Windows>=0)item.WindowIndex=item.Windows;var overlay=this.CreateOverlayWindowsIndex(item);if(!overlay)continue;aryOverlayIndex.push(overlay);}}if(!bRefreshData){var bindData=this.ChartPaint[0].Data;for(var i=0;i<count;++i)//请求指标
7348
+ {this.BindIndexData(i,bindData);}for(var i=0;i<aryOverlayIndex.length;++i){var item=aryOverlayIndex[i];this.BindOverlayIndexData(item,item.WindowIndex,bindData);}this.UpdataDataoffset();//更新数据偏移
7345
7349
  this.Frame.SetSizeChage(true);this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
7346
- this.Draw();}else{this.Frame.SetSizeChage(true);if(period!=null)this.ChangePeriod(period,option);else if(right!=null)this.ChangeRight(right);}};this.RemoveIndexWindow=function(id,option){JSConsole.Chart.Log('[KLineChartContainer::RemoveIndexWindow] remove id',id);if(id==0){if(option&&option.DeleteMainIndex)//删除指标
7350
+ this.Draw();}else{if(!symbol)symbol=this.Symbol;var optionData={KLine:{}};if(IFrameSplitOperator.IsNumber(period))optionData.KLine.Period=period;if(IFrameSplitOperator.IsNumber(right))optionData.KLine.Right=right;this.ChangeSymbol(symbol,optionData);}};this.RemoveIndexWindow=function(id,option){JSConsole.Chart.Log('[KLineChartContainer::RemoveIndexWindow] remove id',id);if(id==0){if(option&&option.DeleteMainIndex)//删除指标
7347
7351
  {this.DeleteIndexPaint(id);this.WindowIndex[id]=null;this.Frame.SetSizeChage(true);this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();}return;}if(!this.Frame.SubFrame)return;if(id>=this.Frame.SubFrame.length)return;this.Frame.RestoreIndexWindows();var delFrame=this.Frame.SubFrame[id].Frame;this.DeleteIndexPaint(id);this.Frame.SubFrame[id].Frame.ClearToolbar();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[id],WindowIndex:id};event.Callback(event,sendData,this);}this.Frame.SubFrame.splice(id,1);this.WindowIndex.splice(id,1);this.TitlePaint.splice(id+1,1);//删除对应的动态标题
7348
7352
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;item.Identify=i;}if(this.ChartDrawPicture.length>0){var aryDrawPicture=[];for(var i in this.ChartDrawPicture){var item=this.ChartDrawPicture[i];if(item.Frame==delFrame)continue;aryDrawPicture.push(item);}this.ChartDrawPicture=aryDrawPicture;}this.Frame.SetSizeChage(true);this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();};//获取当前的显示的指标
7349
7353
  this.GetIndexInfo=function(){var aryIndex=[];for(var i in this.WindowIndex){var item=this.WindowIndex[i];var info={Name:item.Name};if(item.ID)info.ID=item.ID;if(item.Arguments)//参数
@@ -7381,9 +7385,9 @@ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];fo
7381
7385
  this.ChangeSymbol=function(symbol,option){this.CancelAutoUpdate();//先停止定时器
7382
7386
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.ClearIndexRunCount();this.Frame.ClearYCoordinateMaxMin();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
7383
7387
  this.ClearIndexPaint();//清空指标
7384
- if(option){if(option.Windows&&Array.isArray(option.Windows)&&option.Windows.length>0){var windows=option.Windows;var systemScript=new JSIndexScript();for(var i in windows){if(i>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7388
+ 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;//暂时不支持 动态增加/减少
7385
7389
  var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7386
- }else if(item.API){var apiItem=item.API;this.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(item.Args)indexInfo.Args=item.Args;indexInfo.ID=indexID;this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7390
+ }else if(item.API){var apiItem=item.API;this.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var systemScript=new JSIndexScript();var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);indexInfo.ID=indexID;this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7387
7391
  }}}}}this.ReloadChartDrawPicture();this.Frame.ClearUpDonwFrameYData();if(ChartData.IsDayPeriod(this.Period,true)){this.ClearStockCache();this.RequestHistoryData();//请求日线数据
7388
7392
  //this.ReqeustKLineInfoData();
7389
7393
  }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)||ChartData.IsMilliSecondPeriod(this.Period)){this.ClearStockCache();this.RequestHistoryMinuteData();//请求分钟数据
@@ -7840,8 +7844,7 @@ var apiItem=indexData.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiIt
7840
7844
  this.UpdataDataoffset();//更新数据偏移
7841
7845
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
7842
7846
  this.Draw();};this.ChangeIndex=function(windowIndex,indexName,option){if(this.Frame.SubFrame.length<3)return;if(option&&option.API)return this.ChangeAPIIndex(windowIndex,option);//查找系统指标
7843
- var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;if(windowIndex<2)windowIndex=2;if(windowIndex>=this.Frame.SubFrame.length)windowIndex=2;var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:indexInfo.Args,ID:indexName,//扩展属性 可以是空
7844
- KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitScale:indexInfo.YSplitScale,FloatPrecision:indexInfo.FloatPrecision,Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,OutName:indexInfo.OutName};if(option){if(option.FloatPrecision>=0)indexData.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)indexData.StringFormat=option.StringFormat;if(option.Args)indexData.Args=option.Args;if(IFrameSplitOperator.IsNumber(option.YSplitType))indexData.YSplitType=option.YSplitType;if(option.Lock)indexData.Lock=option.Lock;}return this.ChangeScriptIndex(windowIndex,indexData,option);};//设置指标窗口个数
7847
+ var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;if(windowIndex<2)windowIndex=2;if(windowIndex>=this.Frame.SubFrame.length)windowIndex=2;JSIndexScript.ModifyAttribute(indexInfo,option);return this.ChangeScriptIndex(windowIndex,indexInfo,option);};//设置指标窗口个数
7845
7848
  this.ChangeIndexWindowCount=function(count){var _this31=this;if(count<2)return;//1,2个窗口固定的不能动
7846
7849
  if(this.Frame.SubFrame.length==count)return;var currentLength=this.Frame.SubFrame.length;if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.DeleteIndexPaint(i);var item=this.Frame.SubFrame[i].Frame;if(item.ClearToolbar)item.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);}else{//创建新的指标窗口
7847
7850
  var mainFrame=this.Frame.SubFrame[0].Frame;for(var i=currentLength;i<count;++i){var subFrame=this.CreateSubFrameItem(i,mainFrame);this.Frame.SubFrame[i]=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 _this31.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}//创建指标
@@ -7854,11 +7857,10 @@ this.Draw();};this.ChangeIndexTemplate=function(option)//切换指标模板 可
7854
7857
  {var _this32=this;if(!Array.isArray(option.Windows))return;var count=option.Windows.length;var currentLength=this.Frame.SubFrame.length;var startWindowIndex=2;count+=startWindowIndex;var dayCount=null;if(IFrameSplitOperator.IsNumber(option.DayCount)&&option.DayCount!=this.DayCount)dayCount=option.DayCount;//天数
7855
7858
  var bRefreshData=dayCount!=null;//清空所有的指标图型
7856
7859
  for(var i=startWindowIndex;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.SubFrame[i];frame.YSpecificMaxMin=null;frame.IsLocked=false;frame.YSplitScale=null;}if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);}else{for(var i=currentLength;i<count;++i)//创建新的指标窗口
7857
- {var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=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 _this32.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}}var systemScript=new JSIndexScript();for(var i=0;i<count;++i){var windowIndex=i;var item=null,frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[windowIndex];if(windowIndex>=startWindowIndex)item=option.Windows[windowIndex-startWindowIndex];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;if(item){if(item.Script)//自定义指标脚本
7860
+ {var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=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 _this32.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}}for(var i=0;i<count;++i){var windowIndex=i;var item=null,frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[windowIndex];if(windowIndex>=startWindowIndex)item=option.Windows[windowIndex-startWindowIndex];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;if(item){if(item.Script)//自定义指标脚本
7858
7861
  {this.WindowIndex[windowIndex]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7859
7862
  }else if(item.API)//后台指标
7860
- {var apiItem=item.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexItem=JSIndexMap.Get(indexID);if(indexItem){this.WindowIndex[windowIndex]=indexItem.Create();this.CreateWindowIndex(windowIndex);}else{var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(item.Args)args=item.Args;var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:args,ID:indexID,//扩展属性 可以是空
7861
- KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitScale:indexInfo.YSplitScale,FloatPrecision:indexInfo.FloatPrecision,Condition:indexInfo.Condition,OutName:indexInfo.OutName};if(item.TitleFont)indexData.TitleFont=item.TitleFont;this.WindowIndex[windowIndex]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
7863
+ {var apiItem=item.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexItem=JSIndexMap.Get(indexID);if(indexItem){this.WindowIndex[windowIndex]=indexItem.Create();this.CreateWindowIndex(windowIndex);}else{var systemScript=new JSIndexScript();var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);this.WindowIndex[windowIndex]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7862
7864
  }}}}this.SetSubFrameAttribute(this.Frame.SubFrame[windowIndex],item,frameItem);}//最后一个显示X轴坐标
7863
7865
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}if(!bRefreshData){var bindData=this.SourceData;for(var i=0;i<count;++i){this.BindIndexData(i,bindData);//执行脚本
7864
7866
  }this.UpdataDataoffset();//更新数据偏移
@@ -7887,9 +7889,9 @@ chart.Data.Data=[];//清空数据
7887
7889
  }};//切换股票代码
7888
7890
  this.ChangeSymbol=function(symbol,option){this.StopDisplayLatest();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeSymbol");this.Symbol=symbol;this.ResetDayOffset();this.ResetDataStatus();this.ClearIndexPaint();//清空指标
7889
7891
  this.ResetOverlaySymbolStatus();this.ReloadChartDrawPicture();this.ClearIndexRunCount();this.ClearStockCache();this.Frame.ClearYCoordinateMaxMin();if(option){if(IFrameSplitOperator.IsNumber(option.DayCount))this.DayCount=option.DayCount;if(IFrameSplitOperator.IsNonEmptyArray(option.Windows))//切换指标
7890
- {var systemScript=new JSIndexScript();for(var i=0;i<option.Windows.length;++i){var index=2+i;if(index>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7892
+ {for(var i=0;i<option.Windows.length;++i){var index=2+i;if(index>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7891
7893
  var item=option.Windows[i];if(!item)continue;if(item.Script){this.WindowIndex[index]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7892
- }else if(item.API){var apiItem=item.API;this.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(item.Args)indexInfo.Args=item.Args;indexInfo.ID=indexID;this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7894
+ }else if(item.API){var apiItem=item.API;this.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var systemScript=new JSIndexScript();var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);indexInfo.ID=indexID;this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7893
7895
  }}}}//清空叠加股票
7894
7896
  if(option.ClearOverlay===true){for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];item.IsDelete=true;}this.OverlayChartPaint=[];this.Frame.SubFrame[0].Frame.YSplitOperator.OverlayChartPaint=this.OverlayChartPaint;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
7895
7897
  }//叠加股票
@@ -12806,7 +12808,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
12806
12808
  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);};}/********************************************************************************
12807
12809
  * 版本信息输出
12808
12810
  *
12809
- */var HQCHART_VERSION="1.1.12934";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12811
+ */var HQCHART_VERSION="1.1.12938";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12810
12812
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12811
12813
  // BaseIndex:BaseIndex,
12812
12814
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.12935",
3
+ "version": "1.1.12939",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -180,6 +180,7 @@ JSIndexScript.ModifyAttribute=function(indexInfo, attribute)
180
180
  if (IFrameSplitOperator.IsBool(attribute.IsShortTitle)) indexInfo.IsShortTitle=attribute.IsShortTitle;
181
181
  if (attribute.TitleFont) indexInfo.TitleFont=attribute.TitleFont;
182
182
  if (attribute.Lock) indexInfo.Lock=attribute.Lock;
183
+ if (IFrameSplitOperator.IsNumber(attribute.YSplitType)) indexInfo.YSplitType=attribute.YSplitType;
183
184
 
184
185
  if (attribute.YAxis)
185
186
  {
@@ -554,7 +554,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
554
554
  }
555
555
 
556
556
  //创建子窗口的指标
557
- let scriptData = new JSIndexScript();
557
+ var scriptData = new JSIndexScript();
558
558
 
559
559
  if (option.ColorIndex) //五彩K线
560
560
  {
@@ -609,6 +609,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
609
609
  }
610
610
  else
611
611
  {
612
+ var scriptData = new JSIndexScript();
612
613
  let indexInfo = scriptData.Get(item.Index);
613
614
  if (!indexInfo) continue;
614
615
  JSIndexScript.ModifyAttribute(indexInfo, item);
@@ -1450,7 +1451,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1450
1451
  if (IFrameSplitOperator.IsNonEmptyArray(option.Windows))
1451
1452
  {
1452
1453
  //创建子窗口的指标
1453
- let scriptData = new JSIndexScript();
1454
+
1454
1455
  for(var i=0;i<option.Windows.length;++i)
1455
1456
  {
1456
1457
  var item=option.Windows[i];
@@ -1468,6 +1469,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1468
1469
  }
1469
1470
  else
1470
1471
  {
1472
+ var scriptData = new JSIndexScript();
1471
1473
  let indexInfo = scriptData.Get(item.Index);
1472
1474
  if (!indexInfo) continue;
1473
1475
 
@@ -8254,6 +8256,45 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8254
8256
  return paint.ClearPoint();
8255
8257
  }
8256
8258
 
8259
+ //删除指定窗口的所有叠加指标
8260
+ this.DeleteWindowsOverlayIndex=function(windowIndex)
8261
+ {
8262
+ if (!IFrameSplitOperator.IsNumber(windowIndex)) return;
8263
+ if (windowIndex<0 || windowIndex>=this.Frame.SubFrame.length) return;
8264
+
8265
+ var subFrame=this.Frame.SubFrame[windowIndex];
8266
+ if (!IFrameSplitOperator.IsNonEmptyArray(subFrame.OverlayIndex)) return;
8267
+
8268
+ var aryIndexID=[];
8269
+ for(var i=0; i<subFrame.OverlayIndex.length; ++i)
8270
+ {
8271
+ var overlayItem=subFrame.OverlayIndex[i];
8272
+ aryIndexID.push(overlayItem.Identify);
8273
+
8274
+ for(var j=0;j<overlayItem.ChartPaint.length;++j) //图形销毁事件
8275
+ {
8276
+ var overlayChart=overlayItem.ChartPaint[j];
8277
+ if (overlayChart && overlayChart.OnDestroy) overlayChart.OnDestroy();
8278
+ }
8279
+
8280
+ overlayItem.ChartPaint=[];
8281
+ }
8282
+
8283
+ subFrame.OverlayIndex=[];
8284
+
8285
+ var titlePaint=this.TitlePaint[windowIndex+1];
8286
+ for(var i=0;i<aryIndexID.length;++i)
8287
+ {
8288
+ var identify=aryIndexID[i];
8289
+
8290
+ if (titlePaint.OverlayIndex.has(identify))
8291
+ titlePaint.OverlayIndex.delete(identify);
8292
+
8293
+ if (titlePaint.OverlayDynamicTitle.has(identify))
8294
+ titlePaint.OverlayDynamicTitle.delete(identify);
8295
+ }
8296
+ }
8297
+
8257
8298
  //删除叠加指标, 没有重绘
8258
8299
  this.DeleteOverlayIndex=function(identify, windowIndex)
8259
8300
  {
@@ -17390,7 +17431,7 @@ function HQTradeFrame()
17390
17431
  if (IFrameSplitOperator.IsNumber(this.OverlayBlankWidth)) overlayItem.Frame.BlankWidth=this.OverlayBlankWidth;
17391
17432
 
17392
17433
  overlayItem.Frame.Draw();
17393
- rightOffset+=overlayItem.RightWidth.Width;
17434
+ if (overlayItem.RightWidth) rightOffset+=overlayItem.RightWidth.Width;
17394
17435
  if (overlayItem.Frame.IsShow) ++index;
17395
17436
  }
17396
17437
  }
@@ -68287,14 +68328,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68287
68328
  if (count<=0) return;
68288
68329
  var currentLength=this.Frame.SubFrame.length;
68289
68330
 
68290
- var period=null, right=null;
68331
+ var period=null, right=null, symbol=null;
68332
+ if (option.Symbol) symbol=option.Symbol;
68291
68333
  if (option.KLine)
68292
68334
  {
68293
68335
  if (IFrameSplitOperator.IsNumber(option.KLine.Period) && option.KLine.Period!=this.Period) period=option.KLine.Period; //周期
68294
68336
  if (IFrameSplitOperator.IsNumber(option.KLine.Right) && option.KLine.Right!=this.Right) right=option.KLine.Right; //复权
68295
68337
  }
68296
68338
 
68297
- var bRefreshData= (period!=null || right!=null);
68339
+ var bRefreshData= (period!=null || right!=null || symbol!=null);
68298
68340
 
68299
68341
  //清空所有的指标图型
68300
68342
  for(var i=0;i<currentLength;++i)
@@ -68322,6 +68364,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68322
68364
 
68323
68365
  this.Frame.SubFrame.splice(count,currentLength-count);
68324
68366
  this.WindowIndex.splice(count,currentLength-count);
68367
+ this.TitlePaint.splice(count+1,currentLength-count);
68325
68368
  }
68326
68369
  else
68327
68370
  {
@@ -68338,8 +68381,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68338
68381
  this.TitlePaint[i+1]=titlePaint;
68339
68382
  }
68340
68383
  }
68341
-
68342
- var systemScript = new JSIndexScript();
68384
+
68343
68385
  for(var i=0;i<count;++i)
68344
68386
  {
68345
68387
  var windowIndex=i;
@@ -68349,7 +68391,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68349
68391
  var titleIndex=windowIndex+1;
68350
68392
  this.TitlePaint[titleIndex].Data=[];
68351
68393
  this.TitlePaint[titleIndex].Title=null;
68394
+ var frame=this.Frame.SubFrame[i];
68352
68395
 
68396
+ this.DeleteWindowsOverlayIndex(i); //清空叠加指标
68397
+
68353
68398
  if (item.Script) //自定义指标脚本
68354
68399
  {
68355
68400
  this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item); //脚本执行
@@ -68370,6 +68415,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68370
68415
  }
68371
68416
  else
68372
68417
  {
68418
+ var systemScript = new JSIndexScript();
68373
68419
  var indexInfo = systemScript.Get(indexID);
68374
68420
  if (indexInfo)
68375
68421
  {
@@ -68379,7 +68425,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68379
68425
  }
68380
68426
  }
68381
68427
 
68382
- this.SetSubFrameAttribute(this.Frame.SubFrame[i], item, frameItem);
68428
+ this.SetSubFrameAttribute(frame, item, frameItem);
68383
68429
  }
68384
68430
 
68385
68431
  //最后一个显示X轴坐标
@@ -68390,6 +68436,23 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68390
68436
  else item.XSplitOperator.ShowText=false;
68391
68437
  }
68392
68438
 
68439
+ //叠加指标
68440
+ var aryOverlayIndex=[];
68441
+ if (IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex))
68442
+ {
68443
+ for(var i=0;i<option.OverlayIndex.length;++i)
68444
+ {
68445
+ var item=option.OverlayIndex[i];
68446
+ if (item.Index) item.IndexName=item.Index;
68447
+ if (item.Windows>=0) item.WindowIndex=item.Windows;
68448
+
68449
+ var overlay=this.CreateOverlayWindowsIndex(item);
68450
+ if (!overlay) continue;
68451
+
68452
+ aryOverlayIndex.push(overlay);
68453
+ }
68454
+ }
68455
+
68393
68456
  if (!bRefreshData)
68394
68457
  {
68395
68458
  var bindData=this.ChartPaint[0].Data;
@@ -68398,6 +68461,12 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68398
68461
  this.BindIndexData(i,bindData);
68399
68462
  }
68400
68463
 
68464
+ for(var i=0;i<aryOverlayIndex.length;++i)
68465
+ {
68466
+ var item=aryOverlayIndex[i];
68467
+ this.BindOverlayIndexData(item,item.WindowIndex,bindData);
68468
+ }
68469
+
68401
68470
  this.UpdataDataoffset(); //更新数据偏移
68402
68471
  this.Frame.SetSizeChage(true);
68403
68472
  this.ResetFrameXYSplit();
@@ -68406,9 +68475,13 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68406
68475
  }
68407
68476
  else
68408
68477
  {
68409
- this.Frame.SetSizeChage(true);
68410
- if (period!=null) this.ChangePeriod(period, option);
68411
- else if (right!=null) this.ChangeRight(right);
68478
+ if (!symbol) symbol=this.Symbol;
68479
+
68480
+ var optionData={ KLine:{} };
68481
+ if (IFrameSplitOperator.IsNumber(period)) optionData.KLine.Period=period;
68482
+ if (IFrameSplitOperator.IsNumber(right)) optionData.KLine.Right=right;
68483
+
68484
+ this.ChangeSymbol(symbol, optionData);
68412
68485
  }
68413
68486
  }
68414
68487
 
@@ -68853,11 +68926,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68853
68926
 
68854
68927
  if (option)
68855
68928
  {
68856
- if (option.Windows && Array.isArray(option.Windows) && option.Windows.length>0)
68929
+ if (IFrameSplitOperator.IsNonEmptyArray(option.Windows))
68857
68930
  {
68858
68931
  var windows=option.Windows;
68859
- var systemScript = new JSIndexScript();
68860
- for(var i in windows)
68932
+
68933
+ for(var i=0; i<windows.length; ++i)
68861
68934
  {
68862
68935
  if (i>=this.WindowIndex.length) break; //暂时不支持 动态增加/减少
68863
68936
  var item=windows[i];
@@ -68875,11 +68948,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68875
68948
  else
68876
68949
  {
68877
68950
  var indexID=item.Index;
68951
+ var systemScript = new JSIndexScript();
68878
68952
  var indexInfo = systemScript.Get(indexID);
68879
68953
  if (indexInfo)
68880
68954
  {
68881
- var args=indexInfo.Args;
68882
- if (item.Args) indexInfo.Args=item.Args;
68955
+ JSIndexScript.ModifyAttribute(indexInfo,item);
68883
68956
  indexInfo.ID=indexID;
68884
68957
  this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
68885
68958
  }
@@ -73628,25 +73701,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
73628
73701
  if (windowIndex<2) windowIndex=2;
73629
73702
  if (windowIndex>=this.Frame.SubFrame.length) windowIndex=2;
73630
73703
 
73631
- let indexData =
73632
- {
73633
- Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName ,
73634
- //扩展属性 可以是空
73635
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
73636
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,
73637
- OutName:indexInfo.OutName
73638
- };
73704
+ JSIndexScript.ModifyAttribute(indexInfo, option)
73639
73705
 
73640
- if (option)
73641
- {
73642
- if (option.FloatPrecision>=0) indexData.FloatPrecision=option.FloatPrecision;
73643
- if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
73644
- if (option.Args) indexData.Args=option.Args;
73645
- if (IFrameSplitOperator.IsNumber(option.YSplitType)) indexData.YSplitType=option.YSplitType;
73646
- if (option.Lock) indexData.Lock=option.Lock;
73647
- }
73648
-
73649
- return this.ChangeScriptIndex(windowIndex, indexData,option);
73706
+ return this.ChangeScriptIndex(windowIndex, indexInfo, option);
73650
73707
  }
73651
73708
 
73652
73709
  //设置指标窗口个数
@@ -73777,7 +73834,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
73777
73834
  }
73778
73835
  }
73779
73836
 
73780
- var systemScript = new JSIndexScript();
73837
+
73781
73838
 
73782
73839
  for(var i=0;i<count;++i)
73783
73840
  {
@@ -73812,22 +73869,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
73812
73869
  }
73813
73870
  else
73814
73871
  {
73872
+ var systemScript = new JSIndexScript();
73815
73873
  var indexInfo = systemScript.Get(indexID);
73816
73874
  if (indexInfo)
73817
73875
  {
73818
- var args=indexInfo.Args;
73819
- if (item.Args) args=item.Args;
73820
- let indexData =
73821
- {
73822
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexID ,
73823
- //扩展属性 可以是空
73824
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
73825
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
73826
- OutName:indexInfo.OutName
73827
- };
73828
- if (item.TitleFont) indexData.TitleFont=item.TitleFont;
73829
-
73830
- this.WindowIndex[windowIndex]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
73876
+ JSIndexScript.ModifyAttribute(indexInfo,item);
73877
+ this.WindowIndex[windowIndex]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
73831
73878
  }
73832
73879
  }
73833
73880
  }
@@ -74025,7 +74072,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
74025
74072
 
74026
74073
  if (IFrameSplitOperator.IsNonEmptyArray(option.Windows)) //切换指标
74027
74074
  {
74028
- var systemScript = new JSIndexScript();
74075
+
74029
74076
  for(var i=0; i<option.Windows.length; ++i)
74030
74077
  {
74031
74078
  var index=2+i;
@@ -74045,12 +74092,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
74045
74092
  }
74046
74093
  else
74047
74094
  {
74095
+ var systemScript = new JSIndexScript();
74048
74096
  var indexID=item.Index;
74049
74097
  var indexInfo = systemScript.Get(indexID);
74050
74098
  if (indexInfo)
74051
74099
  {
74052
- var args=indexInfo.Args;
74053
- if (item.Args) indexInfo.Args=item.Args;
74100
+ JSIndexScript.ModifyAttribute(indexInfo,item);
74054
74101
  indexInfo.ID=indexID;
74055
74102
  this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
74056
74103
  }
@@ -192,6 +192,7 @@ JSIndexScript.ModifyAttribute=function(indexInfo, attribute)
192
192
  if (IFrameSplitOperator.IsBool(attribute.IsShortTitle)) indexInfo.IsShortTitle=attribute.IsShortTitle;
193
193
  if (attribute.TitleFont) indexInfo.TitleFont=attribute.TitleFont;
194
194
  if (attribute.Lock) indexInfo.Lock=attribute.Lock;
195
+ if (IFrameSplitOperator.IsNumber(attribute.YSplitType)) indexInfo.YSplitType=attribute.YSplitType;
195
196
 
196
197
  if (attribute.YAxis)
197
198
  {
@@ -4745,7 +4746,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4745
4746
  }
4746
4747
 
4747
4748
  //创建子窗口的指标
4748
- let scriptData = new JSIndexScript();
4749
+ var scriptData = new JSIndexScript();
4749
4750
 
4750
4751
  if (option.ColorIndex) //五彩K线
4751
4752
  {
@@ -4800,6 +4801,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4800
4801
  }
4801
4802
  else
4802
4803
  {
4804
+ var scriptData = new JSIndexScript();
4803
4805
  let indexInfo = scriptData.Get(item.Index);
4804
4806
  if (!indexInfo) continue;
4805
4807
  JSIndexScript.ModifyAttribute(indexInfo, item);
@@ -5641,7 +5643,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5641
5643
  if (IFrameSplitOperator.IsNonEmptyArray(option.Windows))
5642
5644
  {
5643
5645
  //创建子窗口的指标
5644
- let scriptData = new JSIndexScript();
5646
+
5645
5647
  for(var i=0;i<option.Windows.length;++i)
5646
5648
  {
5647
5649
  var item=option.Windows[i];
@@ -5659,6 +5661,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5659
5661
  }
5660
5662
  else
5661
5663
  {
5664
+ var scriptData = new JSIndexScript();
5662
5665
  let indexInfo = scriptData.Get(item.Index);
5663
5666
  if (!indexInfo) continue;
5664
5667
 
@@ -12445,6 +12448,45 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12445
12448
  return paint.ClearPoint();
12446
12449
  }
12447
12450
 
12451
+ //删除指定窗口的所有叠加指标
12452
+ this.DeleteWindowsOverlayIndex=function(windowIndex)
12453
+ {
12454
+ if (!IFrameSplitOperator.IsNumber(windowIndex)) return;
12455
+ if (windowIndex<0 || windowIndex>=this.Frame.SubFrame.length) return;
12456
+
12457
+ var subFrame=this.Frame.SubFrame[windowIndex];
12458
+ if (!IFrameSplitOperator.IsNonEmptyArray(subFrame.OverlayIndex)) return;
12459
+
12460
+ var aryIndexID=[];
12461
+ for(var i=0; i<subFrame.OverlayIndex.length; ++i)
12462
+ {
12463
+ var overlayItem=subFrame.OverlayIndex[i];
12464
+ aryIndexID.push(overlayItem.Identify);
12465
+
12466
+ for(var j=0;j<overlayItem.ChartPaint.length;++j) //图形销毁事件
12467
+ {
12468
+ var overlayChart=overlayItem.ChartPaint[j];
12469
+ if (overlayChart && overlayChart.OnDestroy) overlayChart.OnDestroy();
12470
+ }
12471
+
12472
+ overlayItem.ChartPaint=[];
12473
+ }
12474
+
12475
+ subFrame.OverlayIndex=[];
12476
+
12477
+ var titlePaint=this.TitlePaint[windowIndex+1];
12478
+ for(var i=0;i<aryIndexID.length;++i)
12479
+ {
12480
+ var identify=aryIndexID[i];
12481
+
12482
+ if (titlePaint.OverlayIndex.has(identify))
12483
+ titlePaint.OverlayIndex.delete(identify);
12484
+
12485
+ if (titlePaint.OverlayDynamicTitle.has(identify))
12486
+ titlePaint.OverlayDynamicTitle.delete(identify);
12487
+ }
12488
+ }
12489
+
12448
12490
  //删除叠加指标, 没有重绘
12449
12491
  this.DeleteOverlayIndex=function(identify, windowIndex)
12450
12492
  {
@@ -21581,7 +21623,7 @@ function HQTradeFrame()
21581
21623
  if (IFrameSplitOperator.IsNumber(this.OverlayBlankWidth)) overlayItem.Frame.BlankWidth=this.OverlayBlankWidth;
21582
21624
 
21583
21625
  overlayItem.Frame.Draw();
21584
- rightOffset+=overlayItem.RightWidth.Width;
21626
+ if (overlayItem.RightWidth) rightOffset+=overlayItem.RightWidth.Width;
21585
21627
  if (overlayItem.Frame.IsShow) ++index;
21586
21628
  }
21587
21629
  }
@@ -72478,14 +72520,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72478
72520
  if (count<=0) return;
72479
72521
  var currentLength=this.Frame.SubFrame.length;
72480
72522
 
72481
- var period=null, right=null;
72523
+ var period=null, right=null, symbol=null;
72524
+ if (option.Symbol) symbol=option.Symbol;
72482
72525
  if (option.KLine)
72483
72526
  {
72484
72527
  if (IFrameSplitOperator.IsNumber(option.KLine.Period) && option.KLine.Period!=this.Period) period=option.KLine.Period; //周期
72485
72528
  if (IFrameSplitOperator.IsNumber(option.KLine.Right) && option.KLine.Right!=this.Right) right=option.KLine.Right; //复权
72486
72529
  }
72487
72530
 
72488
- var bRefreshData= (period!=null || right!=null);
72531
+ var bRefreshData= (period!=null || right!=null || symbol!=null);
72489
72532
 
72490
72533
  //清空所有的指标图型
72491
72534
  for(var i=0;i<currentLength;++i)
@@ -72513,6 +72556,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72513
72556
 
72514
72557
  this.Frame.SubFrame.splice(count,currentLength-count);
72515
72558
  this.WindowIndex.splice(count,currentLength-count);
72559
+ this.TitlePaint.splice(count+1,currentLength-count);
72516
72560
  }
72517
72561
  else
72518
72562
  {
@@ -72529,8 +72573,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72529
72573
  this.TitlePaint[i+1]=titlePaint;
72530
72574
  }
72531
72575
  }
72532
-
72533
- var systemScript = new JSIndexScript();
72576
+
72534
72577
  for(var i=0;i<count;++i)
72535
72578
  {
72536
72579
  var windowIndex=i;
@@ -72540,7 +72583,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72540
72583
  var titleIndex=windowIndex+1;
72541
72584
  this.TitlePaint[titleIndex].Data=[];
72542
72585
  this.TitlePaint[titleIndex].Title=null;
72586
+ var frame=this.Frame.SubFrame[i];
72543
72587
 
72588
+ this.DeleteWindowsOverlayIndex(i); //清空叠加指标
72589
+
72544
72590
  if (item.Script) //自定义指标脚本
72545
72591
  {
72546
72592
  this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item); //脚本执行
@@ -72561,6 +72607,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72561
72607
  }
72562
72608
  else
72563
72609
  {
72610
+ var systemScript = new JSIndexScript();
72564
72611
  var indexInfo = systemScript.Get(indexID);
72565
72612
  if (indexInfo)
72566
72613
  {
@@ -72570,7 +72617,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72570
72617
  }
72571
72618
  }
72572
72619
 
72573
- this.SetSubFrameAttribute(this.Frame.SubFrame[i], item, frameItem);
72620
+ this.SetSubFrameAttribute(frame, item, frameItem);
72574
72621
  }
72575
72622
 
72576
72623
  //最后一个显示X轴坐标
@@ -72581,6 +72628,23 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72581
72628
  else item.XSplitOperator.ShowText=false;
72582
72629
  }
72583
72630
 
72631
+ //叠加指标
72632
+ var aryOverlayIndex=[];
72633
+ if (IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex))
72634
+ {
72635
+ for(var i=0;i<option.OverlayIndex.length;++i)
72636
+ {
72637
+ var item=option.OverlayIndex[i];
72638
+ if (item.Index) item.IndexName=item.Index;
72639
+ if (item.Windows>=0) item.WindowIndex=item.Windows;
72640
+
72641
+ var overlay=this.CreateOverlayWindowsIndex(item);
72642
+ if (!overlay) continue;
72643
+
72644
+ aryOverlayIndex.push(overlay);
72645
+ }
72646
+ }
72647
+
72584
72648
  if (!bRefreshData)
72585
72649
  {
72586
72650
  var bindData=this.ChartPaint[0].Data;
@@ -72589,6 +72653,12 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72589
72653
  this.BindIndexData(i,bindData);
72590
72654
  }
72591
72655
 
72656
+ for(var i=0;i<aryOverlayIndex.length;++i)
72657
+ {
72658
+ var item=aryOverlayIndex[i];
72659
+ this.BindOverlayIndexData(item,item.WindowIndex,bindData);
72660
+ }
72661
+
72592
72662
  this.UpdataDataoffset(); //更新数据偏移
72593
72663
  this.Frame.SetSizeChage(true);
72594
72664
  this.ResetFrameXYSplit();
@@ -72597,9 +72667,13 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72597
72667
  }
72598
72668
  else
72599
72669
  {
72600
- this.Frame.SetSizeChage(true);
72601
- if (period!=null) this.ChangePeriod(period, option);
72602
- else if (right!=null) this.ChangeRight(right);
72670
+ if (!symbol) symbol=this.Symbol;
72671
+
72672
+ var optionData={ KLine:{} };
72673
+ if (IFrameSplitOperator.IsNumber(period)) optionData.KLine.Period=period;
72674
+ if (IFrameSplitOperator.IsNumber(right)) optionData.KLine.Right=right;
72675
+
72676
+ this.ChangeSymbol(symbol, optionData);
72603
72677
  }
72604
72678
  }
72605
72679
 
@@ -73044,11 +73118,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
73044
73118
 
73045
73119
  if (option)
73046
73120
  {
73047
- if (option.Windows && Array.isArray(option.Windows) && option.Windows.length>0)
73121
+ if (IFrameSplitOperator.IsNonEmptyArray(option.Windows))
73048
73122
  {
73049
73123
  var windows=option.Windows;
73050
- var systemScript = new JSIndexScript();
73051
- for(var i in windows)
73124
+
73125
+ for(var i=0; i<windows.length; ++i)
73052
73126
  {
73053
73127
  if (i>=this.WindowIndex.length) break; //暂时不支持 动态增加/减少
73054
73128
  var item=windows[i];
@@ -73066,11 +73140,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
73066
73140
  else
73067
73141
  {
73068
73142
  var indexID=item.Index;
73143
+ var systemScript = new JSIndexScript();
73069
73144
  var indexInfo = systemScript.Get(indexID);
73070
73145
  if (indexInfo)
73071
73146
  {
73072
- var args=indexInfo.Args;
73073
- if (item.Args) indexInfo.Args=item.Args;
73147
+ JSIndexScript.ModifyAttribute(indexInfo,item);
73074
73148
  indexInfo.ID=indexID;
73075
73149
  this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
73076
73150
  }
@@ -77819,25 +77893,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
77819
77893
  if (windowIndex<2) windowIndex=2;
77820
77894
  if (windowIndex>=this.Frame.SubFrame.length) windowIndex=2;
77821
77895
 
77822
- let indexData =
77823
- {
77824
- Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName ,
77825
- //扩展属性 可以是空
77826
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
77827
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,
77828
- OutName:indexInfo.OutName
77829
- };
77896
+ JSIndexScript.ModifyAttribute(indexInfo, option)
77830
77897
 
77831
- if (option)
77832
- {
77833
- if (option.FloatPrecision>=0) indexData.FloatPrecision=option.FloatPrecision;
77834
- if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
77835
- if (option.Args) indexData.Args=option.Args;
77836
- if (IFrameSplitOperator.IsNumber(option.YSplitType)) indexData.YSplitType=option.YSplitType;
77837
- if (option.Lock) indexData.Lock=option.Lock;
77838
- }
77839
-
77840
- return this.ChangeScriptIndex(windowIndex, indexData,option);
77898
+ return this.ChangeScriptIndex(windowIndex, indexInfo, option);
77841
77899
  }
77842
77900
 
77843
77901
  //设置指标窗口个数
@@ -77968,7 +78026,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
77968
78026
  }
77969
78027
  }
77970
78028
 
77971
- var systemScript = new JSIndexScript();
78029
+
77972
78030
 
77973
78031
  for(var i=0;i<count;++i)
77974
78032
  {
@@ -78003,22 +78061,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78003
78061
  }
78004
78062
  else
78005
78063
  {
78064
+ var systemScript = new JSIndexScript();
78006
78065
  var indexInfo = systemScript.Get(indexID);
78007
78066
  if (indexInfo)
78008
78067
  {
78009
- var args=indexInfo.Args;
78010
- if (item.Args) args=item.Args;
78011
- let indexData =
78012
- {
78013
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexID ,
78014
- //扩展属性 可以是空
78015
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
78016
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
78017
- OutName:indexInfo.OutName
78018
- };
78019
- if (item.TitleFont) indexData.TitleFont=item.TitleFont;
78020
-
78021
- this.WindowIndex[windowIndex]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
78068
+ JSIndexScript.ModifyAttribute(indexInfo,item);
78069
+ this.WindowIndex[windowIndex]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
78022
78070
  }
78023
78071
  }
78024
78072
  }
@@ -78216,7 +78264,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78216
78264
 
78217
78265
  if (IFrameSplitOperator.IsNonEmptyArray(option.Windows)) //切换指标
78218
78266
  {
78219
- var systemScript = new JSIndexScript();
78267
+
78220
78268
  for(var i=0; i<option.Windows.length; ++i)
78221
78269
  {
78222
78270
  var index=2+i;
@@ -78236,12 +78284,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78236
78284
  }
78237
78285
  else
78238
78286
  {
78287
+ var systemScript = new JSIndexScript();
78239
78288
  var indexID=item.Index;
78240
78289
  var indexInfo = systemScript.Get(indexID);
78241
78290
  if (indexInfo)
78242
78291
  {
78243
- var args=indexInfo.Args;
78244
- if (item.Args) indexInfo.Args=item.Args;
78292
+ JSIndexScript.ModifyAttribute(indexInfo,item);
78245
78293
  indexInfo.ID=indexID;
78246
78294
  this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
78247
78295
  }
@@ -129308,7 +129356,7 @@ function ScrollBarBGChart()
129308
129356
 
129309
129357
 
129310
129358
 
129311
- var HQCHART_VERSION="1.1.12934";
129359
+ var HQCHART_VERSION="1.1.12938";
129312
129360
 
129313
129361
  function PrintHQChartVersion()
129314
129362
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12934";
8
+ var HQCHART_VERSION="1.1.12938";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -236,6 +236,7 @@ JSIndexScript.ModifyAttribute=function(indexInfo, attribute)
236
236
  if (IFrameSplitOperator.IsBool(attribute.IsShortTitle)) indexInfo.IsShortTitle=attribute.IsShortTitle;
237
237
  if (attribute.TitleFont) indexInfo.TitleFont=attribute.TitleFont;
238
238
  if (attribute.Lock) indexInfo.Lock=attribute.Lock;
239
+ if (IFrameSplitOperator.IsNumber(attribute.YSplitType)) indexInfo.YSplitType=attribute.YSplitType;
239
240
 
240
241
  if (attribute.YAxis)
241
242
  {
@@ -4789,7 +4790,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4789
4790
  }
4790
4791
 
4791
4792
  //创建子窗口的指标
4792
- let scriptData = new JSIndexScript();
4793
+ var scriptData = new JSIndexScript();
4793
4794
 
4794
4795
  if (option.ColorIndex) //五彩K线
4795
4796
  {
@@ -4844,6 +4845,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4844
4845
  }
4845
4846
  else
4846
4847
  {
4848
+ var scriptData = new JSIndexScript();
4847
4849
  let indexInfo = scriptData.Get(item.Index);
4848
4850
  if (!indexInfo) continue;
4849
4851
  JSIndexScript.ModifyAttribute(indexInfo, item);
@@ -5685,7 +5687,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5685
5687
  if (IFrameSplitOperator.IsNonEmptyArray(option.Windows))
5686
5688
  {
5687
5689
  //创建子窗口的指标
5688
- let scriptData = new JSIndexScript();
5690
+
5689
5691
  for(var i=0;i<option.Windows.length;++i)
5690
5692
  {
5691
5693
  var item=option.Windows[i];
@@ -5703,6 +5705,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5703
5705
  }
5704
5706
  else
5705
5707
  {
5708
+ var scriptData = new JSIndexScript();
5706
5709
  let indexInfo = scriptData.Get(item.Index);
5707
5710
  if (!indexInfo) continue;
5708
5711
 
@@ -12489,6 +12492,45 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12489
12492
  return paint.ClearPoint();
12490
12493
  }
12491
12494
 
12495
+ //删除指定窗口的所有叠加指标
12496
+ this.DeleteWindowsOverlayIndex=function(windowIndex)
12497
+ {
12498
+ if (!IFrameSplitOperator.IsNumber(windowIndex)) return;
12499
+ if (windowIndex<0 || windowIndex>=this.Frame.SubFrame.length) return;
12500
+
12501
+ var subFrame=this.Frame.SubFrame[windowIndex];
12502
+ if (!IFrameSplitOperator.IsNonEmptyArray(subFrame.OverlayIndex)) return;
12503
+
12504
+ var aryIndexID=[];
12505
+ for(var i=0; i<subFrame.OverlayIndex.length; ++i)
12506
+ {
12507
+ var overlayItem=subFrame.OverlayIndex[i];
12508
+ aryIndexID.push(overlayItem.Identify);
12509
+
12510
+ for(var j=0;j<overlayItem.ChartPaint.length;++j) //图形销毁事件
12511
+ {
12512
+ var overlayChart=overlayItem.ChartPaint[j];
12513
+ if (overlayChart && overlayChart.OnDestroy) overlayChart.OnDestroy();
12514
+ }
12515
+
12516
+ overlayItem.ChartPaint=[];
12517
+ }
12518
+
12519
+ subFrame.OverlayIndex=[];
12520
+
12521
+ var titlePaint=this.TitlePaint[windowIndex+1];
12522
+ for(var i=0;i<aryIndexID.length;++i)
12523
+ {
12524
+ var identify=aryIndexID[i];
12525
+
12526
+ if (titlePaint.OverlayIndex.has(identify))
12527
+ titlePaint.OverlayIndex.delete(identify);
12528
+
12529
+ if (titlePaint.OverlayDynamicTitle.has(identify))
12530
+ titlePaint.OverlayDynamicTitle.delete(identify);
12531
+ }
12532
+ }
12533
+
12492
12534
  //删除叠加指标, 没有重绘
12493
12535
  this.DeleteOverlayIndex=function(identify, windowIndex)
12494
12536
  {
@@ -21625,7 +21667,7 @@ function HQTradeFrame()
21625
21667
  if (IFrameSplitOperator.IsNumber(this.OverlayBlankWidth)) overlayItem.Frame.BlankWidth=this.OverlayBlankWidth;
21626
21668
 
21627
21669
  overlayItem.Frame.Draw();
21628
- rightOffset+=overlayItem.RightWidth.Width;
21670
+ if (overlayItem.RightWidth) rightOffset+=overlayItem.RightWidth.Width;
21629
21671
  if (overlayItem.Frame.IsShow) ++index;
21630
21672
  }
21631
21673
  }
@@ -72522,14 +72564,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72522
72564
  if (count<=0) return;
72523
72565
  var currentLength=this.Frame.SubFrame.length;
72524
72566
 
72525
- var period=null, right=null;
72567
+ var period=null, right=null, symbol=null;
72568
+ if (option.Symbol) symbol=option.Symbol;
72526
72569
  if (option.KLine)
72527
72570
  {
72528
72571
  if (IFrameSplitOperator.IsNumber(option.KLine.Period) && option.KLine.Period!=this.Period) period=option.KLine.Period; //周期
72529
72572
  if (IFrameSplitOperator.IsNumber(option.KLine.Right) && option.KLine.Right!=this.Right) right=option.KLine.Right; //复权
72530
72573
  }
72531
72574
 
72532
- var bRefreshData= (period!=null || right!=null);
72575
+ var bRefreshData= (period!=null || right!=null || symbol!=null);
72533
72576
 
72534
72577
  //清空所有的指标图型
72535
72578
  for(var i=0;i<currentLength;++i)
@@ -72557,6 +72600,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72557
72600
 
72558
72601
  this.Frame.SubFrame.splice(count,currentLength-count);
72559
72602
  this.WindowIndex.splice(count,currentLength-count);
72603
+ this.TitlePaint.splice(count+1,currentLength-count);
72560
72604
  }
72561
72605
  else
72562
72606
  {
@@ -72573,8 +72617,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72573
72617
  this.TitlePaint[i+1]=titlePaint;
72574
72618
  }
72575
72619
  }
72576
-
72577
- var systemScript = new JSIndexScript();
72620
+
72578
72621
  for(var i=0;i<count;++i)
72579
72622
  {
72580
72623
  var windowIndex=i;
@@ -72584,7 +72627,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72584
72627
  var titleIndex=windowIndex+1;
72585
72628
  this.TitlePaint[titleIndex].Data=[];
72586
72629
  this.TitlePaint[titleIndex].Title=null;
72630
+ var frame=this.Frame.SubFrame[i];
72587
72631
 
72632
+ this.DeleteWindowsOverlayIndex(i); //清空叠加指标
72633
+
72588
72634
  if (item.Script) //自定义指标脚本
72589
72635
  {
72590
72636
  this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item); //脚本执行
@@ -72605,6 +72651,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72605
72651
  }
72606
72652
  else
72607
72653
  {
72654
+ var systemScript = new JSIndexScript();
72608
72655
  var indexInfo = systemScript.Get(indexID);
72609
72656
  if (indexInfo)
72610
72657
  {
@@ -72614,7 +72661,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72614
72661
  }
72615
72662
  }
72616
72663
 
72617
- this.SetSubFrameAttribute(this.Frame.SubFrame[i], item, frameItem);
72664
+ this.SetSubFrameAttribute(frame, item, frameItem);
72618
72665
  }
72619
72666
 
72620
72667
  //最后一个显示X轴坐标
@@ -72625,6 +72672,23 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72625
72672
  else item.XSplitOperator.ShowText=false;
72626
72673
  }
72627
72674
 
72675
+ //叠加指标
72676
+ var aryOverlayIndex=[];
72677
+ if (IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex))
72678
+ {
72679
+ for(var i=0;i<option.OverlayIndex.length;++i)
72680
+ {
72681
+ var item=option.OverlayIndex[i];
72682
+ if (item.Index) item.IndexName=item.Index;
72683
+ if (item.Windows>=0) item.WindowIndex=item.Windows;
72684
+
72685
+ var overlay=this.CreateOverlayWindowsIndex(item);
72686
+ if (!overlay) continue;
72687
+
72688
+ aryOverlayIndex.push(overlay);
72689
+ }
72690
+ }
72691
+
72628
72692
  if (!bRefreshData)
72629
72693
  {
72630
72694
  var bindData=this.ChartPaint[0].Data;
@@ -72633,6 +72697,12 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72633
72697
  this.BindIndexData(i,bindData);
72634
72698
  }
72635
72699
 
72700
+ for(var i=0;i<aryOverlayIndex.length;++i)
72701
+ {
72702
+ var item=aryOverlayIndex[i];
72703
+ this.BindOverlayIndexData(item,item.WindowIndex,bindData);
72704
+ }
72705
+
72636
72706
  this.UpdataDataoffset(); //更新数据偏移
72637
72707
  this.Frame.SetSizeChage(true);
72638
72708
  this.ResetFrameXYSplit();
@@ -72641,9 +72711,13 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72641
72711
  }
72642
72712
  else
72643
72713
  {
72644
- this.Frame.SetSizeChage(true);
72645
- if (period!=null) this.ChangePeriod(period, option);
72646
- else if (right!=null) this.ChangeRight(right);
72714
+ if (!symbol) symbol=this.Symbol;
72715
+
72716
+ var optionData={ KLine:{} };
72717
+ if (IFrameSplitOperator.IsNumber(period)) optionData.KLine.Period=period;
72718
+ if (IFrameSplitOperator.IsNumber(right)) optionData.KLine.Right=right;
72719
+
72720
+ this.ChangeSymbol(symbol, optionData);
72647
72721
  }
72648
72722
  }
72649
72723
 
@@ -73088,11 +73162,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
73088
73162
 
73089
73163
  if (option)
73090
73164
  {
73091
- if (option.Windows && Array.isArray(option.Windows) && option.Windows.length>0)
73165
+ if (IFrameSplitOperator.IsNonEmptyArray(option.Windows))
73092
73166
  {
73093
73167
  var windows=option.Windows;
73094
- var systemScript = new JSIndexScript();
73095
- for(var i in windows)
73168
+
73169
+ for(var i=0; i<windows.length; ++i)
73096
73170
  {
73097
73171
  if (i>=this.WindowIndex.length) break; //暂时不支持 动态增加/减少
73098
73172
  var item=windows[i];
@@ -73110,11 +73184,11 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
73110
73184
  else
73111
73185
  {
73112
73186
  var indexID=item.Index;
73187
+ var systemScript = new JSIndexScript();
73113
73188
  var indexInfo = systemScript.Get(indexID);
73114
73189
  if (indexInfo)
73115
73190
  {
73116
- var args=indexInfo.Args;
73117
- if (item.Args) indexInfo.Args=item.Args;
73191
+ JSIndexScript.ModifyAttribute(indexInfo,item);
73118
73192
  indexInfo.ID=indexID;
73119
73193
  this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
73120
73194
  }
@@ -77863,25 +77937,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
77863
77937
  if (windowIndex<2) windowIndex=2;
77864
77938
  if (windowIndex>=this.Frame.SubFrame.length) windowIndex=2;
77865
77939
 
77866
- let indexData =
77867
- {
77868
- Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName ,
77869
- //扩展属性 可以是空
77870
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
77871
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,
77872
- OutName:indexInfo.OutName
77873
- };
77940
+ JSIndexScript.ModifyAttribute(indexInfo, option)
77874
77941
 
77875
- if (option)
77876
- {
77877
- if (option.FloatPrecision>=0) indexData.FloatPrecision=option.FloatPrecision;
77878
- if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
77879
- if (option.Args) indexData.Args=option.Args;
77880
- if (IFrameSplitOperator.IsNumber(option.YSplitType)) indexData.YSplitType=option.YSplitType;
77881
- if (option.Lock) indexData.Lock=option.Lock;
77882
- }
77883
-
77884
- return this.ChangeScriptIndex(windowIndex, indexData,option);
77942
+ return this.ChangeScriptIndex(windowIndex, indexInfo, option);
77885
77943
  }
77886
77944
 
77887
77945
  //设置指标窗口个数
@@ -78012,7 +78070,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78012
78070
  }
78013
78071
  }
78014
78072
 
78015
- var systemScript = new JSIndexScript();
78073
+
78016
78074
 
78017
78075
  for(var i=0;i<count;++i)
78018
78076
  {
@@ -78047,22 +78105,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78047
78105
  }
78048
78106
  else
78049
78107
  {
78108
+ var systemScript = new JSIndexScript();
78050
78109
  var indexInfo = systemScript.Get(indexID);
78051
78110
  if (indexInfo)
78052
78111
  {
78053
- var args=indexInfo.Args;
78054
- if (item.Args) args=item.Args;
78055
- let indexData =
78056
- {
78057
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexID ,
78058
- //扩展属性 可以是空
78059
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
78060
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
78061
- OutName:indexInfo.OutName
78062
- };
78063
- if (item.TitleFont) indexData.TitleFont=item.TitleFont;
78064
-
78065
- this.WindowIndex[windowIndex]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
78112
+ JSIndexScript.ModifyAttribute(indexInfo,item);
78113
+ this.WindowIndex[windowIndex]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
78066
78114
  }
78067
78115
  }
78068
78116
  }
@@ -78260,7 +78308,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78260
78308
 
78261
78309
  if (IFrameSplitOperator.IsNonEmptyArray(option.Windows)) //切换指标
78262
78310
  {
78263
- var systemScript = new JSIndexScript();
78311
+
78264
78312
  for(var i=0; i<option.Windows.length; ++i)
78265
78313
  {
78266
78314
  var index=2+i;
@@ -78280,12 +78328,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78280
78328
  }
78281
78329
  else
78282
78330
  {
78331
+ var systemScript = new JSIndexScript();
78283
78332
  var indexID=item.Index;
78284
78333
  var indexInfo = systemScript.Get(indexID);
78285
78334
  if (indexInfo)
78286
78335
  {
78287
- var args=indexInfo.Args;
78288
- if (item.Args) indexInfo.Args=item.Args;
78336
+ JSIndexScript.ModifyAttribute(indexInfo,item);
78289
78337
  indexInfo.ID=indexID;
78290
78338
  this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
78291
78339
  }
@@ -129466,7 +129514,7 @@ function HQChartScriptWorker()
129466
129514
 
129467
129515
 
129468
129516
 
129469
- var HQCHART_VERSION="1.1.12934";
129517
+ var HQCHART_VERSION="1.1.12938";
129470
129518
 
129471
129519
  function PrintHQChartVersion()
129472
129520
  {