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.
@@ -11772,9 +11772,24 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11772
11772
  {
11773
11773
  if (!data.IsShowCorss) //十字光标隐藏
11774
11774
  {
11775
+ //清空当前鼠标坐标
11776
+ this.LastPoint.X=null;
11777
+ this.LastPoint.Y=null;
11775
11778
  this.HideTooltip();
11776
11779
  this.CloseTooltipDialog();
11777
11780
  }
11781
+ else
11782
+ {
11783
+ if (IFrameSplitOperator.IsNumber(data.X) && IFrameSplitOperator.IsNumber(data.Y))
11784
+ {
11785
+ //设置鼠标位置
11786
+ if (this.LastPoint && (!IFrameSplitOperator.IsNumber(this.LastPoint.X) || !IFrameSplitOperator.IsNumber(this.LastPoint.Y)))
11787
+ {
11788
+ this.LastPoint.X=data.X;
11789
+ this.LastPoint.Y=data.Y;
11790
+ }
11791
+ }
11792
+ }
11778
11793
  }
11779
11794
  }
11780
11795
 
@@ -35309,10 +35324,10 @@ function ChartMinuteVolumBar()
35309
35324
  var unit=this.GetVolUnit();
35310
35325
  if (callAutionData.Ver==1.0)
35311
35326
  {
35312
- for(var i in callAutionData.Data)
35327
+ for(var i=0;i<callAutionData.Data.length;++i)
35313
35328
  {
35314
35329
  var item=callAutionData.Data[i];
35315
- if (!item || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
35330
+ if (!item || !IFrameSplitOperator.IsNonEmptyArray(item.Vol) || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
35316
35331
 
35317
35332
  if (isBeforeOpen)
35318
35333
  {
@@ -35346,11 +35361,11 @@ function ChartMinuteVolumBar()
35346
35361
  {
35347
35362
  var range={ Max: callAutionData.VolMax, Min:callAutionData.VolMin }
35348
35363
 
35349
- for(var i in callAutionData.Data)
35364
+ for(var i=0; i<callAutionData.Data.length; ++i)
35350
35365
  {
35351
35366
  var item=callAutionData.Data[i];
35352
35367
  if (!item) continue;
35353
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
35368
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
35354
35369
  {
35355
35370
  if (isBeforeOpen)
35356
35371
  {
@@ -35380,7 +35395,7 @@ function ChartMinuteVolumBar()
35380
35395
  this.Canvas.stroke();
35381
35396
  }
35382
35397
 
35383
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
35398
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
35384
35399
  {
35385
35400
  if (isBeforeOpen)
35386
35401
  {
@@ -40360,16 +40375,23 @@ function ChartMinutePriceLine()
40360
40375
  var item=callAutionData.Data[i];
40361
40376
  if (!item || !IFrameSplitOperator.IsNumber(item.Price))
40362
40377
  {
40363
- if (i==0 && isBeforeOpen && IFrameSplitOperator.IsNumber(this.YClose))
40378
+ if (i==0 && isBeforeOpen)
40364
40379
  {
40365
- var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
40366
- var y=this.ChartFrame.GetLeftExtendYFromData(this.YClose);
40380
+ //盘前集合竞价起始点为昨收或昨结算
40381
+ var price=callAutionData.YClose;
40382
+ if (IFrameSplitOperator.IsNumber(callAutionData.YClearing)) price=callAutionData.YClearing;
40367
40383
 
40368
- this.Canvas.strokeStyle=this.BeforeLineColor;
40369
- this.Canvas.beginPath();
40370
- if (isHScreen) this.Canvas.moveTo(y,x);
40371
- else this.Canvas.moveTo(x,y);
40372
- bFirstPoint=false;
40384
+ if (IFrameSplitOperator.IsNumber(price))
40385
+ {
40386
+ var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
40387
+ var y=this.ChartFrame.GetLeftExtendYFromData(price);
40388
+
40389
+ this.Canvas.strokeStyle=this.BeforeLineColor;
40390
+ this.Canvas.beginPath();
40391
+ if (isHScreen) this.Canvas.moveTo(y,x);
40392
+ else this.Canvas.moveTo(x,y);
40393
+ bFirstPoint=false;
40394
+ }
40373
40395
  }
40374
40396
 
40375
40397
  continue;
@@ -57513,6 +57535,7 @@ function ChartCorssCursor()
57513
57535
  this.LastValue=null;
57514
57536
 
57515
57537
  if (!this.LastPoint) return;
57538
+ if (!this.IsShow) return;
57516
57539
 
57517
57540
  this.Close=null;
57518
57541
  var x=this.LastPoint.X;
@@ -58635,8 +58658,7 @@ function ChartCorssCursor()
58635
58658
  {
58636
58659
  this.IsShowCorss=!this.IsShowCorss
58637
58660
  data.Draw=true;
58638
-
58639
- if (this.OnChangeStatusCallback) this.OnChangeStatusCallback({ Type:1, IsShowCorss:this.IsShowCorss }, this);
58661
+ if (this.OnChangeStatusCallback) this.OnChangeStatusCallback({ Type:1, IsShowCorss:this.IsShowCorss, X:x, Y:y }, this);
58640
58662
  }
58641
58663
  }
58642
58664
 
@@ -60428,6 +60450,14 @@ function DynamicKLineTitlePainting()
60428
60450
  this.OnMouseMoveEvent;
60429
60451
  this.HQChart;
60430
60452
 
60453
+ //十字线是否显示
60454
+ this.IsShowCorssLine=function()
60455
+ {
60456
+ if (!this.HQChart || !this.HQChart.ChartCorssCursor) return false;
60457
+
60458
+ return this.HQChart.ChartCorssCursor.IsShowCorss;
60459
+ }
60460
+
60431
60461
  this.ReloadResource=function()
60432
60462
  {
60433
60463
  this.Font=g_JSChartResource.TitleFont;
@@ -60919,6 +60949,8 @@ function DynamicKLineTitlePainting()
60919
60949
  isShow=true;
60920
60950
  else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
60921
60951
  isShow=true;
60952
+ else if (!this.IsShowCorssLine())
60953
+ isShow=true;
60922
60954
  }
60923
60955
 
60924
60956
  return isShow;
@@ -61518,6 +61550,8 @@ function DynamicMinuteTitlePainting()
61518
61550
  isShowLastData=true;
61519
61551
  else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
61520
61552
  isShowLastData=true;
61553
+ else if (!this.IsShowCorssLine())
61554
+ isShowLastData=true;
61521
61555
  }
61522
61556
  else if (this.GlobalOption && this.GlobalOption.IsDisplayLatest)
61523
61557
  {
@@ -61730,6 +61764,14 @@ function DynamicChartTitlePainting()
61730
61764
  this.IsShowMainIndexTitle=true; //是否显示主图指标标题
61731
61765
  this.MainTitlePaint=null; //主标题
61732
61766
 
61767
+ //十字线是否显示
61768
+ this.IsShowCorssLine=function()
61769
+ {
61770
+ if (!this.HQChart || !this.HQChart.ChartCorssCursor) return false;
61771
+
61772
+ return this.HQChart.ChartCorssCursor.IsShowCorss;
61773
+ }
61774
+
61733
61775
  this.ReloadResource=function()
61734
61776
  {
61735
61777
  this.Font=g_JSChartResource.TitleFont;
@@ -62321,6 +62363,8 @@ function DynamicChartTitlePainting()
62321
62363
  isShowLastData=true;
62322
62364
  else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
62323
62365
  isShowLastData=true;
62366
+ else if (!this.IsShowCorssLine())
62367
+ isShowLastData=true;
62324
62368
  }
62325
62369
  else if (this.GlobalOption && this.GlobalOption.IsDisplayLatest)
62326
62370
  {
@@ -92516,6 +92560,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92516
92560
  //更新最新的几条数据
92517
92561
  this.UpdateLatestMinuteDataV2=function(minuteData)
92518
92562
  {
92563
+ if (!minuteData || !IFrameSplitOperator.IsNonEmptyArray(minuteData.Data)) return;
92564
+
92519
92565
  if (this.DayCount>1)
92520
92566
  {
92521
92567
  if (!this.DayData) return;
@@ -92524,7 +92570,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92524
92570
  for(var i=0; i<this.DayData.length; ++i)
92525
92571
  {
92526
92572
  var item=this.DayData[i];
92527
- if (item.Date===date)
92573
+ if (item.Date===minuteData.Date)
92528
92574
  {
92529
92575
  findItem=item;
92530
92576
  break;
@@ -92710,24 +92756,50 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92710
92756
  this.ColorLineData=aryColorLineData;
92711
92757
  }
92712
92758
 
92713
- this.UpdateCallCationData=function(beforeOpenData,afterCloseData)
92759
+ this.UpdateCallCationData=function(beforeOpenData,afterCloseData,option)
92714
92760
  {
92715
- if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
92761
+ var dataType=0;
92762
+ if (option && IFrameSplitOperator.IsNumber(option.DataType)) dataType=option.DataType;
92763
+
92764
+ if (dataType==1)
92716
92765
  {
92717
- var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
92718
- if (lastItem.Date==beforeOpenData.Date) //存在更新
92719
- this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
92720
- else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
92721
- this.MultiDayBeforeOpenData.push(beforeOpenData);
92722
- }
92766
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
92767
+ {
92768
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
92769
+ if (lastItem.Date==beforeOpenData.Date) //增量更新
92770
+ {
92771
+ this.UpdateLatestCallCationData(lastItem, beforeOpenData);
92772
+ }
92773
+ }
92723
92774
 
92724
- if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
92775
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
92776
+ {
92777
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
92778
+ if (lastItem.Date==afterCloseData.Date) //增量更新
92779
+ {
92780
+ this.UpdateLatestCallCationData(lastItem, afterCloseData);
92781
+ }
92782
+ }
92783
+ }
92784
+ else
92725
92785
  {
92726
- var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
92727
- if (lastItem.Date==afterCloseData.Date)
92728
- this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
92729
- else if (lastItem.Date<afterCloseData.Date)
92730
- this.MultiDayAfterCloseData.push(afterCloseData);
92786
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
92787
+ {
92788
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
92789
+ if (lastItem.Date==beforeOpenData.Date) //存在更新
92790
+ this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
92791
+ else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
92792
+ this.MultiDayBeforeOpenData.push(beforeOpenData);
92793
+ }
92794
+
92795
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
92796
+ {
92797
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
92798
+ if (lastItem.Date==afterCloseData.Date)
92799
+ this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
92800
+ else if (lastItem.Date<afterCloseData.Date)
92801
+ this.MultiDayAfterCloseData.push(afterCloseData);
92802
+ }
92731
92803
  }
92732
92804
 
92733
92805
  this.CaclutateCallCationYRange();
@@ -92743,9 +92815,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92743
92815
  var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);
92744
92816
  var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data); //数据最后的更新时间
92745
92817
 
92818
+ if (data.LatestPointFlash) //最新数据闪烁
92819
+ {
92820
+ var item=data.LatestPointFlash;
92821
+ if (IFrameSplitOperator.IsNumber(item.FlashCount))
92822
+ this.SetLatestPointFlash(item.FlashCount)
92823
+ }
92824
+
92746
92825
  if (this.DayCount>1) //多日走势图
92747
92826
  {
92748
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
92827
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:1});
92749
92828
  this.UpdateLineColorData(aryColorData,minuteData.date);
92750
92829
  this.UpdateLatestMinuteDataV2(minuteData);
92751
92830
  this.UpdateHistoryMinuteUI(updateTime);
@@ -92757,10 +92836,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92757
92836
  return;
92758
92837
  }
92759
92838
 
92760
- if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
92761
- if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
92839
+ //if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
92840
+ //if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
92841
+
92842
+ //盘前盘后数据更新
92843
+ if (this.IsBeforeData && beforeOpenData) this.UpdateLatestCallCationData(this.BeforeOpenData, beforeOpenData);
92844
+ if (this.IsAfterData && afterCloseData) this.UpdateLatestCallCationData(this.AfterCloseData, afterCloseData);
92762
92845
 
92763
- //原始数据
92764
92846
  this.UpdateLatestMinuteDataV2(minuteData);
92765
92847
  this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvUpdateMinuteData"});
92766
92848
 
@@ -92775,6 +92857,45 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92775
92857
  }
92776
92858
  }
92777
92859
 
92860
+ this.UpdateLatestCallCationData=function(destData, updateData)
92861
+ {
92862
+ if (!destData) return;
92863
+ if (!updateData || !IFrameSplitOperator.IsNonEmptyArray(updateData.Data)) return;
92864
+
92865
+ if (destData.Data.length==0)
92866
+ {
92867
+ destData.Data=updateData.Data;
92868
+ destData.VolMax=updateData.VolMax;
92869
+ destData.VolMin=updateData.VolMin;
92870
+ return;
92871
+ }
92872
+
92873
+ //覆盖历史数据
92874
+ var mapData=new Map(updateData.Data.map((obj) => [obj.Time, obj]));
92875
+ var lastTime=null; //最后的时间
92876
+ for(var i=0;i<destData.Data.length;++i)
92877
+ {
92878
+ var item=destData.Data[i];
92879
+ lastTime=item.Time;
92880
+ if (!mapData.has(item.Time)) continue;
92881
+ var newItem=mapData.get(item.Time);
92882
+ if (!newItem || !IFrameSplitOperator.IsNumber(newItem.Price)) continue; //只覆盖有效数据
92883
+
92884
+ destData.Data[i]=newItem;
92885
+ }
92886
+
92887
+ //新数据往后插
92888
+ for(var i=0;i<updateData.Data.length;++i)
92889
+ {
92890
+ var item=updateData.Data[i];
92891
+ if (item.Time<=lastTime) continue;
92892
+ destData.Data.push(item);
92893
+ }
92894
+
92895
+ if (destData.VolMax<updateData.VolMax) destData.VolMax=updateData.VolMax;
92896
+ if (IFrameSplitOperator.IsNumber(updateData.TotalCount) && updateData.TotalCount>destData.TotalCount) updateData.TotalCount=destData.TotalCount;
92897
+ }
92898
+
92778
92899
  this.RecvBuySellData=function(data)
92779
92900
  {
92780
92901
  if (!data) return;
@@ -92841,7 +92962,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92841
92962
 
92842
92963
  if (this.DayCount>1) //多日走势图
92843
92964
  {
92844
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
92965
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:0});
92845
92966
  this.UpdateLineColorData(aryColorData,data.stock[0].date);
92846
92967
  this.UpdateLatestMinuteData(aryMinuteData, data.stock[0].date, data.stock[0]);
92847
92968
  this.UpdateTradeStatusData(data.TradeStatus);
@@ -94658,7 +94779,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94658
94779
  var preClose=data.stock[0].yclose; //前一个数据价格
94659
94780
  var stockData=data.stock[0];
94660
94781
  var date=stockData.date; //日期
94661
- var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date };
94782
+ var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
94662
94783
  var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_BEFOREOPEN_EXTENDDATA; //扩展数据序号
94663
94784
  if (stockData.beforeinfo)
94664
94785
  {
@@ -94694,7 +94815,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94694
94815
  else if (beforeOpenData.Ver==2.0)
94695
94816
  {
94696
94817
  var max=0;
94697
- for(var i in stockData.before)
94818
+ for(var i=0;i<stockData.before.length;++i)
94698
94819
  {
94699
94820
  var item=new BeforeOpenData();
94700
94821
  var jsData=stockData.before[i];
@@ -94706,7 +94827,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94706
94827
  item.Vol[1]=jsData[3]; //未匹配量
94707
94828
  item.ColorID=jsData[4]; //柱子颜色ID
94708
94829
  if (IFrameSplitOperator.IsNumber(jsData[6])) item.Date=jsData[6] //日期
94709
- item.DateTime=`${item.Date} ${item.Time})`;
94710
94830
 
94711
94831
  var totalVol=item.Vol[0]+item.Vol[1];
94712
94832
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -94718,12 +94838,14 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94718
94838
 
94719
94839
  beforeOpenData.VolMax=max/unit;
94720
94840
  beforeOpenData.VolMin=0;
94841
+
94842
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
94843
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
94721
94844
  }
94722
94845
  else if (beforeOpenData.Ver==3.0)
94723
94846
  {
94724
94847
  var max=0;
94725
-
94726
- for(var i in stockData.before)
94848
+ for(var i=0; i<stockData.before.length; ++i)
94727
94849
  {
94728
94850
  var item=new BeforeOpenData();
94729
94851
  var jsData=stockData.before[i];
@@ -94734,7 +94856,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94734
94856
  item.AvPrice=jsData[2]; //均价
94735
94857
  item.Vol[0]=jsData[3]; //匹配量
94736
94858
  item.ColorID=jsData[4]; //柱子颜色ID
94737
- item.DateTime=date.toString()+" "+item.Time.toString();
94738
94859
 
94739
94860
  var totalVol=item.Vol[0];
94740
94861
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -94746,11 +94867,72 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94746
94867
 
94747
94868
  beforeOpenData.VolMax=max/unit;
94748
94869
  beforeOpenData.VolMin=0;
94870
+
94871
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
94872
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
94749
94873
  }
94750
94874
 
94751
94875
  return beforeOpenData;
94752
94876
  }
94753
94877
 
94878
+
94879
+ MinuteChartContainer.CompleteCallAuctionData=function(timeConfig, callAuctionData)
94880
+ {
94881
+ var aryData=MinuteChartContainer.CreateCallAuctionTimeData(timeConfig);
94882
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return false;
94883
+
94884
+ var mapData=new Map(callAuctionData.Data.map((obj) => [obj.Time, obj]));
94885
+ for(var i=0;i<aryData.length;++i)
94886
+ {
94887
+ var time=aryData[i].Time;
94888
+ if (!mapData.has(time)) continue;
94889
+
94890
+ var item=mapData.get(time);
94891
+ aryData[i]=item;
94892
+ }
94893
+
94894
+ callAuctionData.Data=aryData;
94895
+ callAuctionData.TotalCount=aryData.length;
94896
+
94897
+ return true;
94898
+ }
94899
+
94900
+ //创建集合竞价秒级时间 { AryTime:[ { Start:92500, End:92459, Date:20250101 } ] } hhmmss
94901
+ MinuteChartContainer.CreateCallAuctionTimeData=function(config)
94902
+ {
94903
+ if (!config || !IFrameSplitOperator.IsNonEmptyArray(config.AryTime)) return null;
94904
+
94905
+ var step=1; //1s
94906
+ if (IFrameSplitOperator.IsPlusNumber(config.Step)) step=config.Step;
94907
+ var aryData=[];
94908
+ for(var i=0;i<config.AryTime.length;++i)
94909
+ {
94910
+ var item=config.AryTime[i];
94911
+
94912
+ var value=item.Start;
94913
+ var hour=parseInt(value/10000);
94914
+ var minute=parseInt((value%10000)/100);
94915
+ var second=value%100;
94916
+ var startTime=new Date(2021,5,2, hour,minute, second);
94917
+
94918
+ value=item.End;
94919
+ var hour=parseInt(value/10000);
94920
+ var minute=parseInt((value%10000)/100);
94921
+ var second=value%100;
94922
+ var endTime=new Date(2021,5,2, hour,minute, second);
94923
+
94924
+ for(var j=0; j<5000 && startTime<=endTime; ++j)
94925
+ {
94926
+ var time=startTime.getHours()*10000+startTime.getMinutes()*100+startTime.getSeconds();
94927
+ var secItem={ Time:time, Date:item.Date };
94928
+ aryData.push(secItem);
94929
+ startTime.setSeconds(startTime.getSeconds()+step);
94930
+ }
94931
+ }
94932
+
94933
+ return aryData;
94934
+ }
94935
+
94754
94936
  //收盘集合竞价
94755
94937
  MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94756
94938
  {
@@ -94761,7 +94943,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94761
94943
  if (!stockData.afterinfo) return null;
94762
94944
  var symbol=data.stock[0].symbol;
94763
94945
  var upperSymbol=symbol.toUpperCase();
94764
- var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date };
94946
+ var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
94765
94947
  var item=stockData.afterinfo;
94766
94948
  if (IFrameSplitOperator.IsNumber(item.totalcount)) afterCloseData.TotalCount=item.totalcount;
94767
94949
  if (IFrameSplitOperator.IsNumber(item.ver)) afterCloseData.Ver=item.ver;
@@ -94791,7 +94973,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94791
94973
  else if (afterCloseData.Ver==2.0)
94792
94974
  {
94793
94975
  var max=0;
94794
- for(var i in stockData.after)
94976
+ for(var i=0; i<stockData.after.length; ++i)
94795
94977
  {
94796
94978
  var item=new AfterCloseData();
94797
94979
  var jsData=stockData.after[i];
@@ -94814,6 +94996,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94814
94996
 
94815
94997
  afterCloseData.VolMax=max/unit;
94816
94998
  afterCloseData.VolMin=0;
94999
+
95000
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
95001
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
94817
95002
  }
94818
95003
  else if (afterCloseData.Ver==3.0)
94819
95004
  {
@@ -94841,6 +95026,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94841
95026
 
94842
95027
  afterCloseData.VolMax=max/unit;
94843
95028
  afterCloseData.VolMin=0;
95029
+
95030
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
95031
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
94844
95032
  }
94845
95033
 
94846
95034
  return afterCloseData;
@@ -94962,12 +95150,13 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
94962
95150
 
94963
95151
  item.DateTime=`${item.Date} ${item.Time}`;
94964
95152
 
94965
- if (IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
94966
- item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
94967
-
94968
- if (isFutures && minuteData.YClearing && item.Close)
94969
- item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
94970
-
95153
+ if (!IFrameSplitOperator.IsNumber(item.Increase) && IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
95154
+ {
95155
+ if (isFutures && minuteData.YClearing && item.Close)
95156
+ item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
95157
+ else
95158
+ item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
95159
+ }
94971
95160
 
94972
95161
  minuteData.Data.push(item);
94973
95162
  }
@@ -95131,8 +95320,9 @@ MinuteChartContainer.JsonDataToHistoryMinuteLineColorData=function(data)
95131
95320
  }
95132
95321
 
95133
95322
 
95134
- MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol)
95323
+ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol, dataInfo)
95135
95324
  {
95325
+ if (!IFrameSplitOperator.IsNonEmptyArray(data)) return;
95136
95326
  var upperSymbol=symbol?symbol.toUpperCase():null;
95137
95327
  var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);
95138
95328
 
@@ -95143,7 +95333,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95143
95333
  if (callAuctionData.Ver==1.0)
95144
95334
  {
95145
95335
  var preClose=null;
95146
- for(var i in data)
95336
+ for(var i=0; i<data.length; ++i)
95147
95337
  {
95148
95338
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
95149
95339
  var jsData=data[i];
@@ -95167,7 +95357,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95167
95357
  else if (callAuctionData.Ver==2.0)
95168
95358
  {
95169
95359
  var max=0;
95170
- for(var i in data)
95360
+ for(var i=0; i<data.length; ++i)
95171
95361
  {
95172
95362
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
95173
95363
  var jsData=data[i];
@@ -95179,7 +95369,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95179
95369
  item.Vol[0]=jsData[2]; //匹配量
95180
95370
  item.Vol[1]=jsData[3]; //未匹配量
95181
95371
  item.ColorID=jsData[4]; //柱子颜色ID
95182
- item.DateTime=date.toString()+" "+item.Time.toString();
95183
95372
 
95184
95373
  var totalVol=item.Vol[0]+item.Vol[1];
95185
95374
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -95191,6 +95380,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95191
95380
 
95192
95381
  callAuctionData.VolMax=max/unit;
95193
95382
  callAuctionData.VolMin=0;
95383
+
95384
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
95385
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
95194
95386
  }
95195
95387
  else if (beforeOpenData.Ver==3.0)
95196
95388
  {
@@ -95207,7 +95399,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95207
95399
  item.AvPrice=jsData[2]; //均价
95208
95400
  item.Vol[0]=jsData[3]; //匹配量
95209
95401
  item.ColorID=jsData[4]; //柱子颜色ID
95210
- item.DateTime=date.toString()+" "+item.Time.toString();
95211
95402
 
95212
95403
  var totalVol=item.Vol[0];
95213
95404
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -95219,6 +95410,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95219
95410
 
95220
95411
  callAuctionData.VolMax=max/unit;
95221
95412
  callAuctionData.VolMin=0;
95413
+
95414
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
95415
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
95222
95416
  }
95223
95417
  }
95224
95418
 
@@ -95227,7 +95421,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
95227
95421
  if (!data || !data.data) return null;
95228
95422
 
95229
95423
  var aryDay=[];
95230
- for(var i in data.data)
95424
+ for(var i=0; i<data.data.length; ++i)
95231
95425
  {
95232
95426
  var dayItem=data.data[i];
95233
95427
  var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -95237,7 +95431,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
95237
95431
  if (IFrameSplitOperator.IsNumber(dayItem.beforeinfo.ver)) beforeOpenData.Ver=dayItem.beforeinfo.ver;
95238
95432
  }
95239
95433
 
95240
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol);
95434
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol, dayItem.beforeinfo);
95241
95435
 
95242
95436
  aryDay.push(beforeOpenData);
95243
95437
  }
@@ -95252,7 +95446,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
95252
95446
  if (!data || !data.data) return null;
95253
95447
 
95254
95448
  var aryDay=[];
95255
- for(var i in data.data)
95449
+ for(var i=0; i<data.data.length; ++i)
95256
95450
  {
95257
95451
  var dayItem=data.data[i];
95258
95452
  var afterCloseData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -95263,7 +95457,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
95263
95457
  if (IFrameSplitOperator.IsNumber(dayItem.afterinfo.ver)) afterCloseData.Ver=dayItem.afterinfo.ver;
95264
95458
  }
95265
95459
 
95266
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol);
95460
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol, dayItem.afterinfo);
95267
95461
 
95268
95462
  aryDay.push(afterCloseData);
95269
95463
  }