hqchart 1.1.12905 → 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.
@@ -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) indexData.FloatPrecision=option.FloatPrecision;
12336
- if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
12337
- if (option.Args) indexData.Args=option.Args;
12338
- if (option.Lock) indexData.Lock=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(indexData.Name, indexData.Script, indexData.Args,indexData); //脚本执行
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
@@ -18588,8 +18594,10 @@ function KLineFrame()
18588
18594
  {
18589
18595
  if (this.XSplit)
18590
18596
  {
18591
- if (this.XSplitOperator!=null) this.XSplitOperator.Operator();
18597
+ if (this.XSplitOperator) this.XSplitOperator.Operator();
18598
+ if (this.YSplitOperator && this.YSplitOperator.CustomCoordinate) this.YSplitOperator.CustomCoordinate();
18592
18599
  }
18600
+
18593
18601
  return;
18594
18602
  }
18595
18603
 
@@ -44945,7 +44953,8 @@ function RectSelectPaint()
44945
44953
  };
44946
44954
 
44947
44955
  this.BorderCache;
44948
- this.IsOnlyOnePoint=false; //单点模式
44956
+ this.IsOnlyOnePoint=false; //空格选中区间,单点模式
44957
+ this.IsFullFrame=false; //区间选择包含子窗口
44949
44958
 
44950
44959
  //设置参数接口
44951
44960
  this.SetOption=function(option)
@@ -45356,6 +45365,7 @@ function RectSelectPaint()
45356
45365
  else
45357
45366
  {
45358
45367
  var border=subFrame.GetBorder();
45368
+ if (this.IsFullFrame) border=this.ChartFrame.ChartBorder.GetBorder(); //全部指标窗口选中
45359
45369
  var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
45360
45370
  var chartright=border.RightEx;
45361
45371
  var drawHeight=border.ChartHeight-border.TopTitle-5*GetDevicePixelRatio();
@@ -46984,7 +46994,7 @@ function IFrameSplitOperator()
46984
46994
  this.Frame; //框架信息
46985
46995
  this.FrameSplitData; //坐标轴分割方法
46986
46996
  this.SplitCount=5; //刻度个数
46987
- this.StringFormat=0; //刻度字符串格式
46997
+ this.StringFormat=0; //刻度字符串格式 2=原始格式
46988
46998
  this.IsShowLeftText=true; //显示左边刻度
46989
46999
  this.IsShowRightText=true; //显示右边刻度
46990
47000
  this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
@@ -47327,6 +47337,11 @@ function IFrameSplitOperator()
47327
47337
 
47328
47338
  return data;
47329
47339
  }
47340
+
47341
+ this.Reset=function() //重置
47342
+ {
47343
+
47344
+ }
47330
47345
  }
47331
47346
 
47332
47347
  //字符串格式化 千分位分割
@@ -48326,6 +48341,16 @@ function FrameSplitKLinePriceY()
48326
48341
 
48327
48342
  this.CustomCoordinate=function(floatPrecision)
48328
48343
  {
48344
+ if (!IFrameSplitOperator.IsNumber(floatPrecision))
48345
+ {
48346
+ var pixelTatio = GetDevicePixelRatio(); //获取设备的分辨率
48347
+ var width=this.Frame.ChartBorder.GetChartWidth(); //画布的宽度
48348
+ var isPhoneModel=width<450*pixelTatio;
48349
+ floatPrecision=GetfloatPrecision(this.Symbol);
48350
+ if (isPhoneModel && MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol)) floatPrecision = 0; //手机端指数不显示小数位数,太长了
48351
+ if (this.FloatPrecision!=null) floatPrecision=this.FloatPrecision;
48352
+ }
48353
+
48329
48354
  this.Frame.CustomHorizontalInfo=[];
48330
48355
 
48331
48356
  var data=this.InvokeCustomYCoordinateCallback();
@@ -48791,6 +48816,10 @@ function FrameSplitY()
48791
48816
  if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
48792
48817
  text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
48793
48818
  }
48819
+ else if (this.StringFormat==2) //原始数据输出
48820
+ {
48821
+ text=`${value.toFixed(this.FloatPrecision)}`;
48822
+ }
48794
48823
  else
48795
48824
  {
48796
48825
  var absValue=Math.abs(value);
@@ -71975,6 +72004,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71975
72004
  this.Draw();
71976
72005
  }
71977
72006
 
72007
+
71978
72008
  this.OnKLinePageChange=function(eventid)
71979
72009
  {
71980
72010
  if (!this.ChartPaint[0]) return;
@@ -72200,21 +72230,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72200
72230
  }
72201
72231
  else if (indexInfo)
72202
72232
  {
72203
- var args=indexInfo.Args;
72204
- if (obj.Args) args=obj.Args; //外部可以设置参数
72205
- let indexData =
72206
- {
72207
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexName,
72208
- //扩展属性 可以是空
72209
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
72210
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
72211
- OutName:indexInfo.OutName
72212
- };
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
+ }
72213
72244
 
72214
- if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexData.FloatPrecision=obj.FloatPrecision;
72215
- if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexData.StringFormat=obj.StringFormat;
72216
- if (IFrameSplitOperator.IsBool(obj.IsSync)) indexData.IsSync=obj.IsSync;
72217
- var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
72245
+ var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
72218
72246
  scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
72219
72247
  overlayFrame.Script=scriptIndex;
72220
72248
  }
@@ -72585,17 +72613,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72585
72613
  {
72586
72614
  var args=indexInfo.Args;
72587
72615
  if (option.Windows[i].Args) args=option.Windows[i].Args;
72588
- let indexData =
72589
- {
72590
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexID ,
72591
- //扩展属性 可以是空
72592
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
72593
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
72594
- OutName:indexInfo.OutName
72595
- };
72596
- if (item.TitleFont) indexData.TitleFont=item.TitleFont;
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
+ }
72597
72626
 
72598
- this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
72627
+ this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo); //脚本执行
72599
72628
  }
72600
72629
  }
72601
72630
  }
@@ -73235,7 +73264,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
73235
73264
  this.Draw();
73236
73265
  }
73237
73266
 
73238
- //增加叠加股票 只支持日线数据
73267
+ //增加叠加股票
73239
73268
  this.OverlaySymbol=function(symbol,option)
73240
73269
  {
73241
73270
  for(var i in this.OverlayChartPaint)
@@ -88951,8 +88980,8 @@ var MARKET_SUFFIX_NAME=
88951
88980
  SZO:".SZO", //深证交易所 股票期权
88952
88981
  HK:'.HK', //港股
88953
88982
  FHK:'.FHK', //港股期货
88954
- SHFE: '.SHF', //上期所 (Shanghai Futures Exchange)
88955
- SHFE2:'.SHFE', //上期所 (Shanghai Futures Exchange)
88983
+ SHFE: '.SHF', //上期所 (Shanghai Futures Exchange) | 上期所-能源
88984
+ SHFE2:'.SHFE', //上期所 (Shanghai Futures Exchange) | 上期所-能源
88956
88985
  CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)
88957
88986
  DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)
88958
88987
  CZCE: '.CZC', //郑州期货交易所
@@ -112433,6 +112462,8 @@ function ScriptIndex(name,script,args,option)
112433
112462
  this.TitleFont=g_JSChartResource.TitleFont; //标题字体
112434
112463
  this.IsShortTitle=false; //是否显示指标参数
112435
112464
  this.IsUsePageData=false; //是否使用了K线界面数据
112465
+
112466
+ this.YAxis=null; //Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
112436
112467
 
112437
112468
  //调试信息
112438
112469
  this.Debug; // { Callback:, Count: }
@@ -112482,6 +112513,15 @@ function ScriptIndex(name,script,args,option)
112482
112513
  if (option.Lock.MinWidth) this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();
112483
112514
  }
112484
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
+
112485
112525
  if (args) this.Arguments=args;
112486
112526
 
112487
112527
  this.CopyTo=function(dest) //赋值到新实例出来
@@ -114159,7 +114199,15 @@ function ScriptIndex(name,script,args,option)
114159
114199
 
114160
114200
  if (windowIndex>=1 && hqChart.Frame)
114161
114201
  {
114162
- hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.FloatPrecision=this.FloatPrecision;
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
+
114163
114211
  if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
114164
114212
  if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
114165
114213
  }
@@ -114531,7 +114579,16 @@ function OverlayScriptIndex(name,script,args,option)
114531
114579
  if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
114532
114580
 
114533
114581
  //修改Y轴分割方式
114534
- if (IFrameSplitOperator.IsNumber(this.YSplitType)) this.OverlayIndex.Frame.Frame.YSplitOperator.SplitType=this.YSplitType;
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
+ }
114535
114592
 
114536
114593
  //指标名字
114537
114594
  var titleInfo={ Data:[], Title:this.Name, Frame:this.OverlayIndex.Frame.Frame, Script:this };
@@ -129426,7 +129483,7 @@ function HQChartScriptWorker()
129426
129483
 
129427
129484
 
129428
129485
 
129429
- var HQCHART_VERSION="1.1.12904";
129486
+ var HQCHART_VERSION="1.1.12927";
129430
129487
 
129431
129488
  function PrintHQChartVersion()
129432
129489
  {