hqchart 1.1.12920 → 1.1.12928
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 +19 -17
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +30 -2
- package/src/jscommon/umychart.index.data.js +3 -2
- package/src/jscommon/umychart.js +54 -40
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +88 -45
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +88 -45
package/lib/umychart.vue.js
CHANGED
|
@@ -49,7 +49,8 @@ JSNetwork.HttpReqeust=function(obj) //对请求进行封装
|
|
|
49
49
|
StringFormat: 1=带单位万/亿 2=原始格式
|
|
50
50
|
Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
|
|
51
51
|
OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
|
|
52
|
-
SplitType: Y
|
|
52
|
+
SplitType: Y轴分割类型,
|
|
53
|
+
YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
|
|
53
54
|
*///周期条件枚举
|
|
54
55
|
var CONDITION_PERIOD={MINUTE_ID:101,//分钟 走势图
|
|
55
56
|
MULTIDAY_MINUTE_ID:102,//多日分钟 走势图
|
|
@@ -373,7 +374,7 @@ STICKLINE(SS == -1 OR SM <= -1 AND SS == 0, B1, C, 10, 0), COLORCYAN;\n\
|
|
|
373
374
|
STICKLINE(SS == 2, B2, C, 10, 1), COLORRED;\n\
|
|
374
375
|
STICKLINE(SS == -2, B2, C, 10, 0), COLORCYAN;\n\
|
|
375
376
|
STICKLINE((SS == -1 OR SS == -2) AND SM > 0, B2, B1, 10, 1), COLORRED;\n\
|
|
376
|
-
STICKLINE((SS == 1 OR SS == 2) AND SM < 0, B2, B1, 10, 0), COLORCYAN;'};return data;};JSIndexScript.prototype.AMO=function(){var data={Name:'AMO',Description:'成交金额',IsMainIndex:false,Args:[{Name:'M1',Value:5},{Name:'M2',Value:10}],Script://脚本
|
|
377
|
+
STICKLINE((SS == 1 OR SS == 2) AND SM < 0, B2, B1, 10, 0), COLORCYAN;'};return data;};JSIndexScript.prototype.AMO=function(){var data={Name:'AMO',Description:'成交金额',IsMainIndex:false,StringFormat:2,YAxis:{FloatPrecision:0,StringFormat:2},Args:[{Name:'M1',Value:5},{Name:'M2',Value:10}],Script://脚本
|
|
377
378
|
'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
|
|
378
379
|
AMO1:MA(AMOW,M1);\n\
|
|
379
380
|
AMO2:MA(AMOW,M2);'};return data;};JSIndexScript.prototype.VRSI=function(){var data={Name:'VRSI',Description:'相对强弱量',IsMainIndex:false,Args:[{Name:'N1',Value:6},{Name:'N2',Value:12},{Name:'N3',Value:24}],Script://脚本
|
|
@@ -1385,7 +1386,7 @@ var scriptData=new JSIndexScript();if(option.ColorIndex)//五彩K线
|
|
|
1385
1386
|
}else if(item.JsonData){chart.WindowIndex[i]=new JsonDataIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
1386
1387
|
}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:指标执行地址 }
|
|
1387
1388
|
{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;if(item.Lock)_indexInfo2.Lock=item.Lock;_indexInfo2.ID=item.Index;var args=_indexInfo2.Args;if(item.Args)args=item.Args;if(item.IsShortTitle)_indexInfo2.IsShortTitle=item.IsShortTitle;if(item.TitleFont)_indexInfo2.TitleFont=item.TitleFont;if(IFrameSplitOperator.IsBool(item.IsSync))_indexInfo2.IsSync=item.IsSync;chart.WindowIndex[i]=new ScriptIndex(_indexInfo2.Name,_indexInfo2.Script,args,_indexInfo2);//脚本执行
|
|
1388
|
-
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;}}//叠加指标宽度
|
|
1389
|
+
if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;if(item.YAxis){if(!_indexInfo2.YAxis)_indexInfo2.YAxis={};if(IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision))_indexInfo2.YAxis.FloatPrecision=item.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(item.YAxis.StringFormat))_indexInfo2.YAxis.StringFormat=item.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(item.YAxis.EnableRemoveZero))_indexInfo2.YAxis.EnableRemoveZero=item.YAxis.EnableRemoveZero;}}}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;}}//叠加指标宽度
|
|
1389
1390
|
if(option.OverlayIndexFrameWidth>40)chart.Frame.FixedRightWidth.Overlay=option.OverlayIndexFrameWidth;//叠加指标
|
|
1390
1391
|
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线图
|
|
1391
1392
|
this.CreateCustomKLineChartContainer=function(option){var chart=new CustomKLineChartContainer(this.CanvasElement);//创建改参数div
|
|
@@ -2074,8 +2075,7 @@ this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();thi
|
|
|
2074
2075
|
this.Draw();return index;};//增加一个指标窗口
|
|
2075
2076
|
this.AddIndexWindow=function(indexName,option){//查找系统指标
|
|
2076
2077
|
var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;this.RemoveMinSizeWindows();//清空隐藏的指标
|
|
2077
|
-
var index=this.AddNewSubFrame(option);
|
|
2078
|
-
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(option.Lock)indexData.Lock=option.Lock;}this.WindowIndex[index]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
|
|
2078
|
+
var index=this.AddNewSubFrame(option);if(option){if(option.FloatPrecision>=0)indexInfo.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)indexInfo.StringFormat=option.StringFormat;if(option.Args)indexInfo.Args=option.Args;if(option.Lock)indexInfo.Lock=option.Lock;if(option.YAxis){indexInfo.YAxis={};if(IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision))indexInfo.YAxis.FloatPrecision=option.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(option.YAxis.StringFormat))indexInfo.YAxis.StringFormat=option.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero))indexInfo.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;}}this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
2079
2079
|
if(this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer")var bindData=this.SourceData;else var bindData=this.ChartPaint[0].Data;this.BindIndexData(index,bindData);//执行脚本
|
|
2080
2080
|
};this.AddAPIIndexWindow=function(indexData,option){if(!indexData.API)return;this.RemoveMinSizeWindows();//清空隐藏的指标
|
|
2081
2081
|
var index=this.AddNewSubFrame(option);//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
|
|
@@ -4966,7 +4966,7 @@ PAGE_LAST_OVERLAY_INDEX_VALUE_ID:5//叠加指标前屏最后一个数据刻度
|
|
|
4966
4966
|
this.Frame;//框架信息
|
|
4967
4967
|
this.FrameSplitData;//坐标轴分割方法
|
|
4968
4968
|
this.SplitCount=5;//刻度个数
|
|
4969
|
-
this.StringFormat=0;//刻度字符串格式
|
|
4969
|
+
this.StringFormat=0;//刻度字符串格式 2=原始格式
|
|
4970
4970
|
this.IsShowLeftText=true;//显示左边刻度
|
|
4971
4971
|
this.IsShowRightText=true;//显示右边刻度
|
|
4972
4972
|
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;this.GetEventCallback;//事件回调
|
|
@@ -4993,7 +4993,8 @@ if(IFrameSplitOperator.IsNumber(option.LineType))info.LineType=option.LineType;i
|
|
|
4993
4993
|
if(!pageInfo)return;if(!this.OverlayIndex)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.OverlayIndex.ChartPaint))return;var event=null;if(this.GetEventCallback)event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_OVERLAY_INDEX_Y_LABEL);var endIndex=pageInfo.End.Index;var floatPrecision=2;if(IFrameSplitOperator.IsNumber(this.FloatPrecision))floatPrecision=this.FloatPrecision;for(var i=0,j=0;i<this.OverlayIndex.ChartPaint.length;++i){var chart=this.OverlayIndex.ChartPaint[i];if(!chart.ChartFrame)continue;if(!chart.GetItemData)continue;var aryItem=chart.GetItemData({Index:endIndex});if(!IFrameSplitOperator.IsNonEmptyArray(aryItem))continue;for(j=0;j<aryItem.length;++j){var item=aryItem[j];var info=new CoordinateInfo();info.Type=1;info.TextColor=g_JSChartResource.FrameLatestPrice.TextColor;info.LineColor=item.Color;info.LineType=-1;//默认不画线
|
|
4994
4994
|
info.IsLast=pageInfo.IsLast;//是否是最后一个数据
|
|
4995
4995
|
if(IFrameSplitOperator.IsNumber(option.LineType))info.LineType=option.LineType;info.Value=item.Value;var text=IFrameSplitOperator.FormatValueString(item.Value,floatPrecision,this.LanguageID);if(option.Position=='left')info.Message[0]=text;else info.Message[1]=text;if(!pageInfo.IsLast){var config={};if(!pageInfo.IsLast)config.EmptyBGColor=g_JSChartResource.FrameLatestPrice.EmptyBGColor;info.ExtendData={Custom:config};}if(event){var sendData={PreventDefault:false,Label:info,Data:item,IndexName:chart.IndexName,OverlayIdentify:this.OverlayIndex.Identify};event.Callback(event,sendData,this);if(sendData.PreventDefault)continue;}this.Frame.CustomHorizontalInfo.push(info);}}},//回调外部处理自定义Y轴刻度
|
|
4996
|
-
this.InvokeCustomYCoordinateCallback=function(){if(!this.GetEventCallback)return null;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_CUSTOM_Y_COORDINATE);if(!event||!event.Callback)return null;var data={ID:this.Frame.Identify,Frame:this.Frame,PreventDefault:false,Custom:this.Custom};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);return data;};
|
|
4996
|
+
this.InvokeCustomYCoordinateCallback=function(){if(!this.GetEventCallback)return null;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_CUSTOM_Y_COORDINATE);if(!event||!event.Callback)return null;var data={ID:this.Frame.Identify,Frame:this.Frame,PreventDefault:false,Custom:this.Custom};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);return data;};this.Reset=function()//重置
|
|
4997
|
+
{};}//字符串格式化 千分位分割
|
|
4997
4998
|
IFrameSplitOperator.FormatValueThousandsString=function(value,floatPrecision){if(value==null||isNaN(value)){if(floatPrecision>0){var nullText='-.';for(var i=0;i<floatPrecision;++i){nullText+='-';}return nullText;}return'--';}var result='';var num=value.toFixed(floatPrecision);if(floatPrecision>0){var numFloat=num.split('.')[1];var numM=num.split('.')[0];while(numM.length>3){result=','+numM.slice(-3)+result;numM=numM.slice(0,numM.length-3);}if(numM){result=numM+result+'.'+numFloat;}}else{while(num.length>3){result=','+num.slice(-3)+result;num=num.slice(0,num.length-3);}if(num){result=num+result;}}return result;};//数据输出格式化 floatPrecision=小数位数
|
|
4998
4999
|
IFrameSplitOperator.FormatValueString=function(value,floatPrecision,languageID){/*
|
|
4999
5000
|
if (value==null || isNaN(value))
|
|
@@ -5170,7 +5171,8 @@ coordinate.Message[1]=IFrameSplitOperator.FormatValueString(value,floatPrecision
|
|
|
5170
5171
|
//this.Frame.HorizontalInfo[i].TextColor="rgb(100,0,200)";
|
|
5171
5172
|
//this.Frame.HorizontalInfo[i].LineColor="rgb(220,220,220)";
|
|
5172
5173
|
}}this.FilterIgnoreYValue();this.CustomCoordinate();if(this.SplitType!=1)this.Frame.HorizontalInfo=this.Filter(this.Frame.HorizontalInfo,splitData.Max>0&&splitData.Min<0);this.RightFrameSplitY();this.CallAcutionSplitY(this.SplitCount,splitData);if(this.EnableRemoveZero)this.RemoveZero(this.Frame.HorizontalInfo);this.DynamicMessageText();this.Frame.HorizontalMax=splitData.Max;this.Frame.HorizontalMin=splitData.Min;if(this.EnableZoomUpDown==true&&!this.FixedYMaxMin)this.FixedYMaxMin={Max:splitData.Max,Min:splitData.Min};if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);}}};this.FormatValueString=function(value){var text;if(this.StringFormat==1)//手机端格式 如果有万,亿单位了 去掉小数
|
|
5173
|
-
{var floatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(value)&&Math.abs(value)>1000)floatPrecision=0;text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}else
|
|
5174
|
+
{var floatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(value)&&Math.abs(value)>1000)floatPrecision=0;text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}else if(this.StringFormat==2)//原始数据输出
|
|
5175
|
+
{text=''+value.toFixed(this.FloatPrecision);}else{var absValue=Math.abs(value);if(absValue<0.0000000001){text=0;}else if(absValue<this.FLOATPRECISION_RANGE[this.FLOATPRECISION_RANGE.length-1]){text=value.toExponential(2).toString();}else{var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision);//数据比小数位数还小, 调整小数位数
|
|
5174
5176
|
text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}}return text;};this.FilterIgnoreYValue=function(){if(!this.IgnoreYValue||this.IgnoreYValue.length<=0)return;var setValue=new _set2.default(this.IgnoreYValue);this.Frame.HorizontalInfo=this.Frame.HorizontalInfo.filter(function(item){return!setValue.has(item.Value);});};this.DynamicMessageText=function(){if(this.SplitType==2){for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];if(item.Message[0])item.Message[0]+='%';if(item.Message[1])item.Message[1]+='%';}}};this.CallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var aryCallAcution=this.GetCallAcutionSplitY(count,splitData);if(!aryCallAcution)return;for(var i=0;i<this.Frame.HorizontalInfo.length;++i)//把显示的数据迁移到 Message[2] Message[3]
|
|
5175
5177
|
{var item=this.Frame.HorizontalInfo[i];if(aryCallAcution.IsBeforeData){item.Message[2]=item.Message[0];item.Message[0]=null;}if(aryCallAcution.IsAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){item.Message[3]=item.Message[1];item.Message[1]=null;}}//集合竞价的坐标插入最后
|
|
5176
5178
|
for(var i=0;i<aryCallAcution.HorizontalInfo.length;++i){var item=aryCallAcution.HorizontalInfo[i];this.Frame.HorizontalInfo.push(item);}};this.GetCallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var isBeforeData=this.IsBeforeData==true&&this.BeforeOpenData&&(this.BeforeOpenData.Ver==2.0||this.BeforeOpenData.Ver==3.0);var isAfterData=this.IsAfterData==true&&this.AfterCloseData&&(this.AfterCloseData.Ver==2.0||this.AfterCloseData.Ver==3.0);if(isBeforeData||isAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);if(isBeforeData)var intervalLeft=(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)/(count-1);if(isAfterData)var intervalRight=(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=8;if(isBeforeData){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);}if(isAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);}aryHorizontalInfo.push(item);}return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isBeforeData,IsAfterData:isAfterData};}var isMultiDayBeforeData=false;var intervalLeft=null;if(this.MultiDayBeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){isMultiDayBeforeData=true;var firstDayData=this.MultiDayBeforeOpenData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalLeft=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}var isMultiDayAfterData=false;var intervalRight=null;if(this.MultiDayAfterCloseData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){isMultiDayAfterData=true;var firstDayData=this.MultiDayAfterCloseData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalRight=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}if(isMultiDayBeforeData||isMultiDayAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=9;var isVaild=false;if(intervalLeft!=null){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);isVaild=true;}if(intervalRight!=null&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);isVaild=true;}if(isVaild)aryHorizontalInfo.push(item);}if(IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isMultiDayBeforeData,IsAfterData:isMultiDayAfterData};}return null;};this.RightFrameSplitY=function(){if(!this.Frame.RightFrame)return;var rightFrame=this.Frame.RightFrame;if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}};this.CustomCoordinate=function(){this.Frame.CustomHorizontalInfo=[];var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Custom))return;for(var i=0;i<this.Custom.length;++i){var item=this.Custom[i];if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_INDEX_VALUE_ID)//当前屏最后一个数据
|
|
@@ -7293,9 +7295,8 @@ if(IFrameSplitOperator.IsBool(obj.IsShareY))frame.IsShareY=obj.IsShareY;if(IFram
|
|
|
7293
7295
|
frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=frame.ChartBorder;frame.YSplitOperator.SplitCount=subFrame.Frame.YSplitOperator.SplitCount;frame.YSplitOperator.GetEventCallback=function(id){return _this21.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this21.GetKLineChart();};frame.YSplitOperator.OverlayIndex=overlayFrame;frame.YSplitOperator.HQChart=this;frame.YSplitOperator.OverlayIdentify=overlayFrame.Identify;if(obj.Frame){var item=obj.Frame;if(item.Custom)frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsBool(item.IsYDrawMainFrame))frame.IsYDrawMainFrame=item.IsYDrawMainFrame;//自定义刻度绘制在主图上
|
|
7294
7296
|
if(IFrameSplitOperator.IsBool(item.IsShowToolbar))frame.IsShowToolbar=item.IsShowToolbar;//是否显示工具栏
|
|
7295
7297
|
}overlayFrame.Frame=frame;if(apiItem){var apiIndex=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,obj,true);apiIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
7296
|
-
overlayFrame.Script=apiIndex;}else if(indexInfo){
|
|
7297
|
-
var
|
|
7298
|
-
KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitScale:indexInfo.YSplitScale,FloatPrecision:indexInfo.FloatPrecision,Condition:indexInfo.Condition,OutName:indexInfo.OutName};if(IFrameSplitOperator.IsNumber(obj.FloatPrecision))indexData.FloatPrecision=obj.FloatPrecision;if(IFrameSplitOperator.IsNumber(obj.StringFormat))indexData.StringFormat=obj.StringFormat;if(IFrameSplitOperator.IsBool(obj.IsSync))indexData.IsSync=obj.IsSync;var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
|
|
7298
|
+
overlayFrame.Script=apiIndex;}else if(indexInfo){if(obj.Args)indexInfo.Args=obj.Args;//外部可以设置参数
|
|
7299
|
+
if(IFrameSplitOperator.IsNumber(obj.FloatPrecision))indexInfo.FloatPrecision=obj.FloatPrecision;if(IFrameSplitOperator.IsNumber(obj.StringFormat))indexInfo.StringFormat=obj.StringFormat;if(IFrameSplitOperator.IsBool(obj.IsSync))indexInfo.IsSync=obj.IsSync;if(obj.YAxis){if(!indexInfo.YAxis)indexInfo.YAxis={};if(IFrameSplitOperator.IsNumber(obj.YAxis.FloatPrecision))indexInfo.YAxis.FloatPrecision=obj.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(obj.YAxis.StringFormat))indexInfo.YAxis.StringFormat=obj.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(obj.YAxis.EnableRemoveZero))indexInfo.YAxis.EnableRemoveZero=obj.YAxis.EnableRemoveZero;}var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
7299
7300
|
scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
7300
7301
|
overlayFrame.Script=scriptIndex;}else{var scriptIndex=indexCustom.Create();scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
7301
7302
|
scriptIndex.Create(this,windowIndex);overlayFrame.Script=scriptIndex;}var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_OVERLAY_FRAME);if(event&&event.Callback){var sendData={OverlayFrame:overlayFrame,WindowIndex:windowIndex,SubFrame:subFrame};event.Callback(event,sendData,this);}subFrame.OverlayIndex.push(overlayFrame);return overlayFrame;};this.DeleteOverlayWindowsIndex=function(identify)//删除叠加指标
|
|
@@ -7334,8 +7335,7 @@ for(var i=0;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.S
|
|
|
7334
7335
|
{var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this23.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}}var systemScript=new JSIndexScript();for(var i=0;i<count;++i){var windowIndex=i;var item=option.Windows[i];var frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[i];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;if(item.Script)//自定义指标脚本
|
|
7335
7336
|
{this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
7336
7337
|
}else if(item.API)//后台指标
|
|
7337
|
-
{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){var args=indexInfo.Args;if(option.Windows[i].Args)args=option.Windows[i].Args;
|
|
7338
|
-
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[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
|
|
7338
|
+
{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){var args=indexInfo.Args;if(option.Windows[i].Args)args=option.Windows[i].Args;if(item.TitleFont)indexInfo.TitleFont=item.TitleFont;if(item.IsShortTitle)indexInfo.IsShortTitle=item.IsShortTitle;if(IFrameSplitOperator.IsBool(item.IsSync))indexInfo.IsSync=item.IsSync;if(item.YAxis){if(!indexInfo.YAxis)indexInfo.YAxis={};if(IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision))indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(item.YAxis.StringFormat))indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;}this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo);//脚本执行
|
|
7339
7339
|
}}}this.SetSubFrameAttribute(this.Frame.SubFrame[i],item,frameItem);}//最后一个显示X轴坐标
|
|
7340
7340
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}if(!bRefreshData){var bindData=this.ChartPaint[0].Data;for(var i=0;i<count;++i)//请求指标
|
|
7341
7341
|
{this.BindIndexData(i,bindData);}this.UpdataDataoffset();//更新数据偏移
|
|
@@ -11385,6 +11385,7 @@ this.LockCallback=null;this.LockID=null;this.LockBG=null;//锁背景色
|
|
|
11385
11385
|
this.LockTextColor=null;this.LockText=null;this.LockFont=null;this.LockCount=20;this.LockMinWidth=null;this.TitleFont=g_JSChartResource.TitleFont;//标题字体
|
|
11386
11386
|
this.IsShortTitle=false;//是否显示指标参数
|
|
11387
11387
|
this.IsUsePageData=false;//是否使用了K线界面数据
|
|
11388
|
+
this.YAxis=null;//Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
|
|
11388
11389
|
//调试信息
|
|
11389
11390
|
this.Debug;// { Callback:, Count: }
|
|
11390
11391
|
this.IsSync=false;//是否是同步计算 (无数据请求)
|
|
@@ -11394,7 +11395,7 @@ this.MaxRunCount=-1;//最大执行次数 -1=无限
|
|
|
11394
11395
|
if(option){if(option.FloatPrecision>=0)this.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)this.StringFormat=option.StringFormat;if(option.ID)this.ID=option.ID;if(option.KLineType>=0||option.KLineType===-1)this.KLineType=option.KLineType;if(option.InstructionType)this.InstructionType=option.InstructionType;if(option.YSpecificMaxMin)this.YSpecificMaxMin=option.YSpecificMaxMin;if(option.YSplitScale)this.YSplitScale=option.YSplitScale;if(option.Condition)this.Condition=option.Condition;if(option.TitleFont)this.TitleFont=option.TitleFont;if(option.IsShortTitle)this.IsShortTitle=option.IsShortTitle;if(option.OutName)this.OutName=option.OutName;if(IFrameSplitOperator.IsNumber(option.YSplitType))this.YSplitType=option.YSplitType;if(IFrameSplitOperator.IsBool(option.IsSync))this.IsSync=option.IsSync;if(IFrameSplitOperator.IsNumber(option.MaxRunCount))this.MaxRunCount=option.MaxRunCount;if(option.Debug){if(IFrameSplitOperator.IsPlusNumber(option.Debug.Count)&&option.Debug.Callback){this.Debug={Count:option.Debug.Count,Callback:option.Debug.Callback};}}}if(option&&option.Lock){if(option.Lock.IsLocked==true)this.IsLocked=true;//指标上锁
|
|
11395
11396
|
if(option.Lock.Callback)this.LockCallback=option.Lock.Callback;//锁回调
|
|
11396
11397
|
if(option.Lock.ID)this.LockID=option.Lock.ID;//锁ID
|
|
11397
|
-
if(option.Lock.BG)this.LockBG=option.Lock.BG;if(option.Lock.TextColor)this.LockTextColor=option.Lock.TextColor;if(option.Lock.Text)this.LockText=option.Lock.Text;if(option.Lock.Font)this.LockFont=option.Lock.Font;if(option.Lock.Count)this.LockCount=option.Lock.Count;if(option.Lock.MinWidth)this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();}if(args)this.Arguments=args;this.CopyTo=function(dest)//赋值到新实例出来
|
|
11398
|
+
if(option.Lock.BG)this.LockBG=option.Lock.BG;if(option.Lock.TextColor)this.LockTextColor=option.Lock.TextColor;if(option.Lock.Text)this.LockText=option.Lock.Text;if(option.Lock.Font)this.LockFont=option.Lock.Font;if(option.Lock.Count)this.LockCount=option.Lock.Count;if(option.Lock.MinWidth)this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();}if(option&&option.YAxis){this.YAxis={};if(IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision))this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(option.YAxis.StringFormat))this.YAxis.StringFormat=option.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero))this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;}if(args)this.Arguments=args;this.CopyTo=function(dest)//赋值到新实例出来
|
|
11398
11399
|
{dest.FloatPrecision=this.FloatPrecision;dest.StringFormat=this.StringFormat;dest.KLineType=this.KLineType;dest.InstructionType=this.InstructionType;dest.Condition=this.Condition;dest.TitleFont=this.TitleFont;dest.IsShortTitle=this.IsShortTitle;dest.OutName=this.OutName;dest.Arguments=this.Arguments;dest.Script=this.Script;dest.Name=this.Name;dest.ID=this.ID;};this.SetLock=function(lockData){if(lockData.IsLocked==true){this.IsLocked=true;//指标上锁
|
|
11399
11400
|
if(lockData.Callback)this.LockCallback=lockData.Callback;//锁回调
|
|
11400
11401
|
if(lockData.ID)this.LockID=lockData.ID;//锁ID
|
|
@@ -11489,7 +11490,8 @@ return true;}else if(this.InstructionType==1)//交易系统
|
|
|
11489
11490
|
{var buyData,sellData;for(var i in this.OutVar){var _item26=this.OutVar[i];if(_item26.Name=='ENTERLONG')buyData=_item26.Data;else if(_item26.Name=='EXITLONG')sellData=_item26.Data;}hqChart.SetInstructionData(this.InstructionType,{Buy:buyData,Sell:sellData,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
|
|
11490
11491
|
return true;}};this.BindData=function(hqChart,windowIndex,hisData){if(windowIndex==0&&this.InstructionType){this.BindInstructionData(hqChart,windowIndex,hisData);return;}//清空主指标图形
|
|
11491
11492
|
hqChart.DeleteIndexPaint(windowIndex);if(windowIndex==0)hqChart.ShowKLine(true);if(this.OutVar==null||this.OutVar.length<0)return;//叠加一个K线背景
|
|
11492
|
-
if(this.KLineType!=null){if(this.KLineType===0||this.KLineType===1||this.KLineType===2)this.CreateSelfKLine(hqChart,windowIndex,hisData);else if(this.KLineType===-1&&windowIndex==0)hqChart.ShowKLine(false);}if(windowIndex>=1&&hqChart.Frame){
|
|
11493
|
+
if(this.KLineType!=null){if(this.KLineType===0||this.KLineType===1||this.KLineType===2)this.CreateSelfKLine(hqChart,windowIndex,hisData);else if(this.KLineType===-1&&windowIndex==0)hqChart.ShowKLine(false);}if(windowIndex>=1&&hqChart.Frame){//Y轴刻度格式 默认跟标题栏一致
|
|
11494
|
+
var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;ySpliter.FloatPrecision=this.FloatPrecision;if(this.YAxis){if(IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision))ySpliter.FloatPrecision=this.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.YAxis.StringFormat))ySpliter.StringFormat=this.YAxis.StringFormat;}if(this.YSpecificMaxMin)hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin;//最大最小值
|
|
11493
11495
|
if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale;//固定刻度
|
|
11494
11496
|
}if(IFrameSplitOperator.IsNumber(this.YSplitType))hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.SplitType=this.YSplitType;/*
|
|
11495
11497
|
if (this.Name=='MA') //测试多线段
|
|
@@ -11540,7 +11542,7 @@ this.newMethod(name,script,args,option);delete this.newMethod;this.ClassName="Ov
|
|
|
11540
11542
|
this.OverlayIndex=null;// { IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }
|
|
11541
11543
|
//显示指标不符合条件
|
|
11542
11544
|
this.ShowConditionError=function(param,msg){var hqChart=param.HQChart;var windowIndex=param.WindowIndex;var message='指标不支持当前品种或周期';if(msg)message=msg;var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;frame.ChartPaint=[];var chart=new ChartLine();chart.Canvas=hqChart.Canvas;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.NotSupportMessage=message;frame.ChartPaint.push(chart);hqChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){if(!this.OverlayIndex||this.OverlayIndex.IsOverlay!=true)return;this.OverlayIndex.Frame.ChartPaint=[];if(!IFrameSplitOperator.IsNonEmptyArray(this.OutVar))return;//修改Y轴分割方式
|
|
11543
|
-
if(IFrameSplitOperator.IsNumber(this.YSplitType))this.
|
|
11545
|
+
var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;if(IFrameSplitOperator.IsNumber(this.YSplitType))ySpliter.SplitType=this.YSplitType;ySpliter.FloatPrecision=this.FloatPrecision;ySpliter.EnableRemoveZero=true;if(this.YAxis){if(IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision))ySpliter.FloatPrecision=this.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.YAxis.StringFormat))ySpliter.StringFormat=this.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(this.YAxis.EnableRemoveZero))ySpliter.EnableRemoveZero=this.YAxis.EnableRemoveZero;}//指标名字
|
|
11544
11546
|
var titleInfo={Data:[],Title:this.Name,Frame:this.OverlayIndex.Frame.Frame,Script:this};var indexParam='';for(var i in this.Arguments){var _item29=this.Arguments[i];if(indexParam.length>0)indexParam+=',';indexParam+=_item29.Value.toString();}if(indexParam.length>0)titleInfo.Title=this.Name+'('+indexParam+')';var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments,this.OverlayIndex.Identify);}this.OverlayIndex.Frame.Frame.Title=this.Name;//给子框架设置标题
|
|
11545
11547
|
if(hqChart.Frame.SubFrame[windowIndex]){var mainFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(mainFrame)this.OverlayIndex.Frame.Frame.XPointCount=mainFrame.XPointCount;//跟主窗口同步下页面显示数据个数
|
|
11546
11548
|
}for(var i=0;i<this.OutVar.length;++i){var _item30=this.OutVar[i];if(_item30.IsExData===true)continue;//扩展数据不显示图形
|
|
@@ -12801,7 +12803,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
12801
12803
|
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);};}/********************************************************************************
|
|
12802
12804
|
* 版本信息输出
|
|
12803
12805
|
*
|
|
12804
|
-
*/var HQCHART_VERSION="1.1.
|
|
12806
|
+
*/var HQCHART_VERSION="1.1.12927";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();//把给外界调用的方法暴露出来
|
|
12805
12807
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12806
12808
|
// BaseIndex:BaseIndex,
|
|
12807
12809
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -19560,6 +19560,8 @@ function ScriptIndex(name,script,args,option)
|
|
|
19560
19560
|
this.TitleFont=g_JSChartResource.TitleFont; //标题字体
|
|
19561
19561
|
this.IsShortTitle=false; //是否显示指标参数
|
|
19562
19562
|
this.IsUsePageData=false; //是否使用了K线界面数据
|
|
19563
|
+
|
|
19564
|
+
this.YAxis=null; //Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
|
|
19563
19565
|
|
|
19564
19566
|
//调试信息
|
|
19565
19567
|
this.Debug; // { Callback:, Count: }
|
|
@@ -19609,6 +19611,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
19609
19611
|
if (option.Lock.MinWidth) this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();
|
|
19610
19612
|
}
|
|
19611
19613
|
|
|
19614
|
+
if (option && option.YAxis)
|
|
19615
|
+
{
|
|
19616
|
+
this.YAxis={ };
|
|
19617
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
|
|
19618
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) this.YAxis.StringFormat=option.YAxis.StringFormat;
|
|
19619
|
+
if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
|
|
19620
|
+
|
|
19621
|
+
}
|
|
19622
|
+
|
|
19612
19623
|
if (args) this.Arguments=args;
|
|
19613
19624
|
|
|
19614
19625
|
this.CopyTo=function(dest) //赋值到新实例出来
|
|
@@ -21286,7 +21297,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
21286
21297
|
|
|
21287
21298
|
if (windowIndex>=1 && hqChart.Frame)
|
|
21288
21299
|
{
|
|
21289
|
-
|
|
21300
|
+
//Y轴刻度格式 默认跟标题栏一致
|
|
21301
|
+
var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
|
|
21302
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
21303
|
+
if (this.YAxis)
|
|
21304
|
+
{
|
|
21305
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
|
|
21306
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
|
|
21307
|
+
}
|
|
21308
|
+
|
|
21290
21309
|
if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
|
|
21291
21310
|
if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
|
|
21292
21311
|
}
|
|
@@ -21658,7 +21677,16 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
21658
21677
|
if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
|
|
21659
21678
|
|
|
21660
21679
|
//修改Y轴分割方式
|
|
21661
|
-
|
|
21680
|
+
var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;
|
|
21681
|
+
if (IFrameSplitOperator.IsNumber(this.YSplitType)) ySpliter.SplitType=this.YSplitType;
|
|
21682
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
21683
|
+
ySpliter.EnableRemoveZero=true;
|
|
21684
|
+
if (this.YAxis)
|
|
21685
|
+
{
|
|
21686
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
|
|
21687
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
|
|
21688
|
+
if (IFrameSplitOperator.IsBool(this.YAxis.EnableRemoveZero)) ySpliter.EnableRemoveZero=this.YAxis.EnableRemoveZero;
|
|
21689
|
+
}
|
|
21662
21690
|
|
|
21663
21691
|
//指标名字
|
|
21664
21692
|
var titleInfo={ Data:[], Title:this.Name, Frame:this.OverlayIndex.Frame.Frame, Script:this };
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
StringFormat: 1=带单位万/亿 2=原始格式
|
|
26
26
|
Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
|
|
27
27
|
OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
|
|
28
|
-
SplitType: Y
|
|
28
|
+
SplitType: Y轴分割类型,
|
|
29
|
+
YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
|
|
29
30
|
*/
|
|
30
31
|
|
|
31
32
|
//周期条件枚举
|
|
@@ -1581,7 +1582,7 @@ JSIndexScript.prototype.AMO = function ()
|
|
|
1581
1582
|
{
|
|
1582
1583
|
let data =
|
|
1583
1584
|
{
|
|
1584
|
-
Name: 'AMO', Description: '成交金额', IsMainIndex: false,
|
|
1585
|
+
Name: 'AMO', Description: '成交金额', IsMainIndex: false, StringFormat:2, YAxis:{ FloatPrecision:0, StringFormat:2 },
|
|
1585
1586
|
Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 }],
|
|
1586
1587
|
Script: //脚本
|
|
1587
1588
|
'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -622,6 +622,14 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
622
622
|
chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, args,indexInfo); //脚本执行
|
|
623
623
|
if (item.StringFormat>0) chart.WindowIndex[i].StringFormat=item.StringFormat;
|
|
624
624
|
if (item.FloatPrecision>=0) chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;
|
|
625
|
+
|
|
626
|
+
if (item.YAxis)
|
|
627
|
+
{
|
|
628
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
629
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
|
|
630
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
|
|
631
|
+
if (IFrameSplitOperator.IsBool(item.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.YAxis.EnableRemoveZero;
|
|
632
|
+
}
|
|
625
633
|
}
|
|
626
634
|
|
|
627
635
|
}
|
|
@@ -8062,7 +8070,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8062
8070
|
subFrame.Frame.IsShowYText[1]=option.IsShowRightText;
|
|
8063
8071
|
subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText; //显示右边刻度
|
|
8064
8072
|
}
|
|
8065
|
-
|
|
8066
8073
|
}
|
|
8067
8074
|
|
|
8068
8075
|
this.AddNewSubFrame=function(option)
|
|
@@ -8110,24 +8117,22 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8110
8117
|
this.RemoveMinSizeWindows(); //清空隐藏的指标
|
|
8111
8118
|
var index=this.AddNewSubFrame(option);
|
|
8112
8119
|
|
|
8113
|
-
var indexData =
|
|
8114
|
-
{
|
|
8115
|
-
Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName ,
|
|
8116
|
-
//扩展属性 可以是空
|
|
8117
|
-
KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
|
|
8118
|
-
FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,
|
|
8119
|
-
OutName:indexInfo.OutName
|
|
8120
|
-
};
|
|
8121
|
-
|
|
8122
8120
|
if (option)
|
|
8123
8121
|
{
|
|
8124
|
-
if (option.FloatPrecision>=0)
|
|
8125
|
-
if (option.StringFormat>0)
|
|
8126
|
-
if (option.Args)
|
|
8127
|
-
if (option.Lock)
|
|
8122
|
+
if (option.FloatPrecision>=0) indexInfo.FloatPrecision=option.FloatPrecision;
|
|
8123
|
+
if (option.StringFormat>0) indexInfo.StringFormat=option.StringFormat;
|
|
8124
|
+
if (option.Args) indexInfo.Args=option.Args;
|
|
8125
|
+
if (option.Lock) indexInfo.Lock=option.Lock;
|
|
8126
|
+
if (option.YAxis)
|
|
8127
|
+
{
|
|
8128
|
+
indexInfo.YAxis={ };
|
|
8129
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
|
|
8130
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=option.YAxis.StringFormat;
|
|
8131
|
+
if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
|
|
8132
|
+
}
|
|
8128
8133
|
}
|
|
8129
8134
|
|
|
8130
|
-
this.WindowIndex[index] = new ScriptIndex(
|
|
8135
|
+
this.WindowIndex[index] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
|
|
8131
8136
|
if (this.ClassName=="MinuteChartContainer" || this.ClassName=="MinuteChartHScreenContainer")
|
|
8132
8137
|
var bindData=this.SourceData;
|
|
8133
8138
|
else
|
|
@@ -42777,7 +42782,7 @@ function IFrameSplitOperator()
|
|
|
42777
42782
|
this.Frame; //框架信息
|
|
42778
42783
|
this.FrameSplitData; //坐标轴分割方法
|
|
42779
42784
|
this.SplitCount=5; //刻度个数
|
|
42780
|
-
this.StringFormat=0; //刻度字符串格式
|
|
42785
|
+
this.StringFormat=0; //刻度字符串格式 2=原始格式
|
|
42781
42786
|
this.IsShowLeftText=true; //显示左边刻度
|
|
42782
42787
|
this.IsShowRightText=true; //显示右边刻度
|
|
42783
42788
|
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
|
|
@@ -43120,6 +43125,11 @@ function IFrameSplitOperator()
|
|
|
43120
43125
|
|
|
43121
43126
|
return data;
|
|
43122
43127
|
}
|
|
43128
|
+
|
|
43129
|
+
this.Reset=function() //重置
|
|
43130
|
+
{
|
|
43131
|
+
|
|
43132
|
+
}
|
|
43123
43133
|
}
|
|
43124
43134
|
|
|
43125
43135
|
//字符串格式化 千分位分割
|
|
@@ -44594,6 +44604,10 @@ function FrameSplitY()
|
|
|
44594
44604
|
if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
|
|
44595
44605
|
text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
|
|
44596
44606
|
}
|
|
44607
|
+
else if (this.StringFormat==2) //原始数据输出
|
|
44608
|
+
{
|
|
44609
|
+
text=`${value.toFixed(this.FloatPrecision)}`;
|
|
44610
|
+
}
|
|
44597
44611
|
else
|
|
44598
44612
|
{
|
|
44599
44613
|
var absValue=Math.abs(value);
|
|
@@ -67778,6 +67792,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
67778
67792
|
this.Draw();
|
|
67779
67793
|
}
|
|
67780
67794
|
|
|
67795
|
+
|
|
67781
67796
|
this.OnKLinePageChange=function(eventid)
|
|
67782
67797
|
{
|
|
67783
67798
|
if (!this.ChartPaint[0]) return;
|
|
@@ -68003,21 +68018,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
68003
68018
|
}
|
|
68004
68019
|
else if (indexInfo)
|
|
68005
68020
|
{
|
|
68006
|
-
|
|
68007
|
-
if (obj.
|
|
68008
|
-
|
|
68009
|
-
|
|
68010
|
-
|
|
68011
|
-
|
|
68012
|
-
|
|
68013
|
-
|
|
68014
|
-
|
|
68015
|
-
|
|
68021
|
+
if (obj.Args) indexInfo.Args=obj.Args; //外部可以设置参数
|
|
68022
|
+
if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexInfo.FloatPrecision=obj.FloatPrecision;
|
|
68023
|
+
if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexInfo.StringFormat=obj.StringFormat;
|
|
68024
|
+
if (IFrameSplitOperator.IsBool(obj.IsSync)) indexInfo.IsSync=obj.IsSync;
|
|
68025
|
+
if (obj.YAxis)
|
|
68026
|
+
{
|
|
68027
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
68028
|
+
if (IFrameSplitOperator.IsNumber(obj.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=obj.YAxis.FloatPrecision;
|
|
68029
|
+
if (IFrameSplitOperator.IsNumber(obj.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=obj.YAxis.StringFormat;
|
|
68030
|
+
if (IFrameSplitOperator.IsBool(obj.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=obj.YAxis.EnableRemoveZero;
|
|
68031
|
+
}
|
|
68016
68032
|
|
|
68017
|
-
|
|
68018
|
-
if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexData.StringFormat=obj.StringFormat;
|
|
68019
|
-
if (IFrameSplitOperator.IsBool(obj.IsSync)) indexData.IsSync=obj.IsSync;
|
|
68020
|
-
var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
|
|
68033
|
+
var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
68021
68034
|
scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
|
|
68022
68035
|
overlayFrame.Script=scriptIndex;
|
|
68023
68036
|
}
|
|
@@ -68388,17 +68401,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
68388
68401
|
{
|
|
68389
68402
|
var args=indexInfo.Args;
|
|
68390
68403
|
if (option.Windows[i].Args) args=option.Windows[i].Args;
|
|
68391
|
-
|
|
68392
|
-
|
|
68393
|
-
|
|
68394
|
-
|
|
68395
|
-
|
|
68396
|
-
|
|
68397
|
-
|
|
68398
|
-
|
|
68399
|
-
|
|
68404
|
+
if (item.TitleFont) indexInfo.TitleFont=item.TitleFont;
|
|
68405
|
+
if (item.IsShortTitle) indexInfo.IsShortTitle=item.IsShortTitle;
|
|
68406
|
+
if (IFrameSplitOperator.IsBool(item.IsSync)) indexInfo.IsSync=item.IsSync;
|
|
68407
|
+
|
|
68408
|
+
if (item.YAxis)
|
|
68409
|
+
{
|
|
68410
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
68411
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
|
|
68412
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
|
|
68413
|
+
}
|
|
68400
68414
|
|
|
68401
|
-
this.WindowIndex[i]=new ScriptIndex(
|
|
68415
|
+
this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo); //脚本执行
|
|
68402
68416
|
}
|
|
68403
68417
|
}
|
|
68404
68418
|
}
|
|
@@ -37,7 +37,8 @@ var JSConsole=
|
|
|
37
37
|
StringFormat: 1=带单位万/亿 2=原始格式
|
|
38
38
|
Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
|
|
39
39
|
OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
|
|
40
|
-
SplitType: Y
|
|
40
|
+
SplitType: Y轴分割类型,
|
|
41
|
+
YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
|
|
41
42
|
*/
|
|
42
43
|
|
|
43
44
|
//周期条件枚举
|
|
@@ -1593,7 +1594,7 @@ JSIndexScript.prototype.AMO = function ()
|
|
|
1593
1594
|
{
|
|
1594
1595
|
let data =
|
|
1595
1596
|
{
|
|
1596
|
-
Name: 'AMO', Description: '成交金额', IsMainIndex: false,
|
|
1597
|
+
Name: 'AMO', Description: '成交金额', IsMainIndex: false, StringFormat:2, YAxis:{ FloatPrecision:0, StringFormat:2 },
|
|
1597
1598
|
Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 }],
|
|
1598
1599
|
Script: //脚本
|
|
1599
1600
|
'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
|
|
@@ -4789,6 +4790,14 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4789
4790
|
chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, args,indexInfo); //脚本执行
|
|
4790
4791
|
if (item.StringFormat>0) chart.WindowIndex[i].StringFormat=item.StringFormat;
|
|
4791
4792
|
if (item.FloatPrecision>=0) chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;
|
|
4793
|
+
|
|
4794
|
+
if (item.YAxis)
|
|
4795
|
+
{
|
|
4796
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
4797
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
|
|
4798
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
|
|
4799
|
+
if (IFrameSplitOperator.IsBool(item.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.YAxis.EnableRemoveZero;
|
|
4800
|
+
}
|
|
4792
4801
|
}
|
|
4793
4802
|
|
|
4794
4803
|
}
|
|
@@ -12229,7 +12238,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12229
12238
|
subFrame.Frame.IsShowYText[1]=option.IsShowRightText;
|
|
12230
12239
|
subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText; //显示右边刻度
|
|
12231
12240
|
}
|
|
12232
|
-
|
|
12233
12241
|
}
|
|
12234
12242
|
|
|
12235
12243
|
this.AddNewSubFrame=function(option)
|
|
@@ -12277,24 +12285,22 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12277
12285
|
this.RemoveMinSizeWindows(); //清空隐藏的指标
|
|
12278
12286
|
var index=this.AddNewSubFrame(option);
|
|
12279
12287
|
|
|
12280
|
-
var indexData =
|
|
12281
|
-
{
|
|
12282
|
-
Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName ,
|
|
12283
|
-
//扩展属性 可以是空
|
|
12284
|
-
KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
|
|
12285
|
-
FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,
|
|
12286
|
-
OutName:indexInfo.OutName
|
|
12287
|
-
};
|
|
12288
|
-
|
|
12289
12288
|
if (option)
|
|
12290
12289
|
{
|
|
12291
|
-
if (option.FloatPrecision>=0)
|
|
12292
|
-
if (option.StringFormat>0)
|
|
12293
|
-
if (option.Args)
|
|
12294
|
-
if (option.Lock)
|
|
12290
|
+
if (option.FloatPrecision>=0) indexInfo.FloatPrecision=option.FloatPrecision;
|
|
12291
|
+
if (option.StringFormat>0) indexInfo.StringFormat=option.StringFormat;
|
|
12292
|
+
if (option.Args) indexInfo.Args=option.Args;
|
|
12293
|
+
if (option.Lock) indexInfo.Lock=option.Lock;
|
|
12294
|
+
if (option.YAxis)
|
|
12295
|
+
{
|
|
12296
|
+
indexInfo.YAxis={ };
|
|
12297
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
|
|
12298
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=option.YAxis.StringFormat;
|
|
12299
|
+
if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
|
|
12300
|
+
}
|
|
12295
12301
|
}
|
|
12296
12302
|
|
|
12297
|
-
this.WindowIndex[index] = new ScriptIndex(
|
|
12303
|
+
this.WindowIndex[index] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
|
|
12298
12304
|
if (this.ClassName=="MinuteChartContainer" || this.ClassName=="MinuteChartHScreenContainer")
|
|
12299
12305
|
var bindData=this.SourceData;
|
|
12300
12306
|
else
|
|
@@ -46944,7 +46950,7 @@ function IFrameSplitOperator()
|
|
|
46944
46950
|
this.Frame; //框架信息
|
|
46945
46951
|
this.FrameSplitData; //坐标轴分割方法
|
|
46946
46952
|
this.SplitCount=5; //刻度个数
|
|
46947
|
-
this.StringFormat=0; //刻度字符串格式
|
|
46953
|
+
this.StringFormat=0; //刻度字符串格式 2=原始格式
|
|
46948
46954
|
this.IsShowLeftText=true; //显示左边刻度
|
|
46949
46955
|
this.IsShowRightText=true; //显示右边刻度
|
|
46950
46956
|
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
|
|
@@ -47287,6 +47293,11 @@ function IFrameSplitOperator()
|
|
|
47287
47293
|
|
|
47288
47294
|
return data;
|
|
47289
47295
|
}
|
|
47296
|
+
|
|
47297
|
+
this.Reset=function() //重置
|
|
47298
|
+
{
|
|
47299
|
+
|
|
47300
|
+
}
|
|
47290
47301
|
}
|
|
47291
47302
|
|
|
47292
47303
|
//字符串格式化 千分位分割
|
|
@@ -48761,6 +48772,10 @@ function FrameSplitY()
|
|
|
48761
48772
|
if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
|
|
48762
48773
|
text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
|
|
48763
48774
|
}
|
|
48775
|
+
else if (this.StringFormat==2) //原始数据输出
|
|
48776
|
+
{
|
|
48777
|
+
text=`${value.toFixed(this.FloatPrecision)}`;
|
|
48778
|
+
}
|
|
48764
48779
|
else
|
|
48765
48780
|
{
|
|
48766
48781
|
var absValue=Math.abs(value);
|
|
@@ -71945,6 +71960,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71945
71960
|
this.Draw();
|
|
71946
71961
|
}
|
|
71947
71962
|
|
|
71963
|
+
|
|
71948
71964
|
this.OnKLinePageChange=function(eventid)
|
|
71949
71965
|
{
|
|
71950
71966
|
if (!this.ChartPaint[0]) return;
|
|
@@ -72170,21 +72186,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72170
72186
|
}
|
|
72171
72187
|
else if (indexInfo)
|
|
72172
72188
|
{
|
|
72173
|
-
|
|
72174
|
-
if (obj.
|
|
72175
|
-
|
|
72176
|
-
|
|
72177
|
-
|
|
72178
|
-
|
|
72179
|
-
|
|
72180
|
-
|
|
72181
|
-
|
|
72182
|
-
|
|
72189
|
+
if (obj.Args) indexInfo.Args=obj.Args; //外部可以设置参数
|
|
72190
|
+
if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexInfo.FloatPrecision=obj.FloatPrecision;
|
|
72191
|
+
if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexInfo.StringFormat=obj.StringFormat;
|
|
72192
|
+
if (IFrameSplitOperator.IsBool(obj.IsSync)) indexInfo.IsSync=obj.IsSync;
|
|
72193
|
+
if (obj.YAxis)
|
|
72194
|
+
{
|
|
72195
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
72196
|
+
if (IFrameSplitOperator.IsNumber(obj.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=obj.YAxis.FloatPrecision;
|
|
72197
|
+
if (IFrameSplitOperator.IsNumber(obj.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=obj.YAxis.StringFormat;
|
|
72198
|
+
if (IFrameSplitOperator.IsBool(obj.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=obj.YAxis.EnableRemoveZero;
|
|
72199
|
+
}
|
|
72183
72200
|
|
|
72184
|
-
|
|
72185
|
-
if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexData.StringFormat=obj.StringFormat;
|
|
72186
|
-
if (IFrameSplitOperator.IsBool(obj.IsSync)) indexData.IsSync=obj.IsSync;
|
|
72187
|
-
var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
|
|
72201
|
+
var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
72188
72202
|
scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
|
|
72189
72203
|
overlayFrame.Script=scriptIndex;
|
|
72190
72204
|
}
|
|
@@ -72555,17 +72569,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72555
72569
|
{
|
|
72556
72570
|
var args=indexInfo.Args;
|
|
72557
72571
|
if (option.Windows[i].Args) args=option.Windows[i].Args;
|
|
72558
|
-
|
|
72559
|
-
|
|
72560
|
-
|
|
72561
|
-
|
|
72562
|
-
|
|
72563
|
-
|
|
72564
|
-
|
|
72565
|
-
|
|
72566
|
-
|
|
72572
|
+
if (item.TitleFont) indexInfo.TitleFont=item.TitleFont;
|
|
72573
|
+
if (item.IsShortTitle) indexInfo.IsShortTitle=item.IsShortTitle;
|
|
72574
|
+
if (IFrameSplitOperator.IsBool(item.IsSync)) indexInfo.IsSync=item.IsSync;
|
|
72575
|
+
|
|
72576
|
+
if (item.YAxis)
|
|
72577
|
+
{
|
|
72578
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
72579
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
|
|
72580
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
|
|
72581
|
+
}
|
|
72567
72582
|
|
|
72568
|
-
this.WindowIndex[i]=new ScriptIndex(
|
|
72583
|
+
this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo); //脚本执行
|
|
72569
72584
|
}
|
|
72570
72585
|
}
|
|
72571
72586
|
}
|
|
@@ -112403,6 +112418,8 @@ function ScriptIndex(name,script,args,option)
|
|
|
112403
112418
|
this.TitleFont=g_JSChartResource.TitleFont; //标题字体
|
|
112404
112419
|
this.IsShortTitle=false; //是否显示指标参数
|
|
112405
112420
|
this.IsUsePageData=false; //是否使用了K线界面数据
|
|
112421
|
+
|
|
112422
|
+
this.YAxis=null; //Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
|
|
112406
112423
|
|
|
112407
112424
|
//调试信息
|
|
112408
112425
|
this.Debug; // { Callback:, Count: }
|
|
@@ -112452,6 +112469,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
112452
112469
|
if (option.Lock.MinWidth) this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();
|
|
112453
112470
|
}
|
|
112454
112471
|
|
|
112472
|
+
if (option && option.YAxis)
|
|
112473
|
+
{
|
|
112474
|
+
this.YAxis={ };
|
|
112475
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
|
|
112476
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) this.YAxis.StringFormat=option.YAxis.StringFormat;
|
|
112477
|
+
if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
|
|
112478
|
+
|
|
112479
|
+
}
|
|
112480
|
+
|
|
112455
112481
|
if (args) this.Arguments=args;
|
|
112456
112482
|
|
|
112457
112483
|
this.CopyTo=function(dest) //赋值到新实例出来
|
|
@@ -114129,7 +114155,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
114129
114155
|
|
|
114130
114156
|
if (windowIndex>=1 && hqChart.Frame)
|
|
114131
114157
|
{
|
|
114132
|
-
|
|
114158
|
+
//Y轴刻度格式 默认跟标题栏一致
|
|
114159
|
+
var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
|
|
114160
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
114161
|
+
if (this.YAxis)
|
|
114162
|
+
{
|
|
114163
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
|
|
114164
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
|
|
114165
|
+
}
|
|
114166
|
+
|
|
114133
114167
|
if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
|
|
114134
114168
|
if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
|
|
114135
114169
|
}
|
|
@@ -114501,7 +114535,16 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
114501
114535
|
if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
|
|
114502
114536
|
|
|
114503
114537
|
//修改Y轴分割方式
|
|
114504
|
-
|
|
114538
|
+
var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;
|
|
114539
|
+
if (IFrameSplitOperator.IsNumber(this.YSplitType)) ySpliter.SplitType=this.YSplitType;
|
|
114540
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
114541
|
+
ySpliter.EnableRemoveZero=true;
|
|
114542
|
+
if (this.YAxis)
|
|
114543
|
+
{
|
|
114544
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
|
|
114545
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
|
|
114546
|
+
if (IFrameSplitOperator.IsBool(this.YAxis.EnableRemoveZero)) ySpliter.EnableRemoveZero=this.YAxis.EnableRemoveZero;
|
|
114547
|
+
}
|
|
114505
114548
|
|
|
114506
114549
|
//指标名字
|
|
114507
114550
|
var titleInfo={ Data:[], Title:this.Name, Frame:this.OverlayIndex.Frame.Frame, Script:this };
|
|
@@ -129282,7 +129325,7 @@ function ScrollBarBGChart()
|
|
|
129282
129325
|
|
|
129283
129326
|
|
|
129284
129327
|
|
|
129285
|
-
var HQCHART_VERSION="1.1.
|
|
129328
|
+
var HQCHART_VERSION="1.1.12927";
|
|
129286
129329
|
|
|
129287
129330
|
function PrintHQChartVersion()
|
|
129288
129331
|
{
|
|
@@ -81,7 +81,8 @@ JSNetwork.HttpRequest=function(obj) //对请求进行封装
|
|
|
81
81
|
StringFormat: 1=带单位万/亿 2=原始格式
|
|
82
82
|
Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
|
|
83
83
|
OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
|
|
84
|
-
SplitType: Y
|
|
84
|
+
SplitType: Y轴分割类型,
|
|
85
|
+
YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
|
|
85
86
|
*/
|
|
86
87
|
|
|
87
88
|
//周期条件枚举
|
|
@@ -1637,7 +1638,7 @@ JSIndexScript.prototype.AMO = function ()
|
|
|
1637
1638
|
{
|
|
1638
1639
|
let data =
|
|
1639
1640
|
{
|
|
1640
|
-
Name: 'AMO', Description: '成交金额', IsMainIndex: false,
|
|
1641
|
+
Name: 'AMO', Description: '成交金额', IsMainIndex: false, StringFormat:2, YAxis:{ FloatPrecision:0, StringFormat:2 },
|
|
1641
1642
|
Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 }],
|
|
1642
1643
|
Script: //脚本
|
|
1643
1644
|
'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
|
|
@@ -4833,6 +4834,14 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4833
4834
|
chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, args,indexInfo); //脚本执行
|
|
4834
4835
|
if (item.StringFormat>0) chart.WindowIndex[i].StringFormat=item.StringFormat;
|
|
4835
4836
|
if (item.FloatPrecision>=0) chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;
|
|
4837
|
+
|
|
4838
|
+
if (item.YAxis)
|
|
4839
|
+
{
|
|
4840
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
4841
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
|
|
4842
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
|
|
4843
|
+
if (IFrameSplitOperator.IsBool(item.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.YAxis.EnableRemoveZero;
|
|
4844
|
+
}
|
|
4836
4845
|
}
|
|
4837
4846
|
|
|
4838
4847
|
}
|
|
@@ -12273,7 +12282,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12273
12282
|
subFrame.Frame.IsShowYText[1]=option.IsShowRightText;
|
|
12274
12283
|
subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText; //显示右边刻度
|
|
12275
12284
|
}
|
|
12276
|
-
|
|
12277
12285
|
}
|
|
12278
12286
|
|
|
12279
12287
|
this.AddNewSubFrame=function(option)
|
|
@@ -12321,24 +12329,22 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12321
12329
|
this.RemoveMinSizeWindows(); //清空隐藏的指标
|
|
12322
12330
|
var index=this.AddNewSubFrame(option);
|
|
12323
12331
|
|
|
12324
|
-
var indexData =
|
|
12325
|
-
{
|
|
12326
|
-
Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName ,
|
|
12327
|
-
//扩展属性 可以是空
|
|
12328
|
-
KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
|
|
12329
|
-
FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,
|
|
12330
|
-
OutName:indexInfo.OutName
|
|
12331
|
-
};
|
|
12332
|
-
|
|
12333
12332
|
if (option)
|
|
12334
12333
|
{
|
|
12335
|
-
if (option.FloatPrecision>=0)
|
|
12336
|
-
if (option.StringFormat>0)
|
|
12337
|
-
if (option.Args)
|
|
12338
|
-
if (option.Lock)
|
|
12334
|
+
if (option.FloatPrecision>=0) indexInfo.FloatPrecision=option.FloatPrecision;
|
|
12335
|
+
if (option.StringFormat>0) indexInfo.StringFormat=option.StringFormat;
|
|
12336
|
+
if (option.Args) indexInfo.Args=option.Args;
|
|
12337
|
+
if (option.Lock) indexInfo.Lock=option.Lock;
|
|
12338
|
+
if (option.YAxis)
|
|
12339
|
+
{
|
|
12340
|
+
indexInfo.YAxis={ };
|
|
12341
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
|
|
12342
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=option.YAxis.StringFormat;
|
|
12343
|
+
if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
|
|
12344
|
+
}
|
|
12339
12345
|
}
|
|
12340
12346
|
|
|
12341
|
-
this.WindowIndex[index] = new ScriptIndex(
|
|
12347
|
+
this.WindowIndex[index] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
|
|
12342
12348
|
if (this.ClassName=="MinuteChartContainer" || this.ClassName=="MinuteChartHScreenContainer")
|
|
12343
12349
|
var bindData=this.SourceData;
|
|
12344
12350
|
else
|
|
@@ -46988,7 +46994,7 @@ function IFrameSplitOperator()
|
|
|
46988
46994
|
this.Frame; //框架信息
|
|
46989
46995
|
this.FrameSplitData; //坐标轴分割方法
|
|
46990
46996
|
this.SplitCount=5; //刻度个数
|
|
46991
|
-
this.StringFormat=0; //刻度字符串格式
|
|
46997
|
+
this.StringFormat=0; //刻度字符串格式 2=原始格式
|
|
46992
46998
|
this.IsShowLeftText=true; //显示左边刻度
|
|
46993
46999
|
this.IsShowRightText=true; //显示右边刻度
|
|
46994
47000
|
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
|
|
@@ -47331,6 +47337,11 @@ function IFrameSplitOperator()
|
|
|
47331
47337
|
|
|
47332
47338
|
return data;
|
|
47333
47339
|
}
|
|
47340
|
+
|
|
47341
|
+
this.Reset=function() //重置
|
|
47342
|
+
{
|
|
47343
|
+
|
|
47344
|
+
}
|
|
47334
47345
|
}
|
|
47335
47346
|
|
|
47336
47347
|
//字符串格式化 千分位分割
|
|
@@ -48805,6 +48816,10 @@ function FrameSplitY()
|
|
|
48805
48816
|
if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
|
|
48806
48817
|
text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
|
|
48807
48818
|
}
|
|
48819
|
+
else if (this.StringFormat==2) //原始数据输出
|
|
48820
|
+
{
|
|
48821
|
+
text=`${value.toFixed(this.FloatPrecision)}`;
|
|
48822
|
+
}
|
|
48808
48823
|
else
|
|
48809
48824
|
{
|
|
48810
48825
|
var absValue=Math.abs(value);
|
|
@@ -71989,6 +72004,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71989
72004
|
this.Draw();
|
|
71990
72005
|
}
|
|
71991
72006
|
|
|
72007
|
+
|
|
71992
72008
|
this.OnKLinePageChange=function(eventid)
|
|
71993
72009
|
{
|
|
71994
72010
|
if (!this.ChartPaint[0]) return;
|
|
@@ -72214,21 +72230,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72214
72230
|
}
|
|
72215
72231
|
else if (indexInfo)
|
|
72216
72232
|
{
|
|
72217
|
-
|
|
72218
|
-
if (obj.
|
|
72219
|
-
|
|
72220
|
-
|
|
72221
|
-
|
|
72222
|
-
|
|
72223
|
-
|
|
72224
|
-
|
|
72225
|
-
|
|
72226
|
-
|
|
72233
|
+
if (obj.Args) indexInfo.Args=obj.Args; //外部可以设置参数
|
|
72234
|
+
if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexInfo.FloatPrecision=obj.FloatPrecision;
|
|
72235
|
+
if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexInfo.StringFormat=obj.StringFormat;
|
|
72236
|
+
if (IFrameSplitOperator.IsBool(obj.IsSync)) indexInfo.IsSync=obj.IsSync;
|
|
72237
|
+
if (obj.YAxis)
|
|
72238
|
+
{
|
|
72239
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
72240
|
+
if (IFrameSplitOperator.IsNumber(obj.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=obj.YAxis.FloatPrecision;
|
|
72241
|
+
if (IFrameSplitOperator.IsNumber(obj.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=obj.YAxis.StringFormat;
|
|
72242
|
+
if (IFrameSplitOperator.IsBool(obj.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=obj.YAxis.EnableRemoveZero;
|
|
72243
|
+
}
|
|
72227
72244
|
|
|
72228
|
-
|
|
72229
|
-
if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexData.StringFormat=obj.StringFormat;
|
|
72230
|
-
if (IFrameSplitOperator.IsBool(obj.IsSync)) indexData.IsSync=obj.IsSync;
|
|
72231
|
-
var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
|
|
72245
|
+
var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
72232
72246
|
scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
|
|
72233
72247
|
overlayFrame.Script=scriptIndex;
|
|
72234
72248
|
}
|
|
@@ -72599,17 +72613,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72599
72613
|
{
|
|
72600
72614
|
var args=indexInfo.Args;
|
|
72601
72615
|
if (option.Windows[i].Args) args=option.Windows[i].Args;
|
|
72602
|
-
|
|
72603
|
-
|
|
72604
|
-
|
|
72605
|
-
|
|
72606
|
-
|
|
72607
|
-
|
|
72608
|
-
|
|
72609
|
-
|
|
72610
|
-
|
|
72616
|
+
if (item.TitleFont) indexInfo.TitleFont=item.TitleFont;
|
|
72617
|
+
if (item.IsShortTitle) indexInfo.IsShortTitle=item.IsShortTitle;
|
|
72618
|
+
if (IFrameSplitOperator.IsBool(item.IsSync)) indexInfo.IsSync=item.IsSync;
|
|
72619
|
+
|
|
72620
|
+
if (item.YAxis)
|
|
72621
|
+
{
|
|
72622
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
72623
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
|
|
72624
|
+
if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
|
|
72625
|
+
}
|
|
72611
72626
|
|
|
72612
|
-
this.WindowIndex[i]=new ScriptIndex(
|
|
72627
|
+
this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo); //脚本执行
|
|
72613
72628
|
}
|
|
72614
72629
|
}
|
|
72615
72630
|
}
|
|
@@ -112447,6 +112462,8 @@ function ScriptIndex(name,script,args,option)
|
|
|
112447
112462
|
this.TitleFont=g_JSChartResource.TitleFont; //标题字体
|
|
112448
112463
|
this.IsShortTitle=false; //是否显示指标参数
|
|
112449
112464
|
this.IsUsePageData=false; //是否使用了K线界面数据
|
|
112465
|
+
|
|
112466
|
+
this.YAxis=null; //Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
|
|
112450
112467
|
|
|
112451
112468
|
//调试信息
|
|
112452
112469
|
this.Debug; // { Callback:, Count: }
|
|
@@ -112496,6 +112513,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
112496
112513
|
if (option.Lock.MinWidth) this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();
|
|
112497
112514
|
}
|
|
112498
112515
|
|
|
112516
|
+
if (option && option.YAxis)
|
|
112517
|
+
{
|
|
112518
|
+
this.YAxis={ };
|
|
112519
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
|
|
112520
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) this.YAxis.StringFormat=option.YAxis.StringFormat;
|
|
112521
|
+
if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
|
|
112522
|
+
|
|
112523
|
+
}
|
|
112524
|
+
|
|
112499
112525
|
if (args) this.Arguments=args;
|
|
112500
112526
|
|
|
112501
112527
|
this.CopyTo=function(dest) //赋值到新实例出来
|
|
@@ -114173,7 +114199,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
114173
114199
|
|
|
114174
114200
|
if (windowIndex>=1 && hqChart.Frame)
|
|
114175
114201
|
{
|
|
114176
|
-
|
|
114202
|
+
//Y轴刻度格式 默认跟标题栏一致
|
|
114203
|
+
var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
|
|
114204
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
114205
|
+
if (this.YAxis)
|
|
114206
|
+
{
|
|
114207
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
|
|
114208
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
|
|
114209
|
+
}
|
|
114210
|
+
|
|
114177
114211
|
if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
|
|
114178
114212
|
if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
|
|
114179
114213
|
}
|
|
@@ -114545,7 +114579,16 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
114545
114579
|
if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
|
|
114546
114580
|
|
|
114547
114581
|
//修改Y轴分割方式
|
|
114548
|
-
|
|
114582
|
+
var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;
|
|
114583
|
+
if (IFrameSplitOperator.IsNumber(this.YSplitType)) ySpliter.SplitType=this.YSplitType;
|
|
114584
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
114585
|
+
ySpliter.EnableRemoveZero=true;
|
|
114586
|
+
if (this.YAxis)
|
|
114587
|
+
{
|
|
114588
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
|
|
114589
|
+
if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
|
|
114590
|
+
if (IFrameSplitOperator.IsBool(this.YAxis.EnableRemoveZero)) ySpliter.EnableRemoveZero=this.YAxis.EnableRemoveZero;
|
|
114591
|
+
}
|
|
114549
114592
|
|
|
114550
114593
|
//指标名字
|
|
114551
114594
|
var titleInfo={ Data:[], Title:this.Name, Frame:this.OverlayIndex.Frame.Frame, Script:this };
|
|
@@ -129440,7 +129483,7 @@ function HQChartScriptWorker()
|
|
|
129440
129483
|
|
|
129441
129484
|
|
|
129442
129485
|
|
|
129443
|
-
var HQCHART_VERSION="1.1.
|
|
129486
|
+
var HQCHART_VERSION="1.1.12927";
|
|
129444
129487
|
|
|
129445
129488
|
function PrintHQChartVersion()
|
|
129446
129489
|
{
|