hqchart 1.1.14947 → 1.1.14956

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.
@@ -15294,7 +15294,16 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15294
15294
  var left=null,right=null;
15295
15295
  if (IFrameSplitOperator.IsBool(srcParam.Left)) left=srcParam.Left;
15296
15296
  if (IFrameSplitOperator.IsBool(srcParam.Right)) right=srcParam.Right;
15297
- this.ShowCallAuctionData({ Left:left, Right:right });
15297
+
15298
+ var multiDay=null;
15299
+ if (srcParam.MultiDay)
15300
+ {
15301
+ var item=srcParam.MultiDay;
15302
+ multiDay={ };
15303
+ if (IFrameSplitOperator.IsBool(item.Left)) multiDay.Left=item.Left;
15304
+ if (IFrameSplitOperator.IsBool(item.Right)) multiDay.Right=item.Right;
15305
+ }
15306
+ this.ShowCallAuctionData({ Left:left, Right:right, MultiDay:multiDay });
15298
15307
  }
15299
15308
 
15300
15309
  break;
@@ -15870,7 +15879,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15870
15879
  {
15871
15880
  //清空当前鼠标坐标
15872
15881
  this.LastPoint.X=null;
15873
- this.LastPoint.Y=null
15882
+ this.LastPoint.Y=null;
15874
15883
  this.HideTooltip();
15875
15884
  this.CloseTooltipDialog();
15876
15885
  }
@@ -15879,7 +15888,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15879
15888
  if (IFrameSplitOperator.IsNumber(data.X) && IFrameSplitOperator.IsNumber(data.Y))
15880
15889
  {
15881
15890
  //设置鼠标位置
15882
- if (this.LastPoint && !IFrameSplitOperator.IsNumber(this.LastPoint.X) && !IFrameSplitOperator.IsNumber(this.LastPoint.Y))
15891
+ if (this.LastPoint && (!IFrameSplitOperator.IsNumber(this.LastPoint.X) || !IFrameSplitOperator.IsNumber(this.LastPoint.Y)))
15883
15892
  {
15884
15893
  this.LastPoint.X=data.X;
15885
15894
  this.LastPoint.Y=data.Y;
@@ -39420,10 +39429,10 @@ function ChartMinuteVolumBar()
39420
39429
  var unit=this.GetVolUnit();
39421
39430
  if (callAutionData.Ver==1.0)
39422
39431
  {
39423
- for(var i in callAutionData.Data)
39432
+ for(var i=0;i<callAutionData.Data.length;++i)
39424
39433
  {
39425
39434
  var item=callAutionData.Data[i];
39426
- if (!item || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
39435
+ if (!item || !IFrameSplitOperator.IsNonEmptyArray(item.Vol) || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
39427
39436
 
39428
39437
  if (isBeforeOpen)
39429
39438
  {
@@ -39457,11 +39466,11 @@ function ChartMinuteVolumBar()
39457
39466
  {
39458
39467
  var range={ Max: callAutionData.VolMax, Min:callAutionData.VolMin }
39459
39468
 
39460
- for(var i in callAutionData.Data)
39469
+ for(var i=0; i<callAutionData.Data.length; ++i)
39461
39470
  {
39462
39471
  var item=callAutionData.Data[i];
39463
39472
  if (!item) continue;
39464
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
39473
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
39465
39474
  {
39466
39475
  if (isBeforeOpen)
39467
39476
  {
@@ -39491,7 +39500,7 @@ function ChartMinuteVolumBar()
39491
39500
  this.Canvas.stroke();
39492
39501
  }
39493
39502
 
39494
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
39503
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
39495
39504
  {
39496
39505
  if (isBeforeOpen)
39497
39506
  {
@@ -44471,16 +44480,23 @@ function ChartMinutePriceLine()
44471
44480
  var item=callAutionData.Data[i];
44472
44481
  if (!item || !IFrameSplitOperator.IsNumber(item.Price))
44473
44482
  {
44474
- if (i==0 && isBeforeOpen && IFrameSplitOperator.IsNumber(this.YClose))
44483
+ if (i==0 && isBeforeOpen)
44475
44484
  {
44476
- var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
44477
- var y=this.ChartFrame.GetLeftExtendYFromData(this.YClose);
44485
+ //盘前集合竞价起始点为昨收或昨结算
44486
+ var price=callAutionData.YClose;
44487
+ if (IFrameSplitOperator.IsNumber(callAutionData.YClearing)) price=callAutionData.YClearing;
44478
44488
 
44479
- this.Canvas.strokeStyle=this.BeforeLineColor;
44480
- this.Canvas.beginPath();
44481
- if (isHScreen) this.Canvas.moveTo(y,x);
44482
- else this.Canvas.moveTo(x,y);
44483
- bFirstPoint=false;
44489
+ if (IFrameSplitOperator.IsNumber(price))
44490
+ {
44491
+ var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
44492
+ var y=this.ChartFrame.GetLeftExtendYFromData(price);
44493
+
44494
+ this.Canvas.strokeStyle=this.BeforeLineColor;
44495
+ this.Canvas.beginPath();
44496
+ if (isHScreen) this.Canvas.moveTo(y,x);
44497
+ else this.Canvas.moveTo(x,y);
44498
+ bFirstPoint=false;
44499
+ }
44484
44500
  }
44485
44501
 
44486
44502
  continue;
@@ -94753,7 +94769,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94753
94769
 
94754
94770
  var bShow=(this.IsShowAfterData && this.IsShowBeforeData);
94755
94771
  var subItem={ Name:"盘后盘前(单日)",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_CALLCATION_ID, Args:[{ Left:!bShow, Right:!bShow } ] }, Checked:bShow };
94756
- item.SubMenu.push(subItem);
94772
+ item.SubMenu.push(subItem);
94757
94773
 
94758
94774
  var subItem={ Name:"盘前(单日)",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_CALLCATION_ID, Args:[{ Left:!this.IsShowBeforeData} ] }, Checked:this.IsShowBeforeData };
94759
94775
  item.SubMenu.push(subItem);
@@ -94761,6 +94777,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94761
94777
  var subItem={ Name:"盘后(单日)",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_CALLCATION_ID, Args:[{ Right:!this.IsShowAfterData} ] }, Checked:this.IsShowAfterData };
94762
94778
  item.SubMenu.push(subItem);
94763
94779
 
94780
+ var bShow=(this.IsShowMultiDayBeforeData && this.IsShowMultiDayAfterData);
94781
+ var subItem={ Name:"盘后盘前(多日)",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_CALLCATION_ID, Args:[{ MultiDay:{ Left:!bShow, Right:!bShow} } ] }, Checked:bShow };
94782
+ item.SubMenu.push(subItem);
94783
+
94784
+ var subItem={ Name:"盘前(多日)",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_CALLCATION_ID, Args:[{ MultiDay:{ Left:!this.IsShowMultiDayBeforeData } } ] }, Checked:this.IsShowMultiDayBeforeData };
94785
+ item.SubMenu.push(subItem);
94786
+
94787
+ var subItem={ Name:"盘后(多日)",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_CALLCATION_ID, Args:[{ MultiDay:{ Right:!this.IsShowMultiDayAfterData } } ] }, Checked:this.IsShowMultiDayAfterData };
94788
+ item.SubMenu.push(subItem);
94789
+
94764
94790
  aryMenu.splice(4,0,item);
94765
94791
  }
94766
94792
 
@@ -96649,6 +96675,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96649
96675
  //更新最新的几条数据
96650
96676
  this.UpdateLatestMinuteDataV2=function(minuteData)
96651
96677
  {
96678
+ if (!minuteData || !IFrameSplitOperator.IsNonEmptyArray(minuteData.Data)) return;
96679
+
96652
96680
  if (this.DayCount>1)
96653
96681
  {
96654
96682
  if (!this.DayData) return;
@@ -96657,7 +96685,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96657
96685
  for(var i=0; i<this.DayData.length; ++i)
96658
96686
  {
96659
96687
  var item=this.DayData[i];
96660
- if (item.Date===date)
96688
+ if (item.Date===minuteData.Date)
96661
96689
  {
96662
96690
  findItem=item;
96663
96691
  break;
@@ -96768,6 +96796,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96768
96796
 
96769
96797
  var callCation={ Before:this.IsShowBeforeData, After:this.IsShowAfterData } //集合竞价
96770
96798
  if (this.DayCount>1) callCation={ Before:this.IsShowMultiDayBeforeData, After:this.IsShowMultiDayAfterData } //多日集合竞价
96799
+ callCation.Latest={ Before:this.GetLatestBeforeOpenItem(), After:this.GetLatestAfterCloseItem() }; //最新一条的盘前盘后数据
96771
96800
 
96772
96801
  var obj=
96773
96802
  {
@@ -96843,24 +96872,50 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96843
96872
  this.ColorLineData=aryColorLineData;
96844
96873
  }
96845
96874
 
96846
- this.UpdateCallCationData=function(beforeOpenData,afterCloseData)
96875
+ this.UpdateCallCationData=function(beforeOpenData,afterCloseData,option)
96847
96876
  {
96848
- if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
96877
+ var dataType=0;
96878
+ if (option && IFrameSplitOperator.IsNumber(option.DataType)) dataType=option.DataType;
96879
+
96880
+ if (dataType==1)
96849
96881
  {
96850
- var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
96851
- if (lastItem.Date==beforeOpenData.Date) //存在更新
96852
- this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
96853
- else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
96854
- this.MultiDayBeforeOpenData.push(beforeOpenData);
96855
- }
96882
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
96883
+ {
96884
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
96885
+ if (lastItem.Date==beforeOpenData.Date) //增量更新
96886
+ {
96887
+ this.UpdateLatestCallCationData(lastItem, beforeOpenData);
96888
+ }
96889
+ }
96856
96890
 
96857
- if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
96891
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
96892
+ {
96893
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
96894
+ if (lastItem.Date==afterCloseData.Date) //增量更新
96895
+ {
96896
+ this.UpdateLatestCallCationData(lastItem, afterCloseData);
96897
+ }
96898
+ }
96899
+ }
96900
+ else
96858
96901
  {
96859
- var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
96860
- if (lastItem.Date==afterCloseData.Date)
96861
- this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
96862
- else if (lastItem.Date<afterCloseData.Date)
96863
- this.MultiDayAfterCloseData.push(afterCloseData);
96902
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
96903
+ {
96904
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
96905
+ if (lastItem.Date==beforeOpenData.Date) //存在更新
96906
+ this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
96907
+ else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
96908
+ this.MultiDayBeforeOpenData.push(beforeOpenData);
96909
+ }
96910
+
96911
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
96912
+ {
96913
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
96914
+ if (lastItem.Date==afterCloseData.Date)
96915
+ this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
96916
+ else if (lastItem.Date<afterCloseData.Date)
96917
+ this.MultiDayAfterCloseData.push(afterCloseData);
96918
+ }
96864
96919
  }
96865
96920
 
96866
96921
  this.CaclutateCallCationYRange();
@@ -96876,9 +96931,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96876
96931
  var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);
96877
96932
  var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data); //数据最后的更新时间
96878
96933
 
96934
+ if (data.LatestPointFlash) //最新数据闪烁
96935
+ {
96936
+ var item=data.LatestPointFlash;
96937
+ if (IFrameSplitOperator.IsNumber(item.FlashCount))
96938
+ this.SetLatestPointFlash(item.FlashCount)
96939
+ }
96940
+
96879
96941
  if (this.DayCount>1) //多日走势图
96880
96942
  {
96881
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
96943
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:1});
96882
96944
  this.UpdateLineColorData(aryColorData,minuteData.date);
96883
96945
  this.UpdateLatestMinuteDataV2(minuteData);
96884
96946
  this.UpdateHistoryMinuteUI(updateTime);
@@ -96890,10 +96952,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96890
96952
  return;
96891
96953
  }
96892
96954
 
96893
- if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
96894
- if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
96955
+ //if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
96956
+ //if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
96957
+
96958
+ //盘前盘后数据更新
96959
+ if (this.IsBeforeData && beforeOpenData) this.UpdateLatestCallCationData(this.BeforeOpenData, beforeOpenData);
96960
+ if (this.IsAfterData && afterCloseData) this.UpdateLatestCallCationData(this.AfterCloseData, afterCloseData);
96895
96961
 
96896
- //原始数据
96897
96962
  this.UpdateLatestMinuteDataV2(minuteData);
96898
96963
  this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvUpdateMinuteData"});
96899
96964
 
@@ -96908,6 +96973,45 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96908
96973
  }
96909
96974
  }
96910
96975
 
96976
+ this.UpdateLatestCallCationData=function(destData, updateData)
96977
+ {
96978
+ if (!destData) return;
96979
+ if (!updateData || !IFrameSplitOperator.IsNonEmptyArray(updateData.Data)) return;
96980
+
96981
+ if (destData.Data.length==0)
96982
+ {
96983
+ destData.Data=updateData.Data;
96984
+ destData.VolMax=updateData.VolMax;
96985
+ destData.VolMin=updateData.VolMin;
96986
+ return;
96987
+ }
96988
+
96989
+ //覆盖历史数据
96990
+ var mapData=new Map(updateData.Data.map((obj) => [obj.Time, obj]));
96991
+ var lastTime=null; //最后的时间
96992
+ for(var i=0;i<destData.Data.length;++i)
96993
+ {
96994
+ var item=destData.Data[i];
96995
+ lastTime=item.Time;
96996
+ if (!mapData.has(item.Time)) continue;
96997
+ var newItem=mapData.get(item.Time);
96998
+ if (!newItem || !IFrameSplitOperator.IsNumber(newItem.Price)) continue; //只覆盖有效数据
96999
+
97000
+ destData.Data[i]=newItem;
97001
+ }
97002
+
97003
+ //新数据往后插
97004
+ for(var i=0;i<updateData.Data.length;++i)
97005
+ {
97006
+ var item=updateData.Data[i];
97007
+ if (item.Time<=lastTime) continue;
97008
+ destData.Data.push(item);
97009
+ }
97010
+
97011
+ if (destData.VolMax<updateData.VolMax) destData.VolMax=updateData.VolMax;
97012
+ if (IFrameSplitOperator.IsNumber(updateData.TotalCount) && updateData.TotalCount>destData.TotalCount) updateData.TotalCount=destData.TotalCount;
97013
+ }
97014
+
96911
97015
  this.RecvBuySellData=function(data)
96912
97016
  {
96913
97017
  if (!data) return;
@@ -96974,7 +97078,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96974
97078
 
96975
97079
  if (this.DayCount>1) //多日走势图
96976
97080
  {
96977
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
97081
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:0});
96978
97082
  this.UpdateLineColorData(aryColorData,data.stock[0].date);
96979
97083
  this.UpdateLatestMinuteData(aryMinuteData, data.stock[0].date, data.stock[0]);
96980
97084
  this.UpdateTradeStatusData(data.TradeStatus);
@@ -98760,6 +98864,54 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
98760
98864
  return data;
98761
98865
  }
98762
98866
 
98867
+ //获取最新的一条盘前数据
98868
+ this.GetLatestBeforeOpenItem=function()
98869
+ {
98870
+ var lastItem=null;
98871
+ if (this.DayCount>1)
98872
+ {
98873
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)) return null;
98874
+ var dayItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
98875
+ if (!dayItem || !IFrameSplitOperator.IsNonEmptyArray(dayItem.Data)) return null;
98876
+
98877
+ var finder = dayItem.Data.findLast((element) => { return element && IFrameSplitOperator.IsNumber(element.Price); });
98878
+ if (finder) lastItem=finder;
98879
+ }
98880
+ else
98881
+ {
98882
+ if (!this.BeforeOpenData || !IFrameSplitOperator.IsNonEmptyArray(this.BeforeOpenData.Data)) return null;
98883
+
98884
+ var finder = this.BeforeOpenData.Data.findLast((element) => { return element && IFrameSplitOperator.IsNumber(element.Price); });
98885
+ if (finder) lastItem=finder;
98886
+ }
98887
+
98888
+ return lastItem;
98889
+ }
98890
+
98891
+ //获取最新的一条盘后数据
98892
+ this.GetLatestAfterCloseItem=function()
98893
+ {
98894
+ if (this.DayCount>1)
98895
+ {
98896
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)) return null;
98897
+ var dayItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
98898
+ if (!dayItem || !IFrameSplitOperator.IsNonEmptyArray(dayItem.Data)) return null;
98899
+
98900
+ var finder = dayItem.Data.findLast((element) => { return element && IFrameSplitOperator.IsNumber(element.Price); });
98901
+ if (finder) lastItem=finder;
98902
+ }
98903
+ else
98904
+ {
98905
+ if (!this.AfterCloseData || !IFrameSplitOperator.IsNonEmptyArray(this.AfterCloseData.Data)) return null;
98906
+
98907
+ var finder = this.AfterCloseData.Data.findLast((element) => { return element && IFrameSplitOperator.IsNumber(element.Price); });
98908
+ if (finder) lastItem=finder;
98909
+ }
98910
+
98911
+ return lastItem;
98912
+ }
98913
+
98914
+
98763
98915
  this.IsCallAuctionFrame=function(frameID)
98764
98916
  {
98765
98917
  if (!IFrameSplitOperator.IsNonEmptyArray(this.ChartPaintEx)) return false;
@@ -98791,7 +98943,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98791
98943
  var preClose=data.stock[0].yclose; //前一个数据价格
98792
98944
  var stockData=data.stock[0];
98793
98945
  var date=stockData.date; //日期
98794
- var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date };
98946
+ var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
98795
98947
  var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_BEFOREOPEN_EXTENDDATA; //扩展数据序号
98796
98948
  if (stockData.beforeinfo)
98797
98949
  {
@@ -98827,7 +98979,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98827
98979
  else if (beforeOpenData.Ver==2.0)
98828
98980
  {
98829
98981
  var max=0;
98830
- for(var i in stockData.before)
98982
+ for(var i=0;i<stockData.before.length;++i)
98831
98983
  {
98832
98984
  var item=new BeforeOpenData();
98833
98985
  var jsData=stockData.before[i];
@@ -98839,7 +98991,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98839
98991
  item.Vol[1]=jsData[3]; //未匹配量
98840
98992
  item.ColorID=jsData[4]; //柱子颜色ID
98841
98993
  if (IFrameSplitOperator.IsNumber(jsData[6])) item.Date=jsData[6] //日期
98842
- item.DateTime=`${item.Date} ${item.Time})`;
98843
98994
 
98844
98995
  var totalVol=item.Vol[0]+item.Vol[1];
98845
98996
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -98851,12 +99002,14 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98851
99002
 
98852
99003
  beforeOpenData.VolMax=max/unit;
98853
99004
  beforeOpenData.VolMin=0;
99005
+
99006
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
99007
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
98854
99008
  }
98855
99009
  else if (beforeOpenData.Ver==3.0)
98856
99010
  {
98857
99011
  var max=0;
98858
-
98859
- for(var i in stockData.before)
99012
+ for(var i=0; i<stockData.before.length; ++i)
98860
99013
  {
98861
99014
  var item=new BeforeOpenData();
98862
99015
  var jsData=stockData.before[i];
@@ -98867,7 +99020,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98867
99020
  item.AvPrice=jsData[2]; //均价
98868
99021
  item.Vol[0]=jsData[3]; //匹配量
98869
99022
  item.ColorID=jsData[4]; //柱子颜色ID
98870
- item.DateTime=date.toString()+" "+item.Time.toString();
98871
99023
 
98872
99024
  var totalVol=item.Vol[0];
98873
99025
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -98879,11 +99031,72 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98879
99031
 
98880
99032
  beforeOpenData.VolMax=max/unit;
98881
99033
  beforeOpenData.VolMin=0;
99034
+
99035
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
99036
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
98882
99037
  }
98883
99038
 
98884
99039
  return beforeOpenData;
98885
99040
  }
98886
99041
 
99042
+
99043
+ MinuteChartContainer.CompleteCallAuctionData=function(timeConfig, callAuctionData)
99044
+ {
99045
+ var aryData=MinuteChartContainer.CreateCallAuctionTimeData(timeConfig);
99046
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return false;
99047
+
99048
+ var mapData=new Map(callAuctionData.Data.map((obj) => [obj.Time, obj]));
99049
+ for(var i=0;i<aryData.length;++i)
99050
+ {
99051
+ var time=aryData[i].Time;
99052
+ if (!mapData.has(time)) continue;
99053
+
99054
+ var item=mapData.get(time);
99055
+ aryData[i]=item;
99056
+ }
99057
+
99058
+ callAuctionData.Data=aryData;
99059
+ callAuctionData.TotalCount=aryData.length;
99060
+
99061
+ return true;
99062
+ }
99063
+
99064
+ //创建集合竞价秒级时间 { AryTime:[ { Start:92500, End:92459, Date:20250101 } ] } hhmmss
99065
+ MinuteChartContainer.CreateCallAuctionTimeData=function(config)
99066
+ {
99067
+ if (!config || !IFrameSplitOperator.IsNonEmptyArray(config.AryTime)) return null;
99068
+
99069
+ var step=1; //1s
99070
+ if (IFrameSplitOperator.IsPlusNumber(config.Step)) step=config.Step;
99071
+ var aryData=[];
99072
+ for(var i=0;i<config.AryTime.length;++i)
99073
+ {
99074
+ var item=config.AryTime[i];
99075
+
99076
+ var value=item.Start;
99077
+ var hour=parseInt(value/10000);
99078
+ var minute=parseInt((value%10000)/100);
99079
+ var second=value%100;
99080
+ var startTime=new Date(2021,5,2, hour,minute, second);
99081
+
99082
+ value=item.End;
99083
+ var hour=parseInt(value/10000);
99084
+ var minute=parseInt((value%10000)/100);
99085
+ var second=value%100;
99086
+ var endTime=new Date(2021,5,2, hour,minute, second);
99087
+
99088
+ for(var j=0; j<5000 && startTime<=endTime; ++j)
99089
+ {
99090
+ var time=startTime.getHours()*10000+startTime.getMinutes()*100+startTime.getSeconds();
99091
+ var secItem={ Time:time, Date:item.Date };
99092
+ aryData.push(secItem);
99093
+ startTime.setSeconds(startTime.getSeconds()+step);
99094
+ }
99095
+ }
99096
+
99097
+ return aryData;
99098
+ }
99099
+
98887
99100
  //收盘集合竞价
98888
99101
  MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98889
99102
  {
@@ -98894,7 +99107,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98894
99107
  if (!stockData.afterinfo) return null;
98895
99108
  var symbol=data.stock[0].symbol;
98896
99109
  var upperSymbol=symbol.toUpperCase();
98897
- var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date };
99110
+ var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
98898
99111
  var item=stockData.afterinfo;
98899
99112
  if (IFrameSplitOperator.IsNumber(item.totalcount)) afterCloseData.TotalCount=item.totalcount;
98900
99113
  if (IFrameSplitOperator.IsNumber(item.ver)) afterCloseData.Ver=item.ver;
@@ -98924,7 +99137,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98924
99137
  else if (afterCloseData.Ver==2.0)
98925
99138
  {
98926
99139
  var max=0;
98927
- for(var i in stockData.after)
99140
+ for(var i=0; i<stockData.after.length; ++i)
98928
99141
  {
98929
99142
  var item=new AfterCloseData();
98930
99143
  var jsData=stockData.after[i];
@@ -98947,6 +99160,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98947
99160
 
98948
99161
  afterCloseData.VolMax=max/unit;
98949
99162
  afterCloseData.VolMin=0;
99163
+
99164
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
99165
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
98950
99166
  }
98951
99167
  else if (afterCloseData.Ver==3.0)
98952
99168
  {
@@ -98974,6 +99190,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98974
99190
 
98975
99191
  afterCloseData.VolMax=max/unit;
98976
99192
  afterCloseData.VolMin=0;
99193
+
99194
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
99195
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
98977
99196
  }
98978
99197
 
98979
99198
  return afterCloseData;
@@ -99095,12 +99314,13 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
99095
99314
 
99096
99315
  item.DateTime=`${item.Date} ${item.Time}`;
99097
99316
 
99098
- if (IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
99099
- item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
99100
-
99101
- if (isFutures && minuteData.YClearing && item.Close)
99102
- item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
99103
-
99317
+ if (!IFrameSplitOperator.IsNumber(item.Increase) && IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
99318
+ {
99319
+ if (isFutures && minuteData.YClearing && item.Close)
99320
+ item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
99321
+ else
99322
+ item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
99323
+ }
99104
99324
 
99105
99325
  minuteData.Data.push(item);
99106
99326
  }
@@ -99264,8 +99484,9 @@ MinuteChartContainer.JsonDataToHistoryMinuteLineColorData=function(data)
99264
99484
  }
99265
99485
 
99266
99486
 
99267
- MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol)
99487
+ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol, dataInfo)
99268
99488
  {
99489
+ if (!IFrameSplitOperator.IsNonEmptyArray(data)) return;
99269
99490
  var upperSymbol=symbol?symbol.toUpperCase():null;
99270
99491
  var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);
99271
99492
 
@@ -99276,7 +99497,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99276
99497
  if (callAuctionData.Ver==1.0)
99277
99498
  {
99278
99499
  var preClose=null;
99279
- for(var i in data)
99500
+ for(var i=0; i<data.length; ++i)
99280
99501
  {
99281
99502
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
99282
99503
  var jsData=data[i];
@@ -99300,7 +99521,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99300
99521
  else if (callAuctionData.Ver==2.0)
99301
99522
  {
99302
99523
  var max=0;
99303
- for(var i in data)
99524
+ for(var i=0; i<data.length; ++i)
99304
99525
  {
99305
99526
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
99306
99527
  var jsData=data[i];
@@ -99312,7 +99533,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99312
99533
  item.Vol[0]=jsData[2]; //匹配量
99313
99534
  item.Vol[1]=jsData[3]; //未匹配量
99314
99535
  item.ColorID=jsData[4]; //柱子颜色ID
99315
- item.DateTime=date.toString()+" "+item.Time.toString();
99316
99536
 
99317
99537
  var totalVol=item.Vol[0]+item.Vol[1];
99318
99538
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -99324,6 +99544,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99324
99544
 
99325
99545
  callAuctionData.VolMax=max/unit;
99326
99546
  callAuctionData.VolMin=0;
99547
+
99548
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
99549
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
99327
99550
  }
99328
99551
  else if (beforeOpenData.Ver==3.0)
99329
99552
  {
@@ -99340,7 +99563,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99340
99563
  item.AvPrice=jsData[2]; //均价
99341
99564
  item.Vol[0]=jsData[3]; //匹配量
99342
99565
  item.ColorID=jsData[4]; //柱子颜色ID
99343
- item.DateTime=date.toString()+" "+item.Time.toString();
99344
99566
 
99345
99567
  var totalVol=item.Vol[0];
99346
99568
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -99352,6 +99574,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99352
99574
 
99353
99575
  callAuctionData.VolMax=max/unit;
99354
99576
  callAuctionData.VolMin=0;
99577
+
99578
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
99579
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
99355
99580
  }
99356
99581
  }
99357
99582
 
@@ -99360,7 +99585,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
99360
99585
  if (!data || !data.data) return null;
99361
99586
 
99362
99587
  var aryDay=[];
99363
- for(var i in data.data)
99588
+ for(var i=0; i<data.data.length; ++i)
99364
99589
  {
99365
99590
  var dayItem=data.data[i];
99366
99591
  var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -99370,7 +99595,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
99370
99595
  if (IFrameSplitOperator.IsNumber(dayItem.beforeinfo.ver)) beforeOpenData.Ver=dayItem.beforeinfo.ver;
99371
99596
  }
99372
99597
 
99373
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol);
99598
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol, dayItem.beforeinfo);
99374
99599
 
99375
99600
  aryDay.push(beforeOpenData);
99376
99601
  }
@@ -99385,7 +99610,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
99385
99610
  if (!data || !data.data) return null;
99386
99611
 
99387
99612
  var aryDay=[];
99388
- for(var i in data.data)
99613
+ for(var i=0; i<data.data.length; ++i)
99389
99614
  {
99390
99615
  var dayItem=data.data[i];
99391
99616
  var afterCloseData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -99396,7 +99621,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
99396
99621
  if (IFrameSplitOperator.IsNumber(dayItem.afterinfo.ver)) afterCloseData.Ver=dayItem.afterinfo.ver;
99397
99622
  }
99398
99623
 
99399
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol);
99624
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol, dayItem.afterinfo);
99400
99625
 
99401
99626
  aryDay.push(afterCloseData);
99402
99627
  }
@@ -151239,7 +151464,7 @@ function ScrollBarBGChart()
151239
151464
 
151240
151465
 
151241
151466
 
151242
- var HQCHART_VERSION="1.1.14946";
151467
+ var HQCHART_VERSION="1.1.14955";
151243
151468
 
151244
151469
  function PrintHQChartVersion()
151245
151470
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14946";
8
+ var HQCHART_VERSION="1.1.14955";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {