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
|
-
|
|
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=
|
|
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.
|
|
68779
|
+
this.GetkData=function()
|
|
68746
68780
|
{
|
|
68747
|
-
if (!this.Frame) return
|
|
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();
|
|
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
|
-
|
|
80474
|
-
{
|
|
80475
|
-
var item=saveData[i];
|
|
80476
|
-
var drawMap=new Map();
|
|
80589
|
+
if (!saveData) return;
|
|
80477
80590
|
|
|
80478
|
-
|
|
80591
|
+
if (IFrameSplitOperator.IsNonEmptyArray(saveData)) //老版本 key=symbol-Period
|
|
80592
|
+
{
|
|
80593
|
+
for(var i=0;i<saveData.length;++i)
|
|
80479
80594
|
{
|
|
80480
|
-
var
|
|
80481
|
-
|
|
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
|
-
|
|
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
|
|
80630
|
+
for(var mapItem of this.DrawDataV2)
|
|
80494
80631
|
{
|
|
80495
|
-
var
|
|
80496
|
-
var
|
|
80497
|
-
var itemData={ Key:key, Value:[]};
|
|
80632
|
+
var symbol=mapItem[0];
|
|
80633
|
+
var stockItem=mapItem[1];
|
|
80498
80634
|
|
|
80499
|
-
|
|
80635
|
+
var itemData={ Symbol:symbol, AryPicture:[] };
|
|
80636
|
+
|
|
80637
|
+
for(var pictureItem of stockItem.MapPicture)
|
|
80500
80638
|
{
|
|
80501
|
-
|
|
80639
|
+
var drawItem=pictureItem[1];
|
|
80640
|
+
if (drawItem.EnableSave===false) continue;
|
|
80502
80641
|
|
|
80503
|
-
itemData.
|
|
80642
|
+
itemData.AryPicture.push(drawItem);
|
|
80504
80643
|
}
|
|
80505
80644
|
|
|
80506
|
-
if (IFrameSplitOperator.IsNonEmptyArray(itemData.
|
|
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
|
|
80656
|
+
var symbol=drawPicture.Symbol;
|
|
80524
80657
|
var data=drawPicture.ExportStorageData();
|
|
80525
80658
|
if (!data) return;
|
|
80526
80659
|
|
|
80527
|
-
if (this.
|
|
80660
|
+
if (this.DrawDataV2.has(symbol)) //更新
|
|
80528
80661
|
{
|
|
80529
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate:
|
|
80530
|
-
this.
|
|
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:
|
|
80535
|
-
var
|
|
80536
|
-
|
|
80537
|
-
this.
|
|
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.
|
|
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
|
|
80548
|
-
if (!this.
|
|
80681
|
+
var symbol=drawPicture.Symbol;
|
|
80682
|
+
if (!this.DrawDataV2.has(symbol)) return;
|
|
80549
80683
|
|
|
80550
|
-
var
|
|
80551
|
-
if (!
|
|
80684
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80685
|
+
if (!stockItem.MapPicture.has(drawPicture.Guid)) return;
|
|
80552
80686
|
|
|
80553
|
-
|
|
80687
|
+
stockItem.MapPicture.delete(drawPicture.Guid);
|
|
80554
80688
|
this.Save();
|
|
80555
80689
|
}
|
|
80556
80690
|
|
|
80557
80691
|
this.Clear=function()
|
|
80558
80692
|
{
|
|
80559
|
-
this.
|
|
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
|
|
80566
|
-
var
|
|
80567
|
-
|
|
80699
|
+
var aryData=[];
|
|
80700
|
+
var symbol=obj.Symbol;
|
|
80701
|
+
|
|
80702
|
+
if (!this.DrawDataV2.has(symbol)) return aryData;
|
|
80568
80703
|
|
|
80569
|
-
var
|
|
80570
|
-
for(var
|
|
80704
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80705
|
+
for(var mapItem of stockItem.MapPicture)
|
|
80571
80706
|
{
|
|
80572
|
-
|
|
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
|
|
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
|
-
|
|
90340
|
-
if (this.ClickModel.IsShowCorssCursor==true && this.
|
|
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
|
|
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.
|
|
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
|
|
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.
|
|
165144
|
+
var HQCHART_VERSION="1.1.15042";
|
|
164986
165145
|
|
|
164987
165146
|
function PrintHQChartVersion()
|
|
164988
165147
|
{
|