hqchart 1.1.15037 → 1.1.15043

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.
@@ -4562,7 +4562,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4562
4562
 
4563
4563
  if (option.DrawTool) //画图工具
4564
4564
  {
4565
- if (option.DrawTool.StorageKey && chart.ChartDrawStorage) chart.ChartDrawStorage.Load(option.DrawTool.StorageKey);
4565
+ var item=option.DrawTool;
4566
+ if (chart.ChartDrawStorage)
4567
+ {
4568
+ if (item.StorageKey) chart.ChartDrawStorage.Load(item.StorageKey);
4569
+ if (IFrameSplitOperator.IsBool(item.EnableCrossPeriod)) chart.ChartDrawStorage.EnableCrossPeriod=item.EnableCrossPeriod;
4570
+ }
4571
+
4566
4572
  }
4567
4573
 
4568
4574
  if (option.KeyboardMove)
@@ -7456,7 +7462,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7456
7462
  this.EnableVerticalDrag=false;
7457
7463
 
7458
7464
  //十字光标长留(手势才有)
7459
- this.ClickModel={ IsShowCorssCursor:false, PreventHide:false, IsClickButton:false }; //PreventHide 阻止隐藏十字光标
7465
+ this.ClickModel=
7466
+ {
7467
+ IsShowCorssCursor:false, PreventHide:false, IsClickButton:false,
7468
+ AutoClose:{ Enable:false, Timer:null, DelayTime:3000 },
7469
+ }; //PreventHide 阻止隐藏十字光标 AutoClose=延迟关闭
7460
7470
  this.EnableClickModel=false;
7461
7471
 
7462
7472
  //标题栏显示最新数据
@@ -9843,6 +9853,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9843
9853
 
9844
9854
 
9845
9855
  this.StopDragTimer();
9856
+ this.StopAutoCloseCorssCursor();
9846
9857
 
9847
9858
  var isSingleTouch=this.IsSingleTouch(e);
9848
9859
  if (this.EnableScrollUpDown==false || !isSingleTouch || //多点触屏
@@ -10360,6 +10371,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10360
10371
  return true;
10361
10372
  }
10362
10373
 
10374
+ this.StopAutoCloseCorssCursor=function()
10375
+ {
10376
+ if (!this.ClickModel.AutoClose.Timer) return;
10377
+
10378
+ clearTimeout(this.ClickModel.AutoClose.Timer);
10379
+ this.ClickModel.AutoClose.Timer=null;
10380
+ }
10381
+
10382
+ //自动关闭十字光标
10383
+ this.DelayAutoCloseCorssCursor=function()
10384
+ {
10385
+ if (!this.ClickModel.AutoClose.Enable) return false;
10386
+
10387
+ this.StopAutoCloseCorssCursor();
10388
+
10389
+ this.ClickModel.AutoClose.Timer=setTimeout(()=>
10390
+ {
10391
+ this.ClickModel.IsShowCorssCursor=false;
10392
+ this.DrawDynamicInfo();
10393
+
10394
+ }, this.ClickModel.AutoClose.DelayTime)
10395
+ }
10396
+
10363
10397
  this.MoveCorssCursor=function(point,e)
10364
10398
  {
10365
10399
  var pixelTatio = GetDevicePixelRatio();
@@ -68742,10 +68776,89 @@ function IChartDrawPicture()
68742
68776
  }
68743
68777
  }
68744
68778
 
68745
- this.UpdateXValue=function() //通过datetime更新x的索引
68779
+ this.GetkData=function()
68746
68780
  {
68747
- if (!this.Frame) return false;
68781
+ if (!this.Frame) return null;
68748
68782
  var data=this.Frame.Data;
68783
+ if (!data) return null;
68784
+
68785
+ return data;
68786
+ }
68787
+
68788
+ //周期变动 X重新定位
68789
+ this.ChangePeriod=function(period)
68790
+ {
68791
+ var kData=this.GetkData();
68792
+ if (!kData) return;
68793
+
68794
+ var aryDateTime=[];
68795
+ for(var i=0; i<this.Value.length; ++i)
68796
+ {
68797
+ var item=this.Value[i];
68798
+ if (!item.DateTime) break;
68799
+ var dateTime={ Date:item.DateTime.Date, Time:0, Match:null };
68800
+ if (IFrameSplitOperator.IsNumber(item.DateTime.Time)) dateTime.Time=item.DateTime.Time;
68801
+ aryDateTime[i]=dateTime;
68802
+ }
68803
+
68804
+ var findCount=0;
68805
+ var perData=null;
68806
+ var perIndex=-1;
68807
+ for(var i=0, j=0;i<kData.Data.length;++i)
68808
+ {
68809
+ var kItem=kData.Data[i];
68810
+
68811
+ for(j=0;j<aryDateTime.length;++j)
68812
+ {
68813
+ var item=aryDateTime[j];
68814
+ if (item.Match) continue;
68815
+
68816
+ if (ChartData.IsDayPeriod(period, true))
68817
+ {
68818
+ if (kItem.Date>item.Date)
68819
+ {
68820
+ item.Match={ KItem:perData, Index:perIndex };
68821
+ ++findCount;
68822
+ }
68823
+ }
68824
+ else if (ChartData.IsMinutePeriod(period, true))
68825
+ {
68826
+ if (kItem.Date>item.Date || (kItem.Date==item.Date && kItem.Time>item.Time))
68827
+ {
68828
+ item.Match={ KItem:perData, Index:perIndex };
68829
+ ++findCount;
68830
+ }
68831
+ }
68832
+ }
68833
+
68834
+ perData=kItem;
68835
+ perIndex=i;
68836
+
68837
+ if (findCount>=aryDateTime.length) break;
68838
+ }
68839
+
68840
+ for(var i=0;i<aryDateTime.length;++i)
68841
+ {
68842
+ var item=aryDateTime[i];
68843
+ var valueItem=this.Value[i];
68844
+ if (item.Match && item.Match.KItem)
68845
+ {
68846
+ valueItem.DateTime={ Date:item.Match.Date, Time:item.Match.Time };
68847
+ valueItem.XValue=item.Match.Index;
68848
+ }
68849
+ else
68850
+ {
68851
+ valueItem.DateTime=null;
68852
+ valueItem.XValue=null;
68853
+ }
68854
+ }
68855
+
68856
+ this.Period=period;
68857
+ }
68858
+
68859
+ this.UpdateXValue=function() //通过datetime更新x的索引
68860
+ {
68861
+ var data=this.GetkData();
68749
68862
  if (!data) return false;
68750
68863
 
68751
68864
  var aryDateTime=[];
@@ -80455,9 +80568,12 @@ function ChartDrawTVShortPosition()
80455
80568
 
80456
80569
  function ChartDrawStorage()
80457
80570
  {
80458
- this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{Guid, Symbol, Period, ClassName, Value}
80571
+ //this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
80572
+ this.DrawDataV2=new Map(); //画图工具数据 key=symbol, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
80573
+
80459
80574
  this.StorageKey;
80460
- this.GetEventCallback; //事件回调
80575
+ this.GetEventCallback; //事件回调
80576
+ this.EnableCrossPeriod=false; //跨周期
80461
80577
 
80462
80578
  this.Load=function(key) //从本地读取画图工具
80463
80579
  {
@@ -80470,18 +80586,39 @@ function ChartDrawStorage()
80470
80586
  if (typeof(cacheValue) != "string") return;
80471
80587
 
80472
80588
  var saveData=JSON.parse(cacheValue);
80473
- for(var i in saveData)
80474
- {
80475
- var item=saveData[i];
80476
- var drawMap=new Map();
80589
+ if (!saveData) return;
80477
80590
 
80478
- for(var j in item.Value)
80591
+ if (IFrameSplitOperator.IsNonEmptyArray(saveData)) //老版本 key=symbol-Period
80592
+ {
80593
+ for(var i=0;i<saveData.length;++i)
80479
80594
  {
80480
- var drawItem=item.Value[j];
80481
- drawMap.set(drawItem.Key, drawItem.Value);
80595
+ var item=saveData[i];
80596
+ for(var j=0;j<item.Value.length;++j)
80597
+ {
80598
+ var drawItem=item.Value[j];
80599
+ var symbol=drawItem.Value.Symbol;
80600
+ if (!this.DrawDataV2.has(symbol))
80601
+ this.DrawDataV2.set(symbol, {Symbol:symbol, MapPicture: new Map() });
80602
+
80603
+ var stockItem=this.DrawDataV2.get(symbol);
80604
+ stockItem.MapPicture.set(drawItem.Value.Guid, drawItem.Value);
80605
+ }
80482
80606
  }
80607
+ }
80608
+ else if (saveData.Ver==2.0 && IFrameSplitOperator.IsNonEmptyArray(saveData.Data))
80609
+ {
80610
+ for(var i=0;i<saveData.Data.length;++i)
80611
+ {
80612
+ var item=saveData.Data[i]; //{ Symbol:, AryPicture:[ { Guid, Symbol, Period, ClassName, Value }, ] }
80613
+ var stockItem={ Symbol:item.Symbol, MapPicture:new Map() };
80614
+ for(var j=0; j<item.AryPicture.length;++j)
80615
+ {
80616
+ var drawItem=item.AryPicture[j];
80617
+ stockItem.MapPicture.set(drawItem.Guid, drawItem);
80618
+ }
80483
80619
 
80484
- this.DrawData.set(item.Key,drawMap);
80620
+ this.DrawDataV2.set(stockItem.Symbol,stockItem);
80621
+ }
80485
80622
  }
80486
80623
  }
80487
80624
 
@@ -80490,89 +80627,95 @@ function ChartDrawStorage()
80490
80627
  if (!this.StorageKey) return;
80491
80628
 
80492
80629
  var saveData=[];
80493
- for(var stock of this.DrawData)
80630
+ for(var mapItem of this.DrawDataV2)
80494
80631
  {
80495
- var key=stock[0];
80496
- var value=stock[1];
80497
- var itemData={ Key:key, Value:[]};
80632
+ var symbol=mapItem[0];
80633
+ var stockItem=mapItem[1];
80498
80634
 
80499
- for(var drawItem of value)
80635
+ var itemData={ Symbol:symbol, AryPicture:[] };
80636
+
80637
+ for(var pictureItem of stockItem.MapPicture)
80500
80638
  {
80501
- if (drawItem[1] && drawItem[1].EnableSave===false) continue;
80639
+ var drawItem=pictureItem[1];
80640
+ if (drawItem.EnableSave===false) continue;
80502
80641
 
80503
- itemData.Value.push({Key:drawItem[0], Value:drawItem[1]});
80642
+ itemData.AryPicture.push(drawItem);
80504
80643
  }
80505
80644
 
80506
- if (IFrameSplitOperator.IsNonEmptyArray(itemData.Value))
80645
+ if (IFrameSplitOperator.IsNonEmptyArray(itemData.AryPicture))
80507
80646
  saveData.push(itemData);
80508
80647
  }
80509
80648
 
80510
80649
  JSConsole.Chart.Log(`[ChartDrawStorage::Save] save to localStorage, key=${this.StorageKey}`);
80511
- var strData=JSON.stringify(saveData);
80650
+ var strData=JSON.stringify({Ver:2.0, Data:saveData});
80512
80651
  localStorage[this.StorageKey]=strData;
80513
80652
  }
80514
80653
 
80515
- this.GetItemKey=function(obj) //生成每个画图工具的key
80516
- {
80517
- var strKey=`${obj.Symbol}-${obj.Period}`;
80518
- return strKey;
80519
- }
80520
-
80521
80654
  this.SaveDrawData=function(drawPicture) //保存一个画图工具
80522
80655
  {
80523
- var strKey=this.GetItemKey(drawPicture);
80656
+ var symbol=drawPicture.Symbol;
80524
80657
  var data=drawPicture.ExportStorageData();
80525
80658
  if (!data) return;
80526
80659
 
80527
- if (this.DrawData.has(strKey)) //更新
80660
+ if (this.DrawDataV2.has(symbol)) //更新
80528
80661
  {
80529
- JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: key, drawPicture, data', strKey, drawPicture,data);
80530
- this.DrawData.get(strKey).set(data.Guid, data);
80662
+ JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: symbol, drawPicture, data', symbol, drawPicture, data);
80663
+ var stockItem=this.DrawDataV2.get(symbol);
80664
+ stockItem.MapPicture.set(data.Guid, data);
80531
80665
  }
80532
80666
  else //新增
80533
80667
  {
80534
- JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: key, drawPicture, data', strKey, drawPicture,data);
80535
- var newData=new Map();
80536
- newData.set(data.Guid, data);
80537
- this.DrawData.set(strKey,newData);
80668
+ JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data', symbol, drawPicture,data);
80669
+ var stockItem={ Symbol:symbol, MapPicture:new Map() } ;
80670
+ stockItem.set(data.Guid, data);
80671
+ this.DrawDataV2.set(symbol,newData);
80538
80672
  }
80539
80673
 
80540
- JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.DrawData);
80674
+ JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.DrawDataV2);
80541
80675
 
80542
80676
  this.Save();
80543
80677
  }
80544
80678
 
80545
80679
  this.DeleteDrawData=function(drawPicture) //删除一个画图工具
80546
80680
  {
80547
- var strKey=this.GetItemKey(drawPicture);
80548
- if (!this.DrawData.has(strKey)) return;
80681
+ var symbol=drawPicture.Symbol;
80682
+ if (!this.DrawDataV2.has(symbol)) return;
80549
80683
 
80550
- var mapDraw=this.DrawData.get(strKey);
80551
- if (!mapDraw.has(drawPicture.Guid)) return;
80684
+ var stockItem=this.DrawDataV2.get(symbol);
80685
+ if (!stockItem.MapPicture.has(drawPicture.Guid)) return;
80552
80686
 
80553
- mapDraw.delete(drawPicture.Guid);
80687
+ stockItem.MapPicture.delete(drawPicture.Guid);
80554
80688
  this.Save();
80555
80689
  }
80556
80690
 
80557
80691
  this.Clear=function()
80558
80692
  {
80559
- this.DrawData=new Map();
80693
+ this.DrawDataV2=new Map();
80560
80694
  this.Save();
80561
80695
  }
80562
80696
 
80563
- this.GetDrawData=function(obj) //获取已有的画图工具数据{Symbol: , Period:, }
80697
+ this.GetDrawData=function(obj) //获取已有的画图工具数据{ Symbol: , Period:, }
80564
80698
  {
80565
- var data=[];
80566
- var strKey=this.GetItemKey(obj);
80567
- if (!this.DrawData.has(strKey)) return data;
80699
+ var aryData=[];
80700
+ var symbol=obj.Symbol;
80701
+
80702
+ if (!this.DrawDataV2.has(symbol)) return aryData;
80568
80703
 
80569
- var stockData=this.DrawData.get(strKey);
80570
- for(var item of stockData)
80704
+ var stockItem=this.DrawDataV2.get(symbol);
80705
+ for(var mapItem of stockItem.MapPicture)
80571
80706
  {
80572
- data.push(item[1]);
80707
+ var drawItem=mapItem[1];
80708
+ if (this.EnableCrossPeriod)
80709
+ {
80710
+ aryData.push(drawItem);
80711
+ }
80712
+ else
80713
+ {
80714
+ if (drawItem.Period==obj.Period) aryData.push(drawItem);
80715
+ }
80573
80716
  }
80574
80717
 
80575
- return data;
80718
+ return aryData;
80576
80719
  }
80577
80720
  }
80578
80721
 
@@ -90336,8 +90479,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90336
90479
 
90337
90480
  if (this.EnableClickModel===true)
90338
90481
  {
90339
- if (this.ClickModel.IsShowCorssCursor==true && this.ClickModel.PreventHide) return; //阻止隐藏
90340
- if (this.ClickModel.IsShowCorssCursor==true && this.TouchDrawCount>0 ) return;
90482
+ var bShowCorssCursor=false;
90483
+ if (this.ClickModel.IsShowCorssCursor==true && this.ClickModel.PreventHide) bShowCorssCursor=true; //阻止隐藏
90484
+ if (this.ClickModel.IsShowCorssCursor==true && this.TouchDrawCount>0 ) bShowCorssCursor=true;
90485
+
90486
+ if (bShowCorssCursor)
90487
+ {
90488
+ this.DelayAutoCloseCorssCursor(); //自动延迟关闭十字光标
90489
+ return;
90490
+ }
90341
90491
 
90342
90492
  this.ClickModel.IsShowCorssCursor=false;
90343
90493
  this.DrawDynamicInfo();
@@ -90350,7 +90500,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90350
90500
  return;
90351
90501
  }
90352
90502
 
90353
- for(var i in this.ExtendChartPaint)
90503
+ for(var i=0; i<this.ExtendChartPaint.length; ++i)
90354
90504
  {
90355
90505
  var item=this.ExtendChartPaint[i];
90356
90506
  if (item.ClassName==='KLineTooltipPaint')
@@ -91886,7 +92036,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91886
92036
  drawPicture.Option=this.ChartDrawOption;
91887
92037
 
91888
92038
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
91889
- drawPicture.UpdateXValue();
92039
+ if (drawPicture.Period!=this.Period)
92040
+ {
92041
+ drawPicture.ChangePeriod(this.Period);
92042
+ }
92043
+ else
92044
+ {
92045
+ drawPicture.UpdateXValue();
92046
+ }
92047
+
92048
+
91890
92049
  drawPicture.ValueToPoint();
91891
92050
 
91892
92051
  var self=this;
@@ -99684,7 +99843,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
99684
99843
  {
99685
99844
  if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
99686
99845
 
99687
- var self=this;
99846
+ var kData=this.GetKData();
99688
99847
  for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
99689
99848
  {
99690
99849
  var item=this.ChartDrawStorageCache[i];
@@ -164982,7 +165141,7 @@ function HQChartScriptWorker()
164982
165141
 
164983
165142
 
164984
165143
 
164985
- var HQCHART_VERSION="1.1.15036";
165144
+ var HQCHART_VERSION="1.1.15042";
164986
165145
 
164987
165146
  function PrintHQChartVersion()
164988
165147
  {