hqchart 1.1.14040 → 1.1.14050

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.
@@ -55726,6 +55726,14 @@ HQData.Minute_RequestMinuteData=function(data, callback)
55726
55726
  stockItem.beforeinfo=beforeinfo;
55727
55727
  }
55728
55728
 
55729
+ /* 测试用 这里可以修改数据
55730
+ for(var i=0;i<srcStock.minute.length;++i)
55731
+ {
55732
+ var item=srcStock.minute[i];
55733
+ if (item.amount<1000000) item.amount*=100000;
55734
+ }
55735
+ */
55736
+
55729
55737
  var hqchartData={code:0, stock:[stockItem] };
55730
55738
 
55731
55739
 
@@ -56706,6 +56714,10 @@ HQData.Report_RequestStockData=function(data, callback)
56706
56714
  extendData[6]=(Math.round(Math.random()*60))/100;
56707
56715
  extendData[7]=(Math.round(Math.random()*60))/100;
56708
56716
  extendData[8]=(Math.round(Math.random()*60))/100;
56717
+
56718
+
56719
+ newItem[101]=105.0;
56720
+ newItem[201]=`A-[${HQData.GetRandomTestData(-90,90)}]-B`
56709
56721
 
56710
56722
 
56711
56723
  item.Data=newItem;
@@ -56996,17 +57008,17 @@ HQData.Keyboard_RequestSymbolList=function(data, callback)
56996
57008
  arySymbol.push( { Symbol:"02", Name:"分价表", TypeName:"功能键", Priority:1, Color:"rgb(220,20,60)" ,Data:{ PageName:"分价表", Type:2 }} );
56997
57009
  arySymbol.push( { Symbol:"06", Name:"自选股", TypeName:"功能键", Priority:1 , Color:"rgb(220,20,60)", Data:{ PageName:"自选股", Type:2 }} );
56998
57010
 
56999
- arySymbol.push( { Symbol:"MACD", Name:"平滑异同平均线", TypeName:"指标", Priority:2 , Color:"rgb(0,0,255)", Data:{ Index:"MACD", Type:1 }} );
57000
- arySymbol.push( { Symbol:"RSI", Name:"相对强弱指标", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)",Data:{ Index:"RSI", Type:1 }} );
57001
- arySymbol.push( { Symbol:"MA", Name:"均线", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"MA", Type:1 } } );
57002
- arySymbol.push( { Symbol:"BOLL", Name:"布林线", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"BOLL", Type:1 } } );
57003
- arySymbol.push( { Symbol:"KDJ", Name:"随机指标", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"KDJ", Type:1 } } );
57004
- arySymbol.push( { Symbol:"SKDJ", Name:"慢速随机指标", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"SKDJ", Type:1 } } );
57005
- arySymbol.push( { Symbol:"KD", Name:"随机指标KD", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"KD", Type:1 } } );
57006
- arySymbol.push( { Symbol:"MARSI", Name:"相对强弱平均线", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"MARSI", Type:1 } } );
57007
- arySymbol.push( { Symbol:"VMACD", Name:"量平滑异同平均", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"VMACD", Type:1 } } );
57008
- arySymbol.push( { Symbol:"AMO", Name:"成交金额", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"AMO", Type:1 } } );
57009
- arySymbol.push( { Symbol:"SQJZ", Name:"神奇九转", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"SQJZ", Type:1 } } );
57011
+ arySymbol.push( { Symbol:"MACD", Name:"平滑异同平均线", TypeName:"指标", Priority:2 , Color:"rgb(0,144,255)", Data:{ Index:"MACD", Type:1 }} );
57012
+ arySymbol.push( { Symbol:"RSI", Name:"相对强弱指标", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)",Data:{ Index:"RSI", Type:1 }} );
57013
+ arySymbol.push( { Symbol:"MA", Name:"均线", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)" ,Data:{ Index:"MA", Type:1 } } );
57014
+ arySymbol.push( { Symbol:"BOLL", Name:"布林线", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)" ,Data:{ Index:"BOLL", Type:1 } } );
57015
+ arySymbol.push( { Symbol:"KDJ", Name:"随机指标", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)" ,Data:{ Index:"KDJ", Type:1 } } );
57016
+ arySymbol.push( { Symbol:"SKDJ", Name:"慢速随机指标", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)" ,Data:{ Index:"SKDJ", Type:1 } } );
57017
+ arySymbol.push( { Symbol:"KD", Name:"随机指标KD", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)" ,Data:{ Index:"KD", Type:1 } } );
57018
+ arySymbol.push( { Symbol:"MARSI", Name:"相对强弱平均线", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)" ,Data:{ Index:"MARSI", Type:1 } } );
57019
+ arySymbol.push( { Symbol:"VMACD", Name:"量平滑异同平均", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)" ,Data:{ Index:"VMACD", Type:1 } } );
57020
+ arySymbol.push( { Symbol:"AMO", Name:"成交金额", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)" ,Data:{ Index:"AMO", Type:1 } } );
57021
+ arySymbol.push( { Symbol:"SQJZ", Name:"神奇九转", TypeName:"指标", Priority:2, Color:"rgb(0,144,255)" ,Data:{ Index:"SQJZ", Type:1 } } );
57010
57022
 
57011
57023
  callback(arySymbol);
57012
57024
  }
@@ -1722,6 +1722,9 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1722
1722
  if (option.TooltipDialog && option.TooltipDialog.Enable)
1723
1723
  chart.InitalTooltipDialog(option.TooltipDialog);
1724
1724
 
1725
+ if (option.FloatTooltip && option.FloatTooltip.Enable)
1726
+ chart.InitalFloatTooltip(option.FloatTooltip);
1727
+
1725
1728
  if (option.SelectRectDialog && option.SelectRectDialog.Enable)
1726
1729
  {
1727
1730
  chart.InitalSelectRectDialog(option.SelectRectDialog);
@@ -2633,9 +2636,11 @@ var JSCHART_EVENT_ID=
2633
2636
  ON_CUSTOM_MINUTE_BG:157, //自定义分时图背景颜色
2634
2637
  ON_CLICK_HORIZONTAL_LABEL:158, //点击Y轴刻度标签
2635
2638
 
2636
- ON_FORMAT_DIALOG_TOOLTIP_TEXT:159, //格式化Tooltip对话框显示文字
2639
+ ON_FORMAT_DIALOG_TOOLTIP:159, //格式化Tooltip对话框显示文字
2640
+
2641
+ ON_CHANGE_KLINE_RIGHT:160, //切换复权
2637
2642
 
2638
- ON_CHANGE_KLINE_RIGHT:160, //切换复权
2643
+ ON_FORMAT_KLINE_FLOAT_TOOLTIP:161, //格式化k线浮动框显示文字
2639
2644
  }
2640
2645
 
2641
2646
  var JSCHART_OPERATOR_ID=
@@ -3039,6 +3044,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3039
3044
 
3040
3045
  this.DialogTooltip; //tooltip信息
3041
3046
  this.DialogSelectRect; //区间统计
3047
+ this.FloatTooltip; //浮动tooltip信息
3042
3048
 
3043
3049
 
3044
3050
  this.ClearStockCache=function()
@@ -3072,6 +3078,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3072
3078
  this.DialogTooltip.Create();
3073
3079
  }
3074
3080
 
3081
+ this.InitalFloatTooltip=function(option)
3082
+ {
3083
+ if (this.FloatTooltip) return;
3084
+
3085
+ this.FloatTooltip=new JSFloatTooltip();
3086
+ this.FloatTooltip.Inital(this, option);
3087
+ this.FloatTooltip.Create();
3088
+ }
3089
+
3075
3090
  this.InitalModifyDrawDialog=function()
3076
3091
  {
3077
3092
  if ( this.DialogModifyDraw) return;
@@ -3090,6 +3105,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3090
3105
  this.DialogSelectRect.Create();
3091
3106
  }
3092
3107
 
3108
+
3109
+
3093
3110
  this.DrawSelectRectDialog=function()
3094
3111
  {
3095
3112
 
@@ -3163,6 +3180,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3163
3180
  this.DialogTooltip.Close();
3164
3181
  }
3165
3182
 
3183
+ this.HideFloatTooltip=function()
3184
+ {
3185
+ if (!this.FloatTooltip) return;
3186
+
3187
+ this.FloatTooltip.Hide();
3188
+ }
3189
+
3166
3190
  this.DestroyTooltipDialog=function()
3167
3191
  {
3168
3192
  if (!this.DialogTooltip) return;
@@ -3171,6 +3195,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3171
3195
  this.DialogTooltip=null;
3172
3196
  }
3173
3197
 
3198
+ this.DestroyFloatTooltip=function()
3199
+ {
3200
+ if (!this.FloatTooltip) return;
3201
+
3202
+ this.FloatTooltip.Destroy();
3203
+ this.FloatTooltip=null;
3204
+ }
3205
+
3174
3206
 
3175
3207
 
3176
3208
  //obj={ Element:, Canvas: }
@@ -3223,6 +3255,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3223
3255
  this.IsDestroy=true;
3224
3256
  this.StopAutoUpdate();
3225
3257
  this.DestroyTooltipDialog();
3258
+ this.DestroyFloatTooltip();
3226
3259
  }
3227
3260
 
3228
3261
  this.ChartDestory=this.ChartDestroy; //老版本写错了,需要兼容下
@@ -6994,6 +7027,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6994
7027
 
6995
7028
  }
6996
7029
 
7030
+ this.DrawFloatTooltip=function(point,toolTip)
7031
+ {
7032
+
7033
+ }
7034
+
7035
+ //更新实时行情到浮动tooltip
7036
+ this.UpdateHQFloatTooltip=function(item)
7037
+ {
7038
+
7039
+ }
7040
+
6997
7041
  this.ShowTooltip=function(x,y,toolTip)
6998
7042
  {
6999
7043
  if (!this.IsShowTooltip) return;
@@ -7005,11 +7049,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7005
7049
  this.TooltipCache.Data=null;
7006
7050
  this.TooltipCache.X=x;
7007
7051
  this.TooltipCache.Y=y;
7008
-
7052
+ var bHideFloatToolip=true;
7009
7053
  if (toolTip.Type===0) //K线信息
7010
7054
  {
7011
7055
  if (!this.KLineTooltipConfig.Enable) return;
7012
7056
 
7057
+ if (this.FloatTooltip)
7058
+ {
7059
+ this.DrawFloatTooltip({X:x, Y:y, YMove:20/pixelTatio}, toolTip);
7060
+ bHideFloatToolip=false;
7061
+ return;
7062
+ }
7063
+
7013
7064
  var scrollPos=GetScrollPosition();
7014
7065
  var left = x;
7015
7066
  var top = y;
@@ -7203,6 +7254,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7203
7254
  this.Tooltip.innerHTML=format.Text;
7204
7255
  this.Tooltip.style.display = "block";
7205
7256
  }
7257
+
7258
+
7259
+ if (bHideFloatToolip) this.HideFloatTooltip();
7206
7260
  }
7207
7261
 
7208
7262
  this.UpdateDOMTooltip=function(toolTipType, data)
@@ -7239,6 +7293,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7239
7293
  this.TooltipCache.Data=null;
7240
7294
 
7241
7295
  if (this.Tooltip.style.display!="none") this.Tooltip.style.display = "none";
7296
+
7297
+ this.HideFloatTooltip();
7242
7298
  }
7243
7299
 
7244
7300
  this.UpdateSelectRect=function(start,end)
@@ -8104,6 +8160,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8104
8160
 
8105
8161
  if (this.PopMinuteChart) this.PopMinuteChart.ReloadResource(option);
8106
8162
  if (this.DialogTooltip) this.DialogTooltip.ReloadResource(option);
8163
+ if (this.FloatTooltip) this.FloatTooltip.ReloadResource(option);
8107
8164
  if (this.DialogSelectRect) this.DialogSelectRect.ReloadResource(option);
8108
8165
  }
8109
8166
 
@@ -10446,6 +10503,8 @@ function CoordinateInfo()
10446
10503
  this.ExtendData; //扩展属性
10447
10504
  //百分比 { PriceColor:, PercentageColor:, SplitColor:, Font: }
10448
10505
  //自定义刻度 { Custom:{ Position: 1=强制内部 }}
10506
+ //输出位置的Y轴偏移
10507
+ //this.YOffset;
10449
10508
  this.AreaData; //区域: { Start:, End:, BGColor:, Position:[0=左, 1=右] }
10450
10509
 
10451
10510
  //不在当前屏范围 (可定义刻度使用)
@@ -69276,8 +69335,20 @@ function JSChartResource()
69276
69335
 
69277
69336
  TextColor:"rgb(0,0,0)", //数值名称
69278
69337
  ValueColor:"rgb(0,0,0)", //数值
69338
+ };
69279
69339
 
69280
-
69340
+ this.FloatTooltip=
69341
+ {
69342
+ BGColor:'rgb(250,250,250)', //背景色
69343
+ BorderColor:'rgb(20,20,20)', //边框颜色
69344
+ VolColor:"rgb(255, 185, 15)", //标题成交量
69345
+ AmountColor:"rgb(79, 79, 79)", //成交金额
69346
+ DateTimeColor:'rgb(60,60,60)',
69347
+ TurnoverRateColor:'rgb(43,54,69)', //换手率
69348
+ PositionColor:"rgb(255,0,255)", //持仓
69349
+
69350
+ TextColor:"rgb(0,0,0)", //数值名称
69351
+ ValueColor:"rgb(0,0,0)", //数值
69281
69352
  };
69282
69353
 
69283
69354
  //区间统计
@@ -70326,6 +70397,22 @@ function JSChartResource()
70326
70397
  if (item.ValueColor) this.DialogTooltip.ValueColor=item.ValueColor;
70327
70398
  }
70328
70399
 
70400
+ if (style.FloatTooltip)
70401
+ {
70402
+ var item=style.FloatTooltip;
70403
+ if (item.BGColor) this.FloatTooltip.BGColor=item.BGColor;
70404
+ if (item.BorderColor) this.FloatTooltip.BorderColor=item.BorderColor;
70405
+
70406
+ if (item.DateTimeColor) this.FloatTooltip.DateTimeColor=item.DateTimeColor;
70407
+ if (item.VolColor) this.FloatTooltip.VolColor=item.VolColor;
70408
+ if (item.AmountColor) this.FloatTooltip.AmountColor=item.AmountColor;
70409
+ if (item.TurnoverRateColor) this.FloatTooltip.TurnoverRateColor=item.TurnoverRateColor;
70410
+ if (item.PositionColor) this.FloatTooltip.PositionColor=item.PositionColor;
70411
+
70412
+ if (item.TextColor) this.FloatTooltip.TextColor=item.TextColor;
70413
+ if (item.ValueColor) this.FloatTooltip.ValueColor=item.ValueColor;
70414
+ }
70415
+
70329
70416
  if (style.DialogSelectRect)
70330
70417
  {
70331
70418
  var item=style.DialogSelectRect;
@@ -71428,7 +71515,26 @@ function JSChartLocalization()
71428
71515
  ['DialogTooltip-AC-Vol', {CN:'匹配量', EN:'Vol', TC:'匹配量'}],
71429
71516
  ['DialogTooltip-Value', {CN:'数值', EN:'Value', TC:'数值'}],
71430
71517
 
71518
+ ['FloatTooltip-Date', {CN:'日期', EN:'Date', TC:'日期'}],
71519
+ ['FloatTooltip-Time', {CN:'时间', EN:'Time', TC:'時間'}],
71520
+ ['FloatTooltip-Open', {CN:'开盘价', EN:'Open', TC:'開盤價'}],
71521
+ ['FloatTooltip-High', {CN:'最高价', EN:'High', TC:'最高價'}],
71522
+ ['FloatTooltip-Low', {CN:'最低价', EN:'Low', TC:'最低價'}],
71523
+ ['FloatTooltip-Close', {CN:'收盘价', EN:'Close', TC:'收盤價'}],
71524
+ ['FloatTooltip-YClose', {CN:'昨收价', EN:'YClose', TC:'昨收價'}],
71525
+ ['FloatTooltip-Increase', {CN:'涨幅', EN:'Increase', TC:'漲幅'}],
71526
+ ['FloatTooltip-Risefall', {CN:'涨跌', EN:'Risefall', TC:'漲跌'}],
71527
+ ['FloatTooltip-Vol', {CN:'成交量', EN:'Volume', TC:'數量'}],
71528
+ ['FloatTooltip-Amount', {CN:'成交额', EN:'Amount', TC:'金額'}],
71529
+ ['FloatTooltip-Exchange', {CN:'换手率', EN:'Exchange', TC:'換手'}],
71530
+ ['FloatTooltip-Position', {CN:'持仓量', EN:'Position', TC:'持倉'}],
71531
+ ['FloatTooltip-Price', {CN:'价格', EN:'Price', TC:'價格'}],
71532
+ ['FloatTooltip-AvPrice', {CN:'均价', EN:'AVPrice:', TC:'均價'}],
71533
+ ['FloatTooltip-FClose', {CN:"结算价", EN:'Settlement', TC:'結算價'}],
71534
+ ['FloatTooltip-YSettlePrice', {CN:"昨结算", EN:'YSettlement', TC:'昨結算'}],
71535
+ ['FloatTooltip-Amplitude', {CN:'振幅', EN:'amplitude', TC:'振幅'}],
71431
71536
 
71537
+
71432
71538
  ['DialogSelectRect-StartPrice', {CN:'起始价:', EN:'Start Price:', TC:'起始價'}],
71433
71539
  ['DialogSelectRect-EndPrice', {CN:'最终价:', EN:"End Price:", TC:'最终價'}],
71434
71540
  ['DialogSelectRect-High', {CN:'最高价:', EN:'High:', TC:'最高價'}],
@@ -74903,6 +75009,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
74903
75009
 
74904
75010
  this.SendKLineUpdateEvent(bindData);
74905
75011
  this.UpdateDOMTooltip(0, bindData);
75012
+ this.UpdateHQFloatTooltip(bindData);
74906
75013
 
74907
75014
  //叠加指标计算
74908
75015
  this.BindAllOverlayIndexData(bindData, { CheckRunCount:true,SyncExecute:false }); //异步模式叠加指标
@@ -75161,6 +75268,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
75161
75268
 
75162
75269
  this.SendKLineUpdateEvent(bindData);
75163
75270
  this.UpdateDOMTooltip(0, bindData);
75271
+ this.UpdateHQFloatTooltip(bindData);
75164
75272
 
75165
75273
  //更新叠加指标
75166
75274
  this.BindAllOverlayIndexData(bindData, { CheckRunCount:true,SyncExecute:false }); //异步模式叠加指标
@@ -79696,18 +79804,34 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
79696
79804
  if (!this.DialogTooltip) return false;
79697
79805
  if (!this.ChartCorssCursor) return false;
79698
79806
 
79807
+ var dataType=0;
79699
79808
  var kItem=null;
79700
79809
  if (this.ChartCorssCursor.ClientPos>=0)
79701
79810
  {
79702
79811
  var hisData=this.ChartOperator_Temp_GetHistroyData();;
79703
79812
  if (!hisData) return false; //数据还没有到达
79813
+ if (!IFrameSplitOperator.IsNonEmptyArray(hisData.Data)) return false;
79704
79814
 
79705
79815
  var dataIndex=hisData.DataOffset+this.ChartCorssCursor.CursorIndex;
79816
+ if (dataIndex>=hisData.Data.length) dataIndex=hisData.Data.length-1;
79706
79817
  var kItem=hisData.Data[dataIndex];
79707
79818
  }
79819
+ else //取最后一个数据
79820
+ {
79821
+ var hisData=this.ChartOperator_Temp_GetHistroyData();;
79822
+ if (!hisData) return false; //数据还没有到达
79823
+ if (!IFrameSplitOperator.IsNonEmptyArray(hisData.Data)) return false;
79824
+ var kItem=hisData.Data[hisData.Data.length-1];
79825
+ var dataID={ Symbol:this.Symbol, Date:kItem.Date };
79826
+ if (IFrameSplitOperator.IsNumber(kItem.Time)) dataID.Time=kItem.Time;
79827
+ if (!this.DialogTooltip.IsEqualDataID(dataID)) return false;
79828
+
79829
+ dataType=1;
79830
+ }
79708
79831
 
79709
79832
  var sendData=
79710
79833
  {
79834
+ DataType:dataType, //0=全部更新 1=更新实时K线
79711
79835
  ClientPos:this.ChartCorssCursor.ClientPos, //位置
79712
79836
  IsShowCorss:this.ChartCorssCursor.IsShowCorss, //是否显示十字线
79713
79837
  KItem:kItem,
@@ -79715,7 +79839,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
79715
79839
  LastValue:this.ChartCorssCursor.LastValue,
79716
79840
  };
79717
79841
 
79718
-
79719
79842
  this.DialogTooltip.Update(sendData);
79720
79843
 
79721
79844
  return true;
@@ -79756,6 +79879,52 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
79756
79879
 
79757
79880
  this.DialogSelectRect.Update(sendData);
79758
79881
  }
79882
+
79883
+ this.DrawFloatTooltip=function(point,toolTip)
79884
+ {
79885
+ if (!this.FloatTooltip) return;
79886
+
79887
+ this.UpdateFloatTooltip(point, toolTip)
79888
+ }
79889
+
79890
+ this.UpdateFloatTooltip=function(point, toolTip)
79891
+ {
79892
+ if (!this.FloatTooltip) return;
79893
+
79894
+ var sendData=
79895
+ {
79896
+ Tooltip:toolTip,
79897
+ Point:point,
79898
+ Symbol:this.Symbol,
79899
+ Name:this.Name,
79900
+ DataType:1,
79901
+ };
79902
+
79903
+ this.FloatTooltip.Update(sendData);
79904
+ }
79905
+
79906
+ this.UpdateHQFloatTooltip=function(kData)
79907
+ {
79908
+ if (!this.FloatTooltip) return;
79909
+ if (!this.FloatTooltip.IsShow()) return;
79910
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
79911
+
79912
+ var lastItem=kData.Data[kData.Data.length-1];
79913
+ if (!lastItem) return;
79914
+
79915
+ var dataID={ Symbol:kData.Symbol, Date:lastItem.Date, Time:lastItem.Time };
79916
+ if (!this.FloatTooltip.IsEqualHQID(dataID)) return;
79917
+
79918
+ var sendData=
79919
+ {
79920
+ Data:lastItem,
79921
+ Symbol:this.Symbol,
79922
+ Name:this.Name,
79923
+ DataType:2,
79924
+ };
79925
+
79926
+ this.FloatTooltip.Update(sendData);
79927
+ }
79759
79928
  }
79760
79929
 
79761
79930
  //API 返回数据 转化为array[]
@@ -85582,6 +85751,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
85582
85751
  if (!this.ChartCorssCursor) return false;
85583
85752
 
85584
85753
  var minuteItem=null; //{ Type:0=连续交易 1=集合竞价, Data:数据 }
85754
+ var dataType=0; //0=全部更新 2=分时实时数据更新
85585
85755
  if (this.ChartCorssCursor.ClientPos>=0)
85586
85756
  {
85587
85757
  var titlePaint=this.TitlePaint[0];
@@ -85591,21 +85761,32 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
85591
85761
  if ((pointInfo.ClientPos==2 || pointInfo.ClientPos==3 || (pointInfo.ClientPos>=200&& pointInfo.ClientPos<=299) || (pointInfo.ClientPos>=300&& pointInfo.ClientPos<=399)))
85592
85762
  {
85593
85763
  var auctionData=titlePaint.GetCurrentAuctionData();
85594
- if (!auctionData) return;
85764
+ if (!auctionData) return false;
85595
85765
  minuteItem={ Type:1, Data:auctionData };
85596
85766
  }
85597
85767
  else
85598
85768
  {
85599
85769
  var minuteData=titlePaint.GetCurrentKLineData();
85600
- if (!minuteData) return;
85770
+ if (!minuteData) return false;
85601
85771
  minuteItem={ Type:0, Data:minuteData };
85602
85772
  }
85603
85773
  }
85604
-
85774
+ }
85775
+ else //实时数据更新
85776
+ {
85777
+ if (!this.SourceData || !IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data)) return false;
85778
+ var minuteData=this.SourceData.Data[this.SourceData.Data.length-1];
85779
+
85780
+ var dataID={ Symbol:this.Symbol, Date:minuteData.Date, Time:minuteData.Time };
85781
+ if (!this.DialogTooltip.IsEqualDataID(dataID)) return false;
85782
+
85783
+ minuteItem={ Type:0, Data:minuteData };
85784
+ dataType=2;
85605
85785
  }
85606
85786
 
85607
85787
  var sendData=
85608
85788
  {
85789
+ DataType:dataType,
85609
85790
  ClientPos:this.ChartCorssCursor.ClientPos, //位置
85610
85791
  IsShowCorss:this.ChartCorssCursor.IsShowCorss, //是否显示十字线
85611
85792
  MinItem:minuteItem,
@@ -92038,7 +92219,8 @@ function MinuteTimeStringData()
92038
92219
  {
92039
92220
  this.SHSZ = null; //上海深证交易所时间
92040
92221
  this.BJ=null;
92041
- this.SHO=null; //上海股票期权交易时间
92222
+ this.SHO=null; //上海期权交易时间
92223
+ this.SZO=null; //深证期权交易时间
92042
92224
  this.HK = null; //香港交易所时间
92043
92225
  this.Futures=new Map(); //期货交易时间 key=时间名称 Value=数据
92044
92226
  this.USA = null; //美股交易时间
@@ -92075,12 +92257,18 @@ function MinuteTimeStringData()
92075
92257
  return this.BJ;
92076
92258
  }
92077
92259
 
92078
- this.GetSHO=function()
92260
+ this.GetSHO=function(upperSymbol)
92079
92261
  {
92080
92262
  if (!this.SHO) this.SHO=this.CreateSHOData();
92081
92263
  return this.SHO;
92082
92264
  }
92083
92265
 
92266
+ this.GetSZO=function(upperSymbol)
92267
+ {
92268
+ if (!this.SZO) this.SZO=this.CreateSZOData();
92269
+ return this.SZO;
92270
+ }
92271
+
92084
92272
  this.GetHK=function(upperSymbol)
92085
92273
  {
92086
92274
  if (!this.HK) this.HK = this.CreateHKData();
@@ -92194,6 +92382,17 @@ function MinuteTimeStringData()
92194
92382
  return this.CreateTimeData(TIME_SPLIT);
92195
92383
  }
92196
92384
 
92385
+ this.CreateSZOData=function()
92386
+ {
92387
+ const TIME_SPLIT =
92388
+ [
92389
+ { Start: 930, End: 1129 },
92390
+ { Start: 1300, End: 1500 }
92391
+ ];
92392
+
92393
+ return this.CreateTimeData(TIME_SPLIT);
92394
+ }
92395
+
92197
92396
  this.CreateHKData = function ()
92198
92397
  {
92199
92398
  const TIME_SPLIT =
@@ -92344,7 +92543,8 @@ function MinuteTimeStringData()
92344
92543
  if (!symbol) return this.SHSZ;
92345
92544
 
92346
92545
  var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
92347
- if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol) || MARKET_SUFFIX_NAME.IsSZO(upperSymbol)) return this.GetSHO();
92546
+ if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol)) return this.GetSHO();
92547
+ if (MARKET_SUFFIX_NAME.IsSZO(upperSymbol)) return this.GetSZO();
92348
92548
  if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol)) return this.GetSHSZ(upperSymbol);
92349
92549
  if (MARKET_SUFFIX_NAME.IsBJ(upperSymbol)) return this.GetBJ(upperSymbol);
92350
92550
  if (MARKET_SUFFIX_NAME.IsHK(upperSymbol)) return this.GetHK(upperSymbol);
@@ -92829,12 +93029,14 @@ function MinuteCoordinateData()
92829
93029
  else
92830
93030
  {
92831
93031
  var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
92832
- if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol) || MARKET_SUFFIX_NAME.IsSHSZIndex(upperSymbol))
93032
+ if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol))
93033
+ data=this.GetSHOData(upperSymbol,width);
93034
+ else if (MARKET_SUFFIX_NAME.IsSZO(upperSymbol))
93035
+ data=this.GetSZOData(upperSymbol,width);
93036
+ else if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol) || MARKET_SUFFIX_NAME.IsSHSZIndex(upperSymbol))
92833
93037
  data = this.GetSHSZData(upperSymbol,width);
92834
93038
  else if (MARKET_SUFFIX_NAME.IsBJ(upperSymbol))
92835
93039
  data=this.GetBJData(upperSymbol,width);
92836
- else if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol) || MARKET_SUFFIX_NAME.IsSZO(upperSymbol))
92837
- data=this.GetSHOData(upperSymbol,width);
92838
93040
  else if (MARKET_SUFFIX_NAME.IsHK(upperSymbol))
92839
93041
  data=this.GetHKData(upperSymbol,width);
92840
93042
  else if (MARKET_SUFFIX_NAME.IsTW(upperSymbol))
@@ -92918,6 +93120,12 @@ function MinuteCoordinateData()
92918
93120
  return result;
92919
93121
  }
92920
93122
 
93123
+ this.GetSZOData=function(upperSymbol,width)
93124
+ {
93125
+ var result=SHO_MINUTE_X_COORDINATE;
93126
+ return result;
93127
+ }
93128
+
92921
93129
  this.GetFuturesData = function (upperSymbol,width,timeData)
92922
93130
  {
92923
93131
  var splitData = timeData.GetSplitData(upperSymbol);
@@ -1840,3 +1840,76 @@ input[type="color"] {
1840
1840
  }
1841
1841
 
1842
1842
 
1843
+
1844
+ /*
1845
+ Copyright (c) 2018 jones
1846
+
1847
+ http://www.apache.org/licenses/LICENSE-2.0
1848
+
1849
+ 开源项目 https://github.com/jones2000/HQChart
1850
+
1851
+ jones_2000@163.com
1852
+
1853
+ 内置浮动tooltip
1854
+ */
1855
+
1856
+
1857
+
1858
+ .UMyChart_Tooltip_Float_Div
1859
+ {
1860
+ font-family: "微软雅黑";
1861
+ /*display: flex;*/
1862
+ border: 1px solid;
1863
+ width:fit-content;
1864
+ border-color: rgb(204,204,204);
1865
+ visibility:hidden;
1866
+ position: absolute;
1867
+ background-color: rgba(20,20,20,1);
1868
+ left:1px;
1869
+ top:1px;
1870
+ pointer-events:none;
1871
+ }
1872
+
1873
+
1874
+ .UMyChart_Tooltip_Float_Table
1875
+ {
1876
+ border-spacing: 2px;
1877
+ user-select: none;
1878
+ font-size:12px;
1879
+ }
1880
+
1881
+ .UMyChart_Tooltip_Float_Group_Tr
1882
+ {
1883
+
1884
+ }
1885
+
1886
+ .UMyChart_Tooltip_Float_Title_Td
1887
+ {
1888
+ min-width: 40px;
1889
+ }
1890
+
1891
+ .UMyChart_Tooltip_Float_Text_Td
1892
+ {
1893
+ min-width:80px;
1894
+ }
1895
+
1896
+ .UMyChart_Tooltip_Float_Title_Span
1897
+ {
1898
+ color: rgb(230,230,230);
1899
+ }
1900
+
1901
+ .UMyChart_Tooltip_Float_Text_Span
1902
+ {
1903
+ float: right;
1904
+ margin-right: 1px;
1905
+ color: rgb(230,230,230);
1906
+ }
1907
+
1908
+ .UMyChart_Tooltip_Float_Text2_Span
1909
+ {
1910
+ color: rgb(230,230,230);
1911
+ }
1912
+
1913
+
1914
+
1915
+
@@ -411,6 +411,21 @@ function GetBlackStyle()
411
411
  TitleBGColor:"rgb(200, 66, 69)",
412
412
  },
413
413
 
414
+ FloatTooltip:
415
+ {
416
+ BGColor:'rgb(20,20,20)', //背景色
417
+ BorderColor:'rgb(170,170,170)', //边框颜色
418
+
419
+ VolColor:"rgb(255, 185, 15)", //标题成交量
420
+ AmountColor:"rgb(210,210,210)", //成交金额
421
+ DateTimeColor:'rgb(210,210,210)',
422
+ TurnoverRateColor:'rgb(43,54,69)', //换手率
423
+ PositionColor:"rgb(255,0,255)", //持仓
424
+
425
+ TextColor:"rgb(210,210,210)", //数值名称
426
+ ValueColor:"rgb(210,210,210)", //数值
427
+ },
428
+
414
429
  DialogSelectRect:
415
430
  {
416
431
  BGColor:'rgb(20,20,20)', //背景色