hqchart 1.1.12831 → 1.1.12840

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.
@@ -37766,49 +37766,37 @@ function ChartMACD()
37766
37766
  return this.PtInBar(x, y, { BarWidth:barWidth })
37767
37767
  }
37768
37768
 
37769
- this.Draw=function()
37769
+ this.DrawBars=function(lineWidth, bUpBar)
37770
37770
  {
37771
- if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
37772
- if (this.IsShowIndexTitleOnly()) return;
37773
- if (this.IsHideScriptIndex()) return;
37774
-
37775
- if (this.NotSupportMessage)
37776
- {
37777
- this.DrawNotSupportmessage();
37778
- return;
37779
- }
37780
-
37781
- if (this.ChartFrame.IsHScreen===true)
37782
- {
37783
- this.HScreenDraw();
37784
- return;
37785
- }
37786
-
37787
37771
  var isMinute=this.IsMinuteFrame();
37772
+ var border=this.ChartBorder.GetBorder();
37788
37773
  var dataWidth=this.ChartFrame.DataWidth;
37789
37774
  var distanceWidth=this.ChartFrame.DistanceWidth;
37790
- var border=this.ChartBorder.GetBorder();
37775
+ var xPointCount=this.ChartFrame.XPointCount;
37791
37776
  var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
37777
+
37792
37778
  var chartright=border.RightEx;
37793
- var xPointCount=this.ChartFrame.XPointCount;
37794
37779
  var lockRect=this.GetLockRect();
37795
37780
  if (lockRect) chartright=lockRect.Left;
37796
37781
 
37797
- var bFirstPoint=true;
37798
- var drawCount=0;
37782
+ if (bUpBar) this.Canvas.strokeStyle=this.UpColor;
37783
+ else this.Canvas.strokeStyle=this.DownColor;
37784
+
37799
37785
  var yBottom=this.ChartFrame.GetYFromData(0);
37800
-
37801
- var lineWidth=this.LineWidth*GetDevicePixelRatio();
37802
- if (this.LineWidth==50) lineWidth=dataWidth;
37803
- else if (lineWidth>dataWidth) lineWidth=dataWidth;
37804
-
37805
- var backupLineWidth=this.Canvas.lineWidth;
37806
- this.Canvas.lineWidth=lineWidth;
37786
+ this.Canvas.beginPath();
37787
+ var drawCount=0;
37807
37788
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
37808
- //for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
37809
37789
  {
37810
37790
  var value=this.Data.Data[i];
37811
37791
  if (value==null) continue;
37792
+ if (bUpBar)
37793
+ {
37794
+ if (value<0) continue;
37795
+ }
37796
+ else
37797
+ {
37798
+ if (value>=0) continue;
37799
+ }
37812
37800
 
37813
37801
  if (isMinute)
37814
37802
  {
@@ -37821,21 +37809,49 @@ function ChartMACD()
37821
37809
  if (right>chartright) break;
37822
37810
  var x=left+(right-left)/2;
37823
37811
  }
37824
- var y=this.ChartFrame.GetYFromData(value);
37825
37812
 
37826
37813
  if (x>chartright) break;
37827
37814
 
37815
+ var y=this.ChartFrame.GetYFromData(value);
37828
37816
  var xFix=ToFixedPoint2(lineWidth, x); //毛边修正
37829
- this.Canvas.beginPath();
37830
37817
  this.Canvas.moveTo(xFix,yBottom);
37831
37818
  this.Canvas.lineTo(xFix,y);
37819
+ ++drawCount;
37820
+ }
37832
37821
 
37833
- if (value>=0) this.Canvas.strokeStyle=this.UpColor;
37834
- else this.Canvas.strokeStyle=this.DownColor;
37835
- this.Canvas.stroke();
37836
- this.Canvas.closePath();
37822
+ if (drawCount>0) this.Canvas.stroke();
37823
+ }
37824
+
37825
+ this.Draw=function()
37826
+ {
37827
+ if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
37828
+ if (this.IsShowIndexTitleOnly()) return;
37829
+ if (this.IsHideScriptIndex()) return;
37830
+
37831
+ if (this.NotSupportMessage)
37832
+ {
37833
+ this.DrawNotSupportmessage();
37834
+ return;
37835
+ }
37836
+
37837
+ if (this.ChartFrame.IsHScreen===true)
37838
+ {
37839
+ this.HScreenDraw();
37840
+ return;
37837
37841
  }
37838
37842
 
37843
+ var dataWidth=this.ChartFrame.DataWidth;
37844
+ var lineWidth=this.LineWidth*GetDevicePixelRatio();
37845
+ if (this.LineWidth==50) lineWidth=dataWidth;
37846
+ else if (lineWidth>dataWidth) lineWidth=dataWidth;
37847
+
37848
+ var backupLineWidth=this.Canvas.lineWidth;
37849
+ this.Canvas.lineWidth=lineWidth;
37850
+
37851
+ //上下分开画
37852
+ this.DrawBars(lineWidth, true);
37853
+ this.DrawBars(lineWidth, false);
37854
+
37839
37855
  this.Canvas.lineWidth=backupLineWidth;
37840
37856
  }
37841
37857
 
@@ -40161,38 +40177,95 @@ function ChartMultiText()
40161
40177
  this.Color=g_JSChartResource.DefaultTextColor;
40162
40178
  this.IsHScreen=false; //是否横屏
40163
40179
 
40164
- this.Draw=function()
40180
+ this.BuildKey=function(item)
40165
40181
  {
40166
- if (!this.IsShow || this.ChartFrame.IsMinSize) return;
40167
- if (!this.Data || this.Data.length<=0) return;
40168
- if (!this.Texts) return;
40182
+ if (IFrameSplitOperator.IsNumber(item.Time))
40183
+ {
40184
+ var key=`${kItem.Date}-${item.Time}`;
40185
+ }
40186
+ else
40187
+ {
40188
+ var key=`${item.Date}`;
40189
+ }
40190
+
40191
+ return key;
40192
+ }
40169
40193
 
40170
- this.IsHScreen=(this.ChartFrame.IsHScreen===true);
40194
+ this.GetShowTextData=function()
40195
+ {
40171
40196
  var xPointCount=this.ChartFrame.XPointCount;
40172
40197
  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
40198
 
40184
- var y=0;
40199
+ var mapText=new Map(); //key='date-time' value={ Data:[] }
40185
40200
  for(var i=0; i<this.Texts.length; ++i)
40186
40201
  {
40187
40202
  var item=this.Texts[i];
40188
-
40189
40203
  if (!item.Text) continue;
40190
40204
  if (!IFrameSplitOperator.IsNumber(item.Index)) continue;
40191
40205
 
40192
40206
  var index=item.Index-offset;
40193
40207
  if (index>=0 && index<xPointCount)
40194
40208
  {
40195
- var x=this.ChartFrame.GetXFromIndex(index);
40209
+ var key=this.BuildKey(item);
40210
+ if (mapText.has(key))
40211
+ {
40212
+ var textItem=mapText.get(key);
40213
+ textItem.Data.push(item);
40214
+ }
40215
+ else
40216
+ {
40217
+ var textItem={ Data:[item] };
40218
+ mapText.set(key, textItem);
40219
+ }
40220
+ }
40221
+ }
40222
+
40223
+ return mapText;
40224
+ }
40225
+
40226
+ this.DrawAllText=function(mapText)
40227
+ {
40228
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
40229
+ var isMinute=this.IsMinuteFrame();
40230
+ var dataWidth=this.ChartFrame.DataWidth;
40231
+ var distanceWidth=this.ChartFrame.DistanceWidth;
40232
+ var xPointCount=this.ChartFrame.XPointCount;
40233
+
40234
+ if (bHScreen)
40235
+ {
40236
+ var border=this.ChartBorder.GetHScreenBorder();
40237
+ var chartright=border.BottomEx;
40238
+ var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
40239
+ var left=this.ChartBorder.GetTop();
40240
+ var right=this.ChartBorder.GetBottom();
40241
+ }
40242
+ else
40243
+ {
40244
+ var border=this.ChartBorder.GetBorder();
40245
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
40246
+ var chartright=border.RightEx;
40247
+ var left=this.ChartBorder.GetLeft();
40248
+ var right=this.ChartBorder.GetRight();
40249
+ }
40250
+
40251
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
40252
+ {
40253
+ var kItem=this.Data.Data[i];
40254
+ if (!kItem) continue;
40255
+
40256
+ var key=this.BuildKey(kItem);
40257
+ if (!mapText.has(key)) continue;
40258
+
40259
+ var left=xOffset;
40260
+ var right=xOffset+dataWidth;
40261
+ if (right>chartright) break;
40262
+ var x=left+(right-left)/2;
40263
+
40264
+ var textItem=mapText.get(key);
40265
+ for(var k=0;k<textItem.Data.length;++k)
40266
+ {
40267
+ var item=textItem.Data[k];
40268
+
40196
40269
  if (item.Value=="TOP") y=top;
40197
40270
  else if (item.Value=="BOTTOM") y=bottom;
40198
40271
  else y=this.ChartFrame.GetYFromData(item.Value);
@@ -40274,6 +40347,20 @@ function ChartMultiText()
40274
40347
  }
40275
40348
  }
40276
40349
 
40350
+ this.Draw=function()
40351
+ {
40352
+ if (!this.IsShow || this.ChartFrame.IsMinSize) return;
40353
+ if (!this.Data || this.Data.length<=0) return;
40354
+ if (!this.Texts) return;
40355
+
40356
+ this.IsHScreen=(this.ChartFrame.IsHScreen===true);
40357
+
40358
+ var mapText=this.GetShowTextData();
40359
+ if (mapText.size<=0) return;
40360
+
40361
+ this.DrawAllText(mapText);
40362
+ }
40363
+
40277
40364
  this.GetMaxMin=function()
40278
40365
  {
40279
40366
  var range={ Min:null, Max:null };
@@ -92702,7 +92789,7 @@ function MinuteCoordinateData()
92702
92789
  {
92703
92790
  Full: //完整模式
92704
92791
  [
92705
- [0, 0, "rgb(200,200,200)", "09:30"], //[0]=索引 [1]=线段类型 [2]=文字颜色(弃用) [3]=刻度文字 [4]=线段颜色 [5]=背景色
92792
+ [0, 0, "rgb(200,200,200)", "09:30"], //[0]=索引 [1]=线段类型(预留) [2]=文字颜色(弃用) [3]=刻度文字 [4]=线段颜色 [5]=背景色
92706
92793
  [31, 0, "RGB(200,200,200)", "10:00"],
92707
92794
  [61, 0, "RGB(200,200,200)", "10:30"],
92708
92795
  [91, 0, "RGB(200,200,200)", "11:00"],
@@ -131951,7 +132038,7 @@ function HQChartScriptWorker()
131951
132038
 
131952
132039
 
131953
132040
 
131954
- var HQCHART_VERSION="1.1.12830";
132041
+ var HQCHART_VERSION="1.1.12839";
131955
132042
 
131956
132043
  function PrintHQChartVersion()
131957
132044
  {