hqchart 1.1.15111 → 1.1.15121

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.
@@ -6722,6 +6722,14 @@ JSChart.RegisterChartFrameClass=function(name, option)
6722
6722
  }
6723
6723
 
6724
6724
 
6725
+ //注册DOM对话框类
6726
+ //option:{ Create:创建类方法 }
6727
+ JSChart.RegisterDOMClass=function(name, option)
6728
+ {
6729
+ return g_JSDOMFactory.Add(name, option);
6730
+ }
6731
+
6732
+
6725
6733
  //一些公共函数
6726
6734
  JSChart.ToFixedPoint=function(value)
6727
6735
  {
@@ -16655,6 +16663,36 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
16655
16663
  this.UpdateWindowIndexV2(aryUpdate);
16656
16664
  return true;
16657
16665
  }
16666
+
16667
+ this.TryClickLock=function(x,y)
16668
+ {
16669
+ if (!this.Frame || !IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return false;
16670
+
16671
+ for(var i=0;i<this.Frame.SubFrame.length; ++i)
16672
+ {
16673
+ var item=this.Frame.SubFrame[i];
16674
+ var chartLock=item.Frame.LockPaint;
16675
+ if (!chartLock || !chartLock.LockRect) continue;
16676
+
16677
+ var tooltip=new TooltipData();
16678
+ if (!chartLock.GetTooltipData(x,y,tooltip)) continue;
16679
+
16680
+ tooltip.HQChart=this;
16681
+
16682
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEX_LOCK);
16683
+ if (event && event.Callback)
16684
+ {
16685
+ var sendData={ FrameID:item.Frame.Identify, Data:tooltip };
16686
+ event.Callback(event,sendData,this);
16687
+ }
16688
+
16689
+
16690
+ if (tooltip.Data.Callback) tooltip.Data.Callback(tooltip);
16691
+ return true;
16692
+ }
16693
+
16694
+ return false;
16695
+ }
16658
16696
  }
16659
16697
 
16660
16698
  function GetDevicePixelRatio()
@@ -20410,7 +20448,7 @@ function AverageWidthFrame()
20410
20448
 
20411
20449
  if (this.ClassName=="MinuteFrame" || this.ClassName=="KLineFrame")
20412
20450
  {
20413
- this.DivFrameToolbar=new JSDivFrameToolbar();
20451
+ this.DivFrameToolbar=g_JSDOMFactory.Create('JSDivFrameToolbar');//new JSDivFrameToolbar();
20414
20452
  this.DivFrameToolbar.HQChart=hqchart;
20415
20453
  this.DivFrameToolbar.DivHQChart=divHQChart;
20416
20454
  this.DivFrameToolbar.FrameID=frameID;
@@ -30955,9 +30993,20 @@ function IChartPainting()
30955
30993
  var x=left+width/2;
30956
30994
  var y=top+height/2;
30957
30995
 
30996
+ var bHScreen=this.ChartFrame.IsHScreen;
30997
+ if (bHScreen)
30998
+ {
30999
+ this.Canvas.save();
31000
+ this.Canvas.translate(x, y);
31001
+ this.Canvas.rotate(90 * Math.PI / 180);
31002
+ x=0,y=0;
31003
+ }
31004
+
30958
31005
  this.Canvas.textAlign="center";
30959
31006
  this.Canvas.textBaseline="middle";
30960
31007
  this.Canvas.fillText(this.NotSupportMessage,x,y);
31008
+
31009
+ if (bHScreen) this.Canvas.restore();
30961
31010
  }
30962
31011
 
30963
31012
  this.GetTooltipData=function(x,y,tooltip)
@@ -51999,6 +52048,8 @@ function ChartLock()
51999
52048
  this.IndexName; //指标名字
52000
52049
  this.IndexID; //指标ID
52001
52050
 
52051
+ this.MinWidthText=" 付费指标 "
52052
+
52002
52053
  this.SetData=function(aryData)
52003
52054
  {
52004
52055
  this.AryData=aryData;
@@ -52126,11 +52177,27 @@ function ChartLock()
52126
52177
  }
52127
52178
  }
52128
52179
 
52180
+ this.Canvas.font=this.Font;
52181
+ var minWidth=this.Canvas.measureText(this.MinWidthText).width;
52182
+
52183
+ var aryText=null;
52184
+ if (Array.isArray(this.Title)) aryText=this.Title;
52185
+ else aryText=[{Text:this.Title}];
52186
+
52187
+ var outSize={ };
52188
+ if (!this.CalculateTextSize(aryText, this.Font, outSize)) outSize=null;
52189
+ if (outSize && outSize.Width+8>minWidth) minWidth=outSize.Width+8; //确保文字可以显示
52190
+
52129
52191
  if (bHScreen)
52130
52192
  {
52131
52193
  var rtBG={ Left:border.Left, Right:border.RightEx, Top:left, Bottom:border.Bottom };
52132
52194
  rtBG.Width=rtBG.Right-rtBG.Left;
52133
52195
  rtBG.Height=rtBG.Bottom-rtBG.Top;
52196
+ if (rtBG.Height<minWidth)
52197
+ {
52198
+ rtBG.Height=minWidth;
52199
+ rtBG.Top=rtBG.Bottom-rtBG.Height;
52200
+ }
52134
52201
  this.LockRect=rtBG; //保存上锁区域
52135
52202
 
52136
52203
  if (bDraw)
@@ -52145,6 +52212,11 @@ function ChartLock()
52145
52212
  var rtBG={ Left:left, Right:border.RightEx, Top:border.TopTitle, Bottom:border.Bottom };
52146
52213
  rtBG.Width=rtBG.Right-rtBG.Left;
52147
52214
  rtBG.Height=rtBG.Bottom-rtBG.Top;
52215
+ if (rtBG.Width<minWidth)
52216
+ {
52217
+ rtBG.Width=minWidth;
52218
+ rtBG.Left=rtBG.Right-rtBG.Width;
52219
+ }
52148
52220
  this.LockRect=rtBG; //保存上锁区域
52149
52221
 
52150
52222
  if (bDraw)
@@ -52157,13 +52229,7 @@ function ChartLock()
52157
52229
  }
52158
52230
 
52159
52231
  if (!bDraw) return;
52160
-
52161
- var aryText=null;
52162
- if (Array.isArray(this.Title)) aryText=this.Title;
52163
- else aryText=[{Text:this.Title}];
52164
-
52165
- var outSize={ };
52166
- if (!this.CalculateTextSize(aryText, this.Font, outSize)) return;
52232
+ if (!outSize) return;
52167
52233
 
52168
52234
  this.Canvas.textAlign='left';
52169
52235
  this.Canvas.textBaseline='bottom';
@@ -90818,32 +90884,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90818
90884
  }
90819
90885
  }
90820
90886
 
90821
- this.TryClickLock=function(x,y)
90822
- {
90823
- for(var i=0;i<this.Frame.SubFrame.length; ++i)
90824
- {
90825
- var item=this.Frame.SubFrame[i];
90826
- var chartLock=item.Frame.LockPaint;
90827
- if (!chartLock || !chartLock.LockRect) continue;
90828
-
90829
- var tooltip=new TooltipData();
90830
- if (!chartLock.GetTooltipData(x,y,tooltip)) continue;
90831
-
90832
- tooltip.HQChart=this;
90833
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEX_LOCK);
90834
- if (event && event.Callback)
90835
- {
90836
- var sendData={ FrameID:item.Frame.Identify, Data:tooltip };
90837
- event.Callback(event,sendData,this);
90838
- }
90839
-
90840
- if (tooltip.Data.Callback) tooltip.Data.Callback(tooltip);
90841
- return true;
90842
- }
90843
-
90844
- return false;
90845
- }
90846
-
90847
90887
  this.TryClickIndexTitle=function(x,y)
90848
90888
  {
90849
90889
  for(var i in this.TitlePaint)
@@ -100650,34 +100690,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100650
100690
 
100651
100691
  return false;
100652
100692
  }
100653
-
100654
- this.TryClickLock=function(x,y)
100655
- {
100656
- for(var i=0;i<this.Frame.SubFrame.length; ++i)
100657
- {
100658
- var item=this.Frame.SubFrame[i];
100659
- var chartLock=item.Frame.LockPaint;
100660
- if (!chartLock || !chartLock.LockRect) continue;
100661
-
100662
- var tooltip=new TooltipData();
100663
- if (!chartLock.GetTooltipData(x,y,tooltip)) continue;
100664
-
100665
- tooltip.HQChart=this;
100666
-
100667
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEX_LOCK);
100668
- if (event && event.Callback)
100669
- {
100670
- var sendData={ FrameID:item.Frame.Identify, Data:tooltip };
100671
- event.Callback(event,sendData,this);
100672
- }
100673
-
100674
-
100675
- if (tooltip.Data.Callback) tooltip.Data.Callback(tooltip);
100676
- return true;
100677
- }
100678
-
100679
- return false;
100680
- }
100681
100693
  }
100682
100694
 
100683
100695
  //盘前数据
@@ -102629,6 +102641,7 @@ function KLineChartHScreenContainer(uielement)
102629
102641
  frame.RightSpaceCount=this.RightSpaceCount; //右边
102630
102642
  frame.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
102631
102643
  frame.GlobalOption=this.GlobalOption;
102644
+ frame.CreateLockPaint();
102632
102645
 
102633
102646
  frame.HorizontalMax=20;
102634
102647
  frame.HorizontalMin=10;
@@ -102817,6 +102830,7 @@ function MinuteChartHScreenContainer(uielement)
102817
102830
  frame.XPointCount=243;
102818
102831
  frame.HQChart=this;
102819
102832
  frame.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
102833
+ frame.CreateLockPaint();
102820
102834
 
102821
102835
  var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];
102822
102836
  frame.HorizontalMax=DEFAULT_HORIZONTAL[0];
@@ -109592,8 +109606,6 @@ function JSDivFrameToolbar()
109592
109606
  this.SetToolbar(aryButton); //重新设置按钮
109593
109607
  }
109594
109608
 
109595
-
109596
-
109597
109609
  this.Destroy=function()
109598
109610
  {
109599
109611
  if (this.DivToolbar)
@@ -109775,6 +109787,37 @@ JSDivFrameToolbar.GetDfaultButtons=function()
109775
109787
  }
109776
109788
 
109777
109789
 
109790
+
109791
+ //DOM工厂类
109792
+ function JSDOMFactory()
109793
+ {
109794
+ //[key:name, { Create:function(divElement) { return new class(divElement); }} ]
109795
+ this.DataMap=new Map(
109796
+ [
109797
+ ["JSDivFrameToolbar", { Create:function(option) { return new JSDivFrameToolbar(option); } }],
109798
+ ]);
109799
+
109800
+ this.Create=function(name, option)
109801
+ {
109802
+ if (!this.DataMap.has(name))
109803
+ {
109804
+ JSConsole.Chart.Warn(`[JSDOMFactory::Create] can't find class=${name}.`);
109805
+ return null;
109806
+ }
109807
+
109808
+ var item=this.DataMap.get(name);
109809
+ return item.Create(option);
109810
+ }
109811
+
109812
+ this.Add=function(name, option)
109813
+ {
109814
+ this.DataMap.set(name, { Create:option.Create } );
109815
+ }
109816
+ }
109817
+
109818
+ var g_JSDOMFactory=new JSDOMFactory();
109819
+
109820
+
109778
109821
  function JSToolbarTooltip()
109779
109822
  {
109780
109823
  this.DivTooltip=null;
@@ -153832,7 +153875,7 @@ function ScrollBarBGChart()
153832
153875
 
153833
153876
 
153834
153877
 
153835
- var HQCHART_VERSION="1.1.15110";
153878
+ var HQCHART_VERSION="1.1.15120";
153836
153879
 
153837
153880
  function PrintHQChartVersion()
153838
153881
  {
@@ -153988,6 +154031,7 @@ export default {
153988
154031
  JSCHART_MENU_ID:JSCHART_MENU_ID,
153989
154032
  JSCHART_TRADE_STATUS_ID:JSCHART_TRADE_STATUS_ID, //交易状态
153990
154033
  JSCHART_CORSSCURSOR_STATUS_ID:JSCHART_CORSSCURSOR_STATUS_ID, //十字光标状态
154034
+ CONDITION_PERIOD:CONDITION_PERIOD, //指标周期条件枚举
153991
154035
  },
153992
154036
  }
153993
154037
 
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15110";
8
+ var HQCHART_VERSION="1.1.15120";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -55883,7 +55883,7 @@ HQData.Minute_RequestMinuteData=function(data, callback)
55883
55883
  }
55884
55884
 
55885
55885
  //盘中
55886
- stockItem.minute.length=50;
55886
+ //stockItem.minute.length=50;
55887
55887
  //测试用 这里可以修改数据
55888
55888
  //var lastItem=srcStock.minute[srcStock.minute.length-1];
55889
55889
  //lastItem.price+=Math.ceil(Math.random()*10)/1000*lastItem.price;
@@ -57499,6 +57499,9 @@ HQData.Report_RequestStockData=function(data, callback)
57499
57499
  var testDate=new Date();
57500
57500
  testDate.setHours(testDate.getHours() + i*2)
57501
57501
  newItem[401]={ DateTime:testDate } ;
57502
+
57503
+
57504
+ newItem[JSCHART_DATA_FIELD_ID.REPORT_EXTENDDATA]={ Value:"ddddd" };
57502
57505
 
57503
57506
 
57504
57507
  item.Data=newItem;
@@ -58216,6 +58219,8 @@ HQData.Report_APIIndex=function(data, callback)
58216
58219
  HQData.APIIndex_SCATTER_PLOT_V2(data, callback);
58217
58220
  else if (request.Data.indexname=="API_KLINE_TABLE")
58218
58221
  HQData.APIIndex_KLINE_TABLE(data, callback);
58222
+ else if (request.Data.indexname=="API_MINUTE_TABLE")
58223
+ HQData.APIIndex_MINUTE_TABLE(data, callback);
58219
58224
  else if (request.Data.indexname=="API_DRAWSVG")
58220
58225
  HQData.APIIndex_DRAWSVG(data, callback);
58221
58226
  else if (request.Data.indexname=="API_BASELINE_BAR")
@@ -58223,6 +58228,9 @@ HQData.Report_APIIndex=function(data, callback)
58223
58228
  else if (request.Data.indexname=="API_VERTLINE")
58224
58229
  HQData.APIIndex_VERTLINE(data, callback);
58225
58230
 
58231
+ else if (request.Data.indexname=="API_ERRORMESSAGE")
58232
+ HQData.APIIndex_ErrorMessage(data, callback);
58233
+
58226
58234
 
58227
58235
  //付费图形
58228
58236
  else if (request.Data.indexname=="API_MARK_AREA_V2")
@@ -59418,6 +59426,114 @@ HQData.APIIndex_KLINE_TABLE=function(data, callback)
59418
59426
  }
59419
59427
 
59420
59428
 
59429
+ HQData.APIIndex_MINUTE_TABLE=function(data, callback)
59430
+ {
59431
+ data.PreventDefault=true;
59432
+ var hqchart=data.HQChart;
59433
+ var kData=data.HQChart.GetKData(); //hqchart图形的分钟数据
59434
+
59435
+ var tableData=
59436
+ {
59437
+ name:'JS_CHART_MINUTETABLE_9DFC', type:1,
59438
+ Draw:
59439
+ {
59440
+ DrawType:'JS_CHART_MINUTETABLE_9DFC',
59441
+ DrawData:[ ] , //数据 [ [ { Text, Color: BGColor }, ...... ], [],]
59442
+
59443
+ Config:
59444
+ {
59445
+ //BGColor:"rgba(238,232,205,0.5)",
59446
+ //BorderColor:"rgb(220,220,220)",
59447
+ TextColor:"rgb(250,250,250)",
59448
+ ItemMergin:{ Left:1, Right:1, Top:0, Bottom:0, YOffset:0 },
59449
+ TextFont:{ Family:'微软雅黑' , FontMaxSize:14*GetDevicePixelRatio(), },
59450
+ Style:1,
59451
+ CellWidth:18*GetDevicePixelRatio(),
59452
+ CellHeight:14*GetDevicePixelRatio(),
59453
+ RowCount:2,
59454
+ LineColor:"rgb(5,105,225)",
59455
+ LineDash:[5*GetDevicePixelRatio(),5*GetDevicePixelRatio()],
59456
+ }
59457
+ },
59458
+
59459
+ };
59460
+
59461
+ for(var i=0;i<kData.Data.length;++i)
59462
+ {
59463
+ var kItem=kData.Data[i];
59464
+
59465
+ //一列数据
59466
+ var colItem={ Date:kItem.Date, Time:kItem.Time, Data:[ ] };
59467
+
59468
+ if (kItem.Time==1030 || kItem.Time==1035)
59469
+ {
59470
+ colItem.Data[0]=
59471
+ {
59472
+ Text:"多", Color:"rgb(250,250,250)", BGColor:'rgb(250,0,0)', TextAlign:"center",
59473
+ Tooltip:
59474
+ {
59475
+ AryText:
59476
+ [
59477
+ {Title:"日期", Text:`${kItem.Date} ${kItem.Time}`},
59478
+ {Title:"买入价", Text:`${kItem.Close.toFixed(2)}`, TextColor:"rgb(250,0,0)"},
59479
+ {Title:"数量", Text:`${HQData.GetRandomTestData(100,400).toFixed(0)}`,TextColor:"rgb(255,165,0)" },
59480
+ ]
59481
+ }
59482
+ };
59483
+ }
59484
+ else if (kItem.Time==1033 || kItem.Time==1025)
59485
+ {
59486
+ colItem.Data[0]=
59487
+ {
59488
+ Text:"空", Color:"rgb(250,250,250)", BGColor:'rgb(0,128,0)', TextAlign:"center",
59489
+ Tooltip:
59490
+ {
59491
+ AryText:
59492
+ [
59493
+ {Title:"日期", Text:`${kItem.Date} ${kItem.Time}`},
59494
+ {Title:"买入价", Text:`${kItem.Close.toFixed(2)}`, TextColor:"rgb(250,0,0)"},
59495
+ {Title:"数量", Text:`${HQData.GetRandomTestData(100,400).toFixed(0)}`,TextColor:"rgb(255,165,0)" },
59496
+ ]
59497
+ }
59498
+ };
59499
+ }
59500
+ else if (kItem.Time==1028 || kItem.Time==1032 || kItem.Time==1034 )
59501
+ {
59502
+ colItem.Data[1]=
59503
+ {
59504
+ Text:"平", Color:"rgb(250,250,250)", BGColor:'rgb(255,165,0)', TextAlign:"center",
59505
+ Tooltip:
59506
+ {
59507
+ AryText:
59508
+ [
59509
+ {Title:"日期", Text:`${kItem.Date} ${kItem.Time}`},
59510
+ {Title:"卖入价", Text:`${kItem.Close.toFixed(2)}`, TextColor:"rgb(34,139,34)"},
59511
+ {Title:"数量", Text:`${HQData.GetRandomTestData(100,400).toFixed(0)}`,TextColor:"rgb(255,165,0)" },
59512
+ ]
59513
+ }
59514
+ };
59515
+ }
59516
+ else
59517
+ {
59518
+ continue;
59519
+ }
59520
+
59521
+
59522
+ tableData.Draw.DrawData.push(colItem);
59523
+ }
59524
+
59525
+ var apiData=
59526
+ {
59527
+ code:0,
59528
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
59529
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[tableData] }
59530
+ };
59531
+
59532
+ console.log('[KLineChart::APIIndex_KLINE_TABLE2] apiData ', apiData);
59533
+ callback(apiData);
59534
+ }
59535
+
59536
+
59421
59537
  HQData.APIIndex_DRAWSVG=function(data, callback)
59422
59538
  {
59423
59539
  data.PreventDefault=true;
@@ -59806,6 +59922,14 @@ HQData.API_CHART_AREA_TEXT=function(data, callback)
59806
59922
  }
59807
59923
 
59808
59924
 
59925
+ HQData.APIIndex_ErrorMessage=function(data, callback)
59926
+ {
59927
+ var hqchartData={ outdata:{ date:null, time:null, outvar:[] } , code:0};
59928
+ hqchartData.error={ message:"错误提示信息" };
59929
+ callback(hqchartData);
59930
+ }
59931
+
59932
+
59809
59933
 
59810
59934
 
59811
59935
  /*暴露外部用的方法*/