hqchart 1.1.15039 → 1.1.15046

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.
@@ -4518,7 +4518,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4518
4518
 
4519
4519
  if (option.DrawTool) //画图工具
4520
4520
  {
4521
- if (option.DrawTool.StorageKey && chart.ChartDrawStorage) chart.ChartDrawStorage.Load(option.DrawTool.StorageKey);
4521
+ var item=option.DrawTool;
4522
+ if (chart.ChartDrawStorage)
4523
+ {
4524
+ if (item.StorageKey) chart.ChartDrawStorage.Load(item.StorageKey);
4525
+ if (IFrameSplitOperator.IsBool(item.EnableCrossPeriod)) chart.ChartDrawStorage.EnableCrossPeriod=item.EnableCrossPeriod;
4526
+ }
4527
+
4522
4528
  }
4523
4529
 
4524
4530
  if (option.KeyboardMove)
@@ -14122,6 +14128,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14122
14128
 
14123
14129
  drawPicture.PointMagnetKLine();
14124
14130
  drawPicture.Status=10; //完成
14131
+ drawPicture.Period=this.Period;
14125
14132
  drawPicture.PointToValue();
14126
14133
 
14127
14134
  if (this.ChartDrawStorage) this.ChartDrawStorage.SaveDrawData(drawPicture);
@@ -68726,10 +68733,89 @@ function IChartDrawPicture()
68726
68733
  }
68727
68734
  }
68728
68735
 
68729
- this.UpdateXValue=function() //通过datetime更新x的索引
68736
+ this.GetkData=function()
68730
68737
  {
68731
- if (!this.Frame) return false;
68738
+ if (!this.Frame) return null;
68732
68739
  var data=this.Frame.Data;
68740
+ if (!data) return null;
68741
+
68742
+ return data;
68743
+ }
68744
+
68745
+ //周期变动 X重新定位
68746
+ this.ChangePeriod=function(period)
68747
+ {
68748
+ var kData=this.GetkData();
68749
+ if (!kData) return;
68750
+
68751
+ var aryDateTime=[];
68752
+ for(var i=0; i<this.Value.length; ++i)
68753
+ {
68754
+ var item=this.Value[i];
68755
+ if (!item.DateTime) break;
68756
+ var dateTime={ Date:item.DateTime.Date, Time:0, Match:null };
68757
+ if (IFrameSplitOperator.IsNumber(item.DateTime.Time)) dateTime.Time=item.DateTime.Time;
68758
+ aryDateTime[i]=dateTime;
68759
+ }
68760
+
68761
+ var findCount=0;
68762
+ var perData=null;
68763
+ var perIndex=-1;
68764
+ for(var i=0, j=0;i<kData.Data.length;++i)
68765
+ {
68766
+ var kItem=kData.Data[i];
68767
+
68768
+ for(j=0;j<aryDateTime.length;++j)
68769
+ {
68770
+ var item=aryDateTime[j];
68771
+ if (item.Match) continue;
68772
+
68773
+ if (ChartData.IsDayPeriod(period, true))
68774
+ {
68775
+ if (kItem.Date>item.Date)
68776
+ {
68777
+ item.Match={ KItem:perData, Index:perIndex };
68778
+ ++findCount;
68779
+ }
68780
+ }
68781
+ else if (ChartData.IsMinutePeriod(period, true))
68782
+ {
68783
+ if (kItem.Date>item.Date || (kItem.Date==item.Date && kItem.Time>item.Time))
68784
+ {
68785
+ item.Match={ KItem:perData, Index:perIndex };
68786
+ ++findCount;
68787
+ }
68788
+ }
68789
+ }
68790
+
68791
+ perData=kItem;
68792
+ perIndex=i;
68793
+
68794
+ if (findCount>=aryDateTime.length) break;
68795
+ }
68796
+
68797
+ for(var i=0;i<aryDateTime.length;++i)
68798
+ {
68799
+ var item=aryDateTime[i];
68800
+ var valueItem=this.Value[i];
68801
+ if (item.Match && item.Match.KItem)
68802
+ {
68803
+ valueItem.DateTime={ Date:item.Match.Date, Time:item.Match.Time };
68804
+ valueItem.XValue=item.Match.Index;
68805
+ }
68806
+ else
68807
+ {
68808
+ valueItem.DateTime=null;
68809
+ valueItem.XValue=null;
68810
+ }
68811
+ }
68812
+
68813
+ this.Period=period;
68814
+ }
68815
+
68816
+ this.UpdateXValue=function() //通过datetime更新x的索引
68817
+ {
68818
+ var data=this.GetkData();
68733
68819
  if (!data) return false;
68734
68820
 
68735
68821
  var aryDateTime=[];
@@ -80439,9 +80525,12 @@ function ChartDrawTVShortPosition()
80439
80525
 
80440
80526
  function ChartDrawStorage()
80441
80527
  {
80442
- this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{Guid, Symbol, Period, ClassName, Value}
80528
+ //this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
80529
+ this.DrawDataV2=new Map(); //画图工具数据 key=symbol, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
80530
+
80443
80531
  this.StorageKey;
80444
- this.GetEventCallback; //事件回调
80532
+ this.GetEventCallback; //事件回调
80533
+ this.EnableCrossPeriod=false; //跨周期
80445
80534
 
80446
80535
  this.Load=function(key) //从本地读取画图工具
80447
80536
  {
@@ -80454,18 +80543,39 @@ function ChartDrawStorage()
80454
80543
  if (typeof(cacheValue) != "string") return;
80455
80544
 
80456
80545
  var saveData=JSON.parse(cacheValue);
80457
- for(var i in saveData)
80458
- {
80459
- var item=saveData[i];
80460
- var drawMap=new Map();
80546
+ if (!saveData) return;
80461
80547
 
80462
- for(var j in item.Value)
80548
+ if (IFrameSplitOperator.IsNonEmptyArray(saveData)) //老版本 key=symbol-Period
80549
+ {
80550
+ for(var i=0;i<saveData.length;++i)
80463
80551
  {
80464
- var drawItem=item.Value[j];
80465
- drawMap.set(drawItem.Key, drawItem.Value);
80552
+ var item=saveData[i];
80553
+ for(var j=0;j<item.Value.length;++j)
80554
+ {
80555
+ var drawItem=item.Value[j];
80556
+ var symbol=drawItem.Value.Symbol;
80557
+ if (!this.DrawDataV2.has(symbol))
80558
+ this.DrawDataV2.set(symbol, {Symbol:symbol, MapPicture: new Map() });
80559
+
80560
+ var stockItem=this.DrawDataV2.get(symbol);
80561
+ stockItem.MapPicture.set(drawItem.Value.Guid, drawItem.Value);
80562
+ }
80466
80563
  }
80564
+ }
80565
+ else if (saveData.Ver==2.0 && IFrameSplitOperator.IsNonEmptyArray(saveData.Data))
80566
+ {
80567
+ for(var i=0;i<saveData.Data.length;++i)
80568
+ {
80569
+ var item=saveData.Data[i]; //{ Symbol:, AryPicture:[ { Guid, Symbol, Period, ClassName, Value }, ] }
80570
+ var stockItem={ Symbol:item.Symbol, MapPicture:new Map() };
80571
+ for(var j=0; j<item.AryPicture.length;++j)
80572
+ {
80573
+ var drawItem=item.AryPicture[j];
80574
+ stockItem.MapPicture.set(drawItem.Guid, drawItem);
80575
+ }
80467
80576
 
80468
- this.DrawData.set(item.Key,drawMap);
80577
+ this.DrawDataV2.set(stockItem.Symbol,stockItem);
80578
+ }
80469
80579
  }
80470
80580
  }
80471
80581
 
@@ -80474,89 +80584,95 @@ function ChartDrawStorage()
80474
80584
  if (!this.StorageKey) return;
80475
80585
 
80476
80586
  var saveData=[];
80477
- for(var stock of this.DrawData)
80587
+ for(var mapItem of this.DrawDataV2)
80478
80588
  {
80479
- var key=stock[0];
80480
- var value=stock[1];
80481
- var itemData={ Key:key, Value:[]};
80589
+ var symbol=mapItem[0];
80590
+ var stockItem=mapItem[1];
80482
80591
 
80483
- for(var drawItem of value)
80592
+ var itemData={ Symbol:symbol, AryPicture:[] };
80593
+
80594
+ for(var pictureItem of stockItem.MapPicture)
80484
80595
  {
80485
- if (drawItem[1] && drawItem[1].EnableSave===false) continue;
80596
+ var drawItem=pictureItem[1];
80597
+ if (drawItem.EnableSave===false) continue;
80486
80598
 
80487
- itemData.Value.push({Key:drawItem[0], Value:drawItem[1]});
80599
+ itemData.AryPicture.push(drawItem);
80488
80600
  }
80489
80601
 
80490
- if (IFrameSplitOperator.IsNonEmptyArray(itemData.Value))
80602
+ if (IFrameSplitOperator.IsNonEmptyArray(itemData.AryPicture))
80491
80603
  saveData.push(itemData);
80492
80604
  }
80493
80605
 
80494
80606
  JSConsole.Chart.Log(`[ChartDrawStorage::Save] save to localStorage, key=${this.StorageKey}`);
80495
- var strData=JSON.stringify(saveData);
80607
+ var strData=JSON.stringify({Ver:2.0, Data:saveData});
80496
80608
  localStorage[this.StorageKey]=strData;
80497
80609
  }
80498
80610
 
80499
- this.GetItemKey=function(obj) //生成每个画图工具的key
80500
- {
80501
- var strKey=`${obj.Symbol}-${obj.Period}`;
80502
- return strKey;
80503
- }
80504
-
80505
80611
  this.SaveDrawData=function(drawPicture) //保存一个画图工具
80506
80612
  {
80507
- var strKey=this.GetItemKey(drawPicture);
80613
+ var symbol=drawPicture.Symbol;
80508
80614
  var data=drawPicture.ExportStorageData();
80509
80615
  if (!data) return;
80510
80616
 
80511
- if (this.DrawData.has(strKey)) //更新
80617
+ if (this.DrawDataV2.has(symbol)) //更新
80512
80618
  {
80513
- JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: key, drawPicture, data', strKey, drawPicture,data);
80514
- this.DrawData.get(strKey).set(data.Guid, data);
80619
+ JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: symbol, drawPicture, data', symbol, drawPicture, data);
80620
+ var stockItem=this.DrawDataV2.get(symbol);
80621
+ stockItem.MapPicture.set(data.Guid, data);
80515
80622
  }
80516
80623
  else //新增
80517
80624
  {
80518
- JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: key, drawPicture, data', strKey, drawPicture,data);
80519
- var newData=new Map();
80520
- newData.set(data.Guid, data);
80521
- this.DrawData.set(strKey,newData);
80625
+ JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data', symbol, drawPicture,data);
80626
+ var stockItem={ Symbol:symbol, MapPicture:new Map() } ;
80627
+ stockItem.set(data.Guid, data);
80628
+ this.DrawDataV2.set(symbol,newData);
80522
80629
  }
80523
80630
 
80524
- JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.DrawData);
80631
+ JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.DrawDataV2);
80525
80632
 
80526
80633
  this.Save();
80527
80634
  }
80528
80635
 
80529
80636
  this.DeleteDrawData=function(drawPicture) //删除一个画图工具
80530
80637
  {
80531
- var strKey=this.GetItemKey(drawPicture);
80532
- if (!this.DrawData.has(strKey)) return;
80638
+ var symbol=drawPicture.Symbol;
80639
+ if (!this.DrawDataV2.has(symbol)) return;
80533
80640
 
80534
- var mapDraw=this.DrawData.get(strKey);
80535
- if (!mapDraw.has(drawPicture.Guid)) return;
80641
+ var stockItem=this.DrawDataV2.get(symbol);
80642
+ if (!stockItem.MapPicture.has(drawPicture.Guid)) return;
80536
80643
 
80537
- mapDraw.delete(drawPicture.Guid);
80644
+ stockItem.MapPicture.delete(drawPicture.Guid);
80538
80645
  this.Save();
80539
80646
  }
80540
80647
 
80541
80648
  this.Clear=function()
80542
80649
  {
80543
- this.DrawData=new Map();
80650
+ this.DrawDataV2=new Map();
80544
80651
  this.Save();
80545
80652
  }
80546
80653
 
80547
- this.GetDrawData=function(obj) //获取已有的画图工具数据{Symbol: , Period:, }
80654
+ this.GetDrawData=function(obj) //获取已有的画图工具数据{ Symbol: , Period:, }
80548
80655
  {
80549
- var data=[];
80550
- var strKey=this.GetItemKey(obj);
80551
- if (!this.DrawData.has(strKey)) return data;
80656
+ var aryData=[];
80657
+ var symbol=obj.Symbol;
80552
80658
 
80553
- var stockData=this.DrawData.get(strKey);
80554
- for(var item of stockData)
80659
+ if (!this.DrawDataV2.has(symbol)) return aryData;
80660
+
80661
+ var stockItem=this.DrawDataV2.get(symbol);
80662
+ for(var mapItem of stockItem.MapPicture)
80555
80663
  {
80556
- data.push(item[1]);
80664
+ var drawItem=mapItem[1];
80665
+ if (this.EnableCrossPeriod)
80666
+ {
80667
+ aryData.push(drawItem);
80668
+ }
80669
+ else
80670
+ {
80671
+ if (drawItem.Period==obj.Period) aryData.push(drawItem);
80672
+ }
80557
80673
  }
80558
80674
 
80559
- return data;
80675
+ return aryData;
80560
80676
  }
80561
80677
  }
80562
80678
 
@@ -91877,7 +91993,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91877
91993
  drawPicture.Option=this.ChartDrawOption;
91878
91994
 
91879
91995
  if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
91880
- drawPicture.UpdateXValue();
91996
+ if (drawPicture.Period!=this.Period)
91997
+ {
91998
+ drawPicture.ChangePeriod(this.Period);
91999
+ }
92000
+ else
92001
+ {
92002
+ drawPicture.UpdateXValue();
92003
+ }
92004
+
92005
+
91881
92006
  drawPicture.ValueToPoint();
91882
92007
 
91883
92008
  var self=this;
@@ -99675,7 +99800,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
99675
99800
  {
99676
99801
  if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
99677
99802
 
99678
- var self=this;
99803
+ var kData=this.GetKData();
99679
99804
  for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
99680
99805
  {
99681
99806
  var item=this.ChartDrawStorageCache[i];
@@ -153171,7 +153296,7 @@ function ScrollBarBGChart()
153171
153296
 
153172
153297
 
153173
153298
 
153174
- var HQCHART_VERSION="1.1.15038";
153299
+ var HQCHART_VERSION="1.1.15045";
153175
153300
 
153176
153301
  function PrintHQChartVersion()
153177
153302
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15038";
8
+ var HQCHART_VERSION="1.1.15045";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {