hqchart 1.1.15292 → 1.1.15304

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
  {
@@ -39668,6 +39674,7 @@ function ChartDrawText_Fix()
39668
39674
  if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
39669
39675
  if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Value) || !IFrameSplitOperator.IsNonEmptyArray(data.Text)) return;
39670
39676
 
39677
+ var splitWord="&"; //内置分隔符
39671
39678
  for(var i=0;i<kData.Data.length;++i)
39672
39679
  {
39673
39680
  var value=data.Value[i];
@@ -39678,6 +39685,18 @@ function ChartDrawText_Fix()
39678
39685
 
39679
39686
  var kItem=kData.Data[i];
39680
39687
  var item={ Value:value, Text:text, Date:kItem.Date, Time:kItem.Time };
39688
+ if (text.includes(splitWord)) //&自动换行
39689
+ {
39690
+ var aryText=[];
39691
+ var aryValue=text.split(splitWord);
39692
+ for(var j=0;j<aryValue.length;++j)
39693
+ {
39694
+ var value=aryValue[j];
39695
+ if (value) aryText.push({ Name:value});
39696
+ }
39697
+ if (IFrameSplitOperator.IsNonEmptyArray(aryText)) item.Text=aryText;
39698
+ }
39699
+
39681
39700
  var key=this.BuildKey(item);
39682
39701
 
39683
39702
  /* //测试
@@ -58095,7 +58114,7 @@ function FrameSplitMinuteX()
58095
58114
  width=width/GetDevicePixelRatio();
58096
58115
 
58097
58116
  const minuteCoordinate = g_MinuteCoordinateData;
58098
- var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol,width);
58117
+ var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol, width, this.Frame.GlobalOption);
58099
58118
  var minuteCount=xcoordinateData.Count;
58100
58119
  var minuteMiddleCount=xcoordinateData.MiddleCount>0? xcoordinateData.MiddleCount: parseInt(minuteCount/2);
58101
58120
  var xcoordinate = xcoordinateData.Data;
@@ -60761,7 +60780,8 @@ function HQMinuteTimeStringFormat()
60761
60780
  this.MultiDayBeforeOpenData; //多日分时图 盘前数据
60762
60781
  this.MultiDayAfterCloseData; //多日分时图 收盘数据
60763
60782
 
60764
- this.GetEventCallback
60783
+ this.GetEventCallback;
60784
+ this.HQChart;
60765
60785
 
60766
60786
  this.GetBeforeOpen=function()
60767
60787
  {
@@ -60859,7 +60879,9 @@ function HQMinuteTimeStringFormat()
60859
60879
  if (this.Frame && this.Frame.MinuteCount) showIndex=index%this.Frame.MinuteCount;
60860
60880
 
60861
60881
  var timeStringData=g_MinuteTimeStringData;
60862
- var timeData=timeStringData.GetTimeData(this.Symbol);
60882
+ var globalOption=null;
60883
+ if (this.HQChart) globalOption=this.HQChart.GlobalOption;
60884
+ var timeData=timeStringData.GetTimeData(this.Symbol, globalOption);
60863
60885
  if (!timeData) return false;
60864
60886
 
60865
60887
  if (showIndex<0) showIndex=0;
@@ -88242,12 +88264,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88242
88264
  var bDaySummary=klineChart.DaySummary.Enable;
88243
88265
  var infoPosition=klineChart.InfoPosition;
88244
88266
  var coordinateType=null, yCoordinateType=null; //坐标类型
88267
+ var bZoomYCoordinate=false;
88245
88268
  var mainFrame=null;
88246
88269
  if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
88247
88270
  if (mainFrame)
88248
88271
  {
88249
88272
  coordinateType=mainFrame.CoordinateType;
88250
- if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
88273
+ if (mainFrame.YSplitOperator)
88274
+ {
88275
+ yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
88276
+ if (mainFrame.YSplitOperator.FixedYMaxMin && mainFrame.YSplitOperator.EnableZoomUpDown)
88277
+ bZoomYCoordinate=true;
88278
+ }
88279
+
88251
88280
  }
88252
88281
 
88253
88282
  var aryKLineInfo=[]; //信息地雷
@@ -88509,6 +88538,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88509
88538
 
88510
88539
  { Name:"显示走完剩余时间", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_KLINE_DAY_SUMMARY_ID, Args:[!bDaySummary]}, Checked:bDaySummary},
88511
88540
 
88541
+ { Name:"拖动Y轴", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID, Args:[{FrameID:0, Enable:!bZoomYCoordinate }, ]}, Checked:bZoomYCoordinate},
88542
+
88512
88543
  { Name:JSPopMenu.SEPARATOR_LINE_NAME },
88513
88544
  {
88514
88545
  Name:"鼠标形状",
@@ -90382,6 +90413,41 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90382
90413
 
90383
90414
  return false;
90384
90415
  }
90416
+
90417
+ //option={ FrameID:, Enable: }
90418
+ this.EnableZoomYCoordinate=function(option)
90419
+ {
90420
+ if (!option) return false;
90421
+ if (!IFrameSplitOperator.IsNumber(option.FrameID)) return false;
90422
+ if (!IFrameSplitOperator.IsBool(option.Enable)) return false;
90423
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return false;
90424
+ if (option.FrameID<0 || option.FrameID>this.Frame.SubFrame.length) return false;
90425
+
90426
+ var item=this.Frame.SubFrame[option.FrameID];
90427
+ if (!item || !item.Frame || !item.Frame.YSplitOperator) return false;
90428
+
90429
+ var frame=item.Frame;
90430
+ var splitOper=frame.YSplitOperator;
90431
+
90432
+ if (option.Enable)
90433
+ {
90434
+ var max=frame.HorizontalMax, min=frame.HorizontalMin;
90435
+ if (!IFrameSplitOperator.IsNumber(max) || !IFrameSplitOperator.IsNumber(min)) return false;
90436
+
90437
+ splitOper.FixedYMaxMin={ Max:max, Min:min };
90438
+ splitOper.EnableZoomUpDown=true;
90439
+ frame.XYSplit=true;
90440
+ this.ChartDragSelectRect.EnableLButton=false;
90441
+ }
90442
+ else
90443
+ {
90444
+ splitOper.FixedYMaxMin=null
90445
+ splitOper.EnableZoomUpDown=false;
90446
+ frame.XYSplit=true;
90447
+ }
90448
+
90449
+ this.Draw();
90450
+ }
90385
90451
  }
90386
90452
 
90387
90453
  //API 返回数据 转化为array[]
@@ -93134,7 +93200,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
93134
93200
  this.ChartCorssCursor.PtInClient=(x,y)=>{ return this.PtInClient(x,y); }
93135
93201
  this.ChartCorssCursor.Canvas=this.Canvas;
93136
93202
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
93137
- this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
93203
+ this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
93204
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
93138
93205
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
93139
93206
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
93140
93207
  this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;
@@ -99156,6 +99223,7 @@ function MinuteChartHScreenContainer(uielement)
99156
99223
  this.ChartCorssCursor.Canvas=this.Canvas;
99157
99224
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
99158
99225
  this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
99226
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
99159
99227
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
99160
99228
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
99161
99229
  this.ChartCorssCursor.StringFormatY.HQChart=this;
@@ -102792,7 +102860,7 @@ function MinuteTimeStringData()
102792
102860
  return data;
102793
102861
  }
102794
102862
 
102795
- this.GetTimeData = function (symbol)
102863
+ this.GetTimeData = function (symbol, option)
102796
102864
  {
102797
102865
  if (!symbol) return this.SHSZ;
102798
102866
 
@@ -102808,7 +102876,7 @@ function MinuteTimeStringData()
102808
102876
  if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol)) return this.GetUSA(upperSymbol);
102809
102877
  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
102878
  {
102811
- var splitData = g_FuturesTimeData.GetSplitData(upperSymbol);
102879
+ var splitData = g_FuturesTimeData.GetSplitData(upperSymbol, option);
102812
102880
  if (!splitData) return null;
102813
102881
  return this.GetFutures(splitData);
102814
102882
  }
@@ -103273,8 +103341,8 @@ function MinuteCoordinateData()
103273
103341
  }
103274
103342
 
103275
103343
 
103276
-
103277
- this.GetCoordinateData = function (symbol, width)
103344
+ // option=GlobalOption
103345
+ this.GetCoordinateData = function (symbol, width, option)
103278
103346
  {
103279
103347
  var data = null;
103280
103348
  if (!symbol)
@@ -103299,7 +103367,7 @@ function MinuteCoordinateData()
103299
103367
  else if (MARKET_SUFFIX_NAME.IsJP(upperSymbol))
103300
103368
  data=this.GetJPData(upperSymbol,width);
103301
103369
  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);
103370
+ return this.GetChinatFuturesData(upperSymbol, width, option);
103303
103371
  else if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol))
103304
103372
  data = this.GetUSAData(upperSymbol,width);
103305
103373
  else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))
@@ -103381,9 +103449,9 @@ function MinuteCoordinateData()
103381
103449
  return result;
103382
103450
  }
103383
103451
 
103384
- this.GetFuturesData = function (upperSymbol,width,timeData)
103452
+ this.GetFuturesData = function (upperSymbol,width,timeData, option)
103385
103453
  {
103386
- var splitData = timeData.GetSplitData(upperSymbol);
103454
+ var splitData = timeData.GetSplitData(upperSymbol, option);
103387
103455
  if (!splitData) return null;
103388
103456
  var stringData = g_MinuteTimeStringData.GetFutures(splitData);
103389
103457
  if (!stringData) return null;
@@ -103422,9 +103490,9 @@ function MinuteCoordinateData()
103422
103490
  return result;
103423
103491
  }
103424
103492
 
103425
- this.GetChinatFuturesData=function(upperSymbol,width)
103493
+ this.GetChinatFuturesData=function(upperSymbol, width, option)
103426
103494
  {
103427
- return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData);
103495
+ return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData, option);
103428
103496
  }
103429
103497
 
103430
103498
  this.GetNYMEXData=function(upperSymbol,width)
@@ -104230,7 +104298,7 @@ function FuturesTimeData()
104230
104298
  }
104231
104299
  }
104232
104300
 
104233
- this.GetData=function(upperSymbol)
104301
+ this.GetData=function(upperSymbol, option)
104234
104302
  {
104235
104303
  var oneWord = upperSymbol.charAt(0);
104236
104304
  var twoWords = upperSymbol.substr(0,2);
@@ -104275,9 +104343,9 @@ function FuturesTimeData()
104275
104343
  return null;
104276
104344
  }
104277
104345
 
104278
- this.GetSplitData = function (upperSymbol)
104346
+ this.GetSplitData = function (upperSymbol, option)
104279
104347
  {
104280
- var data=this.GetData(upperSymbol);
104348
+ var data=this.GetData(upperSymbol, option);
104281
104349
  if (!data) return null;
104282
104350
 
104283
104351
  return this.TIME_SPLIT[data.Time];
@@ -2760,6 +2760,10 @@ 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);
2765
+ else if (request.Data.indexname=="API_DRAWNUMBER_FIX")
2766
+ HQData.APIIndex_DRAWNUMBER_FIX(data, callback);
2763
2767
 
2764
2768
  else if (request.Data.indexname=="API_ERRORMESSAGE")
2765
2769
  HQData.APIIndex_ErrorMessage(data, callback);
@@ -4455,6 +4459,99 @@ HQData.API_CHART_AREA_TEXT=function(data, callback)
4455
4459
  }
4456
4460
 
4457
4461
 
4462
+ HQData.APIIndex_DRAWTEXT_FIX=function(data, callback)
4463
+ {
4464
+ data.PreventDefault=true;
4465
+ var hqchart=data.HQChart;
4466
+ var kData=hqchart.GetKData();
4467
+
4468
+ var textData=
4469
+ {
4470
+ name:'DRAWTEXT_FIX', type:1,
4471
+ Draw:
4472
+ {
4473
+ DrawType:'DRAWTEXT_FIX',
4474
+ DrawData: { Value:[], Text:[] },
4475
+ Position:{ X:0.5, Y:0.2, Type:1 }
4476
+ },
4477
+ Color:"rgb(30,144,255)",
4478
+ Font:`italic bold 2.2em "Fira Sans", sans-serif`,
4479
+ };
4480
+
4481
+ for(var i=0;i<kData.Data.length;++i)
4482
+ {
4483
+ var kItem=kData.Data[i];
4484
+
4485
+ if (i%50==1)
4486
+ {
4487
+ textData.Draw.DrawData.Value[i]=1;
4488
+ //textData.Draw.DrawData.Text[i]=`${kItem.Date}-${i}`;
4489
+ textData.Draw.DrawData.Text[i]=[{ Name:`${kItem.Date}-${i}`}, { Name:`第2行${i}`}];
4490
+ }
4491
+ else
4492
+ {
4493
+ textData.Draw.DrawData.Value[i]=0;
4494
+ }
4495
+ }
4496
+
4497
+ var apiData=
4498
+ {
4499
+ code:0,
4500
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
4501
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[textData] }
4502
+ };
4503
+
4504
+ console.log('[HQData.APIIndex_PARTLINE] apiData ', apiData);
4505
+ callback(apiData);
4506
+ }
4507
+
4508
+ HQData.APIIndex_DRAWNUMBER_FIX=function(data, callback)
4509
+ {
4510
+ data.PreventDefault=true;
4511
+ var hqchart=data.HQChart;
4512
+ var kData=hqchart.GetKData();
4513
+
4514
+ var textData=
4515
+ {
4516
+ name:'DRAWNUMBER_FIX', type:1,
4517
+ Draw:
4518
+ {
4519
+ DrawType:'DRAWNUMBER_FIX',
4520
+ DrawData: { Value:[], Text:[] },
4521
+ Position:{ X:0.5, Y:0.2, Type:1 }
4522
+ },
4523
+ Color:"rgb(30,144,255)",
4524
+ Font:`italic bold 2.2em "Fira Sans", sans-serif`,
4525
+ };
4526
+
4527
+ for(var i=0;i<kData.Data.length;++i)
4528
+ {
4529
+ var kItem=kData.Data[i];
4530
+
4531
+ if (i%50==1)
4532
+ {
4533
+ textData.Draw.DrawData.Value[i]=1;
4534
+ textData.Draw.DrawData.Text[i]=`${i.toFixed(2)}`
4535
+ //textData.Draw.DrawData.Text[i]=[{ Name:`${kItem.Date}-${i}`}, { Name:`第2行${i}`}];
4536
+ }
4537
+ else
4538
+ {
4539
+ textData.Draw.DrawData.Value[i]=0;
4540
+ }
4541
+ }
4542
+
4543
+ var apiData=
4544
+ {
4545
+ code:0,
4546
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
4547
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[textData] }
4548
+ };
4549
+
4550
+ console.log('[HQData.APIIndex_PARTLINE] apiData ', apiData);
4551
+ callback(apiData);
4552
+ }
4553
+
4554
+
4458
4555
  HQData.APIIndex_ErrorMessage=function(data, callback)
4459
4556
  {
4460
4557
  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
  {
@@ -43764,6 +43770,7 @@ function ChartDrawText_Fix()
43764
43770
  if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
43765
43771
  if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Value) || !IFrameSplitOperator.IsNonEmptyArray(data.Text)) return;
43766
43772
 
43773
+ var splitWord="&"; //内置分隔符
43767
43774
  for(var i=0;i<kData.Data.length;++i)
43768
43775
  {
43769
43776
  var value=data.Value[i];
@@ -43774,6 +43781,18 @@ function ChartDrawText_Fix()
43774
43781
 
43775
43782
  var kItem=kData.Data[i];
43776
43783
  var item={ Value:value, Text:text, Date:kItem.Date, Time:kItem.Time };
43784
+ if (text.includes(splitWord)) //&自动换行
43785
+ {
43786
+ var aryText=[];
43787
+ var aryValue=text.split(splitWord);
43788
+ for(var j=0;j<aryValue.length;++j)
43789
+ {
43790
+ var value=aryValue[j];
43791
+ if (value) aryText.push({ Name:value});
43792
+ }
43793
+ if (IFrameSplitOperator.IsNonEmptyArray(aryText)) item.Text=aryText;
43794
+ }
43795
+
43777
43796
  var key=this.BuildKey(item);
43778
43797
 
43779
43798
  /* //测试
@@ -62191,7 +62210,7 @@ function FrameSplitMinuteX()
62191
62210
  width=width/GetDevicePixelRatio();
62192
62211
 
62193
62212
  const minuteCoordinate = g_MinuteCoordinateData;
62194
- var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol,width);
62213
+ var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol, width, this.Frame.GlobalOption);
62195
62214
  var minuteCount=xcoordinateData.Count;
62196
62215
  var minuteMiddleCount=xcoordinateData.MiddleCount>0? xcoordinateData.MiddleCount: parseInt(minuteCount/2);
62197
62216
  var xcoordinate = xcoordinateData.Data;
@@ -64857,7 +64876,8 @@ function HQMinuteTimeStringFormat()
64857
64876
  this.MultiDayBeforeOpenData; //多日分时图 盘前数据
64858
64877
  this.MultiDayAfterCloseData; //多日分时图 收盘数据
64859
64878
 
64860
- this.GetEventCallback
64879
+ this.GetEventCallback;
64880
+ this.HQChart;
64861
64881
 
64862
64882
  this.GetBeforeOpen=function()
64863
64883
  {
@@ -64955,7 +64975,9 @@ function HQMinuteTimeStringFormat()
64955
64975
  if (this.Frame && this.Frame.MinuteCount) showIndex=index%this.Frame.MinuteCount;
64956
64976
 
64957
64977
  var timeStringData=g_MinuteTimeStringData;
64958
- var timeData=timeStringData.GetTimeData(this.Symbol);
64978
+ var globalOption=null;
64979
+ if (this.HQChart) globalOption=this.HQChart.GlobalOption;
64980
+ var timeData=timeStringData.GetTimeData(this.Symbol, globalOption);
64959
64981
  if (!timeData) return false;
64960
64982
 
64961
64983
  if (showIndex<0) showIndex=0;
@@ -92338,12 +92360,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92338
92360
  var bDaySummary=klineChart.DaySummary.Enable;
92339
92361
  var infoPosition=klineChart.InfoPosition;
92340
92362
  var coordinateType=null, yCoordinateType=null; //坐标类型
92363
+ var bZoomYCoordinate=false;
92341
92364
  var mainFrame=null;
92342
92365
  if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
92343
92366
  if (mainFrame)
92344
92367
  {
92345
92368
  coordinateType=mainFrame.CoordinateType;
92346
- if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
92369
+ if (mainFrame.YSplitOperator)
92370
+ {
92371
+ yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
92372
+ if (mainFrame.YSplitOperator.FixedYMaxMin && mainFrame.YSplitOperator.EnableZoomUpDown)
92373
+ bZoomYCoordinate=true;
92374
+ }
92375
+
92347
92376
  }
92348
92377
 
92349
92378
  var aryKLineInfo=[]; //信息地雷
@@ -92605,6 +92634,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92605
92634
 
92606
92635
  { Name:"显示走完剩余时间", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_KLINE_DAY_SUMMARY_ID, Args:[!bDaySummary]}, Checked:bDaySummary},
92607
92636
 
92637
+ { Name:"拖动Y轴", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID, Args:[{FrameID:0, Enable:!bZoomYCoordinate }, ]}, Checked:bZoomYCoordinate},
92638
+
92608
92639
  { Name:JSPopMenu.SEPARATOR_LINE_NAME },
92609
92640
  {
92610
92641
  Name:"鼠标形状",
@@ -94478,6 +94509,41 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
94478
94509
 
94479
94510
  return false;
94480
94511
  }
94512
+
94513
+ //option={ FrameID:, Enable: }
94514
+ this.EnableZoomYCoordinate=function(option)
94515
+ {
94516
+ if (!option) return false;
94517
+ if (!IFrameSplitOperator.IsNumber(option.FrameID)) return false;
94518
+ if (!IFrameSplitOperator.IsBool(option.Enable)) return false;
94519
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return false;
94520
+ if (option.FrameID<0 || option.FrameID>this.Frame.SubFrame.length) return false;
94521
+
94522
+ var item=this.Frame.SubFrame[option.FrameID];
94523
+ if (!item || !item.Frame || !item.Frame.YSplitOperator) return false;
94524
+
94525
+ var frame=item.Frame;
94526
+ var splitOper=frame.YSplitOperator;
94527
+
94528
+ if (option.Enable)
94529
+ {
94530
+ var max=frame.HorizontalMax, min=frame.HorizontalMin;
94531
+ if (!IFrameSplitOperator.IsNumber(max) || !IFrameSplitOperator.IsNumber(min)) return false;
94532
+
94533
+ splitOper.FixedYMaxMin={ Max:max, Min:min };
94534
+ splitOper.EnableZoomUpDown=true;
94535
+ frame.XYSplit=true;
94536
+ this.ChartDragSelectRect.EnableLButton=false;
94537
+ }
94538
+ else
94539
+ {
94540
+ splitOper.FixedYMaxMin=null
94541
+ splitOper.EnableZoomUpDown=false;
94542
+ frame.XYSplit=true;
94543
+ }
94544
+
94545
+ this.Draw();
94546
+ }
94481
94547
  }
94482
94548
 
94483
94549
  //API 返回数据 转化为array[]
@@ -97230,7 +97296,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
97230
97296
  this.ChartCorssCursor.PtInClient=(x,y)=>{ return this.PtInClient(x,y); }
97231
97297
  this.ChartCorssCursor.Canvas=this.Canvas;
97232
97298
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
97233
- this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
97299
+ this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
97300
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
97234
97301
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
97235
97302
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
97236
97303
  this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;
@@ -103252,6 +103319,7 @@ function MinuteChartHScreenContainer(uielement)
103252
103319
  this.ChartCorssCursor.Canvas=this.Canvas;
103253
103320
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
103254
103321
  this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
103322
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
103255
103323
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
103256
103324
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
103257
103325
  this.ChartCorssCursor.StringFormatY.HQChart=this;
@@ -106888,7 +106956,7 @@ function MinuteTimeStringData()
106888
106956
  return data;
106889
106957
  }
106890
106958
 
106891
- this.GetTimeData = function (symbol)
106959
+ this.GetTimeData = function (symbol, option)
106892
106960
  {
106893
106961
  if (!symbol) return this.SHSZ;
106894
106962
 
@@ -106904,7 +106972,7 @@ function MinuteTimeStringData()
106904
106972
  if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol)) return this.GetUSA(upperSymbol);
106905
106973
  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
106974
  {
106907
- var splitData = g_FuturesTimeData.GetSplitData(upperSymbol);
106975
+ var splitData = g_FuturesTimeData.GetSplitData(upperSymbol, option);
106908
106976
  if (!splitData) return null;
106909
106977
  return this.GetFutures(splitData);
106910
106978
  }
@@ -107369,8 +107437,8 @@ function MinuteCoordinateData()
107369
107437
  }
107370
107438
 
107371
107439
 
107372
-
107373
- this.GetCoordinateData = function (symbol, width)
107440
+ // option=GlobalOption
107441
+ this.GetCoordinateData = function (symbol, width, option)
107374
107442
  {
107375
107443
  var data = null;
107376
107444
  if (!symbol)
@@ -107395,7 +107463,7 @@ function MinuteCoordinateData()
107395
107463
  else if (MARKET_SUFFIX_NAME.IsJP(upperSymbol))
107396
107464
  data=this.GetJPData(upperSymbol,width);
107397
107465
  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);
107466
+ return this.GetChinatFuturesData(upperSymbol, width, option);
107399
107467
  else if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol))
107400
107468
  data = this.GetUSAData(upperSymbol,width);
107401
107469
  else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))
@@ -107477,9 +107545,9 @@ function MinuteCoordinateData()
107477
107545
  return result;
107478
107546
  }
107479
107547
 
107480
- this.GetFuturesData = function (upperSymbol,width,timeData)
107548
+ this.GetFuturesData = function (upperSymbol,width,timeData, option)
107481
107549
  {
107482
- var splitData = timeData.GetSplitData(upperSymbol);
107550
+ var splitData = timeData.GetSplitData(upperSymbol, option);
107483
107551
  if (!splitData) return null;
107484
107552
  var stringData = g_MinuteTimeStringData.GetFutures(splitData);
107485
107553
  if (!stringData) return null;
@@ -107518,9 +107586,9 @@ function MinuteCoordinateData()
107518
107586
  return result;
107519
107587
  }
107520
107588
 
107521
- this.GetChinatFuturesData=function(upperSymbol,width)
107589
+ this.GetChinatFuturesData=function(upperSymbol, width, option)
107522
107590
  {
107523
- return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData);
107591
+ return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData, option);
107524
107592
  }
107525
107593
 
107526
107594
  this.GetNYMEXData=function(upperSymbol,width)
@@ -108326,7 +108394,7 @@ function FuturesTimeData()
108326
108394
  }
108327
108395
  }
108328
108396
 
108329
- this.GetData=function(upperSymbol)
108397
+ this.GetData=function(upperSymbol, option)
108330
108398
  {
108331
108399
  var oneWord = upperSymbol.charAt(0);
108332
108400
  var twoWords = upperSymbol.substr(0,2);
@@ -108371,9 +108439,9 @@ function FuturesTimeData()
108371
108439
  return null;
108372
108440
  }
108373
108441
 
108374
- this.GetSplitData = function (upperSymbol)
108442
+ this.GetSplitData = function (upperSymbol, option)
108375
108443
  {
108376
- var data=this.GetData(upperSymbol);
108444
+ var data=this.GetData(upperSymbol, option);
108377
108445
  if (!data) return null;
108378
108446
 
108379
108447
  return this.TIME_SPLIT[data.Time];
@@ -136196,14 +136264,14 @@ function APIScriptIndex(name,script,args,option, isOverlay)
136196
136264
  var indexData=[];
136197
136265
  var outVarItem={Name:item.name,Type:item.type};
136198
136266
  if (item.color) outVarItem.Color=item.color;
136267
+ else if (item.Color) outVarItem.Color=item.Color;
136199
136268
  if (IFrameSplitOperator.IsBool(item.IsShowTitle)) outVarItem.IsShowTitle = item.IsShowTitle; //是否显示指标标题
136200
136269
  if (IFrameSplitOperator.IsNumber(item.DrawVAlign)) outVarItem.DrawVAlign = item.DrawVAlign;
136201
136270
  if (IFrameSplitOperator.IsNumber(item.DrawAlign)) outVarItem.DrawAlign = item.DrawAlign;
136271
+ if (item.Font) outVarItem.Font=item.Font;
136202
136272
  if (item.data)
136203
136273
  {
136204
136274
  outVarItem.Data=this.FittingArray(item.data,date,time,hqChart);
136205
-
136206
- if (item.color) outVarItem.Color=item.color;
136207
136275
  if (item.linewidth) outVarItem.LineWidth=item.linewidth;
136208
136276
  if (IFrameSplitOperator.IsBool(item.isshow)) outVarItem.IsShow = item.isshow; //是否绘制线段
136209
136277
  if (item.isexdata==true) outVarItem.IsExData = true;
@@ -136243,6 +136311,18 @@ function APIScriptIndex(name,script,args,option, isOverlay)
136243
136311
 
136244
136312
  result.push(outVarItem);
136245
136313
  }
136314
+ else if (draw.DrawType=="DRAWTEXT_FIX" || draw.DrawType=="DRAWNUMBER_FIX")
136315
+ {
136316
+ drawItem.Text=draw.Text;
136317
+ drawItem.Name=draw.Name;
136318
+ drawItem.DrawType=draw.DrawType;
136319
+ drawItem.DrawData={ Value:null, Text:null };
136320
+ drawItem.DrawData.Value=this.FittingArray(draw.DrawData.Value,date,time,hqChart);
136321
+ drawItem.DrawData.Text=this.FittingArray(draw.DrawData.Text,date,time,hqChart);
136322
+ drawItem.Position=draw.Position;
136323
+ outVarItem.Draw=drawItem;
136324
+ result.push(outVarItem);
136325
+ }
136246
136326
  else if (draw.DrawType=="VERTLINE") //竖线
136247
136327
  {
136248
136328
  drawItem.Text=draw.Text;
@@ -154931,7 +155011,7 @@ function ScrollBarBGChart()
154931
155011
 
154932
155012
 
154933
155013
 
154934
- var HQCHART_VERSION="1.1.15291";
155014
+ var HQCHART_VERSION="1.1.15303";
154935
155015
 
154936
155016
  function PrintHQChartVersion()
154937
155017
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15291";
8
+ var HQCHART_VERSION="1.1.15303";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {