hqchart 1.1.14734 → 1.1.14746

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.
@@ -7124,6 +7124,18 @@ var JSCHART_MENU_ID=
7124
7124
  CMD_REPORT_CHANGE_COLUMN_ID:105, //报价列表 切换列 Arg[Column, ]
7125
7125
  }
7126
7126
 
7127
+ var JSCHART_TRADE_STATUS_ID=
7128
+ {
7129
+ START_ID:1000, //8:45~9:15
7130
+ BEFORE_OPEN_ID:2000, //9:15~9:25 是开盘集合竞价阶段
7131
+ TRADE_ID:3000, //9:25~14:57 是连续竞价阶段
7132
+ AFTER_CLOSE_ID:4000, //14:57~15:00 是收盘集合竞价阶段
7133
+ CLOSE_ID:5000, //15:00 后,首先发 CLOSE 标志
7134
+ ENDTR_ID:6000, //交易结束
7135
+ //上面状态个位数 是停牌状态 如3001 连续交易时间段停牌
7136
+ SUSP_ID:1, //停牌
7137
+ }
7138
+
7127
7139
 
7128
7140
  function PhoneDBClick()
7129
7141
  {
@@ -7340,6 +7352,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7340
7352
 
7341
7353
  //图形中的单元选中状态
7342
7354
  MapIndexChartCache:new Map(), //key 指标GUID
7355
+
7356
+ TradeStatus:null, //当前交易状态 { Date, Time:数据最后更新的时间, Status: }
7343
7357
  };
7344
7358
 
7345
7359
  this.VerticalDrag; //通过X轴左右拖动数据(手势才有)
@@ -10374,7 +10388,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10374
10388
 
10375
10389
  var bDrawDialogTooltip=false;
10376
10390
  var ptPosition=null; //鼠标位置 null 无效 -1 在外面 >=0 对应的指标窗口中ID
10377
- var corssCursorPos=this.GetCorssCursorPosition()
10391
+ var corssCursorPos=this.GetCorssCursorPosition();
10378
10392
  if (corssCursorPos.LastPoint.X!=null || corssCursorPos.LastPoint.Y!=null)
10379
10393
  {
10380
10394
  if (this.ChartCorssCursor)
@@ -10828,6 +10842,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10828
10842
  this.DrawDynamicInfo=function(option)
10829
10843
  {
10830
10844
  this.LastMouseStatus.MouseOnToolbar=null; //鼠标在工具栏按钮上
10845
+ if (this.ChartCorssCursor) this.ChartCorssCursor.Status=0;
10831
10846
 
10832
10847
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_BEFORE_DRAW_DYNAMIC_INFO);
10833
10848
  if (event && event.Callback)
@@ -15863,6 +15878,26 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15863
15878
  {
15864
15879
  return false;
15865
15880
  }
15881
+
15882
+ //更新交易状态
15883
+ this.UpdateTradeStatusData=function(data, option)
15884
+ {
15885
+ if (option)
15886
+ {
15887
+ //是否清空
15888
+ if (option.IsClear===true) this.GlobalOption.TradeStatus=null;
15889
+ }
15890
+
15891
+ if (!data) return false;
15892
+
15893
+ if (IFrameSplitOperator.IsNumber(data.Date) && IFrameSplitOperator.IsNumber(data.Time) && IFrameSplitOperator.IsNumber(data.Status))
15894
+ {
15895
+ this.GlobalOption.TradeStatus={ Date:data.Date, Time:data.Time, Status:data.Status };
15896
+ return true;
15897
+ }
15898
+
15899
+ return false;
15900
+ }
15866
15901
  }
15867
15902
 
15868
15903
  function GetDevicePixelRatio()
@@ -16398,6 +16433,40 @@ function ChartBorder()
16398
16433
  {
16399
16434
  return this.TitleHeight;
16400
16435
  }
16436
+
16437
+ //是否显示单日集合竞价 盘前
16438
+ this.IsShowBeforeOpen=function()
16439
+ {
16440
+ if (this.LeftExtendWidth<10) return false;
16441
+
16442
+ return true;
16443
+ }
16444
+
16445
+ //是否显示单日集合竞价 盘后
16446
+ this.IsShowAfterClose=function()
16447
+ {
16448
+ if (this.RightExtendWidth<10) return false;
16449
+
16450
+ return true;
16451
+ }
16452
+
16453
+ //是否显示多日集合竞价 盘前
16454
+ this.IsShowMultiDayBeforeOpen=function()
16455
+ {
16456
+ if (!this.MultiDayMinute) return false;
16457
+ if (this.MultiDayMinute.Count<=1 || this.MultiDayMinute.Left<=0) return false;
16458
+
16459
+ return true;
16460
+ }
16461
+
16462
+ //是否显示多日集合竞价 盘后
16463
+ this.IsShowMultiDayAfterClose=function()
16464
+ {
16465
+ if (!this.MultiDayMinute) return false;
16466
+ if (this.MultiDayMinute.Count<=1 || this.MultiDayMinute.Right<=0) return false;
16467
+
16468
+ return true;
16469
+ }
16401
16470
  }
16402
16471
 
16403
16472
  //框架外部挂接
@@ -17068,7 +17137,7 @@ function AverageWidthFrame()
17068
17137
  }
17069
17138
  else
17070
17139
  {
17071
- var right=border.Right-3;
17140
+ var right=border.RightEx-3;
17072
17141
  var left=border.Left;
17073
17142
  var yButton=border.Top+this.ChartBorder.TitleHeight/2;
17074
17143
 
@@ -58376,7 +58445,7 @@ function FrameSplitY()
58376
58445
 
58377
58446
  this.RightFrameSplitY();
58378
58447
  this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
58379
- this.CallAcutionSplitY(this.SplitCount,splitData);
58448
+ this.CallAcutionSplitYV2(splitData, this.Frame.HorizontalInfo.slice());
58380
58449
 
58381
58450
  if (this.EnableRemoveZero) this.RemoveZero(this.Frame.HorizontalInfo);
58382
58451
 
@@ -58457,6 +58526,173 @@ function FrameSplitY()
58457
58526
  }
58458
58527
  }
58459
58528
 
58529
+ this.CallAcutionSplitYV2=function(splitData, aryHorizontalInfo)
58530
+ {
58531
+ if (!this.IsCallAuctionFrame()) return;
58532
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo)) return;
58533
+
58534
+ var aryCallAcution=this.GetCallAcutionSplitYV2(splitData,aryHorizontalInfo);
58535
+ if (!aryCallAcution) return;
58536
+
58537
+ for(var i=0; i<this.Frame.HorizontalInfo.length; ++i) //把显示的数据迁移到 Message[2] Message[3]
58538
+ {
58539
+ var item=this.Frame.HorizontalInfo[i];
58540
+ if (aryCallAcution.IsBeforeData)
58541
+ {
58542
+ item.Message[2]=item.Message[0];
58543
+ item.Message[0]=null;
58544
+ }
58545
+
58546
+ if (aryCallAcution.IsAfterData && (this.ShareAfterVol==0 || this.ShareAfterVol==2) )
58547
+ {
58548
+ item.Message[3]=item.Message[1];
58549
+ item.Message[1]=null;
58550
+ }
58551
+ }
58552
+
58553
+ //集合竞价的坐标插入最后
58554
+ for(var i=0; i<aryCallAcution.HorizontalInfo.length; ++i)
58555
+ {
58556
+ var item=aryCallAcution.HorizontalInfo[i];
58557
+ this.Frame.HorizontalInfo.push(item);
58558
+ }
58559
+ }
58560
+
58561
+ this.GetCallAcutionSplitYV2=function(splitData, arySource)
58562
+ {
58563
+ if (!this.IsCallAuctionFrame()) return null;
58564
+
58565
+ var bBeforeData=(this.IsBeforeData==true && this.BeforeOpenData && (this.BeforeOpenData.Ver==2.0 || this.BeforeOpenData.Ver==3.0));
58566
+ var bAfterData=(this.IsAfterData==true && this.AfterCloseData && (this.AfterCloseData.Ver==2.0 || this.AfterCloseData.Ver==3.0));
58567
+
58568
+ var bottom=this.Frame.ChartBorder.GetBottomEx();
58569
+ var height=this.Frame.ChartBorder.GetHeightEx();
58570
+ var bHScreen=this.Frame.IsHScreen;
58571
+ if (this.Frame.IsHScreen)
58572
+ {
58573
+ var border=this.Frame.GetBorder();
58574
+ var width=border.RightEx-border.LeftEx;
58575
+ }
58576
+
58577
+ if (bBeforeData || bAfterData)
58578
+ {
58579
+ var aryHorizontalInfo=[];
58580
+ for(var i=0;i<arySource.length;++i)
58581
+ {
58582
+ var hItem=arySource[i];
58583
+ if (!hItem || !IFrameSplitOperator.IsNumber(hItem.Value)) continue;
58584
+ var y=this.Frame.GetYFromData(hItem.Value);
58585
+
58586
+ var item=new CoordinateInfo();
58587
+ item.Value=hItem.Value;
58588
+ item.LineType=8;
58589
+ if (bBeforeData)
58590
+ {
58591
+ if (bHScreen)
58592
+ {
58593
+ var value=(y-border.LeftEx)/width*(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)+this.BeforeOpenData.VolMin;
58594
+ }
58595
+ else
58596
+ {
58597
+ var value=(bottom-y)/height*(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)+this.BeforeOpenData.VolMin;
58598
+ }
58599
+
58600
+ item.Message[0]=this.FormatValueString(value);
58601
+ }
58602
+
58603
+ if (bAfterData && (this.ShareAfterVol==0 || this.ShareAfterVol==2) )
58604
+ {
58605
+ if (bHScreen)
58606
+ {
58607
+ var value=(y-border.LeftEx)/width*(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)+this.AfterCloseData.VolMin;
58608
+ }
58609
+ else
58610
+ {
58611
+ var value=(bottom-y)/height*(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)+this.AfterCloseData.VolMin;
58612
+ }
58613
+
58614
+ item.Message[1]=this.FormatValueString(value);
58615
+ }
58616
+
58617
+ aryHorizontalInfo.push(item);
58618
+ }
58619
+
58620
+ return { HorizontalInfo:aryHorizontalInfo, IsBeforeData:bBeforeData, IsAfterData:bAfterData };
58621
+ }
58622
+
58623
+ var bMultiDayBeforeData=false, bMultiDayAfterData=false;
58624
+ var beforeDayData=null, afterDayData=null;
58625
+ if (this.MultiDayBeforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
58626
+ {
58627
+ bMultiDayBeforeData=true;
58628
+ var firstDayData=this.MultiDayBeforeOpenData[0];
58629
+ if (firstDayData.Ver==2.0 || firstDayData.Ver==3.0)
58630
+ beforeDayData=firstDayData;
58631
+ }
58632
+
58633
+ if (this.MultiDayAfterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
58634
+ {
58635
+ bMultiDayAfterData=true;
58636
+ var firstDayData=this.MultiDayAfterCloseData[0];
58637
+ if (firstDayData.Ver==2.0 || firstDayData.Ver==3.0)
58638
+ afterDayData=firstDayData;
58639
+ }
58640
+
58641
+ if (bMultiDayBeforeData || bMultiDayAfterData)
58642
+ {
58643
+ var aryHorizontalInfo=[];
58644
+ for(var i=0;i<arySource.length;++i)
58645
+ {
58646
+ var hItem=arySource[i];
58647
+ if (!hItem || !IFrameSplitOperator.IsNumber(hItem.Value)) continue;
58648
+ var y=this.Frame.GetYFromData(hItem.Value);
58649
+
58650
+ var item=new CoordinateInfo();
58651
+ item.Value=hItem.Value;
58652
+ item.LineType=9;
58653
+
58654
+ var isVaild=false;
58655
+ if (beforeDayData)
58656
+ {
58657
+ if (bHScreen)
58658
+ {
58659
+ var value=(y-border.LeftEx)/width*(beforeDayData.VolMax-beforeDayData.VolMin)+beforeDayData.VolMin;
58660
+ }
58661
+ else
58662
+ {
58663
+ var value=(bottom-y)/height*(beforeDayData.VolMax-beforeDayData.VolMin)+beforeDayData.VolMin;
58664
+ }
58665
+
58666
+ item.Message[0]=this.FormatValueString(value);
58667
+ isVaild=true;
58668
+ }
58669
+
58670
+ if (afterDayData && (this.ShareAfterVol==0 || this.ShareAfterVol==2))
58671
+ {
58672
+ if (bHScreen)
58673
+ {
58674
+ var value=(y-border.LeftEx)/width*(afterDayData.VolMax-afterDayData.VolMin)+afterDayData.VolMin;
58675
+ }
58676
+ else
58677
+ {
58678
+ var value=(bottom-y)/height*(afterDayData.VolMax-afterDayData.VolMin)+afterDayData.VolMin;
58679
+ }
58680
+
58681
+ item.Message[1]=this.FormatValueString(value);
58682
+ isVaild=true;
58683
+ }
58684
+
58685
+ if (isVaild) aryHorizontalInfo.push(item);
58686
+ }
58687
+
58688
+ if (IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))
58689
+ return { HorizontalInfo:aryHorizontalInfo, IsBeforeData:bMultiDayBeforeData, IsAfterData:bMultiDayAfterData };
58690
+ }
58691
+
58692
+ return null;
58693
+ }
58694
+
58695
+ /* 废弃 使用 CallAcutionSplitYV2
58460
58696
  this.CallAcutionSplitY=function(count,splitData)
58461
58697
  {
58462
58698
  if (!this.IsCallAuctionFrame()) return;
@@ -58487,6 +58723,7 @@ function FrameSplitY()
58487
58723
  this.Frame.HorizontalInfo.push(item);
58488
58724
  }
58489
58725
  }
58726
+ */
58490
58727
 
58491
58728
  this.IsCallAuctionFrame=function()
58492
58729
  {
@@ -58497,6 +58734,7 @@ function FrameSplitY()
58497
58734
  return this.HQChart.IsCallAuctionFrame(this.Frame.Identify);
58498
58735
  }
58499
58736
 
58737
+ /* 废弃 使用 GetCallAcutionSplitYV2
58500
58738
  this.GetCallAcutionSplitY=function(count,splitData)
58501
58739
  {
58502
58740
  if (!this.IsCallAuctionFrame()) return null;
@@ -58591,6 +58829,7 @@ function FrameSplitY()
58591
58829
 
58592
58830
  return null;
58593
58831
  }
58832
+ */
58594
58833
 
58595
58834
  this.RightFrameSplitY=function()
58596
58835
  {
@@ -64250,7 +64489,17 @@ function DynamicMinuteTitlePainting()
64250
64489
  {
64251
64490
  this.OnDrawEventCallback(null);
64252
64491
 
64253
- if (this.IsAlwaysShowLastData)
64492
+ var bShowLastData=this.IsAlwaysShowLastData
64493
+ if (this.DrawStatus && this.DrawStatus.IsTitleShowLatestData)
64494
+ {
64495
+ var status=this.DrawStatus;
64496
+ if (!IFrameSplitOperator.IsNumber(status.FrameID) || status.FrameID<0)
64497
+ bShowLastData=true;
64498
+ else if (status.CorssCursorTouchEnd && status.IsOnTouch==false)
64499
+ bShowLastData=true;
64500
+ }
64501
+
64502
+ if (bShowLastData)
64254
64503
  {
64255
64504
  this.Canvas.save();
64256
64505
  this.DrawLastDataItem();
@@ -64450,6 +64699,7 @@ function DynamicChartTitlePainting()
64450
64699
  this.IsShowIndexTitle=true; //是否显示指标标题信息
64451
64700
  this.IsShowNameArrow=false;
64452
64701
  this.NameArrowConfig=CloneData(g_JSChartResource.IndexTitle.NameArrow);
64702
+ this.CustomLocation; //自定义位置 { IsShow:, Top:, TitleHeight: }
64453
64703
 
64454
64704
  this.TradeIndex; //专家系统名字{Name:'名字', Param:'参数'}
64455
64705
  this.IsShowTradeIndexTitle=true;
@@ -65139,7 +65389,16 @@ function DynamicChartTitlePainting()
65139
65389
  if (this.Frame.IsShowIndexTitle==false) return;
65140
65390
  if (g_JSChartResource.IsDOMFrameTitle===true) return;
65141
65391
  if (!this.Data) return;
65142
- if (this.Frame.ChartBorder.TitleHeight<5) return;
65392
+ if (this.CustomLocation)
65393
+ {
65394
+ if (!this.CustomLocation.IsShow) return;
65395
+ if (!IFrameSplitOperator.IsNumber(this.CustomLocation.Top) || !IFrameSplitOperator.IsNumber(this.CustomLocation.TitleHeight)) return;
65396
+ }
65397
+ else
65398
+ {
65399
+ if (this.Frame.ChartBorder.TitleHeight<5) return;
65400
+ }
65401
+
65143
65402
  if (this.CursorIndex==null && !(this.GlobalOption && this.GlobalOption.IsDisplayLatest)) return;
65144
65403
 
65145
65404
  if (this.Frame.IsHScreen===true)
@@ -65161,6 +65420,11 @@ function DynamicChartTitlePainting()
65161
65420
 
65162
65421
  var left=this.Frame.ChartBorder.GetLeft()+this.MerginLeft;
65163
65422
  var bottom=this.Frame.ChartBorder.GetTop()+this.Frame.ChartBorder.TitleHeight/2; //上下居中显示
65423
+ if (this.CustomLocation) //自定义标题位置
65424
+ {
65425
+ bottom=this.Frame.ChartBorder.GetTop()+this.CustomLocation.Top+this.CustomLocation.TitleHeight/2;
65426
+ }
65427
+
65164
65428
  var right=this.Frame.ChartBorder.GetRight();
65165
65429
 
65166
65430
  var toolbarInfo={ Width:0, YCenter:bottom };
@@ -95315,6 +95579,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95315
95579
  this.UpdateCallCationData(beforeOpenData,afterCloseData);
95316
95580
  this.UpdateLineColorData(aryColorData,data.stock[0].date);
95317
95581
  this.UpdateLatestMinuteData(aryMinuteData, data.stock[0].date, data.stock[0]);
95582
+ this.UpdateTradeStatusData(data.TradeStatus);
95318
95583
  this.UpdateHistoryMinuteUI(updateTime);
95319
95584
  this.RecvMinuteDataEvent({FunctionName:"RecvMinuteData"} );
95320
95585
  this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
@@ -95341,6 +95606,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95341
95606
 
95342
95607
  this.ColorLineData=aryColorData;
95343
95608
 
95609
+ this.UpdateTradeStatusData(data.TradeStatus);
95344
95610
  this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvMinuteData", Day:{ IsFirstData:bFirstData} });
95345
95611
 
95346
95612
  if (data.AutoUpdate===false) //不执行自动更新
@@ -158948,7 +159214,7 @@ function HQChartScriptWorker()
158948
159214
 
158949
159215
 
158950
159216
 
158951
- var HQCHART_VERSION="1.1.14733";
159217
+ var HQCHART_VERSION="1.1.14745";
158952
159218
 
158953
159219
  function PrintHQChartVersion()
158954
159220
  {
@@ -159112,7 +159378,8 @@ export default {
159112
159378
  JSCHART_BUTTON_ID:JSCHART_BUTTON_ID,
159113
159379
  JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,
159114
159380
  JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID,
159115
- JSCHART_MENU_ID:JSCHART_MENU_ID
159381
+ JSCHART_MENU_ID:JSCHART_MENU_ID,
159382
+ JSCHART_TRADE_STATUS_ID, //交易状态
159116
159383
  },
159117
159384
 
159118
159385