hqchart 1.1.12831 → 1.1.12836

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.
@@ -4270,10 +4270,11 @@ this.Canvas.strokeStyle=color;if(bgColor)this.Canvas.fill(path);if(color)this.Ca
4270
4270
  function ChartMultiText(){this.newMethod=IChartPainting;//派生
4271
4271
  this.newMethod();delete this.newMethod;this.ClassName="ChartMultiText";this.Texts=[];//[ {Index:, Value:, Text:, Color:, Font: , Baseline:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 }} ]
4272
4272
  this.Font=g_JSChartResource.DefaultTextFont;this.Color=g_JSChartResource.DefaultTextColor;this.IsHScreen=false;//是否横屏
4273
- this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(!this.Data||this.Data.length<=0)return;if(!this.Texts)return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();if(this.IsHScreen){left=this.ChartBorder.GetTop();right=this.ChartBorder.GetBottom();}var y=0;for(var i=0;i<this.Texts.length;++i){var item=this.Texts[i];if(!item.Text)continue;if(!IFrameSplitOperator.IsNumber(item.Index))continue;var index=item.Index-offset;if(index>=0&&index<xPointCount){var x=this.ChartFrame.GetXFromIndex(index);if(item.Value=="TOP")y=top;else if(item.Value=="BOTTOM")y=bottom;else y=this.ChartFrame.GetYFromData(item.Value);if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.Color;if(item.Font)this.Canvas.font=item.Font;else this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(item.Text).width;this.Canvas.textAlign='center';if(x+textWidth/2>=right){this.Canvas.textAlign='right';x=right;}else if(x-textWidth/2<left){this.Canvas.textAlign='left';x=left;}if(item.Baseline==1)this.Canvas.textBaseline='top';else if(item.Baseline==2)this.Canvas.textBaseline='bottom';else this.Canvas.textBaseline='middle';if(this.IsHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(item.Text,0,0);this.Canvas.restore();}else{if(IFrameSplitOperator.IsNumber(item.YMove))y+=item.YMove;this.Canvas.fillText(item.Text,x,y);}if(item.Line){var kItem=this.Data.Data[item.Index];var price=item.Line.KData=="H"?kItem.High:kItem.Low;var yPrice=this.ChartFrame.GetYFromData(price);var yText=y;if(Array.isArray(item.Line.Offset)&&item.Line.Offset.length==2){if(yText>yPrice)//文字在下方
4273
+ this.BuildKey=function(item){if(IFrameSplitOperator.IsNumber(item.Time)){var key=kItem.Date+'-'+item.Time;}else{var key=''+item.Date;}return key;};this.GetShowTextData=function(){var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var mapText=new _map2.default();//key='date-time' value={ Data:[] }
4274
+ for(var i=0;i<this.Texts.length;++i){var item=this.Texts[i];if(!item.Text)continue;if(!IFrameSplitOperator.IsNumber(item.Index))continue;var index=item.Index-offset;if(index>=0&&index<xPointCount){var key=this.BuildKey(item);if(mapText.has(key)){var textItem=mapText.get(key);textItem.Data.push(item);}else{var textItem={Data:[item]};mapText.set(key,textItem);}}}return mapText;};this.DrawAllText=function(mapText){var bHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var left=this.ChartBorder.GetTop();var right=this.ChartBorder.GetBottom();}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();}for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!mapText.has(key))continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var textItem=mapText.get(key);for(var k=0;k<textItem.Data.length;++k){var item=textItem.Data[k];if(item.Value=="TOP")y=top;else if(item.Value=="BOTTOM")y=bottom;else y=this.ChartFrame.GetYFromData(item.Value);if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.Color;if(item.Font)this.Canvas.font=item.Font;else this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(item.Text).width;this.Canvas.textAlign='center';if(x+textWidth/2>=right){this.Canvas.textAlign='right';x=right;}else if(x-textWidth/2<left){this.Canvas.textAlign='left';x=left;}if(item.Baseline==1)this.Canvas.textBaseline='top';else if(item.Baseline==2)this.Canvas.textBaseline='bottom';else this.Canvas.textBaseline='middle';if(this.IsHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(item.Text,0,0);this.Canvas.restore();}else{if(IFrameSplitOperator.IsNumber(item.YMove))y+=item.YMove;this.Canvas.fillText(item.Text,x,y);}if(item.Line){var kItem=this.Data.Data[item.Index];var price=item.Line.KData=="H"?kItem.High:kItem.Low;var yPrice=this.ChartFrame.GetYFromData(price);var yText=y;if(Array.isArray(item.Line.Offset)&&item.Line.Offset.length==2){if(yText>yPrice)//文字在下方
4274
4275
  {yText-=item.Line.Offset[1];yPrice+=item.Line.Offset[0];}else if(yText<yPrice){yText+=item.Line.Offset[1];yPrice-=item.Line.Offset[0];}}this.Canvas.save();if(item.Line.Dash)this.Canvas.setLineDash(item.Line.Dash);//虚线
4275
4276
  if(item.Line.Width>0)this.Canvas.lineWidth=item.Line.Width;//线宽
4276
- this.Canvas.strokeStyle=item.Line.Color;this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(yText,ToFixedPoint(x));this.Canvas.lineTo(yPrice,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yText);this.Canvas.lineTo(ToFixedPoint(x),yPrice);}this.Canvas.stroke();this.Canvas.restore();}}}};this.GetMaxMin=function(){var range={Min:null,Max:null};if(!this.Texts)return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Texts){var item=this.Texts[i];if(item.Index>=start&&item.Index<end){if(range.Max==null)range.Max=item.Value;else if(range.Max<item.Value)range.Max=item.Value;if(range.Min==null)range.Min=item.Value;else if(range.Min>item.Value)range.Min=item.Value;}}return range;};}// 图标集合 支持横屏
4277
+ this.Canvas.strokeStyle=item.Line.Color;this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(yText,ToFixedPoint(x));this.Canvas.lineTo(yPrice,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yText);this.Canvas.lineTo(ToFixedPoint(x),yPrice);}this.Canvas.stroke();this.Canvas.restore();}}}};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(!this.Data||this.Data.length<=0)return;if(!this.Texts)return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var mapText=this.GetShowTextData();if(mapText.size<=0)return;this.DrawAllText(mapText);};this.GetMaxMin=function(){var range={Min:null,Max:null};if(!this.Texts)return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Texts){var item=this.Texts[i];if(item.Index>=start&&item.Index<end){if(range.Max==null)range.Max=item.Value;else if(range.Max<item.Value)range.Max=item.Value;if(range.Min==null)range.Min=item.Value;else if(range.Min>item.Value)range.Min=item.Value;}}return range;};}// 图标集合 支持横屏
4277
4278
  function ChartMultiSVGIcon(){this.newMethod=IChartPainting;//派生
4278
4279
  this.newMethod();delete this.newMethod;this.ClassName="ChartMultiSVGIcon";this.Icon;//[ {Index:, Value:, Symbol:, Color:, Baseline:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 } } ]
4279
4280
  this.IconSize={Max:g_JSChartResource.DRAWICON.Icon.MaxSize,Min:g_JSChartResource.DRAWICON.Icon.MinSize,//图标的最大最小值
@@ -13028,7 +13029,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
13028
13029
  this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
13029
13030
  * 版本信息输出
13030
13031
  *
13031
- */var HQCHART_VERSION="1.1.12830";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13032
+ */var HQCHART_VERSION="1.1.12835";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13032
13033
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
13033
13034
  // BaseIndex:BaseIndex,
13034
13035
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.12831",
3
+ "version": "1.1.12836",
4
4
  "description": "stock chart",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -35950,38 +35950,95 @@ function ChartMultiText()
35950
35950
  this.Color=g_JSChartResource.DefaultTextColor;
35951
35951
  this.IsHScreen=false; //是否横屏
35952
35952
 
35953
- this.Draw=function()
35953
+ this.BuildKey=function(item)
35954
35954
  {
35955
- if (!this.IsShow || this.ChartFrame.IsMinSize) return;
35956
- if (!this.Data || this.Data.length<=0) return;
35957
- if (!this.Texts) return;
35955
+ if (IFrameSplitOperator.IsNumber(item.Time))
35956
+ {
35957
+ var key=`${kItem.Date}-${item.Time}`;
35958
+ }
35959
+ else
35960
+ {
35961
+ var key=`${item.Date}`;
35962
+ }
35963
+
35964
+ return key;
35965
+ }
35958
35966
 
35959
- this.IsHScreen=(this.ChartFrame.IsHScreen===true);
35967
+ this.GetShowTextData=function()
35968
+ {
35960
35969
  var xPointCount=this.ChartFrame.XPointCount;
35961
35970
  var offset=this.Data.DataOffset;
35962
- var left=this.ChartBorder.GetLeft();
35963
- var right=this.ChartBorder.GetRight();
35964
- var top=this.ChartBorder.GetTopEx();
35965
- var bottom=this.ChartBorder.GetBottomEx();
35966
35971
 
35967
- if (this.IsHScreen)
35968
- {
35969
- left=this.ChartBorder.GetTop();
35970
- right=this.ChartBorder.GetBottom();
35971
- }
35972
-
35973
- var y=0;
35972
+ var mapText=new Map(); //key='date-time' value={ Data:[] }
35974
35973
  for(var i=0; i<this.Texts.length; ++i)
35975
35974
  {
35976
35975
  var item=this.Texts[i];
35977
-
35978
35976
  if (!item.Text) continue;
35979
35977
  if (!IFrameSplitOperator.IsNumber(item.Index)) continue;
35980
35978
 
35981
35979
  var index=item.Index-offset;
35982
35980
  if (index>=0 && index<xPointCount)
35983
35981
  {
35984
- var x=this.ChartFrame.GetXFromIndex(index);
35982
+ var key=this.BuildKey(item);
35983
+ if (mapText.has(key))
35984
+ {
35985
+ var textItem=mapText.get(key);
35986
+ textItem.Data.push(item);
35987
+ }
35988
+ else
35989
+ {
35990
+ var textItem={ Data:[item] };
35991
+ mapText.set(key, textItem);
35992
+ }
35993
+ }
35994
+ }
35995
+
35996
+ return mapText;
35997
+ }
35998
+
35999
+ this.DrawAllText=function(mapText)
36000
+ {
36001
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
36002
+ var isMinute=this.IsMinuteFrame();
36003
+ var dataWidth=this.ChartFrame.DataWidth;
36004
+ var distanceWidth=this.ChartFrame.DistanceWidth;
36005
+ var xPointCount=this.ChartFrame.XPointCount;
36006
+
36007
+ if (bHScreen)
36008
+ {
36009
+ var border=this.ChartBorder.GetHScreenBorder();
36010
+ var chartright=border.BottomEx;
36011
+ var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
36012
+ var left=this.ChartBorder.GetTop();
36013
+ var right=this.ChartBorder.GetBottom();
36014
+ }
36015
+ else
36016
+ {
36017
+ var border=this.ChartBorder.GetBorder();
36018
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
36019
+ var chartright=border.RightEx;
36020
+ var left=this.ChartBorder.GetLeft();
36021
+ var right=this.ChartBorder.GetRight();
36022
+ }
36023
+
36024
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
36025
+ {
36026
+ var kItem=this.Data.Data[i];
36027
+ if (!kItem) continue;
36028
+
36029
+ var key=this.BuildKey(kItem);
36030
+ if (!mapText.has(key)) continue;
36031
+
36032
+ var left=xOffset;
36033
+ var right=xOffset+dataWidth;
36034
+ if (right>chartright) break;
36035
+ var x=left+(right-left)/2;
36036
+
36037
+ var textItem=mapText.get(key);
36038
+ for(var k=0;k<textItem.Data.length;++k)
36039
+ {
36040
+ var item=textItem.Data[k];
36041
+
35985
36042
  if (item.Value=="TOP") y=top;
35986
36043
  else if (item.Value=="BOTTOM") y=bottom;
35987
36044
  else y=this.ChartFrame.GetYFromData(item.Value);
@@ -36063,6 +36120,20 @@ function ChartMultiText()
36063
36120
  }
36064
36121
  }
36065
36122
 
36123
+ this.Draw=function()
36124
+ {
36125
+ if (!this.IsShow || this.ChartFrame.IsMinSize) return;
36126
+ if (!this.Data || this.Data.length<=0) return;
36127
+ if (!this.Texts) return;
36128
+
36129
+ this.IsHScreen=(this.ChartFrame.IsHScreen===true);
36130
+
36131
+ var mapText=this.GetShowTextData();
36132
+ if (mapText.size<=0) return;
36133
+
36134
+ this.DrawAllText(mapText);
36135
+ }
36136
+
36066
36137
  this.GetMaxMin=function()
36067
36138
  {
36068
36139
  var range={ Min:null, Max:null };
@@ -40117,38 +40117,95 @@ function ChartMultiText()
40117
40117
  this.Color=g_JSChartResource.DefaultTextColor;
40118
40118
  this.IsHScreen=false; //是否横屏
40119
40119
 
40120
- this.Draw=function()
40120
+ this.BuildKey=function(item)
40121
40121
  {
40122
- if (!this.IsShow || this.ChartFrame.IsMinSize) return;
40123
- if (!this.Data || this.Data.length<=0) return;
40124
- if (!this.Texts) return;
40122
+ if (IFrameSplitOperator.IsNumber(item.Time))
40123
+ {
40124
+ var key=`${kItem.Date}-${item.Time}`;
40125
+ }
40126
+ else
40127
+ {
40128
+ var key=`${item.Date}`;
40129
+ }
40130
+
40131
+ return key;
40132
+ }
40125
40133
 
40126
- this.IsHScreen=(this.ChartFrame.IsHScreen===true);
40134
+ this.GetShowTextData=function()
40135
+ {
40127
40136
  var xPointCount=this.ChartFrame.XPointCount;
40128
40137
  var offset=this.Data.DataOffset;
40129
- var left=this.ChartBorder.GetLeft();
40130
- var right=this.ChartBorder.GetRight();
40131
- var top=this.ChartBorder.GetTopEx();
40132
- var bottom=this.ChartBorder.GetBottomEx();
40133
-
40134
- if (this.IsHScreen)
40135
- {
40136
- left=this.ChartBorder.GetTop();
40137
- right=this.ChartBorder.GetBottom();
40138
- }
40139
40138
 
40140
- var y=0;
40139
+ var mapText=new Map(); //key='date-time' value={ Data:[] }
40141
40140
  for(var i=0; i<this.Texts.length; ++i)
40142
40141
  {
40143
40142
  var item=this.Texts[i];
40144
-
40145
40143
  if (!item.Text) continue;
40146
40144
  if (!IFrameSplitOperator.IsNumber(item.Index)) continue;
40147
40145
 
40148
40146
  var index=item.Index-offset;
40149
40147
  if (index>=0 && index<xPointCount)
40150
40148
  {
40151
- var x=this.ChartFrame.GetXFromIndex(index);
40149
+ var key=this.BuildKey(item);
40150
+ if (mapText.has(key))
40151
+ {
40152
+ var textItem=mapText.get(key);
40153
+ textItem.Data.push(item);
40154
+ }
40155
+ else
40156
+ {
40157
+ var textItem={ Data:[item] };
40158
+ mapText.set(key, textItem);
40159
+ }
40160
+ }
40161
+ }
40162
+
40163
+ return mapText;
40164
+ }
40165
+
40166
+ this.DrawAllText=function(mapText)
40167
+ {
40168
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
40169
+ var isMinute=this.IsMinuteFrame();
40170
+ var dataWidth=this.ChartFrame.DataWidth;
40171
+ var distanceWidth=this.ChartFrame.DistanceWidth;
40172
+ var xPointCount=this.ChartFrame.XPointCount;
40173
+
40174
+ if (bHScreen)
40175
+ {
40176
+ var border=this.ChartBorder.GetHScreenBorder();
40177
+ var chartright=border.BottomEx;
40178
+ var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
40179
+ var left=this.ChartBorder.GetTop();
40180
+ var right=this.ChartBorder.GetBottom();
40181
+ }
40182
+ else
40183
+ {
40184
+ var border=this.ChartBorder.GetBorder();
40185
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
40186
+ var chartright=border.RightEx;
40187
+ var left=this.ChartBorder.GetLeft();
40188
+ var right=this.ChartBorder.GetRight();
40189
+ }
40190
+
40191
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
40192
+ {
40193
+ var kItem=this.Data.Data[i];
40194
+ if (!kItem) continue;
40195
+
40196
+ var key=this.BuildKey(kItem);
40197
+ if (!mapText.has(key)) continue;
40198
+
40199
+ var left=xOffset;
40200
+ var right=xOffset+dataWidth;
40201
+ if (right>chartright) break;
40202
+ var x=left+(right-left)/2;
40203
+
40204
+ var textItem=mapText.get(key);
40205
+ for(var k=0;k<textItem.Data.length;++k)
40206
+ {
40207
+ var item=textItem.Data[k];
40208
+
40152
40209
  if (item.Value=="TOP") y=top;
40153
40210
  else if (item.Value=="BOTTOM") y=bottom;
40154
40211
  else y=this.ChartFrame.GetYFromData(item.Value);
@@ -40230,6 +40287,20 @@ function ChartMultiText()
40230
40287
  }
40231
40288
  }
40232
40289
 
40290
+ this.Draw=function()
40291
+ {
40292
+ if (!this.IsShow || this.ChartFrame.IsMinSize) return;
40293
+ if (!this.Data || this.Data.length<=0) return;
40294
+ if (!this.Texts) return;
40295
+
40296
+ this.IsHScreen=(this.ChartFrame.IsHScreen===true);
40297
+
40298
+ var mapText=this.GetShowTextData();
40299
+ if (mapText.size<=0) return;
40300
+
40301
+ this.DrawAllText(mapText);
40302
+ }
40303
+
40233
40304
  this.GetMaxMin=function()
40234
40305
  {
40235
40306
  var range={ Min:null, Max:null };
@@ -131793,7 +131864,7 @@ function ScrollBarBGChart()
131793
131864
 
131794
131865
 
131795
131866
 
131796
- var HQCHART_VERSION="1.1.12830";
131867
+ var HQCHART_VERSION="1.1.12835";
131797
131868
 
131798
131869
  function PrintHQChartVersion()
131799
131870
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12830";
8
+ var HQCHART_VERSION="1.1.12835";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -40161,38 +40161,95 @@ function ChartMultiText()
40161
40161
  this.Color=g_JSChartResource.DefaultTextColor;
40162
40162
  this.IsHScreen=false; //是否横屏
40163
40163
 
40164
- this.Draw=function()
40164
+ this.BuildKey=function(item)
40165
40165
  {
40166
- if (!this.IsShow || this.ChartFrame.IsMinSize) return;
40167
- if (!this.Data || this.Data.length<=0) return;
40168
- if (!this.Texts) return;
40166
+ if (IFrameSplitOperator.IsNumber(item.Time))
40167
+ {
40168
+ var key=`${kItem.Date}-${item.Time}`;
40169
+ }
40170
+ else
40171
+ {
40172
+ var key=`${item.Date}`;
40173
+ }
40174
+
40175
+ return key;
40176
+ }
40169
40177
 
40170
- this.IsHScreen=(this.ChartFrame.IsHScreen===true);
40178
+ this.GetShowTextData=function()
40179
+ {
40171
40180
  var xPointCount=this.ChartFrame.XPointCount;
40172
40181
  var offset=this.Data.DataOffset;
40173
- var left=this.ChartBorder.GetLeft();
40174
- var right=this.ChartBorder.GetRight();
40175
- var top=this.ChartBorder.GetTopEx();
40176
- var bottom=this.ChartBorder.GetBottomEx();
40177
-
40178
- if (this.IsHScreen)
40179
- {
40180
- left=this.ChartBorder.GetTop();
40181
- right=this.ChartBorder.GetBottom();
40182
- }
40183
40182
 
40184
- var y=0;
40183
+ var mapText=new Map(); //key='date-time' value={ Data:[] }
40185
40184
  for(var i=0; i<this.Texts.length; ++i)
40186
40185
  {
40187
40186
  var item=this.Texts[i];
40188
-
40189
40187
  if (!item.Text) continue;
40190
40188
  if (!IFrameSplitOperator.IsNumber(item.Index)) continue;
40191
40189
 
40192
40190
  var index=item.Index-offset;
40193
40191
  if (index>=0 && index<xPointCount)
40194
40192
  {
40195
- var x=this.ChartFrame.GetXFromIndex(index);
40193
+ var key=this.BuildKey(item);
40194
+ if (mapText.has(key))
40195
+ {
40196
+ var textItem=mapText.get(key);
40197
+ textItem.Data.push(item);
40198
+ }
40199
+ else
40200
+ {
40201
+ var textItem={ Data:[item] };
40202
+ mapText.set(key, textItem);
40203
+ }
40204
+ }
40205
+ }
40206
+
40207
+ return mapText;
40208
+ }
40209
+
40210
+ this.DrawAllText=function(mapText)
40211
+ {
40212
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
40213
+ var isMinute=this.IsMinuteFrame();
40214
+ var dataWidth=this.ChartFrame.DataWidth;
40215
+ var distanceWidth=this.ChartFrame.DistanceWidth;
40216
+ var xPointCount=this.ChartFrame.XPointCount;
40217
+
40218
+ if (bHScreen)
40219
+ {
40220
+ var border=this.ChartBorder.GetHScreenBorder();
40221
+ var chartright=border.BottomEx;
40222
+ var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
40223
+ var left=this.ChartBorder.GetTop();
40224
+ var right=this.ChartBorder.GetBottom();
40225
+ }
40226
+ else
40227
+ {
40228
+ var border=this.ChartBorder.GetBorder();
40229
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
40230
+ var chartright=border.RightEx;
40231
+ var left=this.ChartBorder.GetLeft();
40232
+ var right=this.ChartBorder.GetRight();
40233
+ }
40234
+
40235
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
40236
+ {
40237
+ var kItem=this.Data.Data[i];
40238
+ if (!kItem) continue;
40239
+
40240
+ var key=this.BuildKey(kItem);
40241
+ if (!mapText.has(key)) continue;
40242
+
40243
+ var left=xOffset;
40244
+ var right=xOffset+dataWidth;
40245
+ if (right>chartright) break;
40246
+ var x=left+(right-left)/2;
40247
+
40248
+ var textItem=mapText.get(key);
40249
+ for(var k=0;k<textItem.Data.length;++k)
40250
+ {
40251
+ var item=textItem.Data[k];
40252
+
40196
40253
  if (item.Value=="TOP") y=top;
40197
40254
  else if (item.Value=="BOTTOM") y=bottom;
40198
40255
  else y=this.ChartFrame.GetYFromData(item.Value);
@@ -40274,6 +40331,20 @@ function ChartMultiText()
40274
40331
  }
40275
40332
  }
40276
40333
 
40334
+ this.Draw=function()
40335
+ {
40336
+ if (!this.IsShow || this.ChartFrame.IsMinSize) return;
40337
+ if (!this.Data || this.Data.length<=0) return;
40338
+ if (!this.Texts) return;
40339
+
40340
+ this.IsHScreen=(this.ChartFrame.IsHScreen===true);
40341
+
40342
+ var mapText=this.GetShowTextData();
40343
+ if (mapText.size<=0) return;
40344
+
40345
+ this.DrawAllText(mapText);
40346
+ }
40347
+
40277
40348
  this.GetMaxMin=function()
40278
40349
  {
40279
40350
  var range={ Min:null, Max:null };
@@ -131951,7 +132022,7 @@ function HQChartScriptWorker()
131951
132022
 
131952
132023
 
131953
132024
 
131954
- var HQCHART_VERSION="1.1.12830";
132025
+ var HQCHART_VERSION="1.1.12835";
131955
132026
 
131956
132027
  function PrintHQChartVersion()
131957
132028
  {