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.
- package/lib/umychart.vue.js +27 -25
- package/package.json +1 -1
- package/src/jscommon/umychart.index.data.js +1 -0
- package/src/jscommon/umychart.js +98 -51
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +100 -52
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +100 -52
package/lib/umychart.vue.js
CHANGED
|
@@ -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
|
-
|
|
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;}}
|
|
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(
|
|
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;}
|
|
7344
|
-
{this.
|
|
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.
|
|
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(
|
|
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){
|
|
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;
|
|
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;}}
|
|
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){
|
|
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
|
-
{
|
|
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){
|
|
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.
|
|
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
|
@@ -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
|
{
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -554,7 +554,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
554
554
|
}
|
|
555
555
|
|
|
556
556
|
//创建子窗口的指标
|
|
557
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
68410
|
-
|
|
68411
|
-
|
|
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 (
|
|
68929
|
+
if (IFrameSplitOperator.IsNonEmptyArray(option.Windows))
|
|
68857
68930
|
{
|
|
68858
68931
|
var windows=option.Windows;
|
|
68859
|
-
|
|
68860
|
-
for(var i
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
73819
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
72601
|
-
|
|
72602
|
-
|
|
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 (
|
|
73121
|
+
if (IFrameSplitOperator.IsNonEmptyArray(option.Windows))
|
|
73048
73122
|
{
|
|
73049
73123
|
var windows=option.Windows;
|
|
73050
|
-
|
|
73051
|
-
for(var i
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
78010
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
129359
|
+
var HQCHART_VERSION="1.1.12938";
|
|
129312
129360
|
|
|
129313
129361
|
function PrintHQChartVersion()
|
|
129314
129362
|
{
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
72645
|
-
|
|
72646
|
-
|
|
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 (
|
|
73165
|
+
if (IFrameSplitOperator.IsNonEmptyArray(option.Windows))
|
|
73092
73166
|
{
|
|
73093
73167
|
var windows=option.Windows;
|
|
73094
|
-
|
|
73095
|
-
for(var i
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
78054
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
129517
|
+
var HQCHART_VERSION="1.1.12938";
|
|
129470
129518
|
|
|
129471
129519
|
function PrintHQChartVersion()
|
|
129472
129520
|
{
|