hqchart 1.1.15011 → 1.1.15018

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.
@@ -4953,12 +4953,27 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4953
4953
  var item=option.LatestPointFlash;
4954
4954
  if (item.Enable)
4955
4955
  {
4956
- this.CreateExtraCanvasElement(JSChart.LatestPointFlashKey, { ZIndex:6 });
4956
+ var zIndex=6;
4957
+ if (IFrameSplitOperator.IsNumber(item.ZIndex)) zIndex=item.ZIndex;
4958
+ this.CreateExtraCanvasElement(JSChart.LatestPointFlashKey, { ZIndex:zIndex });
4957
4959
  chart.CreateExtendChart("LatestPointFlashPaint", item);
4958
4960
  chart.StartLatestPointFlash();
4959
4961
  }
4960
4962
  }
4961
4963
 
4964
+ if (option.KLineCountDown)
4965
+ {
4966
+ var item=option.KLineCountDown;
4967
+ if (item.Enable)
4968
+ {
4969
+ var zIndex=4;
4970
+ if (IFrameSplitOperator.IsNumber(item.ZIndex)) zIndex=item.ZIndex;
4971
+ this.CreateExtraCanvasElement(JSChart.KLineCountDownKey, { ZIndex:zIndex });
4972
+ chart.CreateExtendChart("KLineCountDownPaint", item);
4973
+ chart.StartCountDown();
4974
+ }
4975
+ }
4976
+
4962
4977
  return chart;
4963
4978
  }
4964
4979
 
@@ -6017,6 +6032,9 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
6017
6032
  if (option.FloatTooltip && option.FloatTooltip.Enable)
6018
6033
  chart.InitalFloatTooltip(option.FloatTooltip);
6019
6034
 
6035
+ if (option.SmallFloatTooltip && option.SmallFloatTooltip.Enable)
6036
+ chart.InitalSmallFloatTooltip(option.SmallFloatTooltip);
6037
+
6020
6038
  if (option.SelectRectDialog && option.SelectRectDialog.Enable)
6021
6039
  chart.InitalSelectRectDialog(option.SelectRectDialog);
6022
6040
 
@@ -6529,6 +6547,7 @@ JSChart.CorssCursorCanvasKey="hqchart_corsscursor";
6529
6547
  JSChart.TooltipCursorCanvasKey="hqchart_tooltip";
6530
6548
  JSChart.RectDragCanvasKey="hqchart_drag_rect";
6531
6549
  JSChart.LatestPointFlashKey="hqchart_point_flash"; //最新数据点闪烁
6550
+ JSChart.KLineCountDownKey="hqchart_kline_countdown"; //倒计时
6532
6551
 
6533
6552
  //初始化
6534
6553
  JSChart.Init=function(divElement,bScreen,bCacheCanvas)
@@ -6975,6 +6994,8 @@ var JSCHART_EVENT_ID=
6975
6994
  ON_REPORT_SHOW_TOOLTIP:175, //报价列表 提示信息\
6976
6995
 
6977
6996
  ON_FORMAT_TVLONGPOSITION_LABEL:176,
6997
+
6998
+ ON_FORMAT_COUNTDOWN_TEXT:177, //倒计时
6978
6999
  }
6979
7000
 
6980
7001
  var JSCHART_OPERATOR_ID=
@@ -7442,7 +7463,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7442
7463
  this.DisplayLatestOption={ Timer:null, Enable: false, DelayTime:60*1000*3, LastPoint:null };
7443
7464
  this.DrawDynamicInfoOption={ Timer:null, Enable:false , DelayTime:10 };
7444
7465
 
7445
- this.LatestPointFlashOption={ Timer:null, DelayTime:100 };
7466
+ this.LatestPointFlashOption={ Timer:null, DelayTime:100 }; //最后一个数据闪烁
7467
+ this.CountDownOption={ Timer:null, DelayTime:300 }; //倒计时
7446
7468
 
7447
7469
  this.CustomChartDrag; //自定义图形的拖拽操作 { Type:, Data: }
7448
7470
 
@@ -7460,6 +7482,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7460
7482
  this.FloatTooltip; //浮动tooltip信息
7461
7483
  this.DialogSearchIndex; //指标搜索
7462
7484
  this.DialogModifyIndexParam; //指标参数修改
7485
+ this.SmallFloatTooltipGroup; //小浮框tooltip信息集合
7463
7486
 
7464
7487
 
7465
7488
  this.RestoreFocusTimer=null; //恢复焦点定时器
@@ -7544,6 +7567,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7544
7567
 
7545
7568
  this.GlobalOption.LatestPoint=null;
7546
7569
  this.GlobalOption.TradeStatus=null;
7570
+ this.GlobalOption.CountDown=null;
7547
7571
  }
7548
7572
 
7549
7573
  this.RestoreFocus=function(delay)
@@ -7616,6 +7640,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7616
7640
  this.FloatTooltip.Create();
7617
7641
  }
7618
7642
 
7643
+
7644
+ this.InitalSmallFloatTooltip=function(option)
7645
+ {
7646
+ if (this.SmallFloatTooltipGroup) return;
7647
+
7648
+ this.SmallFloatTooltipGroup=new JSSmallFloatTooltipGroup();
7649
+ this.SmallFloatTooltipGroup.Inital(this, option);
7650
+ this.SmallFloatTooltipGroup.Create();
7651
+ }
7652
+
7653
+
7619
7654
  this.InitalModifyDrawDialog=function()
7620
7655
  {
7621
7656
  if ( this.DialogModifyDraw) return;
@@ -7793,6 +7828,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7793
7828
  this.FloatTooltip.Hide();
7794
7829
  }
7795
7830
 
7831
+ this.HideSmallFloatTooltip=function()
7832
+ {
7833
+ if (!this.SmallFloatTooltipGroup) return;
7834
+
7835
+ this.SmallFloatTooltipGroup.Hide();
7836
+ }
7837
+
7796
7838
  this.DestroyTooltipDialog=function()
7797
7839
  {
7798
7840
  if (!this.DialogTooltip) return;
@@ -7809,6 +7851,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7809
7851
  this.FloatTooltip=null;
7810
7852
  }
7811
7853
 
7854
+ this.DestroySmallFloatTooltip=function()
7855
+ {
7856
+ if (!this.SmallFloatTooltipGroup) return;
7857
+
7858
+ this.SmallFloatTooltipGroup.Destroy();
7859
+ this.SmallFloatTooltipGroup=null;
7860
+ }
7861
+
7812
7862
  this.DestroySearchIndexDialog=function()
7813
7863
  {
7814
7864
  if (!this.DialogSearchIndex) return;
@@ -7862,6 +7912,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7862
7912
  {
7863
7913
  this.HideFloatTooltip();
7864
7914
  this.CloseTooltipDialog();
7915
+ this.HideSmallFloatTooltip();
7865
7916
 
7866
7917
  if (this.DialogDrawTool) this.DialogDrawTool.Close();
7867
7918
  this.CloseModifyDrawDialog();
@@ -7951,6 +8002,30 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7951
8002
  chart.FlashCount=flashCount;
7952
8003
  }
7953
8004
 
8005
+ this.StartCountDown=function()
8006
+ {
8007
+ this.CountDownOption.Timer=setInterval(()=>
8008
+ {
8009
+ this.DrawCountDown();
8010
+ }, this.CountDownOption.DelayTime);
8011
+ }
8012
+
8013
+ this.DrawCountDown=function()
8014
+ {
8015
+ var finder=this.GetExtendChartByClassName("KLineCountDownPaint");
8016
+ if (finder && finder.Chart)
8017
+ finder.Chart.Draw();
8018
+ }
8019
+
8020
+ this.StopCountDown=function()
8021
+ {
8022
+ if (this.CountDownOption.Timer)
8023
+ {
8024
+ clearInterval(this.CountDownOption.Timer);
8025
+ this.CountDownOption.Timer=null;
8026
+ }
8027
+ }
8028
+
7954
8029
  this.ChartDestroy=function() //销毁
7955
8030
  {
7956
8031
  this.IsDestroy=true;
@@ -7958,6 +8033,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7958
8033
 
7959
8034
  this.DestroyTooltipDialog();
7960
8035
  this.DestroyFloatTooltip();
8036
+ this.DestroySmallFloatTooltip();
7961
8037
 
7962
8038
  this.DestroySearchIndexDialog();
7963
8039
  this.DestroyDialogModifyIndexParam();
@@ -7972,6 +8048,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7972
8048
  if (this.DestroyPopMinuteChart) this.DestroyPopMinuteChart();
7973
8049
 
7974
8050
  this.StopLatestPointFlash();
8051
+ this.StopCountDown();
7975
8052
 
7976
8053
  document.oncontextmenu=null;
7977
8054
  this.RemoveAllEventListener();
@@ -11414,6 +11491,49 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11414
11491
  return null;
11415
11492
  }
11416
11493
 
11494
+ this.GetCorssCursorTooltipData=function(option)
11495
+ {
11496
+ if (!this.ChartCorssCursor) return null;
11497
+ if (this.ChartCorssCursor.Status===0) return null;
11498
+
11499
+ var kItem=this.ChartCorssCursor.StringFormatX.KItem;
11500
+ if (!kItem) return null;
11501
+
11502
+ //X轴取十字光标坐标
11503
+ var toolTip={ AryData:[], X:this.ChartCorssCursor.StringFormatX.Point.X };
11504
+
11505
+ for(var i=0;i<this.ChartPaint.length;++i)
11506
+ {
11507
+ var item=this.ChartPaint[i];
11508
+ if (!item.GetCorssCursorTooltipData) continue;
11509
+
11510
+ item.GetCorssCursorTooltipData(kItem, toolTip);
11511
+ }
11512
+
11513
+ if (IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))
11514
+ {
11515
+ for(var i=0;i<this.Frame.SubFrame.length;++i)
11516
+ {
11517
+ var subFrame=this.Frame.SubFrame[i];
11518
+ for(var j=0;j<subFrame.OverlayIndex.length;++j)
11519
+ {
11520
+ var overlayItem=subFrame.OverlayIndex[j];
11521
+ for(var k=0;k<overlayItem.ChartPaint.length;++k)
11522
+ {
11523
+ var item=overlayItem.ChartPaint[k];
11524
+ if (!item.GetCorssCursorTooltipData) continue;
11525
+
11526
+ item.GetCorssCursorTooltipData(kItem, toolTip);
11527
+ }
11528
+ }
11529
+ }
11530
+ }
11531
+
11532
+ if (!IFrameSplitOperator.IsNonEmptyArray(toolTip.AryData)) return null;
11533
+
11534
+ return toolTip;
11535
+ }
11536
+
11417
11537
  this.PtInExtendChartButtons=function(x,y)
11418
11538
  {
11419
11539
  for(var i=0;i<this.ExtendChartPaint.length; ++i)
@@ -11727,6 +11847,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11727
11847
  }
11728
11848
  }
11729
11849
 
11850
+ var corssTooltipData=this.GetCorssCursorTooltipData(null);
11851
+ if (corssTooltipData) this.DrawSmallFloatTooltip(corssTooltipData);
11852
+ else this.HideSmallFloatTooltip();
11853
+
11730
11854
  this.SetCursor(mouseStatus);
11731
11855
  }
11732
11856
 
@@ -12451,6 +12575,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12451
12575
 
12452
12576
  this.ShowTooltipByKeyDown=function()
12453
12577
  {
12578
+ var corssTooltipData=this.GetCorssCursorTooltipData(null);
12579
+ if (corssTooltipData) this.DrawSmallFloatTooltip(corssTooltipData);
12580
+ else this.HideSmallFloatTooltip();
12581
+
12454
12582
  if (!this.KLineTooltipConfig.Enable || !this.KLineTooltipConfig.EnableKeyDown)
12455
12583
  {
12456
12584
  this.HideFloatTooltip();
@@ -12469,7 +12597,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12469
12597
  var kItem=kData.Data[dataIndex];
12470
12598
  if (!kItem) return;
12471
12599
 
12472
- var data=this.Frame.Data;
12473
12600
  var toolTip=new TooltipData();
12474
12601
  toolTip.Data=kItem;
12475
12602
  toolTip.ChartPaint=this.ChartPaint[0];
@@ -12837,6 +12964,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12837
12964
  if (this.Tooltip.style.display!="none") this.Tooltip.style.display = "none";
12838
12965
 
12839
12966
  this.HideFloatTooltip();
12967
+ this.HideSmallFloatTooltip();
12968
+ }
12969
+
12970
+ this.DrawSmallFloatTooltip=function(toolTip)
12971
+ {
12972
+ if (!this.SmallFloatTooltipGroup) return;
12973
+
12974
+ this.UpdateSmallFloatTooltip(toolTip)
12975
+ }
12976
+
12977
+ this.UpdateSmallFloatTooltip=function(toolTip)
12978
+ {
12979
+ if (!this.SmallFloatTooltipGroup) return;
12980
+
12981
+ var sendData=
12982
+ {
12983
+ Tooltip:toolTip,
12984
+ Symbol:this.Symbol,
12985
+ Name:this.Name,
12986
+ DataType:1,
12987
+ };
12988
+
12989
+ this.SmallFloatTooltipGroup.Update(sendData);
12840
12990
  }
12841
12991
 
12842
12992
  this.UpdateSelectRect=function(start,end)
@@ -51634,6 +51784,69 @@ function ChartStackedBar()
51634
51784
 
51635
51785
  }
51636
51786
 
51787
+ //绘制随光标移动的浮动文字。
51788
+ //用法:DRAWFLAGTEXT(COND,PRICE,TEXT),光标处当COND条件满足时,在PRICE位置用半透明窗口显示文字TEXT,随光标移动而移动。将\\n插入TEXT内容中可实现文字换行。
51789
+ //例如:DRAWFLAGTEXT(CLOSE/OPEN>1.08,LOW,'大阳线')表示当光标移动到涨幅大于8%的地方,在最低价位置显示'大阳线'字样的浮动窗口。
51790
+ function ChartDrawFlagText()
51791
+ {
51792
+ this.newMethod=IChartPainting; //派生
51793
+ this.newMethod();
51794
+ delete this.newMethod;
51795
+
51796
+ this.ClassName="ChartDrawFlagText";
51797
+
51798
+ this.MapCache=null; //key=date/date-time value={ Date:, Time:, Data:[ ] }
51799
+ this.AryData=[];
51800
+
51801
+ this.GetKValue=ChartData.GetKValue;
51802
+ this.BuildCacheData=function()
51803
+ {
51804
+ var mapData=new Map();
51805
+ this.MapCache=mapData;
51806
+ if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
51807
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryData)) return;
51808
+
51809
+ for(var i=0;i<this.Data.Data.length;++i)
51810
+ {
51811
+ var item=this.AryData[i];
51812
+ if (!item) continue;
51813
+
51814
+ var kItem=this.Data.Data[i];
51815
+ item.Date=kItem.Date;
51816
+ item.Time=kItem.Time;
51817
+
51818
+ var key=this.BuildKey(kItem);
51819
+ mapData.set(key, item);
51820
+ }
51821
+ }
51822
+
51823
+ this.Draw=function()
51824
+ {
51825
+
51826
+ }
51827
+
51828
+ this.GetCorssCursorTooltipData=function(kItem, tooltip)
51829
+ {
51830
+ if (!kItem) return null;
51831
+ if (!this.MapCache) return null;
51832
+
51833
+ var key=this.BuildKey(kItem);
51834
+ if (!this.MapCache.has(key)) return null;
51835
+
51836
+ var item=this.MapCache.get(key);
51837
+ if (item.YValue>this.ChartFrame.HorizontalMax || item.YValue<this.ChartFrame.HorizontalMin) return null;
51838
+
51839
+ var y=this.ChartFrame.GetYFromData(item.YValue,false);
51840
+ tooltip.AryData.push({ Data:item, Y:y, ChartPaint:this, Type:1 });
51841
+ return item;
51842
+ }
51843
+
51844
+ this.GetMaxMin=function()
51845
+ {
51846
+ return {Min:null, Max:null};
51847
+ }
51848
+ }
51849
+
51637
51850
  //锁 支持横屏
51638
51851
  function ChartLock()
51639
51852
  {
@@ -52062,7 +52275,8 @@ function ExtendChartPaintFactory()
52062
52275
  ["DragMovePaint", { Create:function() { return new DragMovePaint(); } }],
52063
52276
  ["SessionBreaksPaint", { Create:function() { return new SessionBreaksPaint(); }}],
52064
52277
  ["FrameButtomToolbarPaint", {Create:function() { return new FrameButtomToolbarPaint(); }}],
52065
- ["LatestPointFlashPaint", {Create:function() { return new LatestPointFlashPaint(); }}]
52278
+ ["LatestPointFlashPaint", {Create:function() { return new LatestPointFlashPaint(); }}],
52279
+ ["KLineCountDownPaint", { Create:function(){ return new KLineCountDownPaint(); }}]
52066
52280
  ]
52067
52281
  );
52068
52282
 
@@ -56804,6 +57018,238 @@ function LatestPointFlashPaint()
56804
57018
  }
56805
57019
  }
56806
57020
 
57021
+
57022
+ //K线倒计时
57023
+ function KLineCountDownPaint()
57024
+ {
57025
+ this.newMethod=IExtendChartPainting; //派生
57026
+ this.newMethod();
57027
+ delete this.newMethod;
57028
+
57029
+ this.ClassName='KLineCountDownPaint';
57030
+ this.HQChart;
57031
+ this.CanvasEx;
57032
+ this.Frequency=500; //闪烁频率ms
57033
+ this.Font=g_JSChartResource.KLineCountDownPaint.Font;
57034
+ this.PriceColor=g_JSChartResource.KLineCountDownPaint.PriceColor;
57035
+ this.TimeColor=g_JSChartResource.KLineCountDownPaint.TimeColor;
57036
+
57037
+ this.TextMargin=CloneData(g_JSChartResource.KLineCountDownPaint.TextMargin);
57038
+ this.LabelMargin=CloneData(g_JSChartResource.KLineCountDownPaint.LabelMargin);
57039
+ this.LineConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Line); //{ IsShow:true, Width:1, Dash:[3,4] };
57040
+
57041
+ this.UnchangeConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Unchange);
57042
+ this.UpConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Up);
57043
+ this.DownConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Down);
57044
+
57045
+ //临时使用
57046
+ this.MainFrame;
57047
+ this.LastItem;
57048
+
57049
+ this.SetOption=function(option)
57050
+ {
57051
+ if (this.HQChart)
57052
+ {
57053
+ var extraElement=this.HQChart.GetExtraCanvas(JSChart.KLineCountDownKey);
57054
+ if (extraElement && extraElement.Canvas) this.CanvasEx=extraElement.Canvas; //绑定独立的画布
57055
+ }
57056
+
57057
+ if (option)
57058
+ {
57059
+ if (IFrameSplitOperator.IsNumber(option.Frequency)) this.Frequency=option.Frequency;
57060
+ if (option.TextMargin) CopyMarginConfig(option.TextMargin, this.TextMargin);
57061
+ if (option.LabelMargin) CopyMarginConfig(option.LabelMargin, this.LabelMargin);
57062
+ if (option.UnchangeColor) this.UnchangeColor=option.UnchangeColor;
57063
+ if (option.UpColor) this.UpColor=option.UpColor;
57064
+ if (option.DownColor) this.DownColor=option.DownColor;
57065
+
57066
+ if (option.Line)
57067
+ {
57068
+ var item=option.Line;
57069
+ if (IFrameSplitOperator.IsBool(item.IsShow)) this.LineConfig.IsShow=item.IsShow;
57070
+ if (IFrameSplitOperator.IsNumber(item.Width)) this.LineConfig.Width=item.Width;
57071
+ if (item.Dash) this.LineConfig.Dash=item.Dash;
57072
+ }
57073
+ }
57074
+ }
57075
+
57076
+ this.ReloadResource=function(resource)
57077
+ {
57078
+ this.Font=g_JSChartResource.KLineCountDownPaint.Font;
57079
+ this.PriceColor=g_JSChartResource.KLineCountDownPaint.PriceColor;
57080
+ this.TimeColor=g_JSChartResource.KLineCountDownPaint.TimeColor;
57081
+
57082
+ this.TextMargin=CloneData(g_JSChartResource.KLineCountDownPaint.TextMargin);
57083
+ this.LabelMargin=CloneData(g_JSChartResource.KLineCountDownPaint.LabelMargin);
57084
+ this.LineConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Line); //{ IsShow:true, Width:1, Dash:[3,4] };
57085
+
57086
+ this.UnchangeConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Unchange);
57087
+ this.UpConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Up);
57088
+ this.DownConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Down);
57089
+ }
57090
+
57091
+ this.Draw=function()
57092
+ {
57093
+ this.MainFrame=null;
57094
+ this.LastItem=null;
57095
+
57096
+ if (!this.HQChart) return;
57097
+ if (!this.CanvasEx) return;
57098
+ this.HQChart.ClearCanvas(this.CanvasEx);
57099
+ var kData=this.HQChart.GetKData();
57100
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
57101
+
57102
+ var lastItem=kData.Data[kData.Data.length-1];
57103
+ if (!lastItem || !IFrameSplitOperator.IsNumber(lastItem.Close)) return;
57104
+ var frame=this.ChartFrame.SubFrame[0].Frame;
57105
+ if (!frame) return;
57106
+ var price=lastItem.Close;
57107
+ if (price>frame.HorizontalMax || price<frame.HorizontalMin) return;
57108
+
57109
+ if (frame.IsHScreen) return;
57110
+
57111
+ this.MainFrame=frame;
57112
+ this.LastItem=lastItem;
57113
+
57114
+ this.CanvasEx.save();
57115
+ this.DrawDownPaint();
57116
+ this.CanvasEx.restore();
57117
+
57118
+ this.MainFrame=null;
57119
+ this.LastItem=null;
57120
+ //if (!this.HQChart.GlobalOption || !this.HQChart.GlobalOption.CountDown) return;
57121
+ }
57122
+
57123
+ this.DrawDownPaint=function()
57124
+ {
57125
+ if (!this.MainFrame || !this.LastItem || !IFrameSplitOperator.IsNumber(this.LastItem.Close)) return;
57126
+
57127
+ var decNum=GetfloatPrecision(this.HQChart.Symbol); //小数位数
57128
+ var yPrice=this.MainFrame.GetYFromData(this.LastItem.Close,false);
57129
+ var strPrice=this.LastItem.Close.toFixed(decNum);
57130
+
57131
+ var config=this.GetColorConfig(this.LastItem);
57132
+ var out={ BGColor:config.BGColor, Font:this.Font, AryText:[ ], YPrice:yPrice };
57133
+
57134
+ var item={ Text:strPrice, Color:config.PriceColor };
57135
+ out.AryText.push(item);
57136
+
57137
+ var item={ Text:"--:--", Color:config.TimeColor};
57138
+ out.AryText.push(item);
57139
+
57140
+ var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_COUNTDOWN_TEXT);
57141
+ if (event && event.Callback)
57142
+ {
57143
+ var sendData={ LastItem:this.LastItem, Frame:this.MainFrame, Out:out, Period:this.HQChart.Period, Symbol:this.HQChart.Symbol };
57144
+ event.Callback(event, sendData, this);
57145
+ }
57146
+
57147
+ if (!this.CalculateLableSize(out)) return;
57148
+
57149
+ this.DrawLable(out);
57150
+ }
57151
+
57152
+ this.CalculateLableSize=function(out)
57153
+ {
57154
+ if (!out || !IFrameSplitOperator.IsNonEmptyArray(out.AryText)) return false;
57155
+
57156
+ this.CanvasEx.font=this.Font;
57157
+ this.FontHeight=this.CanvasEx.measureText("O").width; //行高
57158
+
57159
+ var lableWidth=0, lableHeight=0
57160
+ for(var i=0; i<out.AryText.length; ++i)
57161
+ {
57162
+ var item=out.AryText[i];
57163
+ if (!item || !item.Text) continue;
57164
+ item.TextWidth=this.CanvasEx.measureText(item.Text).width;
57165
+ item.TextWidth+=this.TextMargin.Left+this.TextMargin.Right;
57166
+
57167
+ if (lableWidth<item.TextWidth) lableWidth=item.TextWidth;
57168
+ lableHeight+=this.FontHeight+this.TextMargin.Top+this.TextMargin.Bottom;
57169
+ }
57170
+
57171
+ out.Width=lableWidth+this.LabelMargin.Left+this.LabelMargin.Right;
57172
+ out.Height=lableHeight+this.LabelMargin.Top+this.LabelMargin.Bottom;
57173
+
57174
+ return true;
57175
+ }
57176
+
57177
+ this.FixedRect=function(rt)
57178
+ {
57179
+ rt.Left=ToFixedRect(rt.Left);
57180
+ rt.Top=ToFixedRect(rt.Top);
57181
+ rt.Width=ToFixedRect(rt.Width);
57182
+ rt.Height=ToFixedRect(rt.Height);
57183
+
57184
+ rt.Right=rt.Left+rt.Width;
57185
+ rt.Bottom=rt.Top+rt.Height;
57186
+ }
57187
+
57188
+ this.DrawLable=function(out)
57189
+ {
57190
+ if (!out || !IFrameSplitOperator.IsNonEmptyArray(out.AryText)) return;
57191
+
57192
+ var border=this.MainFrame.GetBorder();
57193
+ var chartBorder=this.MainFrame.ChartBorder;
57194
+ var lineHeight=this.FontHeight+this.TextMargin.Top+this.TextMargin.Bottom;
57195
+ if (chartBorder.Right>10 ) //外部刻度
57196
+ {
57197
+ var rtBG={ Left:border.Right, Top:out.YPrice-lineHeight/2, Width:out.Width, Height:out.Height };
57198
+ rtBG.Right=rtBG.Left+rtBG.Width;
57199
+ if (rtBG.Right>border.ChartWidth)
57200
+ {
57201
+ rtBG.Right=border.ChartWidth-1;
57202
+ rtBG.Left=rtBG.Right-rtBG.Width;
57203
+ }
57204
+
57205
+ this.FixedRect(rtBG);
57206
+ this.CanvasEx.fillStyle=out.BGColor;
57207
+ this.CanvasEx.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
57208
+ }
57209
+
57210
+ this.Canvas.textAlign = "left";
57211
+ this.Canvas.textBaseline = "bottom";
57212
+ var yText=rtBG.Top+lineHeight+this.LabelMargin.Top;
57213
+ var xText=rtBG.Left+this.TextMargin.Left+this.LabelMargin.Left;
57214
+ for(var i=0;i<out.AryText.length;++i)
57215
+ {
57216
+ var item=out.AryText[i];
57217
+ var yOffset=this.TextMargin.YOffset;
57218
+
57219
+ this.CanvasEx.fillStyle=item.Color;
57220
+ this.CanvasEx.fillText(item.Text, xText, yText+yOffset-this.TextMargin.Bottom);
57221
+
57222
+ yText+=lineHeight;
57223
+ }
57224
+
57225
+ //线段
57226
+ var config=this.LineConfig;
57227
+ if (config.IsShow)
57228
+ {
57229
+ this.CanvasEx.strokeStyle=out.BGColor;
57230
+ this.CanvasEx.lineWidth=config.Width;
57231
+ if (IFrameSplitOperator.IsNonEmptyArray(config.Dash)) this.CanvasEx.setLineDash(config.Dash);
57232
+ this.CanvasEx.beginPath();
57233
+ var xLeft=border.LeftEx;
57234
+ var xRight=rtBG.Left;
57235
+ this.CanvasEx.moveTo(xLeft,ToFixedPoint(out.YPrice));
57236
+ this.CanvasEx.lineTo(xRight,ToFixedPoint(out.YPrice));
57237
+ this.CanvasEx.stroke();
57238
+ }
57239
+ }
57240
+
57241
+ this.GetColorConfig=function(kItem, symbol)
57242
+ {
57243
+ var config=this.UnchangeConfig;
57244
+ if (!kItem) return config;
57245
+
57246
+ if (kItem.Close>kItem.YClose) config=this.UpConfig;
57247
+ else if (kItem.Close<kItem.YClose) config=this.DownConfig;
57248
+
57249
+ return config;
57250
+ }
57251
+ }
57252
+
56807
57253
  //拖拽效果图
56808
57254
  var JSCHART_DRAGCHART_TYPE_ID=
56809
57255
  {
@@ -81587,6 +82033,18 @@ function JSChartResource()
81587
82033
  SplitLine:{ Color:'rgb(73,133,231)', Width:1*GetDevicePixelRatio(), Dash:[5*GetDevicePixelRatio(),5*GetDevicePixelRatio()] }
81588
82034
  }
81589
82035
 
82036
+ this.KLineCountDownPaint=
82037
+ {
82038
+ Font:`${14*GetDevicePixelRatio()}px 微软雅黑`,
82039
+ TextMargin:{ Left:0, Right:0, Bottom:2, Top:2, YOffset:0 },
82040
+ LabelMargin:{ Left:5, Right:5, Bottom:4, Top:2 },
82041
+ Line:{ IsShow:true, Width:1, Dash:[5*GetDevicePixelRatio(), 5*GetDevicePixelRatio()] },
82042
+
82043
+ Unchange:{ BGColor:"rgb(0,0,0)", PriceColor:"rgb(250,250,250)", TimeColor:"rgb(190,190,190)" },
82044
+ Up:{ BGColor:"rgb(238,21,21)", PriceColor:"rgb(250,250,250)", TimeColor:"rgb(190,190,190)" },
82045
+ Down:{ BGColor:"rgb(25,158,0)", PriceColor:"rgb(250,250,250)", TimeColor:"rgb(190,190,190)" },
82046
+ }
82047
+
81590
82048
 
81591
82049
  //成交明细
81592
82050
  this.DealList=
@@ -82919,6 +83377,61 @@ function JSChartResource()
82919
83377
  if (style.ChartScatterPlotV2) this.SetChartScatterPlotV2(style.ChartScatterPlotV2);
82920
83378
 
82921
83379
  if (style.ChartDrawTVLongPosition) this.SetChartDrawTVLongPosition(style.ChartDrawTVLongPosition);
83380
+ if (style.KLineCountDownPaint) this.SetKLineCountDownPaint(style.KLineCountDownPaint);
83381
+ }
83382
+
83383
+
83384
+ this.SetKLineCountDownPaint=function(style)
83385
+ {
83386
+ var dest=this.KLineCountDownPaint;
83387
+ if (style.Font) dest.Font=style.Font;
83388
+
83389
+ if (style.TextMargin)
83390
+ {
83391
+ var item=style.TextMargin;
83392
+ CopyMarginConfig(dest.TextMargin, item);
83393
+ if (IFrameSplitOperator.IsNumber(item.YOffset)) dest.TextMargin.YOffset=item.YOffset;
83394
+ }
83395
+
83396
+ if (style.LabelMargin) CopyMarginConfig(dest.LabelMargin, style.LabelMargin);
83397
+
83398
+ if (style.Line)
83399
+ {
83400
+ var item=style.Line;
83401
+ if (IFrameSplitOperator.IsNumber(item.Width)) dest.Line.Width=item.Width;
83402
+ if (IFrameSplitOperator.IsBool(item.IsShow)) dest.Line.Width=item.Width;
83403
+ if (item.Dash) dest.Line.Dash=item.Dash;
83404
+ }
83405
+
83406
+ if (style.Unchange)
83407
+ {
83408
+ var item=style.Unchange;
83409
+ var subDest=dest.Unchange;
83410
+
83411
+ if (item.BGColor) subDest.BGColor=item.BGColor;
83412
+ if (item.PriceColor) subDest.PriceColor=item.PriceColor;
83413
+ if (item.TimeColor) subDest.TimeColor=item.TimeColor;
83414
+ }
83415
+
83416
+ if (style.Up)
83417
+ {
83418
+ var item=style.Up;
83419
+ var subDest=dest.Up;
83420
+
83421
+ if (item.BGColor) subDest.BGColor=item.BGColor;
83422
+ if (item.PriceColor) subDest.PriceColor=item.PriceColor;
83423
+ if (item.TimeColor) subDest.TimeColor=item.TimeColor;
83424
+ }
83425
+
83426
+ if (style.Down)
83427
+ {
83428
+ var item=style.Down;
83429
+ var subDest=dest.Down;
83430
+
83431
+ if (item.BGColor) subDest.BGColor=item.BGColor;
83432
+ if (item.PriceColor) subDest.PriceColor=item.PriceColor;
83433
+ if (item.TimeColor) subDest.TimeColor=item.TimeColor;
83434
+ }
82922
83435
  }
82923
83436
 
82924
83437
 
@@ -118028,6 +118541,55 @@ function JSDraw(errorHandler,symbolData)
118028
118541
  this.ErrorHandler=errorHandler;
118029
118542
  this.SymbolData=symbolData;
118030
118543
 
118544
+ //绘制随光标移动的浮动文字。
118545
+ //用法: DRAWFLAGTEXT(COND,PRICE,TEXT),光标处当COND条件满足时,在PRICE位置用半透明窗口显示文字TEXT,随光标移动而移动。将\\n插入TEXT内容中可实现文字换行。
118546
+ //例如:DRAWFLAGTEXT(CLOSE/OPEN>1.08,LOW,'大阳线')表示当光标移动到涨幅大于8%的地方,在最低价位置显示'大阳线'字样的浮动窗口。
118547
+ this.DRAWFLAGTEXT=function(condition,price,text)
118548
+ {
118549
+ var drawData=[];
118550
+ var result={ DrawData:drawData, DrawType:'DRAWFLAGTEXT' };
118551
+ if (!text) return result;
118552
+
118553
+ if (Array.isArray(condition))
118554
+ {
118555
+ if (condition.length<=0) return result;
118556
+
118557
+ var bSinglePrice=IFrameSplitOperator.IsNumber(price);
118558
+ for(var i=0; i<condition.length; ++i)
118559
+ {
118560
+ drawData[i]=null;
118561
+
118562
+ if (isNaN(condition[i]) || !condition[i]) continue;
118563
+
118564
+ if (bSinglePrice)
118565
+ {
118566
+ drawData[i]={ YValue:price, Text:text };
118567
+ }
118568
+ else
118569
+ {
118570
+ if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:text };
118571
+ }
118572
+ }
118573
+ }
118574
+ else if (IFrameSplitOperator.IsPlusNumber(condition))
118575
+ {
118576
+ var bSinglePrice=IFrameSplitOperator.IsNumber(price);
118577
+ for(var i=0;i<this.SymbolData.Data.Data.length;++i)
118578
+ {
118579
+ if (bSinglePrice)
118580
+ {
118581
+ drawData[i]={ YValue:price, Text:text };
118582
+ }
118583
+ else
118584
+ {
118585
+ if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:text };
118586
+ }
118587
+ }
118588
+ }
118589
+
118590
+ return result;
118591
+ }
118592
+
118031
118593
  this.DRAWTEXT=function(condition,price,text)
118032
118594
  {
118033
118595
  let drawData=[];
@@ -120408,6 +120970,7 @@ JSDraw.prototype.IsDrawFunction=function(name)
120408
120970
  "VERTLINE","HORLINE","TIPICON",
120409
120971
  "BUY","SELL","SELLSHORT","BUYSHORT",
120410
120972
  "DRAWLASTBARICON","DRAWLASTBARNUMBER", "DRAWLASTBARTEXT","DRAWTABLE","DRAWPIE","DRAWRADAR","DRAWDOUGHNUT",
120973
+ "DRAWFLAGTEXT"
120411
120974
  ]);
120412
120975
  if (setFunctionName.has(name)) return true;
120413
120976
 
@@ -126973,6 +127536,10 @@ function JSExecute(ast,option)
126973
127536
  node.Draw=this.Draw.DRAWTEXT_FIX(args[0],args[1],args[2],args[3],args[4]);
126974
127537
  node.Out=[];
126975
127538
  break;
127539
+ case "DRAWFLAGTEXT":
127540
+ node.Draw=this.Draw.DRAWFLAGTEXT(args[0],args[1],args[2]);
127541
+ node.Out=[];
127542
+ break;
126976
127543
  case 'SUPERDRAWTEXT':
126977
127544
  node.Draw=this.Draw.SUPERDRAWTEXT(args[0],args[1],args[2],args[3],args[4]);
126978
127545
  node.Out=[];
@@ -129798,6 +130365,22 @@ function ScriptIndex(name,script,args,option)
129798
130365
  hqChart.ChartPaint.push(chartText);
129799
130366
  }
129800
130367
 
130368
+ this.CreateDrawFlagText=function(hqChart,windowIndex,varItem,id)
130369
+ {
130370
+ var chart=new ChartDrawFlagText();
130371
+ chart.Canvas=hqChart.Canvas;
130372
+ chart.Name=varItem.Name;
130373
+ chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
130374
+ chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
130375
+ if (chart.ReloadResource) chart.ReloadResource();
130376
+
130377
+ chart.Data=hqChart.GetKData();
130378
+ if (varItem.Draw.DrawData) chart.AryData=varItem.Draw.DrawData;
130379
+ chart.BuildCacheData();
130380
+
130381
+ hqChart.ChartPaint.push(chart);
130382
+ }
130383
+
129801
130384
  //COLORSTICK
129802
130385
  this.CreateMACD=function(hqChart,windowIndex,varItem,id)
129803
130386
  {
@@ -131264,6 +131847,9 @@ function ScriptIndex(name,script,args,option)
131264
131847
  case 'DRAWTEXT':
131265
131848
  this.CreateDrawTextV2(hqChart,windowIndex,item,i);
131266
131849
  break;
131850
+ case "DRAWFLAGTEXT":
131851
+ this.CreateDrawFlagText(hqChart,windowIndex,item,i);
131852
+ break;
131267
131853
  case 'SUPERDRAWTEXT':
131268
131854
  this.CreateText(hqChart,windowIndex,item,i);
131269
131855
  break;
@@ -131685,6 +132271,8 @@ function OverlayScriptIndex(name,script,args,option)
131685
132271
  case 'DRAWTEXT':
131686
132272
  this.CreateDrawTextV2(hqChart,windowIndex,item,i);
131687
132273
  break;
132274
+ case "DRAWFLAGTEXT":
132275
+ this.CreateDrawFlagText(hqChart,windowIndex,item,i);
131688
132276
  case 'SUPERDRAWTEXT':
131689
132277
  this.CreateText(hqChart,windowIndex,item,i);
131690
132278
  break;
@@ -132049,6 +132637,25 @@ function OverlayScriptIndex(name,script,args,option)
132049
132637
  frame.ChartPaint.push(chartText);
132050
132638
  }
132051
132639
 
132640
+ this.CreateDrawFlagText=function(hqChart,windowIndex,varItem,id)
132641
+ {
132642
+ var overlayIndex=this.OverlayIndex;
132643
+ var frame=overlayIndex.Frame;
132644
+ var chart=new ChartDrawFlagText();
132645
+ chart.Canvas=hqChart.Canvas;
132646
+ chart.Name=varItem.Name;
132647
+ chart.ChartBorder=frame.Frame.ChartBorder;
132648
+ chart.ChartFrame=frame.Frame;
132649
+ chart.Identify=overlayIndex.Identify;
132650
+ if (chart.ReloadResource) chart.ReloadResource();
132651
+
132652
+ chart.Data=hqChart.GetKData();
132653
+ if (varItem.Draw.DrawData) chart.AryData=varItem.Draw.DrawData;
132654
+ chart.BuildCacheData();
132655
+
132656
+ frame.ChartPaint.push(chart);
132657
+ }
132658
+
132052
132659
  //创建文本
132053
132660
  this.CreateText=function(hqChart,windowIndex,varItem,id, drawName)
132054
132661
  {
@@ -136122,6 +136729,13 @@ function GetBlackStyle()
136122
136729
  BGColor:[null, "rgb(42,46,57)"],
136123
136730
  SplitLine:{ Color:'rgb(73,133,231)', Width:1*GetDevicePixelRatio(), Dash:[5*GetDevicePixelRatio(),5*GetDevicePixelRatio()] }
136124
136731
  },
136732
+
136733
+ KLineCountDownPaint:
136734
+ {
136735
+ Unchange:{ BGColor:"rgb(190, 190 ,190)", PriceColor:"rgb(0,0,0)", TimeColor:"rgb(50,50,50)" },
136736
+ Up:{ BGColor:"rgb(238,21,21)", PriceColor:"rgb(250,250,250)", TimeColor:"rgb(190,190,190)" },
136737
+ Down:{ BGColor:"rgb(25,158,0)", PriceColor:"rgb(250,250,250)", TimeColor:"rgb(190,190,190)" },
136738
+ },
136125
136739
 
136126
136740
  //成交明细
136127
136741
  DealList:
@@ -160402,8 +161016,6 @@ function JSFloatTooltip()
160402
161016
  Left:"UMyChart_Tooltip_Float_Text2_Span", //左对齐
160403
161017
  MarginLeft:'UMyChart_Tooltip_Float_Text3_Span',
160404
161018
  Right:"UMyChart_Tooltip_Float_Text_Span",
160405
-
160406
-
160407
161019
  }
160408
161020
 
160409
161021
  this.TitleAlign=
@@ -161619,6 +162231,164 @@ function JSFloatTooltip()
161619
162231
  this.UpdateStyle();
161620
162232
  }
161621
162233
  }
162234
+
162235
+ function JSSmallFloatTooltip()
162236
+ {
162237
+ this.DivDialog=null;
162238
+ this.DivContent=null;
162239
+ this.HQChart=null;
162240
+
162241
+ this.Destroy=function()
162242
+ {
162243
+ if (this.DivDialog)
162244
+ {
162245
+ document.body.removeChild(this.DivDialog);
162246
+ this.DivDialog=null;
162247
+ this.DivContent=null;
162248
+ }
162249
+
162250
+ this.HQChart=null;
162251
+ }
162252
+
162253
+ this.Hide=function()
162254
+ {
162255
+ if (!this.DivDialog) return;
162256
+ if (this.DivDialog.style.visibility!='hidden') this.DivDialog.style.visibility='hidden';
162257
+ }
162258
+
162259
+ this.Create=function()
162260
+ {
162261
+ var divDom=document.createElement("div");
162262
+ divDom.className='UMyChart_Small_Tooltip_Div';
162263
+
162264
+ var divContent=document.createElement("div");
162265
+ divContent.className='UMyChart_Small_Tooltip_Content_Div';
162266
+ divDom.appendChild(divContent);
162267
+
162268
+ document.body.appendChild(divDom);
162269
+
162270
+ this.DivContent=divContent;
162271
+ this.DivDialog=divDom;
162272
+ }
162273
+
162274
+ this.IsShow=function()
162275
+ {
162276
+ if (!this.DivDialog) return false;
162277
+
162278
+ return this.DivDialog.style.visibility==='visible';
162279
+ }
162280
+
162281
+ this.ShowTooltip=function(data)
162282
+ {
162283
+ if (!data.Point) return;
162284
+
162285
+ var x=data.Point.X;
162286
+ var y=data.Point.Y;
162287
+ this.Show(x, y, { YMove:data.Point.YMove });
162288
+ }
162289
+
162290
+ this.Show=function(x, y, option)
162291
+ {
162292
+ if (!this.DivDialog) return;
162293
+ if (!this.HQChart) return;
162294
+
162295
+ var rtClient=this.HQChart.UIElement.getBoundingClientRect();
162296
+ var yMove=0;
162297
+ if (option && IFrameSplitOperator.IsNumber(option.YMove)) yMove=option.YMove;
162298
+
162299
+ var left=x+rtClient.left,top=y+rtClient.top+yMove;
162300
+ var right=left+this.DivDialog.offsetWidth;
162301
+ var bottom=top+this.DivDialog.offsetHeight;
162302
+
162303
+ if ((right+5)>=window.innerWidth) left=left-this.DivDialog.offsetWidth;
162304
+ if ((bottom+5)>=window.innerHeight)
162305
+ {
162306
+ top=(y+rtClient.top)-this.DivDialog.offsetHeight;
162307
+ }
162308
+
162309
+ this.DivDialog.style.top = top + "px";
162310
+ this.DivDialog.style.left = left + "px";
162311
+
162312
+ if (this.DivDialog.style.visibility!='visible')
162313
+ this.DivDialog.style.visibility='visible';
162314
+ }
162315
+
162316
+ this.Update=function(data)
162317
+ {
162318
+ var text=data.Data.Data.Text;
162319
+ if (!this.DivContent) return false;
162320
+
162321
+ this.DivContent.innerText=text;
162322
+
162323
+ this.ShowTooltip(data);
162324
+ }
162325
+ }
162326
+
162327
+ function JSSmallFloatTooltipGroup()
162328
+ {
162329
+ this.AryTooltip=[];
162330
+ this.HQChart=null;
162331
+ this.MaxCount=5;
162332
+
162333
+ this.Inital=function(hqchart, option)
162334
+ {
162335
+ this.HQChart=hqchart;
162336
+ }
162337
+
162338
+ this.Create=function()
162339
+ {
162340
+ for(var i=0;i<this.MaxCount;++i)
162341
+ {
162342
+ var item=new JSSmallFloatTooltip();
162343
+ item.HQChart=this.HQChart;
162344
+ item.Create();
162345
+ this.AryTooltip.push(item);
162346
+ }
162347
+ }
162348
+
162349
+ this.Destroy=function()
162350
+ {
162351
+ for(var i=0;i<this.AryTooltip.length;++i)
162352
+ {
162353
+ var item=this.AryTooltip[i];
162354
+ item.Destroy();
162355
+ }
162356
+
162357
+ this.AryTooltip=[];
162358
+ }
162359
+
162360
+ this.Update=function(data)
162361
+ {
162362
+ var tooltipData=data.Tooltip;
162363
+ var pixelTatio = GetDevicePixelRatio();
162364
+ if (pixelTatio===0) pixelTatio=1;
162365
+ for(var i=0; i<tooltipData.AryData.length && i<this.AryTooltip.length; ++i)
162366
+ {
162367
+ var item=tooltipData.AryData[i];
162368
+ var tooltipItem=this.AryTooltip[i];
162369
+
162370
+ //去掉分辨率倍数
162371
+ var x=tooltipData.X/pixelTatio;
162372
+ var y=item.Y/pixelTatio;
162373
+ tooltipItem.Update({ Data:item, Point:{ X:x, Y:y} });
162374
+ }
162375
+
162376
+ for(var i=tooltipData.AryData.length; i<this.AryTooltip.length; ++i)
162377
+ {
162378
+ var item=this.AryTooltip[i];
162379
+ item.Hide();
162380
+ }
162381
+ }
162382
+
162383
+ this.Hide=function()
162384
+ {
162385
+ for(var i=0;i<this.AryTooltip.length;++i)
162386
+ {
162387
+ var item=this.AryTooltip[i];
162388
+ item.Hide();
162389
+ }
162390
+ }
162391
+ }
161622
162392
  /*
161623
162393
  Copyright (c) 2018 jones
161624
162394
 
@@ -163910,7 +164680,7 @@ function HQChartScriptWorker()
163910
164680
 
163911
164681
 
163912
164682
 
163913
- var HQCHART_VERSION="1.1.15010";
164683
+ var HQCHART_VERSION="1.1.15017";
163914
164684
 
163915
164685
  function PrintHQChartVersion()
163916
164686
  {