hqchart 1.1.14552 → 1.1.14557

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.
@@ -10955,16 +10955,16 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10955
10955
  {
10956
10956
  if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash == true) return;
10957
10957
 
10958
+ var keyID = e.keyCode ? e.keyCode :e.which;
10959
+
10958
10960
  //回调事件
10959
10961
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYDOWN);
10960
10962
  if (event && event.Callback)
10961
10963
  {
10962
- var sendData={ e:e, PreventDefault:false };
10964
+ var sendData={ e:e, KeyID:keyID, PreventDefault:false };
10963
10965
  event.Callback(event, sendData, this);
10964
10966
  if (sendData.PreventDefault) return;
10965
10967
  }
10966
-
10967
- var keyID = e.keyCode ? e.keyCode :e.which;
10968
10968
 
10969
10969
  var draw=false;
10970
10970
  if (this.ChartCorssCursor && this.ChartCorssCursor.OnKeyDown) //十字光标 隐藏显示
@@ -40056,8 +40056,7 @@ function ChartStickLine()
40056
40056
  this.Width=0; //柱子宽度 0=1 3,50=k线宽度 101=K线宽度+间距宽度
40057
40057
  this.IsHScreen=false;
40058
40058
 
40059
- this.EmptyBGColor=null; //空心柱子背景色(缓存)
40060
- this.BarCache={ }; //Type:1=线段 2=柱子
40059
+ this.BarCache={ Type:0 }; //Type:1=线段 2=柱子
40061
40060
 
40062
40061
  this.SetEmptyBar=function() //设置空心柱子
40063
40062
  {
@@ -76048,6 +76047,12 @@ function JSChartResource()
76048
76047
 
76049
76048
  TitleColor:'rgb(250,250,250)', //标题颜色
76050
76049
  TitleBGColor:"rgb(200, 66, 69)", //标题背景颜色
76050
+
76051
+ Mark:
76052
+ {
76053
+ LineColor:"rgba(255,165,0,0.6)",
76054
+ LineWidth:2,
76055
+ }
76051
76056
  }
76052
76057
 
76053
76058
  this.PopKLineChart=
@@ -77654,6 +77659,11 @@ function JSChartResource()
77654
77659
  if (item.BorderColor) dest.BorderColor=item.BorderColor;
77655
77660
  if (item.TitleColor) dest.TitleColor=item.TitleColor;
77656
77661
  if (item.TitleBGColor) dest.TitleBGColor=item.TitleBGColor;
77662
+ if (item.Mark)
77663
+ {
77664
+ if (item.Mark.LineColor) dest.Mark.LineColor=item.Mark.LineColor;
77665
+ if (IFrameSplitOperator.IsNumber(item.Mark.LineWidth)) dest.Mark.LineWidth=item.Mark.LineWidth;
77666
+ }
77657
77667
  }
77658
77668
 
77659
77669
  if (style.PopKLineChart)
@@ -81142,6 +81152,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
81142
81152
  this.ShowMinuteChartDialog=function(data, x,y)
81143
81153
  {
81144
81154
  if (!this.PopMinuteChart) return;
81155
+ if (!ChartData.IsDayPeriod(this.Period,true)) return; //只支持日K
81145
81156
  if (!data.Tooltip || !data.Chart) return;
81146
81157
 
81147
81158
  var pixelRatio=GetDevicePixelRatio();
@@ -81167,7 +81178,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
81167
81178
 
81168
81179
  if (!symbol) return;
81169
81180
 
81170
- this.PopMinuteChart.Show({ Date:date, Symbol:symbol, Data:data.Tooltip.Data }, x/pixelRatio,y/pixelRatio);
81181
+ this.PopMinuteChart.Show({ Date:date, Symbol:symbol, Data:data.Tooltip.Data, Chart:data.Tooltip.ChartPaint }, x/pixelRatio,y/pixelRatio);
81171
81182
  }
81172
81183
 
81173
81184
 
@@ -89993,17 +90004,17 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89993
90004
 
89994
90005
  if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash == true) return;
89995
90006
 
90007
+ var keyID = e.keyCode ? e.keyCode :e.which;
90008
+
89996
90009
  //回调事件
89997
90010
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYDOWN);
89998
90011
  if (event && event.Callback)
89999
90012
  {
90000
- var sendData={ e:e, PreventDefault:false };
90013
+ var sendData={ e:e, KeyID:keyID, PreventDefault:false };
90001
90014
  event.Callback(event, sendData, this);
90002
90015
  if (sendData.PreventDefault) return;
90003
90016
  }
90004
90017
 
90005
- var keyID = e.keyCode ? e.keyCode :e.which;
90006
-
90007
90018
  var draw=false;
90008
90019
  if (this.ChartCorssCursor && this.ChartCorssCursor.OnKeyDown) //十字光标 隐藏显示
90009
90020
  {
@@ -99350,9 +99361,13 @@ var MARKET_SUFFIX_NAME=
99350
99361
  {
99351
99362
  if (!upperSymbol) return false;
99352
99363
 
99353
- if (this.IsSH(upperSymbol)) //51XXXX.SH
99364
+ if (this.IsSH(upperSymbol)) //51XXXX.SH 58xxxx.sh 56xxxx.sh
99354
99365
  {
99355
- if (upperSymbol.charAt(0)=='5' && upperSymbol.charAt(1)=='1') return true;
99366
+ if (upperSymbol.charAt(0)=='5')
99367
+ {
99368
+ var secondChar=upperSymbol.charAt(1);
99369
+ if (["1", "2", "3", "4", "5", "7", "6", "8"].includes(secondChar)) return true;
99370
+ }
99356
99371
  }
99357
99372
  else if (this.IsSZ(upperSymbol)) //15XXXX.sz, 16XXXX.sz, 17XXXX.sz, 18XXXX.sz
99358
99373
  {
@@ -129636,6 +129651,11 @@ function GetBlackStyle()
129636
129651
  {
129637
129652
  BGColor:"rgba(0,0,0,0.85)",
129638
129653
  BorderColor:"rgb(230,230,230)",
129654
+
129655
+ Mark:
129656
+ {
129657
+ LineColor:"rgba(255,215,0,0.6)",
129658
+ }
129639
129659
  },
129640
129660
 
129641
129661
  PopKLineChart:
@@ -149752,6 +149772,17 @@ function JSPopMinuteChart()
149752
149772
  Option:JSPopMinuteChart.GetMinuteOption(),
149753
149773
  JSChart:null,
149754
149774
  Date:null,
149775
+ Symbol:null,
149776
+ Name:null,
149777
+ Chart:null,
149778
+ }
149779
+
149780
+ this.ClearCache=function()
149781
+ {
149782
+ this.Minute.Date=null;
149783
+ this.Minute.Symbol=null;
149784
+ this.Minute.Name=null;
149785
+ this.Minute.Chart=null;
149755
149786
  }
149756
149787
 
149757
149788
  this.Inital=function(hqchart, option)
@@ -149765,6 +149796,11 @@ function JSPopMinuteChart()
149765
149796
  var item=CloneData(option.Option); //复制一份出来
149766
149797
  this.Minute.Option=Object.assign(this.Minute.Option,item);
149767
149798
  }
149799
+
149800
+ if (option.EnableMarkBG) //标记背景
149801
+ {
149802
+ this.HQChart.CreateExtendChart("MarkPopMinutePaint");
149803
+ }
149768
149804
  }
149769
149805
  }
149770
149806
 
@@ -149805,6 +149841,15 @@ function JSPopMinuteChart()
149805
149841
  if (this.HQChart) this.Minute.Option.Language=g_JSChartLocalization.GetLanguageName(this.HQChart.LanguageID);
149806
149842
  this.Minute.Option.OnCreatedCallback=(chart)=>{ this.OnCreateHQChart(chart); }
149807
149843
  this.Minute.Option.NetworkFilter=(data, callback)=>{ this.NetworkFilter(data, callback); }
149844
+
149845
+ this.Minute.Option.EventCallback=
149846
+ [
149847
+ {
149848
+ event:JSCHART_EVENT_ID.ON_KEYDOWN, //键盘消息
149849
+ callback:(event, data, obj)=>{ this.OnKeyDown(event, data, obj); }
149850
+ },
149851
+ ];
149852
+
149808
149853
  chart.SetOption(this.Minute.Option); //设置K线配置
149809
149854
 
149810
149855
  document.body.appendChild(divDom);
@@ -149865,14 +149910,16 @@ function JSPopMinuteChart()
149865
149910
  if (!data.Symbol || !IFrameSplitOperator.IsPlusNumber(data.Date)) return;
149866
149911
 
149867
149912
  this.Date=data.Date;
149868
- var name=data.Symbol;
149869
- if (data.Name) name=data.Name;
149870
- var title=`${name} ${IFrameSplitOperator.FormatDateString(data.Date)} 分时图`
149871
- this.TitleBox.DivName.innerText=title;
149913
+ this.Symbol=this.Name=data.Symbol;
149914
+ if (data.Name) this.Name=data.Name;
149915
+ this.Chart=data.Chart;
149916
+
149917
+ this.UpdateDialogTitle();
149872
149918
 
149873
149919
  if (this.Minute.JSChart)
149874
149920
  {
149875
- this.Minute.JSChart.ChangeSymbol(data.Symbol);
149921
+ this.Minute.JSChart.ChangeSymbol(this.Symbol);
149922
+ this.MarkKLineBG();
149876
149923
  }
149877
149924
 
149878
149925
  if (!this.Minute.Option.EnableResize)
@@ -149895,11 +149942,19 @@ function JSPopMinuteChart()
149895
149942
  this.DivDialog.style.left = x + "px";
149896
149943
  }
149897
149944
 
149945
+ this.UpdateDialogTitle=function()
149946
+ {
149947
+ var title=`${this.Name} ${IFrameSplitOperator.FormatDateString(this.Date)} 分时图 PageUp/PageDown翻页`;
149948
+ this.TitleBox.DivName.innerText=title;
149949
+ }
149950
+
149898
149951
  this.Close=function(e)
149899
149952
  {
149900
149953
  if (!this.DivDialog) return;
149901
149954
 
149955
+ this.ClearCache();
149902
149956
  this.DivDialog.style.visibility='hidden';
149957
+ this.ClearMarkKLineBG();
149903
149958
  }
149904
149959
 
149905
149960
  this.OnMouseDownTitle=function(e)
@@ -149961,6 +150016,114 @@ function JSPopMinuteChart()
149961
150016
 
149962
150017
  if (this.Minute.JSChart) this.Minute.JSChart.SetLanguage(language);
149963
150018
  }
150019
+
150020
+
150021
+ this.OnKeyDown=function(event, data, obj)
150022
+ {
150023
+ switch(data.KeyID)
150024
+ {
150025
+ case 33: //page up
150026
+ data.PreventDefault=true;
150027
+ var date=this.GetNextDate(1);
150028
+ if (IFrameSplitOperator.IsPlusNumber(date)) this.ChangeDate(date);
150029
+ break;
150030
+ case 34: //page down
150031
+ data.PreventDefault=true;
150032
+ var date=this.GetNextDate(-1);
150033
+ if (IFrameSplitOperator.IsPlusNumber(date)) this.ChangeDate(date);
150034
+ break;
150035
+ default:
150036
+ return;
150037
+ }
150038
+ }
150039
+
150040
+ this.GetNextDate=function(step)
150041
+ {
150042
+ if (!this.Chart) return null;
150043
+ if (!IFrameSplitOperator.IsNumber(this.Date)) return null;
150044
+ if (step==0) return null;
150045
+
150046
+ var kData=this.Chart.Data;
150047
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return null;
150048
+
150049
+ var index=-1;
150050
+ for(var i=0;i<kData.Data.length;++i)
150051
+ {
150052
+ var kItem=kData.Data[i];
150053
+ if (!kItem) continue;
150054
+
150055
+ if (kItem.Date==this.Date)
150056
+ {
150057
+ index=i;
150058
+ break;
150059
+ }
150060
+ }
150061
+
150062
+ if (index<0) return null;
150063
+
150064
+ var date=null;
150065
+ if (step>0)
150066
+ {
150067
+ for(var i=1, j=0;j<step && index+i<kData.Data.length;++i)
150068
+ {
150069
+ var kItem=kData.Data[index+i];
150070
+ if (!kItem || !IFrameSplitOperator.IsNumber(kItem.Date)) continue;
150071
+
150072
+ date=kItem.Date;
150073
+ ++j;
150074
+ }
150075
+ }
150076
+ else
150077
+ {
150078
+ step=Math.abs(step);
150079
+ for(var i=1, j=0;j<step && index-i>=0;++i)
150080
+ {
150081
+ var kItem=kData.Data[index-i];
150082
+ if (!kItem || !IFrameSplitOperator.IsNumber(kItem.Date)) continue;
150083
+
150084
+ date=kItem.Date;
150085
+ ++j;
150086
+ }
150087
+ }
150088
+
150089
+ if (date==this.Date) return null;
150090
+
150091
+ return date;
150092
+ }
150093
+
150094
+ //修改日期
150095
+ this.ChangeDate=function(date)
150096
+ {
150097
+ if (!this.Minute.JSChart) return;
150098
+
150099
+ this.Date=date;
150100
+ this.UpdateDialogTitle();
150101
+ this.Minute.JSChart.ChangeSymbol(this.Symbol);
150102
+ this.MarkKLineBG();
150103
+ }
150104
+
150105
+ this.MarkKLineBG=function()
150106
+ {
150107
+ if (!this.HQChart) return;
150108
+
150109
+ var finder=this.HQChart.GetExtendChartByClassName("MarkPopMinutePaint");
150110
+ if (!finder || !finder.Chart) return;
150111
+
150112
+ finder.Chart.SetDate([this.Date]);
150113
+ this.HQChart.Draw();
150114
+
150115
+ }
150116
+
150117
+ this.ClearMarkKLineBG=function()
150118
+ {
150119
+ if (!this.HQChart) return;
150120
+
150121
+ var finder=this.HQChart.GetExtendChartByClassName("MarkPopMinutePaint");
150122
+ if (!finder || !finder.Chart) return;
150123
+
150124
+ finder.Chart.ClearData();
150125
+ this.HQChart.Draw();
150126
+ }
149964
150127
  }
149965
150128
 
149966
150129
 
@@ -150292,6 +150455,118 @@ JSTooltipMinuteChart.GetMinuteOption=function()
150292
150455
  }
150293
150456
 
150294
150457
 
150458
+ ///////////////////////////////////////////////////////
150459
+ // K线上标记选中
150460
+
150461
+ function MarkPopMinutePaint()
150462
+ {
150463
+ this.newMethod=IExtendChartPainting; //派生
150464
+ this.newMethod();
150465
+ delete this.newMethod;
150466
+
150467
+ this.ClassName="MarkPopMinutePaint";
150468
+ this.MapDate; //标记日期
150469
+ this.BGColor="rgba(100,100,100,0.2)";
150470
+ this.LineWidth=g_JSChartResource.PopMinuteChart.Mark.LineWidth;
150471
+ this.LineColor=g_JSChartResource.PopMinuteChart.Mark.LineColor;
150472
+ this.SubFrame;
150473
+ this.IsDynamic=true;
150474
+
150475
+
150476
+ this.ReloadResource=function(resource)
150477
+ {
150478
+ this.LineWidth=g_JSChartResource.PopMinuteChart.Mark.LineWidth;
150479
+ this.LineColor=g_JSChartResource.PopMinuteChart.Mark.LineColor;
150480
+ }
150481
+
150482
+ this.SetDate=function(aryDate)
150483
+ {
150484
+ this.MapDate=new Map();
150485
+ if (IFrameSplitOperator.IsNonEmptyArray(aryDate))
150486
+ {
150487
+ for(var i=0;i<aryDate.length;++i)
150488
+ {
150489
+ var date=aryDate[i];
150490
+ this.MapDate.set(date, { Date:date} );
150491
+ }
150492
+ }
150493
+ }
150494
+
150495
+ this.ClearData=function()
150496
+ {
150497
+ this.MapDate=null;
150498
+ }
150499
+
150500
+ this.Draw=function()
150501
+ {
150502
+ this.SubFrame=null;
150503
+ if (!this.HQChart) return;
150504
+ if (!this.ChartFrame || !IFrameSplitOperator.IsNonEmptyArray(this.ChartFrame.SubFrame)) return;
150505
+ if (!this.MapDate || this.MapDate.size<=0) return;
150506
+
150507
+ var kData=this.HQChart.GetKData();
150508
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
150509
+ this.SubFrame=this.ChartFrame.SubFrame[0].Frame;
150510
+ if (!this.SubFrame) return;
150511
+
150512
+ var dataWidth=this.SubFrame.DataWidth;
150513
+ var distanceWidth=this.SubFrame.DistanceWidth;
150514
+ var xPointCount=this.SubFrame.XPointCount;
150515
+ var border=this.SubFrame.GetBorder();
150516
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
150517
+ var chartright=border.RightEx;
150518
+
150519
+ var startIndex=kData.DataOffset;
150520
+ var aryBG=[];
150521
+ for(var i=startIndex,j=0;i<kData.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
150522
+ {
150523
+ var kItem=kData.Data[i];
150524
+ if (!kItem) continue;
150525
+ if (!this.MapDate.has(kItem.Date)) continue
150526
+
150527
+ var left=xOffset;
150528
+ var right=xOffset+dataWidth;
150529
+ var x=left+(right-left)/2;
150530
+
150531
+ var bgItem={ Left:left, XCenter:x, Right:right, DataIndex:i, DataWidth:dataWidth };
150532
+ aryBG.push(bgItem);
150533
+ }
150534
+
150535
+ if (IFrameSplitOperator.IsNonEmptyArray(aryBG))
150536
+ {
150537
+ this.Canvas.save();
150538
+ this.DrawBG(aryBG);
150539
+ this.Canvas.restore();
150540
+ }
150541
+
150542
+ this.SubFrame=null;
150543
+ }
150544
+
150545
+ this.DrawBG=function(aryBG)
150546
+ {
150547
+ var border=this.ChartFrame.ChartBorder.GetBorder();
150548
+ var pixelRatio=GetDevicePixelRatio();
150549
+ if (this.MapDate.size==1) //标记一天
150550
+ {
150551
+ var item=aryBG[0];
150552
+ var lineWidth=this.LineWidth*pixelRatio;
150553
+ if (item.DataWidth<=4) lineWidth=1*pixelRatio;
150554
+
150555
+ this.Canvas.lineWidth=lineWidth;
150556
+ this.Canvas.strokeStyle=this.LineColor;
150557
+ this.Canvas.beginPath();
150558
+ this.Canvas.moveTo(item.XCenter,border.TopEx);
150559
+ this.Canvas.lineTo(item.XCenter,border.BottomEx);
150560
+ this.Canvas.stroke();
150561
+ }
150562
+ }
150563
+ }
150564
+
150565
+
150566
+ JSChart.RegisterExtendChartClass("MarkPopMinutePaint", { Create:function() { return new MarkPopMinutePaint}} );
150567
+
150568
+
150569
+
150295
150570
 
150296
150571
 
150297
150572
 
@@ -155196,7 +155471,7 @@ function HQChartScriptWorker()
155196
155471
 
155197
155472
 
155198
155473
 
155199
- var HQCHART_VERSION="1.1.14551";
155474
+ var HQCHART_VERSION="1.1.14556";
155200
155475
 
155201
155476
  function PrintHQChartVersion()
155202
155477
  {