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.
@@ -58292,6 +58292,10 @@ 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);
58297
+ else if (request.Data.indexname=="API_DRAWNUMBER_FIX")
58298
+ HQData.APIIndex_DRAWNUMBER_FIX(data, callback);
58295
58299
 
58296
58300
  else if (request.Data.indexname=="API_ERRORMESSAGE")
58297
58301
  HQData.APIIndex_ErrorMessage(data, callback);
@@ -59987,6 +59991,99 @@ HQData.API_CHART_AREA_TEXT=function(data, callback)
59987
59991
  }
59988
59992
 
59989
59993
 
59994
+ HQData.APIIndex_DRAWTEXT_FIX=function(data, callback)
59995
+ {
59996
+ data.PreventDefault=true;
59997
+ var hqchart=data.HQChart;
59998
+ var kData=hqchart.GetKData();
59999
+
60000
+ var textData=
60001
+ {
60002
+ name:'DRAWTEXT_FIX', type:1,
60003
+ Draw:
60004
+ {
60005
+ DrawType:'DRAWTEXT_FIX',
60006
+ DrawData: { Value:[], Text:[] },
60007
+ Position:{ X:0.5, Y:0.2, Type:1 }
60008
+ },
60009
+ Color:"rgb(30,144,255)",
60010
+ Font:`italic bold 2.2em "Fira Sans", sans-serif`,
60011
+ };
60012
+
60013
+ for(var i=0;i<kData.Data.length;++i)
60014
+ {
60015
+ var kItem=kData.Data[i];
60016
+
60017
+ if (i%50==1)
60018
+ {
60019
+ textData.Draw.DrawData.Value[i]=1;
60020
+ //textData.Draw.DrawData.Text[i]=`${kItem.Date}-${i}`;
60021
+ textData.Draw.DrawData.Text[i]=[{ Name:`${kItem.Date}-${i}`}, { Name:`第2行${i}`}];
60022
+ }
60023
+ else
60024
+ {
60025
+ textData.Draw.DrawData.Value[i]=0;
60026
+ }
60027
+ }
60028
+
60029
+ var apiData=
60030
+ {
60031
+ code:0,
60032
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
60033
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[textData] }
60034
+ };
60035
+
60036
+ console.log('[HQData.APIIndex_PARTLINE] apiData ', apiData);
60037
+ callback(apiData);
60038
+ }
60039
+
60040
+ HQData.APIIndex_DRAWNUMBER_FIX=function(data, callback)
60041
+ {
60042
+ data.PreventDefault=true;
60043
+ var hqchart=data.HQChart;
60044
+ var kData=hqchart.GetKData();
60045
+
60046
+ var textData=
60047
+ {
60048
+ name:'DRAWNUMBER_FIX', type:1,
60049
+ Draw:
60050
+ {
60051
+ DrawType:'DRAWNUMBER_FIX',
60052
+ DrawData: { Value:[], Text:[] },
60053
+ Position:{ X:0.5, Y:0.2, Type:1 }
60054
+ },
60055
+ Color:"rgb(30,144,255)",
60056
+ Font:`italic bold 2.2em "Fira Sans", sans-serif`,
60057
+ };
60058
+
60059
+ for(var i=0;i<kData.Data.length;++i)
60060
+ {
60061
+ var kItem=kData.Data[i];
60062
+
60063
+ if (i%50==1)
60064
+ {
60065
+ textData.Draw.DrawData.Value[i]=1;
60066
+ textData.Draw.DrawData.Text[i]=`${i.toFixed(2)}`
60067
+ //textData.Draw.DrawData.Text[i]=[{ Name:`${kItem.Date}-${i}`}, { Name:`第2行${i}`}];
60068
+ }
60069
+ else
60070
+ {
60071
+ textData.Draw.DrawData.Value[i]=0;
60072
+ }
60073
+ }
60074
+
60075
+ var apiData=
60076
+ {
60077
+ code:0,
60078
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
60079
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[textData] }
60080
+ };
60081
+
60082
+ console.log('[HQData.APIIndex_PARTLINE] apiData ', apiData);
60083
+ callback(apiData);
60084
+ }
60085
+
60086
+
59990
60087
  HQData.APIIndex_ErrorMessage=function(data, callback)
59991
60088
  {
59992
60089
  data.PreventDefault=true;
@@ -7278,6 +7278,7 @@ var JSCHART_MENU_ID=
7278
7278
  CMD_CORSS_X_TEXTALIGN_ID:61, //十字光标 底部文字对齐方式
7279
7279
 
7280
7280
  CMD_CHANGE_YRIGHT_TEXT_FORMAT:62, //分时图主图 右侧刻度格式
7281
+ CMD_ENABLE_ZOOM_Y_ID:63, //放大缩小Y坐标 { FrameID:, Enable: , Range:{ Max:, Min: }}
7281
7282
 
7282
7283
 
7283
7284
  CMD_REPORT_CHANGE_BLOCK_ID:100, //报价列表 切换板块ID
@@ -16080,6 +16081,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
16080
16081
  this.ResetFrameXYSplit();
16081
16082
  this.Draw();
16082
16083
  break;
16084
+ case JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID:
16085
+ if (!srcParam) return false;
16086
+ if (this.EnableZoomYCoordinate) this.EnableZoomYCoordinate(srcParam);
16087
+ break;
16083
16088
  }
16084
16089
  }
16085
16090
 
@@ -34758,12 +34763,13 @@ function ChartKLine()
34758
34763
  if (this.TradeIcon) this.DrawTradeIcon()
34759
34764
  else this.DrawTrade();
34760
34765
 
34766
+ if (this.PriceGap.Enable) this.DrawPriceGap();
34767
+
34761
34768
  this.Canvas.restore();
34762
34769
 
34763
34770
  this.UpdateGlobalLatestPoint();
34764
34771
 
34765
34772
  this.DrawPredictionLine();
34766
- if (this.PriceGap.Enable) this.DrawPriceGap();
34767
34773
 
34768
34774
  if (this.IsShowMaxMinPrice) //标注最大值最小值
34769
34775
  {
@@ -43808,6 +43814,7 @@ function ChartDrawText_Fix()
43808
43814
  if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
43809
43815
  if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Value) || !IFrameSplitOperator.IsNonEmptyArray(data.Text)) return;
43810
43816
 
43817
+ var splitWord="&"; //内置分隔符
43811
43818
  for(var i=0;i<kData.Data.length;++i)
43812
43819
  {
43813
43820
  var value=data.Value[i];
@@ -43818,6 +43825,18 @@ function ChartDrawText_Fix()
43818
43825
 
43819
43826
  var kItem=kData.Data[i];
43820
43827
  var item={ Value:value, Text:text, Date:kItem.Date, Time:kItem.Time };
43828
+ if (text.includes(splitWord)) //&自动换行
43829
+ {
43830
+ var aryText=[];
43831
+ var aryValue=text.split(splitWord);
43832
+ for(var j=0;j<aryValue.length;++j)
43833
+ {
43834
+ var value=aryValue[j];
43835
+ if (value) aryText.push({ Name:value});
43836
+ }
43837
+ if (IFrameSplitOperator.IsNonEmptyArray(aryText)) item.Text=aryText;
43838
+ }
43839
+
43821
43840
  var key=this.BuildKey(item);
43822
43841
 
43823
43842
  /* //测试
@@ -62235,7 +62254,7 @@ function FrameSplitMinuteX()
62235
62254
  width=width/GetDevicePixelRatio();
62236
62255
 
62237
62256
  const minuteCoordinate = g_MinuteCoordinateData;
62238
- var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol,width);
62257
+ var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol, width, this.Frame.GlobalOption);
62239
62258
  var minuteCount=xcoordinateData.Count;
62240
62259
  var minuteMiddleCount=xcoordinateData.MiddleCount>0? xcoordinateData.MiddleCount: parseInt(minuteCount/2);
62241
62260
  var xcoordinate = xcoordinateData.Data;
@@ -64901,7 +64920,8 @@ function HQMinuteTimeStringFormat()
64901
64920
  this.MultiDayBeforeOpenData; //多日分时图 盘前数据
64902
64921
  this.MultiDayAfterCloseData; //多日分时图 收盘数据
64903
64922
 
64904
- this.GetEventCallback
64923
+ this.GetEventCallback;
64924
+ this.HQChart;
64905
64925
 
64906
64926
  this.GetBeforeOpen=function()
64907
64927
  {
@@ -64999,7 +65019,9 @@ function HQMinuteTimeStringFormat()
64999
65019
  if (this.Frame && this.Frame.MinuteCount) showIndex=index%this.Frame.MinuteCount;
65000
65020
 
65001
65021
  var timeStringData=g_MinuteTimeStringData;
65002
- var timeData=timeStringData.GetTimeData(this.Symbol);
65022
+ var globalOption=null;
65023
+ if (this.HQChart) globalOption=this.HQChart.GlobalOption;
65024
+ var timeData=timeStringData.GetTimeData(this.Symbol, globalOption);
65003
65025
  if (!timeData) return false;
65004
65026
 
65005
65027
  if (showIndex<0) showIndex=0;
@@ -92382,12 +92404,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92382
92404
  var bDaySummary=klineChart.DaySummary.Enable;
92383
92405
  var infoPosition=klineChart.InfoPosition;
92384
92406
  var coordinateType=null, yCoordinateType=null; //坐标类型
92407
+ var bZoomYCoordinate=false;
92385
92408
  var mainFrame=null;
92386
92409
  if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
92387
92410
  if (mainFrame)
92388
92411
  {
92389
92412
  coordinateType=mainFrame.CoordinateType;
92390
- if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
92413
+ if (mainFrame.YSplitOperator)
92414
+ {
92415
+ yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
92416
+ if (mainFrame.YSplitOperator.FixedYMaxMin && mainFrame.YSplitOperator.EnableZoomUpDown)
92417
+ bZoomYCoordinate=true;
92418
+ }
92419
+
92391
92420
  }
92392
92421
 
92393
92422
  var aryKLineInfo=[]; //信息地雷
@@ -92649,6 +92678,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92649
92678
 
92650
92679
  { Name:"显示走完剩余时间", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_KLINE_DAY_SUMMARY_ID, Args:[!bDaySummary]}, Checked:bDaySummary},
92651
92680
 
92681
+ { Name:"拖动Y轴", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID, Args:[{FrameID:0, Enable:!bZoomYCoordinate }, ]}, Checked:bZoomYCoordinate},
92682
+
92652
92683
  { Name:JSPopMenu.SEPARATOR_LINE_NAME },
92653
92684
  {
92654
92685
  Name:"鼠标形状",
@@ -94522,6 +94553,41 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
94522
94553
 
94523
94554
  return false;
94524
94555
  }
94556
+
94557
+ //option={ FrameID:, Enable: }
94558
+ this.EnableZoomYCoordinate=function(option)
94559
+ {
94560
+ if (!option) return false;
94561
+ if (!IFrameSplitOperator.IsNumber(option.FrameID)) return false;
94562
+ if (!IFrameSplitOperator.IsBool(option.Enable)) return false;
94563
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return false;
94564
+ if (option.FrameID<0 || option.FrameID>this.Frame.SubFrame.length) return false;
94565
+
94566
+ var item=this.Frame.SubFrame[option.FrameID];
94567
+ if (!item || !item.Frame || !item.Frame.YSplitOperator) return false;
94568
+
94569
+ var frame=item.Frame;
94570
+ var splitOper=frame.YSplitOperator;
94571
+
94572
+ if (option.Enable)
94573
+ {
94574
+ var max=frame.HorizontalMax, min=frame.HorizontalMin;
94575
+ if (!IFrameSplitOperator.IsNumber(max) || !IFrameSplitOperator.IsNumber(min)) return false;
94576
+
94577
+ splitOper.FixedYMaxMin={ Max:max, Min:min };
94578
+ splitOper.EnableZoomUpDown=true;
94579
+ frame.XYSplit=true;
94580
+ this.ChartDragSelectRect.EnableLButton=false;
94581
+ }
94582
+ else
94583
+ {
94584
+ splitOper.FixedYMaxMin=null
94585
+ splitOper.EnableZoomUpDown=false;
94586
+ frame.XYSplit=true;
94587
+ }
94588
+
94589
+ this.Draw();
94590
+ }
94525
94591
  }
94526
94592
 
94527
94593
  //API 返回数据 转化为array[]
@@ -97274,7 +97340,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
97274
97340
  this.ChartCorssCursor.PtInClient=(x,y)=>{ return this.PtInClient(x,y); }
97275
97341
  this.ChartCorssCursor.Canvas=this.Canvas;
97276
97342
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
97277
- this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
97343
+ this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
97344
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
97278
97345
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
97279
97346
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
97280
97347
  this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;
@@ -103296,6 +103363,7 @@ function MinuteChartHScreenContainer(uielement)
103296
103363
  this.ChartCorssCursor.Canvas=this.Canvas;
103297
103364
  this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
103298
103365
  this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
103366
+ this.ChartCorssCursor.StringFormatX.HQChart=this;
103299
103367
  this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
103300
103368
  this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
103301
103369
  this.ChartCorssCursor.StringFormatY.HQChart=this;
@@ -106932,7 +107000,7 @@ function MinuteTimeStringData()
106932
107000
  return data;
106933
107001
  }
106934
107002
 
106935
- this.GetTimeData = function (symbol)
107003
+ this.GetTimeData = function (symbol, option)
106936
107004
  {
106937
107005
  if (!symbol) return this.SHSZ;
106938
107006
 
@@ -106948,7 +107016,7 @@ function MinuteTimeStringData()
106948
107016
  if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol)) return this.GetUSA(upperSymbol);
106949
107017
  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))
106950
107018
  {
106951
- var splitData = g_FuturesTimeData.GetSplitData(upperSymbol);
107019
+ var splitData = g_FuturesTimeData.GetSplitData(upperSymbol, option);
106952
107020
  if (!splitData) return null;
106953
107021
  return this.GetFutures(splitData);
106954
107022
  }
@@ -107413,8 +107481,8 @@ function MinuteCoordinateData()
107413
107481
  }
107414
107482
 
107415
107483
 
107416
-
107417
- this.GetCoordinateData = function (symbol, width)
107484
+ // option=GlobalOption
107485
+ this.GetCoordinateData = function (symbol, width, option)
107418
107486
  {
107419
107487
  var data = null;
107420
107488
  if (!symbol)
@@ -107439,7 +107507,7 @@ function MinuteCoordinateData()
107439
107507
  else if (MARKET_SUFFIX_NAME.IsJP(upperSymbol))
107440
107508
  data=this.GetJPData(upperSymbol,width);
107441
107509
  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))
107442
- return this.GetChinatFuturesData(upperSymbol,width);
107510
+ return this.GetChinatFuturesData(upperSymbol, width, option);
107443
107511
  else if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol))
107444
107512
  data = this.GetUSAData(upperSymbol,width);
107445
107513
  else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))
@@ -107521,9 +107589,9 @@ function MinuteCoordinateData()
107521
107589
  return result;
107522
107590
  }
107523
107591
 
107524
- this.GetFuturesData = function (upperSymbol,width,timeData)
107592
+ this.GetFuturesData = function (upperSymbol,width,timeData, option)
107525
107593
  {
107526
- var splitData = timeData.GetSplitData(upperSymbol);
107594
+ var splitData = timeData.GetSplitData(upperSymbol, option);
107527
107595
  if (!splitData) return null;
107528
107596
  var stringData = g_MinuteTimeStringData.GetFutures(splitData);
107529
107597
  if (!stringData) return null;
@@ -107562,9 +107630,9 @@ function MinuteCoordinateData()
107562
107630
  return result;
107563
107631
  }
107564
107632
 
107565
- this.GetChinatFuturesData=function(upperSymbol,width)
107633
+ this.GetChinatFuturesData=function(upperSymbol, width, option)
107566
107634
  {
107567
- return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData);
107635
+ return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData, option);
107568
107636
  }
107569
107637
 
107570
107638
  this.GetNYMEXData=function(upperSymbol,width)
@@ -108370,7 +108438,7 @@ function FuturesTimeData()
108370
108438
  }
108371
108439
  }
108372
108440
 
108373
- this.GetData=function(upperSymbol)
108441
+ this.GetData=function(upperSymbol, option)
108374
108442
  {
108375
108443
  var oneWord = upperSymbol.charAt(0);
108376
108444
  var twoWords = upperSymbol.substr(0,2);
@@ -108415,9 +108483,9 @@ function FuturesTimeData()
108415
108483
  return null;
108416
108484
  }
108417
108485
 
108418
- this.GetSplitData = function (upperSymbol)
108486
+ this.GetSplitData = function (upperSymbol, option)
108419
108487
  {
108420
- var data=this.GetData(upperSymbol);
108488
+ var data=this.GetData(upperSymbol, option);
108421
108489
  if (!data) return null;
108422
108490
 
108423
108491
  return this.TIME_SPLIT[data.Time];
@@ -136240,14 +136308,14 @@ function APIScriptIndex(name,script,args,option, isOverlay)
136240
136308
  var indexData=[];
136241
136309
  var outVarItem={Name:item.name,Type:item.type};
136242
136310
  if (item.color) outVarItem.Color=item.color;
136311
+ else if (item.Color) outVarItem.Color=item.Color;
136243
136312
  if (IFrameSplitOperator.IsBool(item.IsShowTitle)) outVarItem.IsShowTitle = item.IsShowTitle; //是否显示指标标题
136244
136313
  if (IFrameSplitOperator.IsNumber(item.DrawVAlign)) outVarItem.DrawVAlign = item.DrawVAlign;
136245
136314
  if (IFrameSplitOperator.IsNumber(item.DrawAlign)) outVarItem.DrawAlign = item.DrawAlign;
136315
+ if (item.Font) outVarItem.Font=item.Font;
136246
136316
  if (item.data)
136247
136317
  {
136248
136318
  outVarItem.Data=this.FittingArray(item.data,date,time,hqChart);
136249
-
136250
- if (item.color) outVarItem.Color=item.color;
136251
136319
  if (item.linewidth) outVarItem.LineWidth=item.linewidth;
136252
136320
  if (IFrameSplitOperator.IsBool(item.isshow)) outVarItem.IsShow = item.isshow; //是否绘制线段
136253
136321
  if (item.isexdata==true) outVarItem.IsExData = true;
@@ -136287,6 +136355,18 @@ function APIScriptIndex(name,script,args,option, isOverlay)
136287
136355
 
136288
136356
  result.push(outVarItem);
136289
136357
  }
136358
+ else if (draw.DrawType=="DRAWTEXT_FIX" || draw.DrawType=="DRAWNUMBER_FIX")
136359
+ {
136360
+ drawItem.Text=draw.Text;
136361
+ drawItem.Name=draw.Name;
136362
+ drawItem.DrawType=draw.DrawType;
136363
+ drawItem.DrawData={ Value:null, Text:null };
136364
+ drawItem.DrawData.Value=this.FittingArray(draw.DrawData.Value,date,time,hqChart);
136365
+ drawItem.DrawData.Text=this.FittingArray(draw.DrawData.Text,date,time,hqChart);
136366
+ drawItem.Position=draw.Position;
136367
+ outVarItem.Draw=drawItem;
136368
+ result.push(outVarItem);
136369
+ }
136290
136370
  else if (draw.DrawType=="VERTLINE") //竖线
136291
136371
  {
136292
136372
  drawItem.Text=draw.Text;
@@ -166990,7 +167070,7 @@ function HQChartScriptWorker()
166990
167070
 
166991
167071
 
166992
167072
 
166993
- var HQCHART_VERSION="1.1.15291";
167073
+ var HQCHART_VERSION="1.1.15303";
166994
167074
 
166995
167075
  function PrintHQChartVersion()
166996
167076
  {