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.
|
@@ -4518,7 +4518,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4518
4518
|
|
|
4519
4519
|
if (option.DrawTool) //画图工具
|
|
4520
4520
|
{
|
|
4521
|
-
|
|
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)
|
|
@@ -7412,7 +7418,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7412
7418
|
this.EnableVerticalDrag=false;
|
|
7413
7419
|
|
|
7414
7420
|
//十字光标长留(手势才有)
|
|
7415
|
-
this.ClickModel=
|
|
7421
|
+
this.ClickModel=
|
|
7422
|
+
{
|
|
7423
|
+
IsShowCorssCursor:false, PreventHide:false, IsClickButton:false,
|
|
7424
|
+
AutoClose:{ Enable:false, Timer:null, DelayTime:3000 },
|
|
7425
|
+
}; //PreventHide 阻止隐藏十字光标 AutoClose=延迟关闭
|
|
7416
7426
|
this.EnableClickModel=false;
|
|
7417
7427
|
|
|
7418
7428
|
//标题栏显示最新数据
|
|
@@ -9799,6 +9809,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9799
9809
|
|
|
9800
9810
|
|
|
9801
9811
|
this.StopDragTimer();
|
|
9812
|
+
this.StopAutoCloseCorssCursor();
|
|
9802
9813
|
|
|
9803
9814
|
var isSingleTouch=this.IsSingleTouch(e);
|
|
9804
9815
|
if (this.EnableScrollUpDown==false || !isSingleTouch || //多点触屏
|
|
@@ -10316,6 +10327,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10316
10327
|
return true;
|
|
10317
10328
|
}
|
|
10318
10329
|
|
|
10330
|
+
this.StopAutoCloseCorssCursor=function()
|
|
10331
|
+
{
|
|
10332
|
+
if (!this.ClickModel.AutoClose.Timer) return;
|
|
10333
|
+
|
|
10334
|
+
clearTimeout(this.ClickModel.AutoClose.Timer);
|
|
10335
|
+
this.ClickModel.AutoClose.Timer=null;
|
|
10336
|
+
}
|
|
10337
|
+
|
|
10338
|
+
//自动关闭十字光标
|
|
10339
|
+
this.DelayAutoCloseCorssCursor=function()
|
|
10340
|
+
{
|
|
10341
|
+
if (!this.ClickModel.AutoClose.Enable) return false;
|
|
10342
|
+
|
|
10343
|
+
this.StopAutoCloseCorssCursor();
|
|
10344
|
+
|
|
10345
|
+
this.ClickModel.AutoClose.Timer=setTimeout(()=>
|
|
10346
|
+
{
|
|
10347
|
+
this.ClickModel.IsShowCorssCursor=false;
|
|
10348
|
+
this.DrawDynamicInfo();
|
|
10349
|
+
|
|
10350
|
+
}, this.ClickModel.AutoClose.DelayTime)
|
|
10351
|
+
}
|
|
10352
|
+
|
|
10319
10353
|
this.MoveCorssCursor=function(point,e)
|
|
10320
10354
|
{
|
|
10321
10355
|
var pixelTatio = GetDevicePixelRatio();
|
|
@@ -68698,10 +68732,89 @@ function IChartDrawPicture()
|
|
|
68698
68732
|
}
|
|
68699
68733
|
}
|
|
68700
68734
|
|
|
68701
|
-
this.
|
|
68735
|
+
this.GetkData=function()
|
|
68702
68736
|
{
|
|
68703
|
-
if (!this.Frame) return
|
|
68737
|
+
if (!this.Frame) return null;
|
|
68704
68738
|
var data=this.Frame.Data;
|
|
68739
|
+
if (!data) return null;
|
|
68740
|
+
|
|
68741
|
+
return data;
|
|
68742
|
+
}
|
|
68743
|
+
|
|
68744
|
+
//周期变动 X重新定位
|
|
68745
|
+
this.ChangePeriod=function(period)
|
|
68746
|
+
{
|
|
68747
|
+
var kData=this.GetkData();
|
|
68748
|
+
if (!kData) return;
|
|
68749
|
+
|
|
68750
|
+
var aryDateTime=[];
|
|
68751
|
+
for(var i=0; i<this.Value.length; ++i)
|
|
68752
|
+
{
|
|
68753
|
+
var item=this.Value[i];
|
|
68754
|
+
if (!item.DateTime) break;
|
|
68755
|
+
var dateTime={ Date:item.DateTime.Date, Time:0, Match:null };
|
|
68756
|
+
if (IFrameSplitOperator.IsNumber(item.DateTime.Time)) dateTime.Time=item.DateTime.Time;
|
|
68757
|
+
aryDateTime[i]=dateTime;
|
|
68758
|
+
}
|
|
68759
|
+
|
|
68760
|
+
var findCount=0;
|
|
68761
|
+
var perData=null;
|
|
68762
|
+
var perIndex=-1;
|
|
68763
|
+
for(var i=0, j=0;i<kData.Data.length;++i)
|
|
68764
|
+
{
|
|
68765
|
+
var kItem=kData.Data[i];
|
|
68766
|
+
|
|
68767
|
+
for(j=0;j<aryDateTime.length;++j)
|
|
68768
|
+
{
|
|
68769
|
+
var item=aryDateTime[j];
|
|
68770
|
+
if (item.Match) continue;
|
|
68771
|
+
|
|
68772
|
+
if (ChartData.IsDayPeriod(period, true))
|
|
68773
|
+
{
|
|
68774
|
+
if (kItem.Date>item.Date)
|
|
68775
|
+
{
|
|
68776
|
+
item.Match={ KItem:perData, Index:perIndex };
|
|
68777
|
+
++findCount;
|
|
68778
|
+
}
|
|
68779
|
+
}
|
|
68780
|
+
else if (ChartData.IsMinutePeriod(period, true))
|
|
68781
|
+
{
|
|
68782
|
+
if (kItem.Date>item.Date || (kItem.Date==item.Date && kItem.Time>item.Time))
|
|
68783
|
+
{
|
|
68784
|
+
item.Match={ KItem:perData, Index:perIndex };
|
|
68785
|
+
++findCount;
|
|
68786
|
+
}
|
|
68787
|
+
}
|
|
68788
|
+
}
|
|
68789
|
+
|
|
68790
|
+
perData=kItem;
|
|
68791
|
+
perIndex=i;
|
|
68792
|
+
|
|
68793
|
+
if (findCount>=aryDateTime.length) break;
|
|
68794
|
+
}
|
|
68795
|
+
|
|
68796
|
+
for(var i=0;i<aryDateTime.length;++i)
|
|
68797
|
+
{
|
|
68798
|
+
var item=aryDateTime[i];
|
|
68799
|
+
var valueItem=this.Value[i];
|
|
68800
|
+
if (item.Match && item.Match.KItem)
|
|
68801
|
+
{
|
|
68802
|
+
valueItem.DateTime={ Date:item.Match.Date, Time:item.Match.Time };
|
|
68803
|
+
valueItem.XValue=item.Match.Index;
|
|
68804
|
+
}
|
|
68805
|
+
else
|
|
68806
|
+
{
|
|
68807
|
+
valueItem.DateTime=null;
|
|
68808
|
+
valueItem.XValue=null;
|
|
68809
|
+
}
|
|
68810
|
+
}
|
|
68811
|
+
|
|
68812
|
+
this.Period=period;
|
|
68813
|
+
}
|
|
68814
|
+
|
|
68815
|
+
this.UpdateXValue=function() //通过datetime更新x的索引
|
|
68816
|
+
{
|
|
68817
|
+
var data=this.GetkData();
|
|
68705
68818
|
if (!data) return false;
|
|
68706
68819
|
|
|
68707
68820
|
var aryDateTime=[];
|
|
@@ -80411,9 +80524,12 @@ function ChartDrawTVShortPosition()
|
|
|
80411
80524
|
|
|
80412
80525
|
function ChartDrawStorage()
|
|
80413
80526
|
{
|
|
80414
|
-
this.DrawData=new Map();
|
|
80527
|
+
//this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
80528
|
+
this.DrawDataV2=new Map(); //画图工具数据 key=symbol, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
80529
|
+
|
|
80415
80530
|
this.StorageKey;
|
|
80416
|
-
this.GetEventCallback;
|
|
80531
|
+
this.GetEventCallback; //事件回调
|
|
80532
|
+
this.EnableCrossPeriod=false; //跨周期
|
|
80417
80533
|
|
|
80418
80534
|
this.Load=function(key) //从本地读取画图工具
|
|
80419
80535
|
{
|
|
@@ -80426,18 +80542,39 @@ function ChartDrawStorage()
|
|
|
80426
80542
|
if (typeof(cacheValue) != "string") return;
|
|
80427
80543
|
|
|
80428
80544
|
var saveData=JSON.parse(cacheValue);
|
|
80429
|
-
|
|
80430
|
-
{
|
|
80431
|
-
var item=saveData[i];
|
|
80432
|
-
var drawMap=new Map();
|
|
80545
|
+
if (!saveData) return;
|
|
80433
80546
|
|
|
80434
|
-
|
|
80547
|
+
if (IFrameSplitOperator.IsNonEmptyArray(saveData)) //老版本 key=symbol-Period
|
|
80548
|
+
{
|
|
80549
|
+
for(var i=0;i<saveData.length;++i)
|
|
80435
80550
|
{
|
|
80436
|
-
var
|
|
80437
|
-
|
|
80551
|
+
var item=saveData[i];
|
|
80552
|
+
for(var j=0;j<item.Value.length;++j)
|
|
80553
|
+
{
|
|
80554
|
+
var drawItem=item.Value[j];
|
|
80555
|
+
var symbol=drawItem.Value.Symbol;
|
|
80556
|
+
if (!this.DrawDataV2.has(symbol))
|
|
80557
|
+
this.DrawDataV2.set(symbol, {Symbol:symbol, MapPicture: new Map() });
|
|
80558
|
+
|
|
80559
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80560
|
+
stockItem.MapPicture.set(drawItem.Value.Guid, drawItem.Value);
|
|
80561
|
+
}
|
|
80438
80562
|
}
|
|
80563
|
+
}
|
|
80564
|
+
else if (saveData.Ver==2.0 && IFrameSplitOperator.IsNonEmptyArray(saveData.Data))
|
|
80565
|
+
{
|
|
80566
|
+
for(var i=0;i<saveData.Data.length;++i)
|
|
80567
|
+
{
|
|
80568
|
+
var item=saveData.Data[i]; //{ Symbol:, AryPicture:[ { Guid, Symbol, Period, ClassName, Value }, ] }
|
|
80569
|
+
var stockItem={ Symbol:item.Symbol, MapPicture:new Map() };
|
|
80570
|
+
for(var j=0; j<item.AryPicture.length;++j)
|
|
80571
|
+
{
|
|
80572
|
+
var drawItem=item.AryPicture[j];
|
|
80573
|
+
stockItem.MapPicture.set(drawItem.Guid, drawItem);
|
|
80574
|
+
}
|
|
80439
80575
|
|
|
80440
|
-
|
|
80576
|
+
this.DrawDataV2.set(stockItem.Symbol,stockItem);
|
|
80577
|
+
}
|
|
80441
80578
|
}
|
|
80442
80579
|
}
|
|
80443
80580
|
|
|
@@ -80446,89 +80583,95 @@ function ChartDrawStorage()
|
|
|
80446
80583
|
if (!this.StorageKey) return;
|
|
80447
80584
|
|
|
80448
80585
|
var saveData=[];
|
|
80449
|
-
for(var
|
|
80586
|
+
for(var mapItem of this.DrawDataV2)
|
|
80450
80587
|
{
|
|
80451
|
-
var
|
|
80452
|
-
var
|
|
80453
|
-
var itemData={ Key:key, Value:[]};
|
|
80588
|
+
var symbol=mapItem[0];
|
|
80589
|
+
var stockItem=mapItem[1];
|
|
80454
80590
|
|
|
80455
|
-
|
|
80591
|
+
var itemData={ Symbol:symbol, AryPicture:[] };
|
|
80592
|
+
|
|
80593
|
+
for(var pictureItem of stockItem.MapPicture)
|
|
80456
80594
|
{
|
|
80457
|
-
|
|
80595
|
+
var drawItem=pictureItem[1];
|
|
80596
|
+
if (drawItem.EnableSave===false) continue;
|
|
80458
80597
|
|
|
80459
|
-
itemData.
|
|
80598
|
+
itemData.AryPicture.push(drawItem);
|
|
80460
80599
|
}
|
|
80461
80600
|
|
|
80462
|
-
if (IFrameSplitOperator.IsNonEmptyArray(itemData.
|
|
80601
|
+
if (IFrameSplitOperator.IsNonEmptyArray(itemData.AryPicture))
|
|
80463
80602
|
saveData.push(itemData);
|
|
80464
80603
|
}
|
|
80465
80604
|
|
|
80466
80605
|
JSConsole.Chart.Log(`[ChartDrawStorage::Save] save to localStorage, key=${this.StorageKey}`);
|
|
80467
|
-
var strData=JSON.stringify(saveData);
|
|
80606
|
+
var strData=JSON.stringify({Ver:2.0, Data:saveData});
|
|
80468
80607
|
localStorage[this.StorageKey]=strData;
|
|
80469
80608
|
}
|
|
80470
80609
|
|
|
80471
|
-
this.GetItemKey=function(obj) //生成每个画图工具的key
|
|
80472
|
-
{
|
|
80473
|
-
var strKey=`${obj.Symbol}-${obj.Period}`;
|
|
80474
|
-
return strKey;
|
|
80475
|
-
}
|
|
80476
|
-
|
|
80477
80610
|
this.SaveDrawData=function(drawPicture) //保存一个画图工具
|
|
80478
80611
|
{
|
|
80479
|
-
var
|
|
80612
|
+
var symbol=drawPicture.Symbol;
|
|
80480
80613
|
var data=drawPicture.ExportStorageData();
|
|
80481
80614
|
if (!data) return;
|
|
80482
80615
|
|
|
80483
|
-
if (this.
|
|
80616
|
+
if (this.DrawDataV2.has(symbol)) //更新
|
|
80484
80617
|
{
|
|
80485
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate:
|
|
80486
|
-
this.
|
|
80618
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: symbol, drawPicture, data', symbol, drawPicture, data);
|
|
80619
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80620
|
+
stockItem.MapPicture.set(data.Guid, data);
|
|
80487
80621
|
}
|
|
80488
80622
|
else //新增
|
|
80489
80623
|
{
|
|
80490
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert:
|
|
80491
|
-
var
|
|
80492
|
-
|
|
80493
|
-
this.
|
|
80624
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data', symbol, drawPicture,data);
|
|
80625
|
+
var stockItem={ Symbol:symbol, MapPicture:new Map() } ;
|
|
80626
|
+
stockItem.set(data.Guid, data);
|
|
80627
|
+
this.DrawDataV2.set(symbol,newData);
|
|
80494
80628
|
}
|
|
80495
80629
|
|
|
80496
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.
|
|
80630
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.DrawDataV2);
|
|
80497
80631
|
|
|
80498
80632
|
this.Save();
|
|
80499
80633
|
}
|
|
80500
80634
|
|
|
80501
80635
|
this.DeleteDrawData=function(drawPicture) //删除一个画图工具
|
|
80502
80636
|
{
|
|
80503
|
-
var
|
|
80504
|
-
if (!this.
|
|
80637
|
+
var symbol=drawPicture.Symbol;
|
|
80638
|
+
if (!this.DrawDataV2.has(symbol)) return;
|
|
80505
80639
|
|
|
80506
|
-
var
|
|
80507
|
-
if (!
|
|
80640
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80641
|
+
if (!stockItem.MapPicture.has(drawPicture.Guid)) return;
|
|
80508
80642
|
|
|
80509
|
-
|
|
80643
|
+
stockItem.MapPicture.delete(drawPicture.Guid);
|
|
80510
80644
|
this.Save();
|
|
80511
80645
|
}
|
|
80512
80646
|
|
|
80513
80647
|
this.Clear=function()
|
|
80514
80648
|
{
|
|
80515
|
-
this.
|
|
80649
|
+
this.DrawDataV2=new Map();
|
|
80516
80650
|
this.Save();
|
|
80517
80651
|
}
|
|
80518
80652
|
|
|
80519
|
-
this.GetDrawData=function(obj) //获取已有的画图工具数据{Symbol: , Period:, }
|
|
80653
|
+
this.GetDrawData=function(obj) //获取已有的画图工具数据{ Symbol: , Period:, }
|
|
80520
80654
|
{
|
|
80521
|
-
var
|
|
80522
|
-
var
|
|
80523
|
-
|
|
80655
|
+
var aryData=[];
|
|
80656
|
+
var symbol=obj.Symbol;
|
|
80657
|
+
|
|
80658
|
+
if (!this.DrawDataV2.has(symbol)) return aryData;
|
|
80524
80659
|
|
|
80525
|
-
var
|
|
80526
|
-
for(var
|
|
80660
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80661
|
+
for(var mapItem of stockItem.MapPicture)
|
|
80527
80662
|
{
|
|
80528
|
-
|
|
80663
|
+
var drawItem=mapItem[1];
|
|
80664
|
+
if (this.EnableCrossPeriod)
|
|
80665
|
+
{
|
|
80666
|
+
aryData.push(drawItem);
|
|
80667
|
+
}
|
|
80668
|
+
else
|
|
80669
|
+
{
|
|
80670
|
+
if (drawItem.Period==obj.Period) aryData.push(drawItem);
|
|
80671
|
+
}
|
|
80529
80672
|
}
|
|
80530
80673
|
|
|
80531
|
-
return
|
|
80674
|
+
return aryData;
|
|
80532
80675
|
}
|
|
80533
80676
|
}
|
|
80534
80677
|
|
|
@@ -90292,8 +90435,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
90292
90435
|
|
|
90293
90436
|
if (this.EnableClickModel===true)
|
|
90294
90437
|
{
|
|
90295
|
-
|
|
90296
|
-
if (this.ClickModel.IsShowCorssCursor==true && this.
|
|
90438
|
+
var bShowCorssCursor=false;
|
|
90439
|
+
if (this.ClickModel.IsShowCorssCursor==true && this.ClickModel.PreventHide) bShowCorssCursor=true; //阻止隐藏
|
|
90440
|
+
if (this.ClickModel.IsShowCorssCursor==true && this.TouchDrawCount>0 ) bShowCorssCursor=true;
|
|
90441
|
+
|
|
90442
|
+
if (bShowCorssCursor)
|
|
90443
|
+
{
|
|
90444
|
+
this.DelayAutoCloseCorssCursor(); //自动延迟关闭十字光标
|
|
90445
|
+
return;
|
|
90446
|
+
}
|
|
90297
90447
|
|
|
90298
90448
|
this.ClickModel.IsShowCorssCursor=false;
|
|
90299
90449
|
this.DrawDynamicInfo();
|
|
@@ -90306,7 +90456,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
90306
90456
|
return;
|
|
90307
90457
|
}
|
|
90308
90458
|
|
|
90309
|
-
for(var i
|
|
90459
|
+
for(var i=0; i<this.ExtendChartPaint.length; ++i)
|
|
90310
90460
|
{
|
|
90311
90461
|
var item=this.ExtendChartPaint[i];
|
|
90312
90462
|
if (item.ClassName==='KLineTooltipPaint')
|
|
@@ -91842,7 +91992,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
91842
91992
|
drawPicture.Option=this.ChartDrawOption;
|
|
91843
91993
|
|
|
91844
91994
|
if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
|
|
91845
|
-
drawPicture.
|
|
91995
|
+
if (drawPicture.Period!=this.Period)
|
|
91996
|
+
{
|
|
91997
|
+
drawPicture.ChangePeriod(this.Period);
|
|
91998
|
+
}
|
|
91999
|
+
else
|
|
92000
|
+
{
|
|
92001
|
+
drawPicture.UpdateXValue();
|
|
92002
|
+
}
|
|
92003
|
+
|
|
92004
|
+
|
|
91846
92005
|
drawPicture.ValueToPoint();
|
|
91847
92006
|
|
|
91848
92007
|
var self=this;
|
|
@@ -99640,7 +99799,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
99640
99799
|
{
|
|
99641
99800
|
if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
|
|
99642
99801
|
|
|
99643
|
-
var
|
|
99802
|
+
var kData=this.GetKData();
|
|
99644
99803
|
for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
|
|
99645
99804
|
{
|
|
99646
99805
|
var item=this.ChartDrawStorageCache[i];
|
|
@@ -153136,7 +153295,7 @@ function ScrollBarBGChart()
|
|
|
153136
153295
|
|
|
153137
153296
|
|
|
153138
153297
|
|
|
153139
|
-
var HQCHART_VERSION="1.1.
|
|
153298
|
+
var HQCHART_VERSION="1.1.15042";
|
|
153140
153299
|
|
|
153141
153300
|
function PrintHQChartVersion()
|
|
153142
153301
|
{
|