hqchart 1.1.14050 → 1.1.14064

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.
@@ -6610,6 +6610,7 @@ var JSCHART_EVENT_ID=
6610
6610
  ON_CHANGE_KLINE_RIGHT:160, //切换复权
6611
6611
 
6612
6612
  ON_FORMAT_KLINE_FLOAT_TOOLTIP:161, //格式化k线浮动框显示文字
6613
+ ON_FORMAT_KLINE_INFO_FLOAT_TOOLTIP:162, //格式化信息地雷显示文字
6613
6614
  }
6614
6615
 
6615
6616
  var JSCHART_OPERATOR_ID=
@@ -10998,7 +10999,25 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10998
10999
 
10999
11000
  this.DrawFloatTooltip=function(point,toolTip)
11000
11001
  {
11002
+ if (!this.FloatTooltip) return;
11001
11003
 
11004
+ this.UpdateFloatTooltip(point, toolTip)
11005
+ }
11006
+
11007
+ this.UpdateFloatTooltip=function(point, toolTip)
11008
+ {
11009
+ if (!this.FloatTooltip) return;
11010
+
11011
+ var sendData=
11012
+ {
11013
+ Tooltip:toolTip,
11014
+ Point:point,
11015
+ Symbol:this.Symbol,
11016
+ Name:this.Name,
11017
+ DataType:1,
11018
+ };
11019
+
11020
+ this.FloatTooltip.Update(sendData);
11002
11021
  }
11003
11022
 
11004
11023
  //更新实时行情到浮动tooltip
@@ -11069,6 +11088,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11069
11088
  }
11070
11089
  else if (toolTip.Type===1) //信息地雷提示信息
11071
11090
  {
11091
+ if (this.FloatTooltip)
11092
+ {
11093
+ this.DrawFloatTooltip({X:x, Y:y, YMove:20/pixelTatio}, toolTip);
11094
+ bHideFloatToolip=false;
11095
+ return;
11096
+ }
11097
+
11072
11098
  var scrollPos=GetScrollPosition();
11073
11099
  var left = x;
11074
11100
  var top = y;
@@ -11096,6 +11122,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11096
11122
  }
11097
11123
  else if (toolTip.Type==2) //指标信息
11098
11124
  {
11125
+ if (this.FloatTooltip)
11126
+ {
11127
+ this.DrawFloatTooltip({X:x, Y:y, YMove:20/pixelTatio}, toolTip);
11128
+ bHideFloatToolip=false;
11129
+ return;
11130
+ }
11131
+
11099
11132
  var left = x;
11100
11133
  var top = y;
11101
11134
 
@@ -11117,6 +11150,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11117
11150
  }
11118
11151
  else if (toolTip.Type==3) //分时图异动信息
11119
11152
  {
11153
+ if (this.FloatTooltip)
11154
+ {
11155
+ this.DrawFloatTooltip({X:x, Y:y, YMove:20/pixelTatio}, toolTip);
11156
+ bHideFloatToolip=false;
11157
+ return;
11158
+ }
11159
+
11120
11160
  var left = x;
11121
11161
  var top = y;
11122
11162
 
@@ -11136,8 +11176,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11136
11176
  this.Tooltip.innerHTML=format.Text;;
11137
11177
  this.Tooltip.style.display = "block";
11138
11178
  }
11139
- else if (toolTip.Type==4) //icon图标信息
11179
+ else if (toolTip.Type==4) //ChartMultiSVGIconV2 图标信息
11140
11180
  {
11181
+ if (this.FloatTooltip)
11182
+ {
11183
+ this.DrawFloatTooltip({X:x, Y:y, YMove:20/pixelTatio}, toolTip);
11184
+ bHideFloatToolip=false;
11185
+ return;
11186
+ }
11187
+
11141
11188
  var left = x;
11142
11189
  var top = y;
11143
11190
 
@@ -11159,6 +11206,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11159
11206
  }
11160
11207
  else if (toolTip.Type==5)
11161
11208
  {
11209
+ if (this.FloatTooltip)
11210
+ {
11211
+ this.DrawFloatTooltip({X:x, Y:y, YMove:20/pixelTatio}, toolTip);
11212
+ bHideFloatToolip=false;
11213
+ return;
11214
+ }
11215
+
11162
11216
  var left = x;
11163
11217
  var top = y;
11164
11218
 
@@ -11181,6 +11235,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11181
11235
  }
11182
11236
  else if (toolTip.Type==6) //散点图
11183
11237
  {
11238
+ if (this.FloatTooltip)
11239
+ {
11240
+ this.DrawFloatTooltip({X:x, Y:y, YMove:20/pixelTatio}, toolTip);
11241
+ bHideFloatToolip=false;
11242
+ return;
11243
+ }
11244
+
11184
11245
  var left = x;
11185
11246
  var top = y;
11186
11247
 
@@ -11203,6 +11264,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11203
11264
  }
11204
11265
  else if (toolTip.Type==7) //ChartDrawSVG
11205
11266
  {
11267
+ if (this.FloatTooltip)
11268
+ {
11269
+ this.DrawFloatTooltip({X:x, Y:y, YMove:20/pixelTatio}, toolTip);
11270
+ bHideFloatToolip=false;
11271
+ return;
11272
+ }
11273
+
11206
11274
  var left = x;
11207
11275
  var top = y;
11208
11276
 
@@ -11223,6 +11291,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11223
11291
  this.Tooltip.innerHTML=format.Text;
11224
11292
  this.Tooltip.style.display = "block";
11225
11293
  }
11294
+ else if (toolTip.Type==8) //ChartDrawSVG 新版本
11295
+ {
11296
+ if (this.FloatTooltip)
11297
+ {
11298
+ this.DrawFloatTooltip({X:x, Y:y, YMove:20/pixelTatio}, toolTip);
11299
+ bHideFloatToolip=false;
11300
+ return;
11301
+ }
11302
+ }
11226
11303
 
11227
11304
 
11228
11305
  if (bHideFloatToolip) this.HideFloatTooltip();
@@ -14466,7 +14543,7 @@ function CoordinateInfo()
14466
14543
  this.Font=g_JSChartResource.FrameSplitTextFont; //字体
14467
14544
  this.LineColor=g_JSChartResource.FrameSplitPen; //线段颜色
14468
14545
  this.LineDash=null; //当线段类型==2时 可以设置虚线样式
14469
- this.LineType=1; //线段类型 -1=不画线段 2=虚线, 8,9=集合竞价坐标
14546
+ this.LineType=1; //线段类型 -1=不画线段 0=虚线 1,2=虚线, 3=短线 8,9=集合竞价坐标
14470
14547
  this.LineWidth; //线段宽度
14471
14548
  this.ExtendLine; //延长线长度[ ] { Width:长度 } [0]=左 [1]=右 实例: [null, { Width: 50}];
14472
14549
  this.ExtendData; //扩展属性
@@ -17476,7 +17553,7 @@ function AverageWidthFrame()
17476
17553
  {
17477
17554
  if (lineType==-1) return;
17478
17555
 
17479
- if (lineType==0)
17556
+ if (lineType==0) //直线
17480
17557
  {
17481
17558
  var pixelRatio=GetDevicePixelRatio();
17482
17559
  this.Canvas.strokeStyle=color;
@@ -17505,7 +17582,7 @@ function AverageWidthFrame()
17505
17582
  this.Canvas.lineWidth=pixelRatio;
17506
17583
  }
17507
17584
  }
17508
- else if (lineType==2) //绘制短线
17585
+ else if (lineType==3) //绘制短线
17509
17586
  {
17510
17587
  var lineWidth=10*GetDevicePixelRatio();
17511
17588
  this.Canvas.strokeStyle=color;
@@ -17522,7 +17599,7 @@ function AverageWidthFrame()
17522
17599
  }
17523
17600
  this.Canvas.stroke();
17524
17601
  }
17525
- else
17602
+ else if (lineType==1 || lineType==2) //虚线
17526
17603
  {
17527
17604
  this.DrawDotLine(left,right,y, color, option);
17528
17605
  }
@@ -43903,203 +43980,6 @@ function ChartMultiText()
43903
43980
  }
43904
43981
  }
43905
43982
 
43906
- // 图标集合 支持横屏
43907
- function ChartMultiSVGIcon()
43908
- {
43909
- this.newMethod=IChartPainting; //派生
43910
- this.newMethod();
43911
- delete this.newMethod;
43912
-
43913
- this.ClassName="ChartMultiSVGIcon";
43914
- this.Icon; //[ {Index:, Value:, Symbol:, Color:, Baseline:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 } } ]
43915
- this.IconSize={ Max: g_JSChartResource.DRAWICON.Icon.MaxSize, Min:g_JSChartResource.DRAWICON.Icon.MinSize , //图标的最大最小值
43916
- Zoom:{ Type:g_JSChartResource.DRAWICON.Icon.Zoom.Type , Value:g_JSChartResource.DRAWICON.Icon.Zoom.Value } //放大倍数
43917
- };
43918
- this.Family;
43919
- this.Color=g_JSChartResource.DefaultTextColor;
43920
- this.IsHScreen=false;
43921
- this.IconRect=[]; //0=序号,1=区域
43922
-
43923
- this.Draw=function()
43924
- {
43925
- this.IconRect=[];
43926
- if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
43927
- if (this.IsShowIndexTitleOnly()) return;
43928
- if (this.IsHideScriptIndex()) return;
43929
- if (!this.Data || this.Data.length<=0) return;
43930
- if (!this.Family || !this.Icon) return;
43931
- if (!IFrameSplitOperator.IsNonEmptyArray(this.Icon)) return;
43932
-
43933
- this.IsHScreen=(this.ChartFrame.IsHScreen===true);
43934
- var xPointCount=this.ChartFrame.XPointCount;
43935
- var offset=this.Data.DataOffset;
43936
- this.DataWidth=this.ChartFrame.DataWidth;
43937
- this.DistanceWidth=this.ChartFrame.DistanceWidth;
43938
-
43939
- var border=this.GetBorder();
43940
- if (this.IsHScreen)
43941
- {
43942
- var left=border.TopEx;
43943
- var right=border.BottomEx;
43944
- }
43945
- else
43946
- {
43947
- var left=border.LeftEx;
43948
- var right=border.RightEx;
43949
- }
43950
-
43951
- var fontSize=this.GetDynamicIconSize(this.DataWidth,this.DistanceWidth,this.IconSize.Max,this.IconSize.Min,this.IconSize.Zoom);
43952
- this.Canvas.font=fontSize+'px '+this.Family;
43953
-
43954
- for(var i=0; i<this.Icon.length; ++i)
43955
- {
43956
- var item=this.Icon[i];
43957
- if (!IFrameSplitOperator.IsNumber(item.Index)) continue;
43958
-
43959
- var index=item.Index-offset;
43960
- if (index>=0 && index<xPointCount)
43961
- {
43962
- var x=this.ChartFrame.GetXFromIndex(index);
43963
- var y=this.ChartFrame.GetYFromData(item.Value);
43964
-
43965
- if (item.Color) this.Canvas.fillStyle = item.Color;
43966
- else this.Canvas.fillStyle = this.Color;
43967
-
43968
- var textWidth=this.Canvas.measureText(item.Symbol).width;
43969
- this.Canvas.textAlign='center';
43970
- var rtIcon=new Rect(x-fontSize/2,y-fontSize/2,fontSize,fontSize);
43971
- if (x+textWidth/2>=right)
43972
- {
43973
- this.Canvas.textAlign='right';
43974
- x+=this.DataWidth/2;
43975
- rtIcon.X=x-fontSize;
43976
- }
43977
- else if (x-textWidth/2<left)
43978
- {
43979
- this.Canvas.textAlign = 'left';
43980
- x-=this.DataWidth/2;
43981
- rtIcon.X=x;
43982
- }
43983
-
43984
- if (item.Baseline==1)
43985
- {
43986
- this.Canvas.textBaseline='top';
43987
- rtIcon.Y=y;
43988
- }
43989
- else if (item.Baseline==2)
43990
- {
43991
- this.Canvas.textBaseline='bottom';
43992
- rtIcon.Y=y-fontSize;
43993
- }
43994
- else
43995
- {
43996
- this.Canvas.textBaseline = 'middle';
43997
- rtIcon.Y=y-fontSize/2;
43998
- }
43999
-
44000
- if (this.IsHScreen)
44001
- {
44002
- this.Canvas.save();
44003
- this.Canvas.translate(y, x);
44004
- this.Canvas.rotate(90 * Math.PI / 180);
44005
- this.Canvas.fillText(item.Symbol,0,0);
44006
- this.Canvas.restore();
44007
- }
44008
- else
44009
- {
44010
- if (IFrameSplitOperator.IsNumber(item.YMove)) y+=item.YMove;
44011
- this.Canvas.fillText(item.Symbol, x, y);
44012
- if (item.Text) this.IconRect.push({ Index:i, Rect:rtIcon , Item:item });
44013
- }
44014
-
44015
- if (item.Line)
44016
- {
44017
- var kItem=this.Data.Data[item.Index];
44018
- var price=item.Line.KData=="H"? kItem.High:kItem.Low;
44019
- var yPrice=this.ChartFrame.GetYFromData(price);
44020
- var yText=y;
44021
- if (Array.isArray(item.Line.Offset) && item.Line.Offset.length==2)
44022
- {
44023
- if (yText>yPrice) //文字在下方
44024
- {
44025
- yText-=item.Line.Offset[1];
44026
- yPrice+=item.Line.Offset[0]
44027
- }
44028
- else if (yText<yPrice)
44029
- {
44030
- yText+=item.Line.Offset[1];
44031
- yPrice-=item.Line.Offset[0]
44032
- }
44033
- }
44034
- this.Canvas.save();
44035
- if (item.Line.Dash) this.Canvas.setLineDash(item.Line.Dash); //虚线
44036
- if (item.Line.Width>0) this.Canvas.lineWidth=item.Line.Width; //线宽
44037
- this.Canvas.strokeStyle = item.Line.Color;
44038
- this.Canvas.beginPath();
44039
- if (this.IsHScreen)
44040
- {
44041
- this.Canvas.moveTo(yText, ToFixedPoint(x));
44042
- this.Canvas.lineTo(yPrice,ToFixedPoint(x));
44043
- }
44044
- else
44045
- {
44046
- this.Canvas.moveTo(ToFixedPoint(x),yText);
44047
- this.Canvas.lineTo(ToFixedPoint(x),yPrice);
44048
- }
44049
-
44050
- this.Canvas.stroke();
44051
- this.Canvas.restore();
44052
- }
44053
- }
44054
- }
44055
- }
44056
-
44057
- this.GetTooltipData=function(x,y,tooltip)
44058
- {
44059
- if (!IFrameSplitOperator.IsNonEmptyArray(this.IconRect)) return false;
44060
- for(var i=0; i<this.IconRect.length; ++i)
44061
- {
44062
- var item=this.IconRect[i];
44063
- if (!item.Rect) continue;
44064
- var rect=item.Rect;
44065
- this.Canvas.beginPath();
44066
- this.Canvas.rect(rect.X,rect.Y,rect.Width,rect.Height);
44067
- if (this.Canvas.isPointInPath(x,y))
44068
- {
44069
- JSConsole.Chart.Log('[ChartMultiSVGIcon::GetTooltipData] icon ', item);
44070
- tooltip.Data=item;
44071
- tooltip.ChartPaint=this;
44072
- tooltip.Type=4; //指标
44073
- return true;
44074
- }
44075
- }
44076
-
44077
- return false;
44078
- }
44079
-
44080
- this.GetMaxMin=function()
44081
- {
44082
- var range={ Min:null, Max:null };
44083
- var xPointCount=this.ChartFrame.XPointCount;
44084
- var start=this.Data.DataOffset;
44085
- var end=start+xPointCount;
44086
-
44087
- for(var i in this.Icon)
44088
- {
44089
- var item=this.Icon[i];
44090
- if (item.Index>=start && item.Index<end)
44091
- {
44092
- if (range.Max==null) range.Max=item.Value;
44093
- else if (range.Max<item.Value) range.Max=item.Value;
44094
- if (range.Min==null) range.Min=item.Value;
44095
- else if (range.Min>item.Value) range.Min=item.Value;
44096
- }
44097
- }
44098
-
44099
- return range;
44100
- }
44101
- }
44102
-
44103
43983
 
44104
43984
  //图标集合(2.0) 支持横屏
44105
43985
  function ChartMultiSVGIconV2()
@@ -44311,6 +44191,7 @@ function ChartMultiSVGIconV2()
44311
44191
  if (IFrameSplitOperator.IsNumber(item.YMove)) y+=item.YMove;
44312
44192
  this.Canvas.fillText(item.Symbol, x, y);
44313
44193
  if (item.Text) this.IconRect.push({ Rect:rtIcon , Item:item, KItem:kItem });
44194
+ else if (IFrameSplitOperator.IsNonEmptyArray(item.AryText)) this.IconRect.push({ Rect:rtIcon , Item:item, KItem:kItem });
44314
44195
  }
44315
44196
 
44316
44197
  if (item.Line)
@@ -45060,6 +44941,7 @@ function ChartDrawSVG()
45060
44941
  tooltip.Data={ Rect:item.Rect, Item:data, Index:item.Index };
45061
44942
  tooltip.ChartPaint=this;
45062
44943
  tooltip.Type=7; //drawsvg
44944
+ if (data.Tooltip && data.Tooltip.Ver==2.0) tooltip.Type=8; //drawsvg 新本版
45063
44945
  return true;
45064
44946
  }
45065
44947
  }
@@ -83849,29 +83731,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
83849
83731
  this.DialogSelectRect.Update(sendData);
83850
83732
  }
83851
83733
 
83852
- this.DrawFloatTooltip=function(point,toolTip)
83853
- {
83854
- if (!this.FloatTooltip) return;
83855
-
83856
- this.UpdateFloatTooltip(point, toolTip)
83857
- }
83858
-
83859
- this.UpdateFloatTooltip=function(point, toolTip)
83860
- {
83861
- if (!this.FloatTooltip) return;
83862
-
83863
- var sendData=
83864
- {
83865
- Tooltip:toolTip,
83866
- Point:point,
83867
- Symbol:this.Symbol,
83868
- Name:this.Name,
83869
- DataType:1,
83870
- };
83871
-
83872
- this.FloatTooltip.Update(sendData);
83873
- }
83874
-
83875
83734
  this.UpdateHQFloatTooltip=function(kData)
83876
83735
  {
83877
83736
  if (!this.FloatTooltip) return;
@@ -145355,7 +145214,7 @@ function JSFloatTooltip()
145355
145214
  this.Style=0; //0=一行一个, 1=2行一个
145356
145215
 
145357
145216
  this.HQChart=null;
145358
- this.MaxRowCount=20;
145217
+ this.MaxRowCount=25;
145359
145218
 
145360
145219
  this.UpColor=g_JSChartResource.UpTextColor;
145361
145220
  this.DownColor=g_JSChartResource.DownTextColor;
@@ -145374,6 +145233,13 @@ function JSFloatTooltip()
145374
145233
  this.DateTimeColor=g_JSChartResource.FloatTooltip.DateTimeColor;
145375
145234
  this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
145376
145235
 
145236
+ this.ValueAlign=
145237
+ {
145238
+ Left:"UMyChart_Tooltip_Float_Text2_Span", //左对齐
145239
+ MarginLeft:'UMyChart_Tooltip_Float_Text3_Span',
145240
+ Right:"UMyChart_Tooltip_Float_Text_Span",
145241
+ }
145242
+
145377
145243
  this.AryData=[]; //输出文字信息
145378
145244
  this.AryText=[]; //表格tr
145379
145245
 
@@ -145386,6 +145252,7 @@ function JSFloatTooltip()
145386
145252
  if (option)
145387
145253
  {
145388
145254
  if (IFrameSplitOperator.IsNumber(option.Style)) this.Style=option.Style;
145255
+ if (IFrameSplitOperator.IsNumber(option.MaxRowCount)) this.MaxRowCount=option.MaxRowCount;
145389
145256
  }
145390
145257
  }
145391
145258
 
@@ -145535,10 +145402,42 @@ function JSFloatTooltip()
145535
145402
  var tooltipData=data.Tooltip;
145536
145403
  if (!tooltipData) return;
145537
145404
 
145538
- if (tooltipData.Type==0)
145405
+ if (tooltipData.Type==0) //K线信息
145539
145406
  {
145540
145407
  this.UpdateKLineToolitp(data);
145541
145408
  }
145409
+ else if (tooltipData.Type==1) //信息地雷
145410
+ {
145411
+ this.UpdateKLineInfoTooltip(data);
145412
+ }
145413
+ else if (tooltipData.Type==2) //交易指标
145414
+ {
145415
+ this.UpdateTradeIndexTooltip(data);
145416
+ }
145417
+ else if (tooltipData.Type==3) //分时图异动信息
145418
+ {
145419
+ this.UpdateMinuteInfoTooltip(data);
145420
+ }
145421
+ else if (tooltipData.Type==4) //ChartMultiSVGIconV2 图标信息
145422
+ {
145423
+ this.UpdatMultiSVGIconV2Tooltip(data);
145424
+ }
145425
+ else if (tooltipData.Type==5) //ChartOX 信息
145426
+ {
145427
+ this.UpdatChartOXTooltip(data);
145428
+ }
145429
+ else if (tooltipData.Type==6) //散点图
145430
+ {
145431
+ this.UpdatChartScatterPlotTooltip(data);
145432
+ }
145433
+ else if (tooltipData.Type==7) //ChartDrawSVG 老版本 单行
145434
+ {
145435
+ this.UpdateChartDrawSVGTooltip(data);
145436
+ }
145437
+ else if (tooltipData.Type==8) //ChartDrawSVG 新版本
145438
+ {
145439
+ this.UpdateChartDrawSVGV2Tooltip(data);
145440
+ }
145542
145441
  }
145543
145442
  else if (data.DataType==2) //更新实时行情数据
145544
145443
  {
@@ -145558,6 +145457,7 @@ function JSFloatTooltip()
145558
145457
  {
145559
145458
  this.KItemCache= kItem;
145560
145459
  this.KItemCacheID=strKItem;
145460
+ this.AryText=this.GetFormatKLineTooltipText(this.KItemCache);
145561
145461
  bUpdata=true;
145562
145462
  }
145563
145463
 
@@ -145567,6 +145467,7 @@ function JSFloatTooltip()
145567
145467
  }
145568
145468
  }
145569
145469
 
145470
+ //K线提示信息
145570
145471
  this.UpdateKLineToolitp=function(data)
145571
145472
  {
145572
145473
  var tooltipData=data.Tooltip;
@@ -145587,6 +145488,7 @@ function JSFloatTooltip()
145587
145488
  {
145588
145489
  this.KItemCache= kItem;
145589
145490
  this.KItemCacheID=strKItem;
145491
+ this.AryText=this.GetFormatKLineTooltipText(this.KItemCache);
145590
145492
  bUpdata=true;
145591
145493
  }
145592
145494
 
@@ -145603,25 +145505,209 @@ function JSFloatTooltip()
145603
145505
  }
145604
145506
  }
145605
145507
 
145606
- this.UpdateTableDOM=function()
145508
+ //ChartDrawSVG 老版本 单行
145509
+ this.UpdateChartDrawSVGTooltip=function(data)
145607
145510
  {
145608
- if (!this.KItemCache) return;
145511
+ var tooltipData=data.Tooltip;
145512
+ if (!tooltipData.Data || !tooltipData.Data.Item || !tooltipData.Data.Item.Tooltip) return;
145513
+ var item=tooltipData.Data.Item.Tooltip;
145609
145514
 
145610
- if (this.HQChart.ClassName=='KLineChartContainer')
145611
- this.AryText=this.GetFormatKLineTooltipText(this.KItemCache);
145612
- else
145613
- return;
145515
+ var aryText=[]
145516
+ var rowItem={ Text:"", HTMLTitle:item.Text, Color:this.ValueColor, IsMergeCell:true };
145517
+ aryText.push(rowItem);
145518
+
145519
+ this.AryText=aryText;
145520
+ this.UpdateTableDOM();
145521
+
145522
+ if (data.Point)
145523
+ {
145524
+ var x=data.Point.X;
145525
+ var y=data.Point.Y+data.Point.YMove;
145526
+ this.Show(x, y);
145527
+ }
145528
+ }
145529
+
145530
+ //ChartDrawSVG 新版本
145531
+ this.UpdateChartDrawSVGV2Tooltip=function(data)
145532
+ {
145533
+ var tooltipData=data.Tooltip;
145534
+ if (!tooltipData.Data || !tooltipData.Data.Item || !tooltipData.Data.Item.Tooltip) return;
145535
+ var aryData=tooltipData.Data.Item.Tooltip.AryText;
145536
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return;
145537
+ var aryText=[];
145538
+ for(var i=0;i<aryData.length;++i)
145539
+ {
145540
+ var item=aryData[i];
145541
+ var rowItem={ Title:"", Text:"", Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
145542
+ if (item.TextColor) rowItem.Color=item.TextColor;
145543
+ if (item.Title) rowItem.Title=item.Title;
145544
+ if (item.Text) rowItem.Text=item.Text;
145545
+
145546
+ aryText.push(rowItem);
145547
+ }
145548
+
145549
+ this.AryText=aryText;
145550
+
145551
+ this.UpdateTableDOM();
145552
+
145553
+ if (data.Point)
145554
+ {
145555
+ var x=data.Point.X;
145556
+ var y=data.Point.Y+data.Point.YMove;
145557
+ this.Show(x, y);
145558
+ }
145559
+ }
145560
+
145561
+ //交易指标
145562
+ this.UpdateTradeIndexTooltip=function(data)
145563
+ {
145564
+ var tooltipData=data.Tooltip;
145565
+ if (!tooltipData.Data || !tooltipData.Data.Data) return;
145566
+
145567
+ var item=tooltipData.Data.Data;
145568
+ var kItem=item.KData;
145569
+ var aryText=[];
145570
+
145571
+ var rowItem={ Title:"日期",Text:IFrameSplitOperator.FormatDateString(kItem.Date,"YYYY-MM-DD"), Color:this.ValueColor };
145572
+ aryText.push(rowItem);
145573
+
145574
+ if (IFrameSplitOperator.IsNumber(kItem.Time))
145575
+ {
145576
+ var format="HH:MM";
145577
+ var rowItem={ Title:"时间",Text:IFrameSplitOperator.FormatTimeString(kItem.Time,format), Color:this.ValueColor };
145578
+ aryText.push(rowItem);
145579
+ }
145580
+
145581
+ var rowItem={ Title:"指标名称:", Text:`${item.Name}${item.Param}`, Color:this.ValueColor };
145582
+ aryText.push(rowItem);
145583
+
145584
+ var rowItem={ Title:"买卖方向:", Text:`${item.Type==1?"买入":"卖出"}`, Color:item.Type==1?this.UpColor:this.DownColor };
145585
+ aryText.push(rowItem);
145586
+
145587
+ var rowItem={ };
145588
+
145589
+ this.AryText=aryText;
145590
+
145591
+ this.UpdateTableDOM();
145614
145592
 
145593
+ if (data.Point)
145594
+ {
145595
+ var x=data.Point.X;
145596
+ var y=data.Point.Y+data.Point.YMove;
145597
+ this.Show(x, y);
145598
+ }
145599
+ }
145600
+
145601
+ //分时图异动信息
145602
+ this.UpdateMinuteInfoTooltip=function(data)
145603
+ {
145604
+ var tooltipData=data.Tooltip;
145605
+ if (!tooltipData.Data || !tooltipData.Data.Data || !tooltipData.Data.Data.Item) return;
145606
+ var item=tooltipData.Data.Data.Item;
145607
+
145608
+ var aryText=[];
145609
+ var rowItem={ Title:"日期",Text:IFrameSplitOperator.FormatDateString(item.Date,"YYYY-MM-DD"), Color:this.ValueColor };
145610
+ aryText.push(rowItem);
145611
+
145612
+ var format="HH:MM";
145613
+ var rowItem={ Title:"时间",Text:IFrameSplitOperator.FormatTimeString(item.Time,format), Color:this.ValueColor };
145614
+ aryText.push(rowItem);
145615
+
145616
+ var rowItem={ Title:"异动", Text:item.Title, Color:this.ValueColor };
145617
+ aryText.push(rowItem);
145618
+
145619
+ this.AryText=aryText;
145620
+ this.UpdateTableDOM();
145621
+
145622
+ if (data.Point)
145623
+ {
145624
+ var x=data.Point.X;
145625
+ var y=data.Point.Y+data.Point.YMove;
145626
+ this.Show(x, y);
145627
+ }
145628
+ }
145629
+
145630
+ //ChartMultiSVGIconV2 图标信息
145631
+ this.UpdatMultiSVGIconV2Tooltip=function(data)
145632
+ {
145633
+ var tooltipData=data.Tooltip;
145634
+ if (!tooltipData.Data || !tooltipData.Data.Item) return;
145635
+
145636
+ var item=tooltipData.Data.Item;
145637
+ var aryText=[];
145638
+
145639
+ var rowItem={ Text:"", HTMLTitle:item.Text, Color:this.ValueColor, IsMergeCell:true };
145640
+ aryText.push(rowItem);
145641
+
145642
+ this.AryText=aryText;
145643
+ this.UpdateTableDOM();
145644
+
145645
+ if (data.Point)
145646
+ {
145647
+ var x=data.Point.X;
145648
+ var y=data.Point.Y+data.Point.YMove;
145649
+ this.Show(x, y);
145650
+ }
145651
+ }
145652
+
145653
+ //ChartOX 信息
145654
+ this.UpdatChartOXTooltip=function(data)
145655
+ {
145656
+ var tooltipData=data.Tooltip;
145657
+ if (!tooltipData.Data || !tooltipData.Data.Data) return;
145658
+
145659
+ var item=tooltipData.Data.Data;
145660
+ var period=this.HQChart.Period;
145661
+ var aryText=[];
145662
+ if (ChartData.IsDayPeriod(period, true))
145663
+ {
145664
+ var strStartDate=IFrameSplitOperator.FormatDateString(item.Start.Date,"YYYY-MM-DD");
145665
+ var strEndDate=IFrameSplitOperator.FormatDateString(item.End.Date,"YYYY-MM-DD");
145666
+
145667
+ aryText.push({ Title:"起始时间",Text:strStartDate, Color:this.ValueColor });
145668
+ aryText.push({ Title:"结束时间",Text:strEndDate, Color:this.ValueColor });
145669
+ }
145670
+ else if (ChartData.IsMinutePeriod(period, true))
145671
+ {
145672
+ var strStartDate=IFrameSplitOperator.FormatDateString(item.Start.Date);
145673
+ var strStartTime=IFrameSplitOperator.FormatTimeString(item.Start.Time,"HH:MM");
145674
+
145675
+ var strEndDate=IFrameSplitOperator.FormatDateString(item.End.Date);
145676
+ var strEndTime=IFrameSplitOperator.FormatTimeString(item.End.Time,"HH:MM");
145677
+
145678
+ aryText.push({ Title:"起始时间",Text:`${strStartDate} ${strStartTime}`, Color:this.ValueColor });
145679
+ aryText.push({ Title:"结束时间",Text:`${strEndDate} ${strEndTime}`, Color:this.ValueColor });
145680
+ }
145681
+
145682
+ this.AryText=aryText;
145683
+ this.UpdateTableDOM();
145684
+
145685
+ if (data.Point)
145686
+ {
145687
+ var x=data.Point.X;
145688
+ var y=data.Point.Y+data.Point.YMove;
145689
+ this.Show(x, y);
145690
+ }
145691
+ }
145692
+
145693
+ this.UpdateTableDOM=function()
145694
+ {
145615
145695
  var index=0;
145616
145696
  for(index=0;index<this.AryText.length && index<this.MaxRowCount;++index)
145617
145697
  {
145618
145698
  var outItem=this.AryText[index];
145619
145699
  var item=this.AryData[index];
145620
145700
 
145621
- item.TitleSpan.innerText=outItem.Title;
145701
+ if (outItem.HTMLTitle) item.TitleSpan.innerHTML=outItem.HTMLTitle
145702
+ else item.TitleSpan.innerText=outItem.Title;
145703
+
145622
145704
  item.TitleSpan.style.color=this.TextColor;
145623
- item.TextSpan.innerText=outItem.Text;
145705
+
145706
+ if (outItem.HTMLText) item.TextSpan.innerHTML=outItem.HTMLText
145707
+ else item.TextSpan.innerText=outItem.Text;
145708
+
145624
145709
  item.TextSpan.style.color=outItem.Color;
145710
+ item.TextTd.style.color=outItem.Color;
145625
145711
 
145626
145712
  if (outItem.ClassName)
145627
145713
  {
@@ -145629,11 +145715,23 @@ function JSFloatTooltip()
145629
145715
  }
145630
145716
  else
145631
145717
  {
145632
- if (item.TextSpan.className!="UMyChart_Tooltip_Float_Text_Span") item.TextSpan.className="UMyChart_Tooltip_Float_Text_Span"
145718
+ if (item.TextSpan.className!=this.ValueAlign.Right) item.TextSpan.className=this.ValueAlign.Right;
145719
+ }
145720
+
145721
+ if (outItem.IsMergeCell) //合并单元格
145722
+ {
145723
+ item.TitleTd.colspan=2;
145724
+ item.TextTd.style.display="none";
145725
+ }
145726
+ else
145727
+ {
145728
+ if (item.TitleTd.colspan!=1) item.TitleTd.colspan=1;
145729
+ item.TextTd.style.display="";
145633
145730
  }
145634
145731
 
145635
145732
  item.Tr.style.display="";
145636
- if (item.Tr2) item.Tr2.style.display="";
145733
+ if (item.Tr2) item.Tr2.style.display="none";
145734
+
145637
145735
  }
145638
145736
 
145639
145737
  for( ; index<this.MaxRowCount; ++index)
@@ -145644,6 +145742,7 @@ function JSFloatTooltip()
145644
145742
  }
145645
145743
  }
145646
145744
 
145745
+
145647
145746
  this.GetFormatKLineTooltipText=function(kItem)
145648
145747
  {
145649
145748
  var data=kItem.Item;
@@ -145660,7 +145759,7 @@ function JSFloatTooltip()
145660
145759
 
145661
145760
  var overlayItem=null;
145662
145761
  if (kItem.IsOverlay)
145663
- overlayItem={ Title:"", Text:kItem.Name, Color:this.TextColor, ClassName:"UMyChart_Tooltip_Float_Text2_Span" };
145762
+ overlayItem={ Title:"", Text:kItem.Name, Color:this.TextColor, ClassName:this.ValueAlign.Left };
145664
145763
 
145665
145764
 
145666
145765
  var yClose=data.YClose; //昨收价|昨结算价
@@ -145707,6 +145806,245 @@ function JSFloatTooltip()
145707
145806
  }
145708
145807
 
145709
145808
 
145809
+ //信息地雷
145810
+ this.UpdateKLineInfoTooltip=function(data)
145811
+ {
145812
+ var tooltipData=data.Tooltip;
145813
+ var symbol=data.Symbol;
145814
+ var defaultfloatPrecision=GetfloatPrecision(symbol);//价格小数位数
145815
+
145816
+ var aryData=tooltipData.Data.Data;
145817
+ var aryText=[]; //输出内容
145818
+ for(var i=0;i<aryData.length;++i)
145819
+ {
145820
+ var item=aryData[i];
145821
+ var infoType=item.InfoType;
145822
+ switch(infoType)
145823
+ {
145824
+ case KLINE_INFO_TYPE.BLOCKTRADING:
145825
+ this.FormatBlockTradingText(item, defaultfloatPrecision, aryText);
145826
+ break;
145827
+ case KLINE_INFO_TYPE.TRADEDETAIL:
145828
+ this.FormatTradeDetailText(item,defaultfloatPrecision,aryText);
145829
+ break;
145830
+ case KLINE_INFO_TYPE.RESEARCH:
145831
+ this.FormatResearchText(item, aryText);
145832
+ break;
145833
+ case KLINE_INFO_TYPE.PFORECAST:
145834
+ this.FormatPerformanceForecastText(item,aryText);
145835
+ break;
145836
+ default:
145837
+ this.FormatDefaultKLineInfoText(item, aryText);
145838
+ break;
145839
+ }
145840
+ }
145841
+
145842
+ var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_KLINE_INFO_FLOAT_TOOLTIP);
145843
+ if (event && event.Callback)
145844
+ {
145845
+ var sendData={ AryText:aryText, Data:data, HQChart:this.HQChart };
145846
+ event.Callback(event, sendData, this);
145847
+ }
145848
+
145849
+ this.AryText=aryText;
145850
+
145851
+ this.UpdateTableDOM();
145852
+
145853
+ if (data.Point)
145854
+ {
145855
+ var x=data.Point.X;
145856
+ var y=data.Point.Y+data.Point.YMove;
145857
+ this.Show(x, y);
145858
+ }
145859
+ }
145860
+
145861
+ this.UpdatChartScatterPlotTooltip=function(data)
145862
+ {
145863
+ var tooltipData=data.Tooltip;
145864
+ if (!tooltipData.Data || !tooltipData.Data.Data || !tooltipData.Data.Data.Tooltip) return;
145865
+ var aryData=tooltipData.Data.Data.Tooltip;
145866
+ var aryText=[]; //输出内容
145867
+
145868
+ for(var i=0;i<aryData.length;++i)
145869
+ {
145870
+ var item=aryData[i];
145871
+ if (!item.Text && !item.Title) continue;
145872
+ var rowItem={ Title:"", Text:"", Color:this.ValueColor };
145873
+ if (item.Title) rowItem.Title=item.Title;
145874
+ if (item.Text) rowItem.Text=item.Text;
145875
+ if (item.TextColor) rowItem.Color=item.TextColor;
145876
+
145877
+ aryText.push(rowItem);
145878
+ }
145879
+
145880
+ this.AryText=aryText;
145881
+ this.UpdateTableDOM();
145882
+
145883
+ if (data.Point)
145884
+ {
145885
+ var x=data.Point.X;
145886
+ var y=data.Point.Y+data.Point.YMove;
145887
+ this.Show(x, y);
145888
+ }
145889
+ }
145890
+
145891
+
145892
+ /////////////////////////////////////////////////////////////////////////////////////////////
145893
+ // 公告数据格式化
145894
+
145895
+ this.FormatDefaultKLineInfoText=function(item, aryOut)
145896
+ {
145897
+ var title;
145898
+ var strDate=IFrameSplitOperator.FormatDateString(item.Date,"YYYY-MM-DD");
145899
+ if (IFrameSplitOperator.IsNumber(item.Time))
145900
+ {
145901
+ var strTime=IFrameSplitOperator.FormatTimeString(item.Time);
145902
+ title=`${strDate} ${strTime}`;
145903
+ }
145904
+ else
145905
+ {
145906
+ title=strDate;
145907
+ }
145908
+
145909
+ var item=
145910
+ {
145911
+ Title:title, //日期
145912
+ Text:item.Title, //标题
145913
+ Color:this.ValueColor,
145914
+ ClassName:this.ValueAlign.MarginLeft
145915
+ };
145916
+
145917
+ aryOut.push(item);
145918
+ }
145919
+
145920
+ //大宗交易
145921
+ this.FormatBlockTradingText=function(data, floatPrecision, aryOut)
145922
+ {
145923
+ var item={ Title:"", Text:"大宗交易", Color:this.TextColor, ClassName:this.ValueAlign.Left };
145924
+ aryOut.push(item);
145925
+
145926
+ var item={ Title:"日期",Text:IFrameSplitOperator.FormatDateString(data.Date,"YYYY-MM-DD"), Color:this.ValueColor };
145927
+ aryOut.push(item);
145928
+
145929
+ var extendata = data.ExtendData;
145930
+ var item={ Title:"成交价:", Text:extendata.Price.toFixed(floatPrecision), Color:this.ValueColor };
145931
+ aryOut.push(item);
145932
+
145933
+ var item={ Title:"收盘价:", Text:extendata.ClosePrice.toFixed(floatPrecision), Color:this.ValueColor };
145934
+ aryOut.push(item);
145935
+
145936
+ var item={ Title:"溢折价率:", Text:extendata.Premium.toFixed(2), Color:this.GetColor(extendata.Premium,0) };
145937
+ aryOut.push(item);
145938
+
145939
+ var item={ Title:"成交量:", Text:IFrameSplitOperator.FormatValueStringV2(extendata.Vol,0,2,this.LanguageID), Color:this.VolColor };
145940
+ aryOut.push(item);
145941
+ }
145942
+
145943
+ //龙虎榜
145944
+ this.FormatTradeDetailText=function(data, floatPrecision, aryOut)
145945
+ {
145946
+ if (!data.ExtendData) return;
145947
+ var extendata = data.ExtendData;
145948
+ if (!IFrameSplitOperator.IsNonEmptyArray(extendata.Detail)) return;
145949
+
145950
+ var item={ Title:"日期",Text:IFrameSplitOperator.FormatDateString(data.Date,"YYYY-MM-DD"), Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
145951
+ aryOut.push(item);
145952
+
145953
+ for(var i=0;i<extendata.Detail.length;++i)
145954
+ {
145955
+ var resItem=extendata.Detail[i];
145956
+ if (i==0)
145957
+ var item={ Title:"上榜原因:",Text:resItem.TypeExplain, Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
145958
+ else
145959
+ var item={ Title:"",Text:resItem.TypeExplain, Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
145960
+
145961
+ aryOut.push(item);
145962
+ }
145963
+
145964
+ if (extendata.FWeek)
145965
+ {
145966
+ var value=extendata.FWeek.Week1;
145967
+ if (IFrameSplitOperator.IsNumber(value))
145968
+ {
145969
+ var item={ Title:"一周后涨幅:",Text:`${value.toFixed(2)}%`, Color:this.GetColor(value,0), ClassName:this.ValueAlign.MarginLeft };
145970
+ aryOut.push(item);
145971
+ }
145972
+
145973
+ var value=extendata.FWeek.Week4;
145974
+ if (IFrameSplitOperator.IsNumber(value))
145975
+ {
145976
+ var item={ Title:"四周后涨幅:",Text:`${value.toFixed(2)}%`, Color:this.GetColor(value,0), ClassName:this.ValueAlign.MarginLeft };
145977
+ aryOut.push(item);
145978
+ }
145979
+ }
145980
+ }
145981
+
145982
+ //调研
145983
+ this.FormatResearchText=function(data,aryOut)
145984
+ {
145985
+ if (!data.ExtendData) return;
145986
+ var extendata = data.ExtendData;
145987
+
145988
+ var item={ Title:"日期",Text:IFrameSplitOperator.FormatDateString(data.Date,"YYYY-MM-DD"), Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
145989
+ aryOut.push(item);
145990
+
145991
+ if (IFrameSplitOperator.IsNonEmptyArray(extendata.Level))
145992
+ {
145993
+ var strLevel="";
145994
+ for(var i=0;i<extendata.Level.length;++i)
145995
+ {
145996
+ var value=extendata.Level[i];
145997
+ if (strLevel.length>0) strLevel+=",";
145998
+ if(value==0) strLevel+="证券代表";
145999
+ else if(value==1) strLevel+="董秘";
146000
+ else if(value==2) strLevel+="总经理";
146001
+ else if(value==3) strLevel+="董事长";
146002
+ }
146003
+
146004
+ var item={ Title:"接待人员:",Text:strLevel, Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
146005
+ aryOut.push(item);
146006
+ }
146007
+ else
146008
+ {
146009
+ var item={ Title:"接待人员",Text:"----", Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
146010
+ aryOut.push(item);
146011
+ }
146012
+
146013
+ if (extendata.Type)
146014
+ {
146015
+ var item={ Title:"", Text:extendata.Type, Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
146016
+ aryOut.push(item);
146017
+ }
146018
+
146019
+ }
146020
+
146021
+ //业绩预告
146022
+ this.FormatPerformanceForecastText=function(data,aryOut)
146023
+ {
146024
+ if (!data.ExtendData) return;
146025
+ var extendata = data.ExtendData;
146026
+ var reportDate=extendata.ReportDate;
146027
+ if (!reportDate) return;
146028
+
146029
+ var year=parseInt(reportDate/10000); //年份
146030
+ var day=reportDate%10000; //日期
146031
+ var reportType="----";
146032
+ if(day == 1231) reportType = '年报';
146033
+ else if(day == 331) reportType ='一季度报';
146034
+ else if(day == 630) reportType = "半年度报";
146035
+ else if(day == 930) reportType = "三季度报";
146036
+
146037
+ var item={ Title:"业绩预告:",Text:data.Title, Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
146038
+ aryOut.push(item);
146039
+
146040
+ var item={ Title:"年份:",Text:`${year}`, Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
146041
+ aryOut.push(item);
146042
+
146043
+ var item={ Title:"类型:",Text:reportType, Color:this.ValueColor, ClassName:this.ValueAlign.MarginLeft };
146044
+ aryOut.push(item);
146045
+ }
146046
+
146047
+
145710
146048
  /////////////////////////////////////////////////////////////////////////////////////////////
145711
146049
  //数据格式化
145712
146050
  this.ForamtPrice=function(price, yClose, defaultfloatPrecision, TitleID)
@@ -146947,7 +147285,7 @@ function HQChartScriptWorker()
146947
147285
 
146948
147286
 
146949
147287
 
146950
- var HQCHART_VERSION="1.1.14049";
147288
+ var HQCHART_VERSION="1.1.14063";
146951
147289
 
146952
147290
  function PrintHQChartVersion()
146953
147291
  {