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.
@@ -15868,9 +15868,24 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15868
15868
  {
15869
15869
  if (!data.IsShowCorss) //十字光标隐藏
15870
15870
  {
15871
+ //清空当前鼠标坐标
15872
+ this.LastPoint.X=null;
15873
+ this.LastPoint.Y=null;
15871
15874
  this.HideTooltip();
15872
15875
  this.CloseTooltipDialog();
15873
15876
  }
15877
+ else
15878
+ {
15879
+ if (IFrameSplitOperator.IsNumber(data.X) && IFrameSplitOperator.IsNumber(data.Y))
15880
+ {
15881
+ //设置鼠标位置
15882
+ if (this.LastPoint && (!IFrameSplitOperator.IsNumber(this.LastPoint.X) || !IFrameSplitOperator.IsNumber(this.LastPoint.Y)))
15883
+ {
15884
+ this.LastPoint.X=data.X;
15885
+ this.LastPoint.Y=data.Y;
15886
+ }
15887
+ }
15888
+ }
15874
15889
  }
15875
15890
  }
15876
15891
 
@@ -39405,10 +39420,10 @@ function ChartMinuteVolumBar()
39405
39420
  var unit=this.GetVolUnit();
39406
39421
  if (callAutionData.Ver==1.0)
39407
39422
  {
39408
- for(var i in callAutionData.Data)
39423
+ for(var i=0;i<callAutionData.Data.length;++i)
39409
39424
  {
39410
39425
  var item=callAutionData.Data[i];
39411
- if (!item || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
39426
+ if (!item || !IFrameSplitOperator.IsNonEmptyArray(item.Vol) || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
39412
39427
 
39413
39428
  if (isBeforeOpen)
39414
39429
  {
@@ -39442,11 +39457,11 @@ function ChartMinuteVolumBar()
39442
39457
  {
39443
39458
  var range={ Max: callAutionData.VolMax, Min:callAutionData.VolMin }
39444
39459
 
39445
- for(var i in callAutionData.Data)
39460
+ for(var i=0; i<callAutionData.Data.length; ++i)
39446
39461
  {
39447
39462
  var item=callAutionData.Data[i];
39448
39463
  if (!item) continue;
39449
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
39464
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
39450
39465
  {
39451
39466
  if (isBeforeOpen)
39452
39467
  {
@@ -39476,7 +39491,7 @@ function ChartMinuteVolumBar()
39476
39491
  this.Canvas.stroke();
39477
39492
  }
39478
39493
 
39479
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
39494
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
39480
39495
  {
39481
39496
  if (isBeforeOpen)
39482
39497
  {
@@ -44456,16 +44471,23 @@ function ChartMinutePriceLine()
44456
44471
  var item=callAutionData.Data[i];
44457
44472
  if (!item || !IFrameSplitOperator.IsNumber(item.Price))
44458
44473
  {
44459
- if (i==0 && isBeforeOpen && IFrameSplitOperator.IsNumber(this.YClose))
44474
+ if (i==0 && isBeforeOpen)
44460
44475
  {
44461
- var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
44462
- var y=this.ChartFrame.GetLeftExtendYFromData(this.YClose);
44476
+ //盘前集合竞价起始点为昨收或昨结算
44477
+ var price=callAutionData.YClose;
44478
+ if (IFrameSplitOperator.IsNumber(callAutionData.YClearing)) price=callAutionData.YClearing;
44463
44479
 
44464
- this.Canvas.strokeStyle=this.BeforeLineColor;
44465
- this.Canvas.beginPath();
44466
- if (isHScreen) this.Canvas.moveTo(y,x);
44467
- else this.Canvas.moveTo(x,y);
44468
- bFirstPoint=false;
44480
+ if (IFrameSplitOperator.IsNumber(price))
44481
+ {
44482
+ var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
44483
+ var y=this.ChartFrame.GetLeftExtendYFromData(price);
44484
+
44485
+ this.Canvas.strokeStyle=this.BeforeLineColor;
44486
+ this.Canvas.beginPath();
44487
+ if (isHScreen) this.Canvas.moveTo(y,x);
44488
+ else this.Canvas.moveTo(x,y);
44489
+ bFirstPoint=false;
44490
+ }
44469
44491
  }
44470
44492
 
44471
44493
  continue;
@@ -61609,6 +61631,7 @@ function ChartCorssCursor()
61609
61631
  this.LastValue=null;
61610
61632
 
61611
61633
  if (!this.LastPoint) return;
61634
+ if (!this.IsShow) return;
61612
61635
 
61613
61636
  this.Close=null;
61614
61637
  var x=this.LastPoint.X;
@@ -62731,8 +62754,7 @@ function ChartCorssCursor()
62731
62754
  {
62732
62755
  this.IsShowCorss=!this.IsShowCorss
62733
62756
  data.Draw=true;
62734
-
62735
- if (this.OnChangeStatusCallback) this.OnChangeStatusCallback({ Type:1, IsShowCorss:this.IsShowCorss }, this);
62757
+ if (this.OnChangeStatusCallback) this.OnChangeStatusCallback({ Type:1, IsShowCorss:this.IsShowCorss, X:x, Y:y }, this);
62736
62758
  }
62737
62759
  }
62738
62760
 
@@ -64524,6 +64546,14 @@ function DynamicKLineTitlePainting()
64524
64546
  this.OnMouseMoveEvent;
64525
64547
  this.HQChart;
64526
64548
 
64549
+ //十字线是否显示
64550
+ this.IsShowCorssLine=function()
64551
+ {
64552
+ if (!this.HQChart || !this.HQChart.ChartCorssCursor) return false;
64553
+
64554
+ return this.HQChart.ChartCorssCursor.IsShowCorss;
64555
+ }
64556
+
64527
64557
  this.ReloadResource=function()
64528
64558
  {
64529
64559
  this.Font=g_JSChartResource.TitleFont;
@@ -65015,6 +65045,8 @@ function DynamicKLineTitlePainting()
65015
65045
  isShow=true;
65016
65046
  else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
65017
65047
  isShow=true;
65048
+ else if (!this.IsShowCorssLine())
65049
+ isShow=true;
65018
65050
  }
65019
65051
 
65020
65052
  return isShow;
@@ -65614,6 +65646,8 @@ function DynamicMinuteTitlePainting()
65614
65646
  isShowLastData=true;
65615
65647
  else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
65616
65648
  isShowLastData=true;
65649
+ else if (!this.IsShowCorssLine())
65650
+ isShowLastData=true;
65617
65651
  }
65618
65652
  else if (this.GlobalOption && this.GlobalOption.IsDisplayLatest)
65619
65653
  {
@@ -65826,6 +65860,14 @@ function DynamicChartTitlePainting()
65826
65860
  this.IsShowMainIndexTitle=true; //是否显示主图指标标题
65827
65861
  this.MainTitlePaint=null; //主标题
65828
65862
 
65863
+ //十字线是否显示
65864
+ this.IsShowCorssLine=function()
65865
+ {
65866
+ if (!this.HQChart || !this.HQChart.ChartCorssCursor) return false;
65867
+
65868
+ return this.HQChart.ChartCorssCursor.IsShowCorss;
65869
+ }
65870
+
65829
65871
  this.ReloadResource=function()
65830
65872
  {
65831
65873
  this.Font=g_JSChartResource.TitleFont;
@@ -66417,6 +66459,8 @@ function DynamicChartTitlePainting()
66417
66459
  isShowLastData=true;
66418
66460
  else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
66419
66461
  isShowLastData=true;
66462
+ else if (!this.IsShowCorssLine())
66463
+ isShowLastData=true;
66420
66464
  }
66421
66465
  else if (this.GlobalOption && this.GlobalOption.IsDisplayLatest)
66422
66466
  {
@@ -96612,6 +96656,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96612
96656
  //更新最新的几条数据
96613
96657
  this.UpdateLatestMinuteDataV2=function(minuteData)
96614
96658
  {
96659
+ if (!minuteData || !IFrameSplitOperator.IsNonEmptyArray(minuteData.Data)) return;
96660
+
96615
96661
  if (this.DayCount>1)
96616
96662
  {
96617
96663
  if (!this.DayData) return;
@@ -96620,7 +96666,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96620
96666
  for(var i=0; i<this.DayData.length; ++i)
96621
96667
  {
96622
96668
  var item=this.DayData[i];
96623
- if (item.Date===date)
96669
+ if (item.Date===minuteData.Date)
96624
96670
  {
96625
96671
  findItem=item;
96626
96672
  break;
@@ -96806,24 +96852,50 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96806
96852
  this.ColorLineData=aryColorLineData;
96807
96853
  }
96808
96854
 
96809
- this.UpdateCallCationData=function(beforeOpenData,afterCloseData)
96855
+ this.UpdateCallCationData=function(beforeOpenData,afterCloseData,option)
96810
96856
  {
96811
- if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
96857
+ var dataType=0;
96858
+ if (option && IFrameSplitOperator.IsNumber(option.DataType)) dataType=option.DataType;
96859
+
96860
+ if (dataType==1)
96812
96861
  {
96813
- var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
96814
- if (lastItem.Date==beforeOpenData.Date) //存在更新
96815
- this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
96816
- else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
96817
- this.MultiDayBeforeOpenData.push(beforeOpenData);
96818
- }
96862
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
96863
+ {
96864
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
96865
+ if (lastItem.Date==beforeOpenData.Date) //增量更新
96866
+ {
96867
+ this.UpdateLatestCallCationData(lastItem, beforeOpenData);
96868
+ }
96869
+ }
96819
96870
 
96820
- if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
96871
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
96872
+ {
96873
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
96874
+ if (lastItem.Date==afterCloseData.Date) //增量更新
96875
+ {
96876
+ this.UpdateLatestCallCationData(lastItem, afterCloseData);
96877
+ }
96878
+ }
96879
+ }
96880
+ else
96821
96881
  {
96822
- var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
96823
- if (lastItem.Date==afterCloseData.Date)
96824
- this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
96825
- else if (lastItem.Date<afterCloseData.Date)
96826
- this.MultiDayAfterCloseData.push(afterCloseData);
96882
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
96883
+ {
96884
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
96885
+ if (lastItem.Date==beforeOpenData.Date) //存在更新
96886
+ this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
96887
+ else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
96888
+ this.MultiDayBeforeOpenData.push(beforeOpenData);
96889
+ }
96890
+
96891
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
96892
+ {
96893
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
96894
+ if (lastItem.Date==afterCloseData.Date)
96895
+ this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
96896
+ else if (lastItem.Date<afterCloseData.Date)
96897
+ this.MultiDayAfterCloseData.push(afterCloseData);
96898
+ }
96827
96899
  }
96828
96900
 
96829
96901
  this.CaclutateCallCationYRange();
@@ -96839,9 +96911,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96839
96911
  var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);
96840
96912
  var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data); //数据最后的更新时间
96841
96913
 
96914
+ if (data.LatestPointFlash) //最新数据闪烁
96915
+ {
96916
+ var item=data.LatestPointFlash;
96917
+ if (IFrameSplitOperator.IsNumber(item.FlashCount))
96918
+ this.SetLatestPointFlash(item.FlashCount)
96919
+ }
96920
+
96842
96921
  if (this.DayCount>1) //多日走势图
96843
96922
  {
96844
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
96923
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:1});
96845
96924
  this.UpdateLineColorData(aryColorData,minuteData.date);
96846
96925
  this.UpdateLatestMinuteDataV2(minuteData);
96847
96926
  this.UpdateHistoryMinuteUI(updateTime);
@@ -96853,10 +96932,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96853
96932
  return;
96854
96933
  }
96855
96934
 
96856
- if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
96857
- if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
96935
+ //if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
96936
+ //if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
96937
+
96938
+ //盘前盘后数据更新
96939
+ if (this.IsBeforeData && beforeOpenData) this.UpdateLatestCallCationData(this.BeforeOpenData, beforeOpenData);
96940
+ if (this.IsAfterData && afterCloseData) this.UpdateLatestCallCationData(this.AfterCloseData, afterCloseData);
96858
96941
 
96859
- //原始数据
96860
96942
  this.UpdateLatestMinuteDataV2(minuteData);
96861
96943
  this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvUpdateMinuteData"});
96862
96944
 
@@ -96871,6 +96953,45 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96871
96953
  }
96872
96954
  }
96873
96955
 
96956
+ this.UpdateLatestCallCationData=function(destData, updateData)
96957
+ {
96958
+ if (!destData) return;
96959
+ if (!updateData || !IFrameSplitOperator.IsNonEmptyArray(updateData.Data)) return;
96960
+
96961
+ if (destData.Data.length==0)
96962
+ {
96963
+ destData.Data=updateData.Data;
96964
+ destData.VolMax=updateData.VolMax;
96965
+ destData.VolMin=updateData.VolMin;
96966
+ return;
96967
+ }
96968
+
96969
+ //覆盖历史数据
96970
+ var mapData=new Map(updateData.Data.map((obj) => [obj.Time, obj]));
96971
+ var lastTime=null; //最后的时间
96972
+ for(var i=0;i<destData.Data.length;++i)
96973
+ {
96974
+ var item=destData.Data[i];
96975
+ lastTime=item.Time;
96976
+ if (!mapData.has(item.Time)) continue;
96977
+ var newItem=mapData.get(item.Time);
96978
+ if (!newItem || !IFrameSplitOperator.IsNumber(newItem.Price)) continue; //只覆盖有效数据
96979
+
96980
+ destData.Data[i]=newItem;
96981
+ }
96982
+
96983
+ //新数据往后插
96984
+ for(var i=0;i<updateData.Data.length;++i)
96985
+ {
96986
+ var item=updateData.Data[i];
96987
+ if (item.Time<=lastTime) continue;
96988
+ destData.Data.push(item);
96989
+ }
96990
+
96991
+ if (destData.VolMax<updateData.VolMax) destData.VolMax=updateData.VolMax;
96992
+ if (IFrameSplitOperator.IsNumber(updateData.TotalCount) && updateData.TotalCount>destData.TotalCount) updateData.TotalCount=destData.TotalCount;
96993
+ }
96994
+
96874
96995
  this.RecvBuySellData=function(data)
96875
96996
  {
96876
96997
  if (!data) return;
@@ -96937,7 +97058,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96937
97058
 
96938
97059
  if (this.DayCount>1) //多日走势图
96939
97060
  {
96940
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
97061
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:0});
96941
97062
  this.UpdateLineColorData(aryColorData,data.stock[0].date);
96942
97063
  this.UpdateLatestMinuteData(aryMinuteData, data.stock[0].date, data.stock[0]);
96943
97064
  this.UpdateTradeStatusData(data.TradeStatus);
@@ -98754,7 +98875,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98754
98875
  var preClose=data.stock[0].yclose; //前一个数据价格
98755
98876
  var stockData=data.stock[0];
98756
98877
  var date=stockData.date; //日期
98757
- var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date };
98878
+ var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
98758
98879
  var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_BEFOREOPEN_EXTENDDATA; //扩展数据序号
98759
98880
  if (stockData.beforeinfo)
98760
98881
  {
@@ -98790,7 +98911,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98790
98911
  else if (beforeOpenData.Ver==2.0)
98791
98912
  {
98792
98913
  var max=0;
98793
- for(var i in stockData.before)
98914
+ for(var i=0;i<stockData.before.length;++i)
98794
98915
  {
98795
98916
  var item=new BeforeOpenData();
98796
98917
  var jsData=stockData.before[i];
@@ -98802,7 +98923,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98802
98923
  item.Vol[1]=jsData[3]; //未匹配量
98803
98924
  item.ColorID=jsData[4]; //柱子颜色ID
98804
98925
  if (IFrameSplitOperator.IsNumber(jsData[6])) item.Date=jsData[6] //日期
98805
- item.DateTime=`${item.Date} ${item.Time})`;
98806
98926
 
98807
98927
  var totalVol=item.Vol[0]+item.Vol[1];
98808
98928
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -98814,12 +98934,14 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98814
98934
 
98815
98935
  beforeOpenData.VolMax=max/unit;
98816
98936
  beforeOpenData.VolMin=0;
98937
+
98938
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
98939
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
98817
98940
  }
98818
98941
  else if (beforeOpenData.Ver==3.0)
98819
98942
  {
98820
98943
  var max=0;
98821
-
98822
- for(var i in stockData.before)
98944
+ for(var i=0; i<stockData.before.length; ++i)
98823
98945
  {
98824
98946
  var item=new BeforeOpenData();
98825
98947
  var jsData=stockData.before[i];
@@ -98830,7 +98952,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98830
98952
  item.AvPrice=jsData[2]; //均价
98831
98953
  item.Vol[0]=jsData[3]; //匹配量
98832
98954
  item.ColorID=jsData[4]; //柱子颜色ID
98833
- item.DateTime=date.toString()+" "+item.Time.toString();
98834
98955
 
98835
98956
  var totalVol=item.Vol[0];
98836
98957
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -98842,11 +98963,72 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
98842
98963
 
98843
98964
  beforeOpenData.VolMax=max/unit;
98844
98965
  beforeOpenData.VolMin=0;
98966
+
98967
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
98968
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
98845
98969
  }
98846
98970
 
98847
98971
  return beforeOpenData;
98848
98972
  }
98849
98973
 
98974
+
98975
+ MinuteChartContainer.CompleteCallAuctionData=function(timeConfig, callAuctionData)
98976
+ {
98977
+ var aryData=MinuteChartContainer.CreateCallAuctionTimeData(timeConfig);
98978
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return false;
98979
+
98980
+ var mapData=new Map(callAuctionData.Data.map((obj) => [obj.Time, obj]));
98981
+ for(var i=0;i<aryData.length;++i)
98982
+ {
98983
+ var time=aryData[i].Time;
98984
+ if (!mapData.has(time)) continue;
98985
+
98986
+ var item=mapData.get(time);
98987
+ aryData[i]=item;
98988
+ }
98989
+
98990
+ callAuctionData.Data=aryData;
98991
+ callAuctionData.TotalCount=aryData.length;
98992
+
98993
+ return true;
98994
+ }
98995
+
98996
+ //创建集合竞价秒级时间 { AryTime:[ { Start:92500, End:92459, Date:20250101 } ] } hhmmss
98997
+ MinuteChartContainer.CreateCallAuctionTimeData=function(config)
98998
+ {
98999
+ if (!config || !IFrameSplitOperator.IsNonEmptyArray(config.AryTime)) return null;
99000
+
99001
+ var step=1; //1s
99002
+ if (IFrameSplitOperator.IsPlusNumber(config.Step)) step=config.Step;
99003
+ var aryData=[];
99004
+ for(var i=0;i<config.AryTime.length;++i)
99005
+ {
99006
+ var item=config.AryTime[i];
99007
+
99008
+ var value=item.Start;
99009
+ var hour=parseInt(value/10000);
99010
+ var minute=parseInt((value%10000)/100);
99011
+ var second=value%100;
99012
+ var startTime=new Date(2021,5,2, hour,minute, second);
99013
+
99014
+ value=item.End;
99015
+ var hour=parseInt(value/10000);
99016
+ var minute=parseInt((value%10000)/100);
99017
+ var second=value%100;
99018
+ var endTime=new Date(2021,5,2, hour,minute, second);
99019
+
99020
+ for(var j=0; j<5000 && startTime<=endTime; ++j)
99021
+ {
99022
+ var time=startTime.getHours()*10000+startTime.getMinutes()*100+startTime.getSeconds();
99023
+ var secItem={ Time:time, Date:item.Date };
99024
+ aryData.push(secItem);
99025
+ startTime.setSeconds(startTime.getSeconds()+step);
99026
+ }
99027
+ }
99028
+
99029
+ return aryData;
99030
+ }
99031
+
98850
99032
  //收盘集合竞价
98851
99033
  MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98852
99034
  {
@@ -98857,7 +99039,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98857
99039
  if (!stockData.afterinfo) return null;
98858
99040
  var symbol=data.stock[0].symbol;
98859
99041
  var upperSymbol=symbol.toUpperCase();
98860
- var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date };
99042
+ var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
98861
99043
  var item=stockData.afterinfo;
98862
99044
  if (IFrameSplitOperator.IsNumber(item.totalcount)) afterCloseData.TotalCount=item.totalcount;
98863
99045
  if (IFrameSplitOperator.IsNumber(item.ver)) afterCloseData.Ver=item.ver;
@@ -98887,7 +99069,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98887
99069
  else if (afterCloseData.Ver==2.0)
98888
99070
  {
98889
99071
  var max=0;
98890
- for(var i in stockData.after)
99072
+ for(var i=0; i<stockData.after.length; ++i)
98891
99073
  {
98892
99074
  var item=new AfterCloseData();
98893
99075
  var jsData=stockData.after[i];
@@ -98910,6 +99092,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98910
99092
 
98911
99093
  afterCloseData.VolMax=max/unit;
98912
99094
  afterCloseData.VolMin=0;
99095
+
99096
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
99097
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
98913
99098
  }
98914
99099
  else if (afterCloseData.Ver==3.0)
98915
99100
  {
@@ -98937,6 +99122,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
98937
99122
 
98938
99123
  afterCloseData.VolMax=max/unit;
98939
99124
  afterCloseData.VolMin=0;
99125
+
99126
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
99127
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
98940
99128
  }
98941
99129
 
98942
99130
  return afterCloseData;
@@ -99058,12 +99246,13 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
99058
99246
 
99059
99247
  item.DateTime=`${item.Date} ${item.Time}`;
99060
99248
 
99061
- if (IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
99062
- item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
99063
-
99064
- if (isFutures && minuteData.YClearing && item.Close)
99065
- item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
99066
-
99249
+ if (!IFrameSplitOperator.IsNumber(item.Increase) && IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
99250
+ {
99251
+ if (isFutures && minuteData.YClearing && item.Close)
99252
+ item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
99253
+ else
99254
+ item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
99255
+ }
99067
99256
 
99068
99257
  minuteData.Data.push(item);
99069
99258
  }
@@ -99227,8 +99416,9 @@ MinuteChartContainer.JsonDataToHistoryMinuteLineColorData=function(data)
99227
99416
  }
99228
99417
 
99229
99418
 
99230
- MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol)
99419
+ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol, dataInfo)
99231
99420
  {
99421
+ if (!IFrameSplitOperator.IsNonEmptyArray(data)) return;
99232
99422
  var upperSymbol=symbol?symbol.toUpperCase():null;
99233
99423
  var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);
99234
99424
 
@@ -99239,7 +99429,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99239
99429
  if (callAuctionData.Ver==1.0)
99240
99430
  {
99241
99431
  var preClose=null;
99242
- for(var i in data)
99432
+ for(var i=0; i<data.length; ++i)
99243
99433
  {
99244
99434
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
99245
99435
  var jsData=data[i];
@@ -99263,7 +99453,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99263
99453
  else if (callAuctionData.Ver==2.0)
99264
99454
  {
99265
99455
  var max=0;
99266
- for(var i in data)
99456
+ for(var i=0; i<data.length; ++i)
99267
99457
  {
99268
99458
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
99269
99459
  var jsData=data[i];
@@ -99275,7 +99465,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99275
99465
  item.Vol[0]=jsData[2]; //匹配量
99276
99466
  item.Vol[1]=jsData[3]; //未匹配量
99277
99467
  item.ColorID=jsData[4]; //柱子颜色ID
99278
- item.DateTime=date.toString()+" "+item.Time.toString();
99279
99468
 
99280
99469
  var totalVol=item.Vol[0]+item.Vol[1];
99281
99470
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -99287,6 +99476,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99287
99476
 
99288
99477
  callAuctionData.VolMax=max/unit;
99289
99478
  callAuctionData.VolMin=0;
99479
+
99480
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
99481
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
99290
99482
  }
99291
99483
  else if (beforeOpenData.Ver==3.0)
99292
99484
  {
@@ -99303,7 +99495,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99303
99495
  item.AvPrice=jsData[2]; //均价
99304
99496
  item.Vol[0]=jsData[3]; //匹配量
99305
99497
  item.ColorID=jsData[4]; //柱子颜色ID
99306
- item.DateTime=date.toString()+" "+item.Time.toString();
99307
99498
 
99308
99499
  var totalVol=item.Vol[0];
99309
99500
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -99315,6 +99506,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
99315
99506
 
99316
99507
  callAuctionData.VolMax=max/unit;
99317
99508
  callAuctionData.VolMin=0;
99509
+
99510
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
99511
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
99318
99512
  }
99319
99513
  }
99320
99514
 
@@ -99323,7 +99517,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
99323
99517
  if (!data || !data.data) return null;
99324
99518
 
99325
99519
  var aryDay=[];
99326
- for(var i in data.data)
99520
+ for(var i=0; i<data.data.length; ++i)
99327
99521
  {
99328
99522
  var dayItem=data.data[i];
99329
99523
  var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -99333,7 +99527,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
99333
99527
  if (IFrameSplitOperator.IsNumber(dayItem.beforeinfo.ver)) beforeOpenData.Ver=dayItem.beforeinfo.ver;
99334
99528
  }
99335
99529
 
99336
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol);
99530
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol, dayItem.beforeinfo);
99337
99531
 
99338
99532
  aryDay.push(beforeOpenData);
99339
99533
  }
@@ -99348,7 +99542,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
99348
99542
  if (!data || !data.data) return null;
99349
99543
 
99350
99544
  var aryDay=[];
99351
- for(var i in data.data)
99545
+ for(var i=0; i<data.data.length; ++i)
99352
99546
  {
99353
99547
  var dayItem=data.data[i];
99354
99548
  var afterCloseData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -99359,7 +99553,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
99359
99553
  if (IFrameSplitOperator.IsNumber(dayItem.afterinfo.ver)) afterCloseData.Ver=dayItem.afterinfo.ver;
99360
99554
  }
99361
99555
 
99362
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol);
99556
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol, dayItem.afterinfo);
99363
99557
 
99364
99558
  aryDay.push(afterCloseData);
99365
99559
  }
@@ -151202,7 +151396,7 @@ function ScrollBarBGChart()
151202
151396
 
151203
151397
 
151204
151398
 
151205
- var HQCHART_VERSION="1.1.14942";
151399
+ var HQCHART_VERSION="1.1.14952";
151206
151400
 
151207
151401
  function PrintHQChartVersion()
151208
151402
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14942";
8
+ var HQCHART_VERSION="1.1.14952";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {