hqchart 1.1.14943 → 1.1.14953

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.
@@ -15912,9 +15912,24 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15912
15912
  {
15913
15913
  if (!data.IsShowCorss) //十字光标隐藏
15914
15914
  {
15915
+ //清空当前鼠标坐标
15916
+ this.LastPoint.X=null;
15917
+ this.LastPoint.Y=null;
15915
15918
  this.HideTooltip();
15916
15919
  this.CloseTooltipDialog();
15917
15920
  }
15921
+ else
15922
+ {
15923
+ if (IFrameSplitOperator.IsNumber(data.X) && IFrameSplitOperator.IsNumber(data.Y))
15924
+ {
15925
+ //设置鼠标位置
15926
+ if (this.LastPoint && (!IFrameSplitOperator.IsNumber(this.LastPoint.X) || !IFrameSplitOperator.IsNumber(this.LastPoint.Y)))
15927
+ {
15928
+ this.LastPoint.X=data.X;
15929
+ this.LastPoint.Y=data.Y;
15930
+ }
15931
+ }
15932
+ }
15918
15933
  }
15919
15934
  }
15920
15935
 
@@ -39449,10 +39464,10 @@ function ChartMinuteVolumBar()
39449
39464
  var unit=this.GetVolUnit();
39450
39465
  if (callAutionData.Ver==1.0)
39451
39466
  {
39452
- for(var i in callAutionData.Data)
39467
+ for(var i=0;i<callAutionData.Data.length;++i)
39453
39468
  {
39454
39469
  var item=callAutionData.Data[i];
39455
- if (!item || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
39470
+ if (!item || !IFrameSplitOperator.IsNonEmptyArray(item.Vol) || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
39456
39471
 
39457
39472
  if (isBeforeOpen)
39458
39473
  {
@@ -39486,11 +39501,11 @@ function ChartMinuteVolumBar()
39486
39501
  {
39487
39502
  var range={ Max: callAutionData.VolMax, Min:callAutionData.VolMin }
39488
39503
 
39489
- for(var i in callAutionData.Data)
39504
+ for(var i=0; i<callAutionData.Data.length; ++i)
39490
39505
  {
39491
39506
  var item=callAutionData.Data[i];
39492
39507
  if (!item) continue;
39493
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
39508
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
39494
39509
  {
39495
39510
  if (isBeforeOpen)
39496
39511
  {
@@ -39520,7 +39535,7 @@ function ChartMinuteVolumBar()
39520
39535
  this.Canvas.stroke();
39521
39536
  }
39522
39537
 
39523
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
39538
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
39524
39539
  {
39525
39540
  if (isBeforeOpen)
39526
39541
  {
@@ -44500,16 +44515,23 @@ function ChartMinutePriceLine()
44500
44515
  var item=callAutionData.Data[i];
44501
44516
  if (!item || !IFrameSplitOperator.IsNumber(item.Price))
44502
44517
  {
44503
- if (i==0 && isBeforeOpen && IFrameSplitOperator.IsNumber(this.YClose))
44518
+ if (i==0 && isBeforeOpen)
44504
44519
  {
44505
- var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
44506
- var y=this.ChartFrame.GetLeftExtendYFromData(this.YClose);
44520
+ //盘前集合竞价起始点为昨收或昨结算
44521
+ var price=callAutionData.YClose;
44522
+ if (IFrameSplitOperator.IsNumber(callAutionData.YClearing)) price=callAutionData.YClearing;
44507
44523
 
44508
- this.Canvas.strokeStyle=this.BeforeLineColor;
44509
- this.Canvas.beginPath();
44510
- if (isHScreen) this.Canvas.moveTo(y,x);
44511
- else this.Canvas.moveTo(x,y);
44512
- bFirstPoint=false;
44524
+ if (IFrameSplitOperator.IsNumber(price))
44525
+ {
44526
+ var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
44527
+ var y=this.ChartFrame.GetLeftExtendYFromData(price);
44528
+
44529
+ this.Canvas.strokeStyle=this.BeforeLineColor;
44530
+ this.Canvas.beginPath();
44531
+ if (isHScreen) this.Canvas.moveTo(y,x);
44532
+ else this.Canvas.moveTo(x,y);
44533
+ bFirstPoint=false;
44534
+ }
44513
44535
  }
44514
44536
 
44515
44537
  continue;
@@ -61653,6 +61675,7 @@ function ChartCorssCursor()
61653
61675
  this.LastValue=null;
61654
61676
 
61655
61677
  if (!this.LastPoint) return;
61678
+ if (!this.IsShow) return;
61656
61679
 
61657
61680
  this.Close=null;
61658
61681
  var x=this.LastPoint.X;
@@ -62775,8 +62798,7 @@ function ChartCorssCursor()
62775
62798
  {
62776
62799
  this.IsShowCorss=!this.IsShowCorss
62777
62800
  data.Draw=true;
62778
-
62779
- if (this.OnChangeStatusCallback) this.OnChangeStatusCallback({ Type:1, IsShowCorss:this.IsShowCorss }, this);
62801
+ if (this.OnChangeStatusCallback) this.OnChangeStatusCallback({ Type:1, IsShowCorss:this.IsShowCorss, X:x, Y:y }, this);
62780
62802
  }
62781
62803
  }
62782
62804
 
@@ -64568,6 +64590,14 @@ function DynamicKLineTitlePainting()
64568
64590
  this.OnMouseMoveEvent;
64569
64591
  this.HQChart;
64570
64592
 
64593
+ //十字线是否显示
64594
+ this.IsShowCorssLine=function()
64595
+ {
64596
+ if (!this.HQChart || !this.HQChart.ChartCorssCursor) return false;
64597
+
64598
+ return this.HQChart.ChartCorssCursor.IsShowCorss;
64599
+ }
64600
+
64571
64601
  this.ReloadResource=function()
64572
64602
  {
64573
64603
  this.Font=g_JSChartResource.TitleFont;
@@ -65059,6 +65089,8 @@ function DynamicKLineTitlePainting()
65059
65089
  isShow=true;
65060
65090
  else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
65061
65091
  isShow=true;
65092
+ else if (!this.IsShowCorssLine())
65093
+ isShow=true;
65062
65094
  }
65063
65095
 
65064
65096
  return isShow;
@@ -65658,6 +65690,8 @@ function DynamicMinuteTitlePainting()
65658
65690
  isShowLastData=true;
65659
65691
  else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
65660
65692
  isShowLastData=true;
65693
+ else if (!this.IsShowCorssLine())
65694
+ isShowLastData=true;
65661
65695
  }
65662
65696
  else if (this.GlobalOption && this.GlobalOption.IsDisplayLatest)
65663
65697
  {
@@ -65870,6 +65904,14 @@ function DynamicChartTitlePainting()
65870
65904
  this.IsShowMainIndexTitle=true; //是否显示主图指标标题
65871
65905
  this.MainTitlePaint=null; //主标题
65872
65906
 
65907
+ //十字线是否显示
65908
+ this.IsShowCorssLine=function()
65909
+ {
65910
+ if (!this.HQChart || !this.HQChart.ChartCorssCursor) return false;
65911
+
65912
+ return this.HQChart.ChartCorssCursor.IsShowCorss;
65913
+ }
65914
+
65873
65915
  this.ReloadResource=function()
65874
65916
  {
65875
65917
  this.Font=g_JSChartResource.TitleFont;
@@ -66461,6 +66503,8 @@ function DynamicChartTitlePainting()
66461
66503
  isShowLastData=true;
66462
66504
  else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
66463
66505
  isShowLastData=true;
66506
+ else if (!this.IsShowCorssLine())
66507
+ isShowLastData=true;
66464
66508
  }
66465
66509
  else if (this.GlobalOption && this.GlobalOption.IsDisplayLatest)
66466
66510
  {
@@ -96656,6 +96700,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96656
96700
  //更新最新的几条数据
96657
96701
  this.UpdateLatestMinuteDataV2=function(minuteData)
96658
96702
  {
96703
+ if (!minuteData || !IFrameSplitOperator.IsNonEmptyArray(minuteData.Data)) return;
96704
+
96659
96705
  if (this.DayCount>1)
96660
96706
  {
96661
96707
  if (!this.DayData) return;
@@ -96664,7 +96710,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96664
96710
  for(var i=0; i<this.DayData.length; ++i)
96665
96711
  {
96666
96712
  var item=this.DayData[i];
96667
- if (item.Date===date)
96713
+ if (item.Date===minuteData.Date)
96668
96714
  {
96669
96715
  findItem=item;
96670
96716
  break;
@@ -96850,24 +96896,50 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96850
96896
  this.ColorLineData=aryColorLineData;
96851
96897
  }
96852
96898
 
96853
- this.UpdateCallCationData=function(beforeOpenData,afterCloseData)
96899
+ this.UpdateCallCationData=function(beforeOpenData,afterCloseData,option)
96854
96900
  {
96855
- if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
96901
+ var dataType=0;
96902
+ if (option && IFrameSplitOperator.IsNumber(option.DataType)) dataType=option.DataType;
96903
+
96904
+ if (dataType==1)
96856
96905
  {
96857
- var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
96858
- if (lastItem.Date==beforeOpenData.Date) //存在更新
96859
- this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
96860
- else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
96861
- this.MultiDayBeforeOpenData.push(beforeOpenData);
96862
- }
96906
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
96907
+ {
96908
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
96909
+ if (lastItem.Date==beforeOpenData.Date) //增量更新
96910
+ {
96911
+ this.UpdateLatestCallCationData(lastItem, beforeOpenData);
96912
+ }
96913
+ }
96863
96914
 
96864
- if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
96915
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
96916
+ {
96917
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
96918
+ if (lastItem.Date==afterCloseData.Date) //增量更新
96919
+ {
96920
+ this.UpdateLatestCallCationData(lastItem, afterCloseData);
96921
+ }
96922
+ }
96923
+ }
96924
+ else
96865
96925
  {
96866
- var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
96867
- if (lastItem.Date==afterCloseData.Date)
96868
- this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
96869
- else if (lastItem.Date<afterCloseData.Date)
96870
- this.MultiDayAfterCloseData.push(afterCloseData);
96926
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
96927
+ {
96928
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
96929
+ if (lastItem.Date==beforeOpenData.Date) //存在更新
96930
+ this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
96931
+ else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
96932
+ this.MultiDayBeforeOpenData.push(beforeOpenData);
96933
+ }
96934
+
96935
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
96936
+ {
96937
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
96938
+ if (lastItem.Date==afterCloseData.Date)
96939
+ this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
96940
+ else if (lastItem.Date<afterCloseData.Date)
96941
+ this.MultiDayAfterCloseData.push(afterCloseData);
96942
+ }
96871
96943
  }
96872
96944
 
96873
96945
  this.CaclutateCallCationYRange();
@@ -96883,9 +96955,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96883
96955
  var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);
96884
96956
  var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data); //数据最后的更新时间
96885
96957
 
96958
+ if (data.LatestPointFlash) //最新数据闪烁
96959
+ {
96960
+ var item=data.LatestPointFlash;
96961
+ if (IFrameSplitOperator.IsNumber(item.FlashCount))
96962
+ this.SetLatestPointFlash(item.FlashCount)
96963
+ }
96964
+
96886
96965
  if (this.DayCount>1) //多日走势图
96887
96966
  {
96888
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
96967
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:1});
96889
96968
  this.UpdateLineColorData(aryColorData,minuteData.date);
96890
96969
  this.UpdateLatestMinuteDataV2(minuteData);
96891
96970
  this.UpdateHistoryMinuteUI(updateTime);
@@ -96897,10 +96976,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96897
96976
  return;
96898
96977
  }
96899
96978
 
96900
- if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
96901
- if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
96979
+ //if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
96980
+ //if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
96981
+
96982
+ //盘前盘后数据更新
96983
+ if (this.IsBeforeData && beforeOpenData) this.UpdateLatestCallCationData(this.BeforeOpenData, beforeOpenData);
96984
+ if (this.IsAfterData && afterCloseData) this.UpdateLatestCallCationData(this.AfterCloseData, afterCloseData);
96902
96985
 
96903
- //原始数据
96904
96986
  this.UpdateLatestMinuteDataV2(minuteData);
96905
96987
  this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvUpdateMinuteData"});
96906
96988
 
@@ -96915,6 +96997,45 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96915
96997
  }
96916
96998
  }
96917
96999
 
97000
+ this.UpdateLatestCallCationData=function(destData, updateData)
97001
+ {
97002
+ if (!destData) return;
97003
+ if (!updateData || !IFrameSplitOperator.IsNonEmptyArray(updateData.Data)) return;
97004
+
97005
+ if (destData.Data.length==0)
97006
+ {
97007
+ destData.Data=updateData.Data;
97008
+ destData.VolMax=updateData.VolMax;
97009
+ destData.VolMin=updateData.VolMin;
97010
+ return;
97011
+ }
97012
+
97013
+ //覆盖历史数据
97014
+ var mapData=new Map(updateData.Data.map((obj) => [obj.Time, obj]));
97015
+ var lastTime=null; //最后的时间
97016
+ for(var i=0;i<destData.Data.length;++i)
97017
+ {
97018
+ var item=destData.Data[i];
97019
+ lastTime=item.Time;
97020
+ if (!mapData.has(item.Time)) continue;
97021
+ var newItem=mapData.get(item.Time);
97022
+ if (!newItem || !IFrameSplitOperator.IsNumber(newItem.Price)) continue; //只覆盖有效数据
97023
+
97024
+ destData.Data[i]=newItem;
97025
+ }
97026
+
97027
+ //新数据往后插
97028
+ for(var i=0;i<updateData.Data.length;++i)
97029
+ {
97030
+ var item=updateData.Data[i];
97031
+ if (item.Time<=lastTime) continue;
97032
+ destData.Data.push(item);
97033
+ }
97034
+
97035
+ if (destData.VolMax<updateData.VolMax) destData.VolMax=updateData.VolMax;
97036
+ if (IFrameSplitOperator.IsNumber(updateData.TotalCount) && updateData.TotalCount>destData.TotalCount) updateData.TotalCount=destData.TotalCount;
97037
+ }
97038
+
96918
97039
  this.RecvBuySellData=function(data)
96919
97040
  {
96920
97041
  if (!data) return;
@@ -96981,7 +97102,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96981
97102
 
96982
97103
  if (this.DayCount>1) //多日走势图
96983
97104
  {
96984
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
97105
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:0});
96985
97106
  this.UpdateLineColorData(aryColorData,data.stock[0].date);
96986
97107
  this.UpdateLatestMinuteData(aryMinuteData, data.stock[0].date, data.stock[0]);
96987
97108
  this.UpdateTradeStatusData(data.TradeStatus);
@@ -98798,7 +98919,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98798
98919
  var preClose=data.stock[0].yclose; //前一个数据价格
98799
98920
  var stockData=data.stock[0];
98800
98921
  var date=stockData.date; //日期
98801
- var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date };
98922
+ var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
98802
98923
  var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_BEFOREOPEN_EXTENDDATA; //扩展数据序号
98803
98924
  if (stockData.beforeinfo)
98804
98925
  {
@@ -98834,7 +98955,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98834
98955
  else if (beforeOpenData.Ver==2.0)
98835
98956
  {
98836
98957
  var max=0;
98837
- for(var i in stockData.before)
98958
+ for(var i=0;i<stockData.before.length;++i)
98838
98959
  {
98839
98960
  var item=new BeforeOpenData();
98840
98961
  var jsData=stockData.before[i];
@@ -98846,7 +98967,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98846
98967
  item.Vol[1]=jsData[3]; //未匹配量
98847
98968
  item.ColorID=jsData[4]; //柱子颜色ID
98848
98969
  if (IFrameSplitOperator.IsNumber(jsData[6])) item.Date=jsData[6] //日期
98849
- item.DateTime=`${item.Date} ${item.Time})`;
98850
98970
 
98851
98971
  var totalVol=item.Vol[0]+item.Vol[1];
98852
98972
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -98858,12 +98978,14 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98858
98978
 
98859
98979
  beforeOpenData.VolMax=max/unit;
98860
98980
  beforeOpenData.VolMin=0;
98981
+
98982
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
98983
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
98861
98984
  }
98862
98985
  else if (beforeOpenData.Ver==3.0)
98863
98986
  {
98864
98987
  var max=0;
98865
-
98866
- for(var i in stockData.before)
98988
+ for(var i=0; i<stockData.before.length; ++i)
98867
98989
  {
98868
98990
  var item=new BeforeOpenData();
98869
98991
  var jsData=stockData.before[i];
@@ -98874,7 +98996,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98874
98996
  item.AvPrice=jsData[2]; //均价
98875
98997
  item.Vol[0]=jsData[3]; //匹配量
98876
98998
  item.ColorID=jsData[4]; //柱子颜色ID
98877
- item.DateTime=date.toString()+" "+item.Time.toString();
98878
98999
 
98879
99000
  var totalVol=item.Vol[0];
98880
99001
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -98886,11 +99007,72 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98886
99007
 
98887
99008
  beforeOpenData.VolMax=max/unit;
98888
99009
  beforeOpenData.VolMin=0;
99010
+
99011
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
99012
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
98889
99013
  }
98890
99014
 
98891
99015
  return beforeOpenData;
98892
99016
  }
98893
99017
 
99018
+
99019
+ MinuteChartContainer.CompleteCallAuctionData=function(timeConfig, callAuctionData)
99020
+ {
99021
+ var aryData=MinuteChartContainer.CreateCallAuctionTimeData(timeConfig);
99022
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return false;
99023
+
99024
+ var mapData=new Map(callAuctionData.Data.map((obj) => [obj.Time, obj]));
99025
+ for(var i=0;i<aryData.length;++i)
99026
+ {
99027
+ var time=aryData[i].Time;
99028
+ if (!mapData.has(time)) continue;
99029
+
99030
+ var item=mapData.get(time);
99031
+ aryData[i]=item;
99032
+ }
99033
+
99034
+ callAuctionData.Data=aryData;
99035
+ callAuctionData.TotalCount=aryData.length;
99036
+
99037
+ return true;
99038
+ }
99039
+
99040
+ //创建集合竞价秒级时间 { AryTime:[ { Start:92500, End:92459, Date:20250101 } ] } hhmmss
99041
+ MinuteChartContainer.CreateCallAuctionTimeData=function(config)
99042
+ {
99043
+ if (!config || !IFrameSplitOperator.IsNonEmptyArray(config.AryTime)) return null;
99044
+
99045
+ var step=1; //1s
99046
+ if (IFrameSplitOperator.IsPlusNumber(config.Step)) step=config.Step;
99047
+ var aryData=[];
99048
+ for(var i=0;i<config.AryTime.length;++i)
99049
+ {
99050
+ var item=config.AryTime[i];
99051
+
99052
+ var value=item.Start;
99053
+ var hour=parseInt(value/10000);
99054
+ var minute=parseInt((value%10000)/100);
99055
+ var second=value%100;
99056
+ var startTime=new Date(2021,5,2, hour,minute, second);
99057
+
99058
+ value=item.End;
99059
+ var hour=parseInt(value/10000);
99060
+ var minute=parseInt((value%10000)/100);
99061
+ var second=value%100;
99062
+ var endTime=new Date(2021,5,2, hour,minute, second);
99063
+
99064
+ for(var j=0; j<5000 && startTime<=endTime; ++j)
99065
+ {
99066
+ var time=startTime.getHours()*10000+startTime.getMinutes()*100+startTime.getSeconds();
99067
+ var secItem={ Time:time, Date:item.Date };
99068
+ aryData.push(secItem);
99069
+ startTime.setSeconds(startTime.getSeconds()+step);
99070
+ }
99071
+ }
99072
+
99073
+ return aryData;
99074
+ }
99075
+
98894
99076
  //收盘集合竞价
98895
99077
  MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98896
99078
  {
@@ -98901,7 +99083,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98901
99083
  if (!stockData.afterinfo) return null;
98902
99084
  var symbol=data.stock[0].symbol;
98903
99085
  var upperSymbol=symbol.toUpperCase();
98904
- var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date };
99086
+ var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
98905
99087
  var item=stockData.afterinfo;
98906
99088
  if (IFrameSplitOperator.IsNumber(item.totalcount)) afterCloseData.TotalCount=item.totalcount;
98907
99089
  if (IFrameSplitOperator.IsNumber(item.ver)) afterCloseData.Ver=item.ver;
@@ -98931,7 +99113,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98931
99113
  else if (afterCloseData.Ver==2.0)
98932
99114
  {
98933
99115
  var max=0;
98934
- for(var i in stockData.after)
99116
+ for(var i=0; i<stockData.after.length; ++i)
98935
99117
  {
98936
99118
  var item=new AfterCloseData();
98937
99119
  var jsData=stockData.after[i];
@@ -98954,6 +99136,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98954
99136
 
98955
99137
  afterCloseData.VolMax=max/unit;
98956
99138
  afterCloseData.VolMin=0;
99139
+
99140
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
99141
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
98957
99142
  }
98958
99143
  else if (afterCloseData.Ver==3.0)
98959
99144
  {
@@ -98981,6 +99166,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98981
99166
 
98982
99167
  afterCloseData.VolMax=max/unit;
98983
99168
  afterCloseData.VolMin=0;
99169
+
99170
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
99171
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
98984
99172
  }
98985
99173
 
98986
99174
  return afterCloseData;
@@ -99102,12 +99290,13 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
99102
99290
 
99103
99291
  item.DateTime=`${item.Date} ${item.Time}`;
99104
99292
 
99105
- if (IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
99106
- item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
99107
-
99108
- if (isFutures && minuteData.YClearing && item.Close)
99109
- item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
99110
-
99293
+ if (!IFrameSplitOperator.IsNumber(item.Increase) && IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
99294
+ {
99295
+ if (isFutures && minuteData.YClearing && item.Close)
99296
+ item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
99297
+ else
99298
+ item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
99299
+ }
99111
99300
 
99112
99301
  minuteData.Data.push(item);
99113
99302
  }
@@ -99271,8 +99460,9 @@ MinuteChartContainer.JsonDataToHistoryMinuteLineColorData=function(data)
99271
99460
  }
99272
99461
 
99273
99462
 
99274
- MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol)
99463
+ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol, dataInfo)
99275
99464
  {
99465
+ if (!IFrameSplitOperator.IsNonEmptyArray(data)) return;
99276
99466
  var upperSymbol=symbol?symbol.toUpperCase():null;
99277
99467
  var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);
99278
99468
 
@@ -99283,7 +99473,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99283
99473
  if (callAuctionData.Ver==1.0)
99284
99474
  {
99285
99475
  var preClose=null;
99286
- for(var i in data)
99476
+ for(var i=0; i<data.length; ++i)
99287
99477
  {
99288
99478
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
99289
99479
  var jsData=data[i];
@@ -99307,7 +99497,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99307
99497
  else if (callAuctionData.Ver==2.0)
99308
99498
  {
99309
99499
  var max=0;
99310
- for(var i in data)
99500
+ for(var i=0; i<data.length; ++i)
99311
99501
  {
99312
99502
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
99313
99503
  var jsData=data[i];
@@ -99319,7 +99509,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99319
99509
  item.Vol[0]=jsData[2]; //匹配量
99320
99510
  item.Vol[1]=jsData[3]; //未匹配量
99321
99511
  item.ColorID=jsData[4]; //柱子颜色ID
99322
- item.DateTime=date.toString()+" "+item.Time.toString();
99323
99512
 
99324
99513
  var totalVol=item.Vol[0]+item.Vol[1];
99325
99514
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -99331,6 +99520,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99331
99520
 
99332
99521
  callAuctionData.VolMax=max/unit;
99333
99522
  callAuctionData.VolMin=0;
99523
+
99524
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
99525
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
99334
99526
  }
99335
99527
  else if (beforeOpenData.Ver==3.0)
99336
99528
  {
@@ -99347,7 +99539,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99347
99539
  item.AvPrice=jsData[2]; //均价
99348
99540
  item.Vol[0]=jsData[3]; //匹配量
99349
99541
  item.ColorID=jsData[4]; //柱子颜色ID
99350
- item.DateTime=date.toString()+" "+item.Time.toString();
99351
99542
 
99352
99543
  var totalVol=item.Vol[0];
99353
99544
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -99359,6 +99550,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99359
99550
 
99360
99551
  callAuctionData.VolMax=max/unit;
99361
99552
  callAuctionData.VolMin=0;
99553
+
99554
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
99555
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
99362
99556
  }
99363
99557
  }
99364
99558
 
@@ -99367,7 +99561,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
99367
99561
  if (!data || !data.data) return null;
99368
99562
 
99369
99563
  var aryDay=[];
99370
- for(var i in data.data)
99564
+ for(var i=0; i<data.data.length; ++i)
99371
99565
  {
99372
99566
  var dayItem=data.data[i];
99373
99567
  var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -99377,7 +99571,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
99377
99571
  if (IFrameSplitOperator.IsNumber(dayItem.beforeinfo.ver)) beforeOpenData.Ver=dayItem.beforeinfo.ver;
99378
99572
  }
99379
99573
 
99380
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol);
99574
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol, dayItem.beforeinfo);
99381
99575
 
99382
99576
  aryDay.push(beforeOpenData);
99383
99577
  }
@@ -99392,7 +99586,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
99392
99586
  if (!data || !data.data) return null;
99393
99587
 
99394
99588
  var aryDay=[];
99395
- for(var i in data.data)
99589
+ for(var i=0; i<data.data.length; ++i)
99396
99590
  {
99397
99591
  var dayItem=data.data[i];
99398
99592
  var afterCloseData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -99403,7 +99597,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
99403
99597
  if (IFrameSplitOperator.IsNumber(dayItem.afterinfo.ver)) afterCloseData.Ver=dayItem.afterinfo.ver;
99404
99598
  }
99405
99599
 
99406
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol);
99600
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol, dayItem.afterinfo);
99407
99601
 
99408
99602
  aryDay.push(afterCloseData);
99409
99603
  }
@@ -162577,7 +162771,7 @@ function HQChartScriptWorker()
162577
162771
 
162578
162772
 
162579
162773
 
162580
- var HQCHART_VERSION="1.1.14942";
162774
+ var HQCHART_VERSION="1.1.14952";
162581
162775
 
162582
162776
  function PrintHQChartVersion()
162583
162777
  {