hqchart 1.1.15292 → 1.1.15299

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.
@@ -3138,6 +3138,7 @@ var JSCHART_MENU_ID=
3138
3138
  CMD_CORSS_X_TEXTALIGN_ID:61, //十字光标 底部文字对齐方式
3139
3139
 
3140
3140
  CMD_CHANGE_YRIGHT_TEXT_FORMAT:62, //分时图主图 右侧刻度格式
3141
+ CMD_ENABLE_ZOOM_Y_ID:63, //放大缩小Y坐标 { FrameID:, Enable: , Range:{ Max:, Min: }}
3141
3142
 
3142
3143
 
3143
3144
  CMD_REPORT_CHANGE_BLOCK_ID:100, //报价列表 切换板块ID
@@ -11940,6 +11941,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11940
11941
  this.ResetFrameXYSplit();
11941
11942
  this.Draw();
11942
11943
  break;
11944
+ case JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID:
11945
+ if (!srcParam) return false;
11946
+ if (this.EnableZoomYCoordinate) this.EnableZoomYCoordinate(srcParam);
11947
+ break;
11943
11948
  }
11944
11949
  }
11945
11950
 
@@ -30618,12 +30623,13 @@ function ChartKLine()
30618
30623
  if (this.TradeIcon) this.DrawTradeIcon()
30619
30624
  else this.DrawTrade();
30620
30625
 
30626
+ if (this.PriceGap.Enable) this.DrawPriceGap();
30627
+
30621
30628
  this.Canvas.restore();
30622
30629
 
30623
30630
  this.UpdateGlobalLatestPoint();
30624
30631
 
30625
30632
  this.DrawPredictionLine();
30626
- if (this.PriceGap.Enable) this.DrawPriceGap();
30627
30633
 
30628
30634
  if (this.IsShowMaxMinPrice) //标注最大值最小值
30629
30635
  {
@@ -58095,7 +58101,7 @@ function FrameSplitMinuteX()
58095
58101
  width=width/GetDevicePixelRatio();
58096
58102
 
58097
58103
  const minuteCoordinate = g_MinuteCoordinateData;
58098
- var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol,width);
58104
+ var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol, width, this.Frame.GlobalOption);
58099
58105
  var minuteCount=xcoordinateData.Count;
58100
58106
  var minuteMiddleCount=xcoordinateData.MiddleCount>0? xcoordinateData.MiddleCount: parseInt(minuteCount/2);
58101
58107
  var xcoordinate = xcoordinateData.Data;
@@ -60761,7 +60767,8 @@ function HQMinuteTimeStringFormat()
60761
60767
  this.MultiDayBeforeOpenData; //多日分时图 盘前数据
60762
60768
  this.MultiDayAfterCloseData; //多日分时图 收盘数据
60763
60769
 
60764
- this.GetEventCallback
60770
+ this.GetEventCallback;
60771
+ this.HQChart;
60765
60772
 
60766
60773
  this.GetBeforeOpen=function()
60767
60774
  {
@@ -60859,7 +60866,9 @@ function HQMinuteTimeStringFormat()
60859
60866
  if (this.Frame && this.Frame.MinuteCount) showIndex=index%this.Frame.MinuteCount;
60860
60867
 
60861
60868
  var timeStringData=g_MinuteTimeStringData;
60862
- var timeData=timeStringData.GetTimeData(this.Symbol);
60869
+ var globalOption=null;
60870
+ if (this.HQChart) globalOption=this.HQChart.GlobalOption;
60871
+ var timeData=timeStringData.GetTimeData(this.Symbol, globalOption);
60863
60872
  if (!timeData) return false;
60864
60873
 
60865
60874
  if (showIndex<0) showIndex=0;
@@ -88242,12 +88251,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88242
88251
  var bDaySummary=klineChart.DaySummary.Enable;
88243
88252
  var infoPosition=klineChart.InfoPosition;
88244
88253
  var coordinateType=null, yCoordinateType=null; //坐标类型
88254
+ var bZoomYCoordinate=false;
88245
88255
  var mainFrame=null;
88246
88256
  if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
88247
88257
  if (mainFrame)
88248
88258
  {
88249
88259
  coordinateType=mainFrame.CoordinateType;
88250
- if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
88260
+ if (mainFrame.YSplitOperator)
88261
+ {
88262
+ yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
88263
+ if (mainFrame.YSplitOperator.FixedYMaxMin && mainFrame.YSplitOperator.EnableZoomUpDown)
88264
+ bZoomYCoordinate=true;
88265
+ }
88266
+
88251
88267
  }
88252
88268
 
88253
88269
  var aryKLineInfo=[]; //信息地雷
@@ -88509,6 +88525,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88509
88525
 
88510
88526
  { Name:"显示走完剩余时间", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_KLINE_DAY_SUMMARY_ID, Args:[!bDaySummary]}, Checked:bDaySummary},
88511
88527
 
88528
+ { Name:"拖动Y轴", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID, Args:[{FrameID:0, Enable:!bZoomYCoordinate }, ]}, Checked:bZoomYCoordinate},
88529
+
88512
88530
  { Name:JSPopMenu.SEPARATOR_LINE_NAME },
88513
88531
  {
88514
88532
  Name:"鼠标形状",
@@ -90382,6 +90400,41 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90382
90400
 
90383
90401
  return false;
90384
90402
  }
90403
+
90404
+ //option={ FrameID:, Enable: }
90405
+ this.EnableZoomYCoordinate=function(option)
90406
+ {
90407
+ if (!option) return false;
90408
+ if (!IFrameSplitOperator.IsNumber(option.FrameID)) return false;
90409
+ if (!IFrameSplitOperator.IsBool(option.Enable)) return false;
90410
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return false;
90411
+ if (option.FrameID<0 || option.FrameID>this.Frame.SubFrame.length) return false;
90412
+
90413
+ var item=this.Frame.SubFrame[option.FrameID];
90414
+ if (!item || !item.Frame || !item.Frame.YSplitOperator) return false;
90415
+
90416
+ var frame=item.Frame;
90417
+ var splitOper=frame.YSplitOperator;
90418
+
90419
+ if (option.Enable)
90420
+ {
90421
+ var max=frame.HorizontalMax, min=frame.HorizontalMin;
90422
+ if (!IFrameSplitOperator.IsNumber(max) || !IFrameSplitOperator.IsNumber(min)) return false;
90423
+
90424
+ splitOper.FixedYMaxMin={ Max:max, Min:min };
90425
+ splitOper.EnableZoomUpDown=true;
90426
+ frame.XYSplit=true;
90427
+ this.ChartDragSelectRect.EnableLButton=false;
90428
+ }
90429
+ else
90430
+ {
90431
+ splitOper.FixedYMaxMin=null
90432
+ splitOper.EnableZoomUpDown=false;
90433
+ frame.XYSplit=true;
90434
+ }
90435
+
90436
+ this.Draw();
90437
+ }
90385
90438
  }
90386
90439
 
90387
90440
  //API 返回数据 转化为array[]
@@ -93134,7 +93187,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
93134
93187
  this.ChartCorssCursor.PtInClient=(x,y)=>{ return this.PtInClient(x,y); }
93135
93188
  this.ChartCorssCursor.Canvas=this.Canvas;
93136
93189
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
93137
- this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
93190
+ this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
93191
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
93138
93192
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
93139
93193
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
93140
93194
  this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;
@@ -99156,6 +99210,7 @@ function MinuteChartHScreenContainer(uielement)
99156
99210
  this.ChartCorssCursor.Canvas=this.Canvas;
99157
99211
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
99158
99212
  this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
99213
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
99159
99214
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
99160
99215
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
99161
99216
  this.ChartCorssCursor.StringFormatY.HQChart=this;
@@ -102792,7 +102847,7 @@ function MinuteTimeStringData()
102792
102847
  return data;
102793
102848
  }
102794
102849
 
102795
- this.GetTimeData = function (symbol)
102850
+ this.GetTimeData = function (symbol, option)
102796
102851
  {
102797
102852
  if (!symbol) return this.SHSZ;
102798
102853
 
@@ -102808,7 +102863,7 @@ function MinuteTimeStringData()
102808
102863
  if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol)) return this.GetUSA(upperSymbol);
102809
102864
  if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol) || MARKET_SUFFIX_NAME.IsGZFE(upperSymbol))
102810
102865
  {
102811
- var splitData = g_FuturesTimeData.GetSplitData(upperSymbol);
102866
+ var splitData = g_FuturesTimeData.GetSplitData(upperSymbol, option);
102812
102867
  if (!splitData) return null;
102813
102868
  return this.GetFutures(splitData);
102814
102869
  }
@@ -103273,8 +103328,8 @@ function MinuteCoordinateData()
103273
103328
  }
103274
103329
 
103275
103330
 
103276
-
103277
- this.GetCoordinateData = function (symbol, width)
103331
+ // option=GlobalOption
103332
+ this.GetCoordinateData = function (symbol, width, option)
103278
103333
  {
103279
103334
  var data = null;
103280
103335
  if (!symbol)
@@ -103299,7 +103354,7 @@ function MinuteCoordinateData()
103299
103354
  else if (MARKET_SUFFIX_NAME.IsJP(upperSymbol))
103300
103355
  data=this.GetJPData(upperSymbol,width);
103301
103356
  else if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol) || MARKET_SUFFIX_NAME.IsGZFE(upperSymbol))
103302
- return this.GetChinatFuturesData(upperSymbol,width);
103357
+ return this.GetChinatFuturesData(upperSymbol, width, option);
103303
103358
  else if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol))
103304
103359
  data = this.GetUSAData(upperSymbol,width);
103305
103360
  else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))
@@ -103381,9 +103436,9 @@ function MinuteCoordinateData()
103381
103436
  return result;
103382
103437
  }
103383
103438
 
103384
- this.GetFuturesData = function (upperSymbol,width,timeData)
103439
+ this.GetFuturesData = function (upperSymbol,width,timeData, option)
103385
103440
  {
103386
- var splitData = timeData.GetSplitData(upperSymbol);
103441
+ var splitData = timeData.GetSplitData(upperSymbol, option);
103387
103442
  if (!splitData) return null;
103388
103443
  var stringData = g_MinuteTimeStringData.GetFutures(splitData);
103389
103444
  if (!stringData) return null;
@@ -103422,9 +103477,9 @@ function MinuteCoordinateData()
103422
103477
  return result;
103423
103478
  }
103424
103479
 
103425
- this.GetChinatFuturesData=function(upperSymbol,width)
103480
+ this.GetChinatFuturesData=function(upperSymbol, width, option)
103426
103481
  {
103427
- return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData);
103482
+ return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData, option);
103428
103483
  }
103429
103484
 
103430
103485
  this.GetNYMEXData=function(upperSymbol,width)
@@ -104230,7 +104285,7 @@ function FuturesTimeData()
104230
104285
  }
104231
104286
  }
104232
104287
 
104233
- this.GetData=function(upperSymbol)
104288
+ this.GetData=function(upperSymbol, option)
104234
104289
  {
104235
104290
  var oneWord = upperSymbol.charAt(0);
104236
104291
  var twoWords = upperSymbol.substr(0,2);
@@ -104275,9 +104330,9 @@ function FuturesTimeData()
104275
104330
  return null;
104276
104331
  }
104277
104332
 
104278
- this.GetSplitData = function (upperSymbol)
104333
+ this.GetSplitData = function (upperSymbol, option)
104279
104334
  {
104280
- var data=this.GetData(upperSymbol);
104335
+ var data=this.GetData(upperSymbol, option);
104281
104336
  if (!data) return null;
104282
104337
 
104283
104338
  return this.TIME_SPLIT[data.Time];
@@ -2760,6 +2760,8 @@ HQData.Report_APIIndex=function(data, callback)
2760
2760
  HQData.APIIndex_BASELINE_BAR(data, callback);
2761
2761
  else if (request.Data.indexname=="API_VERTLINE")
2762
2762
  HQData.APIIndex_VERTLINE(data, callback);
2763
+ else if (request.Data.indexname=="API_DRAWTEXT_FIX")
2764
+ HQData.APIIndex_DRAWTEXT_FIX(data, callback);
2763
2765
 
2764
2766
  else if (request.Data.indexname=="API_ERRORMESSAGE")
2765
2767
  HQData.APIIndex_ErrorMessage(data, callback);
@@ -4455,6 +4457,52 @@ HQData.API_CHART_AREA_TEXT=function(data, callback)
4455
4457
  }
4456
4458
 
4457
4459
 
4460
+ HQData.APIIndex_DRAWTEXT_FIX=function(data, callback)
4461
+ {
4462
+ data.PreventDefault=true;
4463
+ var hqchart=data.HQChart;
4464
+ var kData=hqchart.GetKData();
4465
+
4466
+ var textData=
4467
+ {
4468
+ name:'DRAWTEXT_FIX', type:1,
4469
+ Draw:
4470
+ {
4471
+ DrawType:'DRAWTEXT_FIX',
4472
+ DrawData: { Value:[], Text:[] },
4473
+ Position:{ X:0.5, Y:0.2, Type:1 }
4474
+ },
4475
+ Color:"rgb(30,144,255)",
4476
+ Font:`italic bold 2.2em "Fira Sans", sans-serif`,
4477
+ };
4478
+
4479
+ for(var i=0;i<kData.Data.length;++i)
4480
+ {
4481
+ var kItem=kData.Data[i];
4482
+
4483
+ if (i%50==1)
4484
+ {
4485
+ textData.Draw.DrawData.Value[i]=1;
4486
+ textData.Draw.DrawData.Text[i]=`${kItem.Date}-${i}`;
4487
+ }
4488
+ else
4489
+ {
4490
+ textData.Draw.DrawData.Value[i]=0;
4491
+ }
4492
+ }
4493
+
4494
+ var apiData=
4495
+ {
4496
+ code:0,
4497
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
4498
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[textData] }
4499
+ };
4500
+
4501
+ console.log('[HQData.APIIndex_PARTLINE] apiData ', apiData);
4502
+ callback(apiData);
4503
+ }
4504
+
4505
+
4458
4506
  HQData.APIIndex_ErrorMessage=function(data, callback)
4459
4507
  {
4460
4508
  data.PreventDefault=true;
@@ -7234,6 +7234,7 @@ var JSCHART_MENU_ID=
7234
7234
  CMD_CORSS_X_TEXTALIGN_ID:61, //十字光标 底部文字对齐方式
7235
7235
 
7236
7236
  CMD_CHANGE_YRIGHT_TEXT_FORMAT:62, //分时图主图 右侧刻度格式
7237
+ CMD_ENABLE_ZOOM_Y_ID:63, //放大缩小Y坐标 { FrameID:, Enable: , Range:{ Max:, Min: }}
7237
7238
 
7238
7239
 
7239
7240
  CMD_REPORT_CHANGE_BLOCK_ID:100, //报价列表 切换板块ID
@@ -16036,6 +16037,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
16036
16037
  this.ResetFrameXYSplit();
16037
16038
  this.Draw();
16038
16039
  break;
16040
+ case JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID:
16041
+ if (!srcParam) return false;
16042
+ if (this.EnableZoomYCoordinate) this.EnableZoomYCoordinate(srcParam);
16043
+ break;
16039
16044
  }
16040
16045
  }
16041
16046
 
@@ -34714,12 +34719,13 @@ function ChartKLine()
34714
34719
  if (this.TradeIcon) this.DrawTradeIcon()
34715
34720
  else this.DrawTrade();
34716
34721
 
34722
+ if (this.PriceGap.Enable) this.DrawPriceGap();
34723
+
34717
34724
  this.Canvas.restore();
34718
34725
 
34719
34726
  this.UpdateGlobalLatestPoint();
34720
34727
 
34721
34728
  this.DrawPredictionLine();
34722
- if (this.PriceGap.Enable) this.DrawPriceGap();
34723
34729
 
34724
34730
  if (this.IsShowMaxMinPrice) //标注最大值最小值
34725
34731
  {
@@ -62191,7 +62197,7 @@ function FrameSplitMinuteX()
62191
62197
  width=width/GetDevicePixelRatio();
62192
62198
 
62193
62199
  const minuteCoordinate = g_MinuteCoordinateData;
62194
- var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol,width);
62200
+ var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol, width, this.Frame.GlobalOption);
62195
62201
  var minuteCount=xcoordinateData.Count;
62196
62202
  var minuteMiddleCount=xcoordinateData.MiddleCount>0? xcoordinateData.MiddleCount: parseInt(minuteCount/2);
62197
62203
  var xcoordinate = xcoordinateData.Data;
@@ -64857,7 +64863,8 @@ function HQMinuteTimeStringFormat()
64857
64863
  this.MultiDayBeforeOpenData; //多日分时图 盘前数据
64858
64864
  this.MultiDayAfterCloseData; //多日分时图 收盘数据
64859
64865
 
64860
- this.GetEventCallback
64866
+ this.GetEventCallback;
64867
+ this.HQChart;
64861
64868
 
64862
64869
  this.GetBeforeOpen=function()
64863
64870
  {
@@ -64955,7 +64962,9 @@ function HQMinuteTimeStringFormat()
64955
64962
  if (this.Frame && this.Frame.MinuteCount) showIndex=index%this.Frame.MinuteCount;
64956
64963
 
64957
64964
  var timeStringData=g_MinuteTimeStringData;
64958
- var timeData=timeStringData.GetTimeData(this.Symbol);
64965
+ var globalOption=null;
64966
+ if (this.HQChart) globalOption=this.HQChart.GlobalOption;
64967
+ var timeData=timeStringData.GetTimeData(this.Symbol, globalOption);
64959
64968
  if (!timeData) return false;
64960
64969
 
64961
64970
  if (showIndex<0) showIndex=0;
@@ -92338,12 +92347,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92338
92347
  var bDaySummary=klineChart.DaySummary.Enable;
92339
92348
  var infoPosition=klineChart.InfoPosition;
92340
92349
  var coordinateType=null, yCoordinateType=null; //坐标类型
92350
+ var bZoomYCoordinate=false;
92341
92351
  var mainFrame=null;
92342
92352
  if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
92343
92353
  if (mainFrame)
92344
92354
  {
92345
92355
  coordinateType=mainFrame.CoordinateType;
92346
- if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
92356
+ if (mainFrame.YSplitOperator)
92357
+ {
92358
+ yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
92359
+ if (mainFrame.YSplitOperator.FixedYMaxMin && mainFrame.YSplitOperator.EnableZoomUpDown)
92360
+ bZoomYCoordinate=true;
92361
+ }
92362
+
92347
92363
  }
92348
92364
 
92349
92365
  var aryKLineInfo=[]; //信息地雷
@@ -92605,6 +92621,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92605
92621
 
92606
92622
  { Name:"显示走完剩余时间", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_KLINE_DAY_SUMMARY_ID, Args:[!bDaySummary]}, Checked:bDaySummary},
92607
92623
 
92624
+ { Name:"拖动Y轴", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID, Args:[{FrameID:0, Enable:!bZoomYCoordinate }, ]}, Checked:bZoomYCoordinate},
92625
+
92608
92626
  { Name:JSPopMenu.SEPARATOR_LINE_NAME },
92609
92627
  {
92610
92628
  Name:"鼠标形状",
@@ -94478,6 +94496,41 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
94478
94496
 
94479
94497
  return false;
94480
94498
  }
94499
+
94500
+ //option={ FrameID:, Enable: }
94501
+ this.EnableZoomYCoordinate=function(option)
94502
+ {
94503
+ if (!option) return false;
94504
+ if (!IFrameSplitOperator.IsNumber(option.FrameID)) return false;
94505
+ if (!IFrameSplitOperator.IsBool(option.Enable)) return false;
94506
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return false;
94507
+ if (option.FrameID<0 || option.FrameID>this.Frame.SubFrame.length) return false;
94508
+
94509
+ var item=this.Frame.SubFrame[option.FrameID];
94510
+ if (!item || !item.Frame || !item.Frame.YSplitOperator) return false;
94511
+
94512
+ var frame=item.Frame;
94513
+ var splitOper=frame.YSplitOperator;
94514
+
94515
+ if (option.Enable)
94516
+ {
94517
+ var max=frame.HorizontalMax, min=frame.HorizontalMin;
94518
+ if (!IFrameSplitOperator.IsNumber(max) || !IFrameSplitOperator.IsNumber(min)) return false;
94519
+
94520
+ splitOper.FixedYMaxMin={ Max:max, Min:min };
94521
+ splitOper.EnableZoomUpDown=true;
94522
+ frame.XYSplit=true;
94523
+ this.ChartDragSelectRect.EnableLButton=false;
94524
+ }
94525
+ else
94526
+ {
94527
+ splitOper.FixedYMaxMin=null
94528
+ splitOper.EnableZoomUpDown=false;
94529
+ frame.XYSplit=true;
94530
+ }
94531
+
94532
+ this.Draw();
94533
+ }
94481
94534
  }
94482
94535
 
94483
94536
  //API 返回数据 转化为array[]
@@ -97230,7 +97283,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
97230
97283
  this.ChartCorssCursor.PtInClient=(x,y)=>{ return this.PtInClient(x,y); }
97231
97284
  this.ChartCorssCursor.Canvas=this.Canvas;
97232
97285
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
97233
- this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
97286
+ this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
97287
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
97234
97288
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
97235
97289
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
97236
97290
  this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;
@@ -103252,6 +103306,7 @@ function MinuteChartHScreenContainer(uielement)
103252
103306
  this.ChartCorssCursor.Canvas=this.Canvas;
103253
103307
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
103254
103308
  this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
103309
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
103255
103310
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
103256
103311
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
103257
103312
  this.ChartCorssCursor.StringFormatY.HQChart=this;
@@ -106888,7 +106943,7 @@ function MinuteTimeStringData()
106888
106943
  return data;
106889
106944
  }
106890
106945
 
106891
- this.GetTimeData = function (symbol)
106946
+ this.GetTimeData = function (symbol, option)
106892
106947
  {
106893
106948
  if (!symbol) return this.SHSZ;
106894
106949
 
@@ -106904,7 +106959,7 @@ function MinuteTimeStringData()
106904
106959
  if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol)) return this.GetUSA(upperSymbol);
106905
106960
  if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol) || MARKET_SUFFIX_NAME.IsGZFE(upperSymbol))
106906
106961
  {
106907
- var splitData = g_FuturesTimeData.GetSplitData(upperSymbol);
106962
+ var splitData = g_FuturesTimeData.GetSplitData(upperSymbol, option);
106908
106963
  if (!splitData) return null;
106909
106964
  return this.GetFutures(splitData);
106910
106965
  }
@@ -107369,8 +107424,8 @@ function MinuteCoordinateData()
107369
107424
  }
107370
107425
 
107371
107426
 
107372
-
107373
- this.GetCoordinateData = function (symbol, width)
107427
+ // option=GlobalOption
107428
+ this.GetCoordinateData = function (symbol, width, option)
107374
107429
  {
107375
107430
  var data = null;
107376
107431
  if (!symbol)
@@ -107395,7 +107450,7 @@ function MinuteCoordinateData()
107395
107450
  else if (MARKET_SUFFIX_NAME.IsJP(upperSymbol))
107396
107451
  data=this.GetJPData(upperSymbol,width);
107397
107452
  else if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol) || MARKET_SUFFIX_NAME.IsGZFE(upperSymbol))
107398
- return this.GetChinatFuturesData(upperSymbol,width);
107453
+ return this.GetChinatFuturesData(upperSymbol, width, option);
107399
107454
  else if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol))
107400
107455
  data = this.GetUSAData(upperSymbol,width);
107401
107456
  else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))
@@ -107477,9 +107532,9 @@ function MinuteCoordinateData()
107477
107532
  return result;
107478
107533
  }
107479
107534
 
107480
- this.GetFuturesData = function (upperSymbol,width,timeData)
107535
+ this.GetFuturesData = function (upperSymbol,width,timeData, option)
107481
107536
  {
107482
- var splitData = timeData.GetSplitData(upperSymbol);
107537
+ var splitData = timeData.GetSplitData(upperSymbol, option);
107483
107538
  if (!splitData) return null;
107484
107539
  var stringData = g_MinuteTimeStringData.GetFutures(splitData);
107485
107540
  if (!stringData) return null;
@@ -107518,9 +107573,9 @@ function MinuteCoordinateData()
107518
107573
  return result;
107519
107574
  }
107520
107575
 
107521
- this.GetChinatFuturesData=function(upperSymbol,width)
107576
+ this.GetChinatFuturesData=function(upperSymbol, width, option)
107522
107577
  {
107523
- return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData);
107578
+ return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData, option);
107524
107579
  }
107525
107580
 
107526
107581
  this.GetNYMEXData=function(upperSymbol,width)
@@ -108326,7 +108381,7 @@ function FuturesTimeData()
108326
108381
  }
108327
108382
  }
108328
108383
 
108329
- this.GetData=function(upperSymbol)
108384
+ this.GetData=function(upperSymbol, option)
108330
108385
  {
108331
108386
  var oneWord = upperSymbol.charAt(0);
108332
108387
  var twoWords = upperSymbol.substr(0,2);
@@ -108371,9 +108426,9 @@ function FuturesTimeData()
108371
108426
  return null;
108372
108427
  }
108373
108428
 
108374
- this.GetSplitData = function (upperSymbol)
108429
+ this.GetSplitData = function (upperSymbol, option)
108375
108430
  {
108376
- var data=this.GetData(upperSymbol);
108431
+ var data=this.GetData(upperSymbol, option);
108377
108432
  if (!data) return null;
108378
108433
 
108379
108434
  return this.TIME_SPLIT[data.Time];
@@ -136196,14 +136251,14 @@ function APIScriptIndex(name,script,args,option, isOverlay)
136196
136251
  var indexData=[];
136197
136252
  var outVarItem={Name:item.name,Type:item.type};
136198
136253
  if (item.color) outVarItem.Color=item.color;
136254
+ else if (item.Color) outVarItem.Color=item.Color;
136199
136255
  if (IFrameSplitOperator.IsBool(item.IsShowTitle)) outVarItem.IsShowTitle = item.IsShowTitle; //是否显示指标标题
136200
136256
  if (IFrameSplitOperator.IsNumber(item.DrawVAlign)) outVarItem.DrawVAlign = item.DrawVAlign;
136201
136257
  if (IFrameSplitOperator.IsNumber(item.DrawAlign)) outVarItem.DrawAlign = item.DrawAlign;
136258
+ if (item.Font) outVarItem.Font=item.Font;
136202
136259
  if (item.data)
136203
136260
  {
136204
136261
  outVarItem.Data=this.FittingArray(item.data,date,time,hqChart);
136205
-
136206
- if (item.color) outVarItem.Color=item.color;
136207
136262
  if (item.linewidth) outVarItem.LineWidth=item.linewidth;
136208
136263
  if (IFrameSplitOperator.IsBool(item.isshow)) outVarItem.IsShow = item.isshow; //是否绘制线段
136209
136264
  if (item.isexdata==true) outVarItem.IsExData = true;
@@ -136243,6 +136298,18 @@ function APIScriptIndex(name,script,args,option, isOverlay)
136243
136298
 
136244
136299
  result.push(outVarItem);
136245
136300
  }
136301
+ else if (draw.DrawType=="DRAWTEXT_FIX")
136302
+ {
136303
+ drawItem.Text=draw.Text;
136304
+ drawItem.Name=draw.Name;
136305
+ drawItem.DrawType=draw.DrawType;
136306
+ drawItem.DrawData={ Value:null, Text:null };
136307
+ drawItem.DrawData.Value=this.FittingArray(draw.DrawData.Value,date,time,hqChart);
136308
+ drawItem.DrawData.Text=this.FittingArray(draw.DrawData.Text,date,time,hqChart);
136309
+ drawItem.Position=draw.Position;
136310
+ outVarItem.Draw=drawItem;
136311
+ result.push(outVarItem);
136312
+ }
136246
136313
  else if (draw.DrawType=="VERTLINE") //竖线
136247
136314
  {
136248
136315
  drawItem.Text=draw.Text;
@@ -154931,7 +154998,7 @@ function ScrollBarBGChart()
154931
154998
 
154932
154999
 
154933
155000
 
154934
- var HQCHART_VERSION="1.1.15291";
155001
+ var HQCHART_VERSION="1.1.15298";
154935
155002
 
154936
155003
  function PrintHQChartVersion()
154937
155004
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15291";
8
+ var HQCHART_VERSION="1.1.15298";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -58292,6 +58292,8 @@ HQData.Report_APIIndex=function(data, callback)
58292
58292
  HQData.APIIndex_BASELINE_BAR(data, callback);
58293
58293
  else if (request.Data.indexname=="API_VERTLINE")
58294
58294
  HQData.APIIndex_VERTLINE(data, callback);
58295
+ else if (request.Data.indexname=="API_DRAWTEXT_FIX")
58296
+ HQData.APIIndex_DRAWTEXT_FIX(data, callback);
58295
58297
 
58296
58298
  else if (request.Data.indexname=="API_ERRORMESSAGE")
58297
58299
  HQData.APIIndex_ErrorMessage(data, callback);
@@ -59987,6 +59989,52 @@ HQData.API_CHART_AREA_TEXT=function(data, callback)
59987
59989
  }
59988
59990
 
59989
59991
 
59992
+ HQData.APIIndex_DRAWTEXT_FIX=function(data, callback)
59993
+ {
59994
+ data.PreventDefault=true;
59995
+ var hqchart=data.HQChart;
59996
+ var kData=hqchart.GetKData();
59997
+
59998
+ var textData=
59999
+ {
60000
+ name:'DRAWTEXT_FIX', type:1,
60001
+ Draw:
60002
+ {
60003
+ DrawType:'DRAWTEXT_FIX',
60004
+ DrawData: { Value:[], Text:[] },
60005
+ Position:{ X:0.5, Y:0.2, Type:1 }
60006
+ },
60007
+ Color:"rgb(30,144,255)",
60008
+ Font:`italic bold 2.2em "Fira Sans", sans-serif`,
60009
+ };
60010
+
60011
+ for(var i=0;i<kData.Data.length;++i)
60012
+ {
60013
+ var kItem=kData.Data[i];
60014
+
60015
+ if (i%50==1)
60016
+ {
60017
+ textData.Draw.DrawData.Value[i]=1;
60018
+ textData.Draw.DrawData.Text[i]=`${kItem.Date}-${i}`;
60019
+ }
60020
+ else
60021
+ {
60022
+ textData.Draw.DrawData.Value[i]=0;
60023
+ }
60024
+ }
60025
+
60026
+ var apiData=
60027
+ {
60028
+ code:0,
60029
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
60030
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[textData] }
60031
+ };
60032
+
60033
+ console.log('[HQData.APIIndex_PARTLINE] apiData ', apiData);
60034
+ callback(apiData);
60035
+ }
60036
+
60037
+
59990
60038
  HQData.APIIndex_ErrorMessage=function(data, callback)
59991
60039
  {
59992
60040
  data.PreventDefault=true;