hqchart 1.1.14836 → 1.1.14843

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.
@@ -45587,6 +45587,199 @@ function ChartMACD()
45587
45587
  }
45588
45588
  }
45589
45589
 
45590
+ //基准线上下柱子
45591
+ function ChartBaseLineBar()
45592
+ {
45593
+ this.newMethod=IChartPainting; //派生
45594
+ this.newMethod();
45595
+ delete this.newMethod;
45596
+
45597
+ this.ClassName="ChartBaseLineBar";
45598
+ this.UpColor=g_JSChartResource.ChartBaseLineBar.UpColor;
45599
+ this.DownColor=g_JSChartResource.ChartBaseLineBar.DownColor;
45600
+ this.LineWidth=1;
45601
+ this.IsDrawFirst=true;
45602
+ this.AryData=[]; //{ Date, Time, Up, Down }
45603
+
45604
+ this.MaxValue;
45605
+ this.YBaseLine;
45606
+ this.BarMaxHeight; //{ Up:, Down: }
45607
+
45608
+ this.Draw=function()
45609
+ {
45610
+ this.YBaseLine=null;
45611
+ this.BarMaxHeight=null;
45612
+ if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
45613
+ if (this.IsShowIndexTitleOnly()) return;
45614
+ if (this.IsHideScriptIndex()) return;
45615
+ if (!this.HQChart) return;
45616
+ if(!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
45617
+ if (!IFrameSplitOperator.IsNumber(this.MaxValue)) return;
45618
+ this.CalculateBaseLine();
45619
+
45620
+ if (!IFrameSplitOperator.IsNumber(this.YBaseLine)) return;
45621
+ if (!IFrameSplitOperator.IsPlusNumber(this.BarMaxHeight)) return;
45622
+
45623
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
45624
+ var bMinute=this.IsMinuteFrame();
45625
+ var dataWidth=this.ChartFrame.DataWidth;
45626
+ var distanceWidth=this.ChartFrame.DistanceWidth;
45627
+ var xPointCount=this.ChartFrame.XPointCount;
45628
+ var border=this.ChartFrame.GetBorder();
45629
+
45630
+ if (bHScreen)
45631
+ {
45632
+ var chartright=border.BottomEx;
45633
+ var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
45634
+ }
45635
+ else
45636
+ {
45637
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
45638
+ var chartright=border.RightEx;
45639
+ }
45640
+
45641
+ var yCenter=this.YBaseLine;
45642
+ var aryUpBar=[], aryDownBar=[];
45643
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
45644
+ {
45645
+ var kItem=this.Data.Data[i];
45646
+ if (!kItem) continue;
45647
+ var key=this.BuildKey(kItem);
45648
+ if (!this.MapCache.has(key)) continue;
45649
+
45650
+ var item=this.MapCache.get(key);
45651
+
45652
+ if (bMinute)
45653
+ {
45654
+ var x=this.ChartFrame.GetXFromIndex(j);
45655
+ }
45656
+ else
45657
+ {
45658
+ var left=xOffset;
45659
+ var right=xOffset+dataWidth;
45660
+ if (right>chartright) break;
45661
+ var x=left+(right-left)/2;
45662
+ }
45663
+
45664
+ if (IFrameSplitOperator.IsNumber(item.Up))
45665
+ {
45666
+ var y=yCenter-(item.Up*this.BarMaxHeight/this.MaxValue);
45667
+ aryUpBar.push({ X:x, Y:y});
45668
+ }
45669
+
45670
+ if (IFrameSplitOperator.IsNumber(item.Down))
45671
+ {
45672
+ var y=yCenter+(Math.abs(item.Down)*this.BarMaxHeight/this.MaxValue);
45673
+ aryDownBar.push({X:x, Y:y});
45674
+ }
45675
+ }
45676
+
45677
+ this.DrawBars(aryUpBar, this.UpColor);
45678
+ this.DrawBars(aryDownBar,this.DownColor);
45679
+ }
45680
+
45681
+ this.CalculateBaseLine=function()
45682
+ {
45683
+ if (!this.HQChart) return;
45684
+
45685
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
45686
+ var bMinute=this.IsMinuteFrame();
45687
+ var border=this.ChartFrame.GetBorder();
45688
+
45689
+ if (bMinute)
45690
+ {
45691
+ var chart=this.HQChart.ChartPaint[0];
45692
+ if (!chart || !IFrameSplitOperator.IsNumber(chart.YClose)) return;
45693
+
45694
+ this.YBaseLine=this.ChartFrame.GetYFromData(chart.YClose);
45695
+ if (bHScreen)
45696
+ {
45697
+ this.BarMaxHeight=(border.RightEx-this.YBaseLine)/3;
45698
+ }
45699
+ else
45700
+ {
45701
+ this.BarMaxHeight=(this.YBaseLine-border.TopEx)/3;
45702
+ }
45703
+ }
45704
+ else
45705
+ {
45706
+ //TODO:K线
45707
+ }
45708
+ }
45709
+
45710
+ this.DrawBars=function(aryBar, barColor)
45711
+ {
45712
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
45713
+ var yCenter=this.YBaseLine;
45714
+ this.Canvas.strokeStyle=barColor;
45715
+ this.Canvas.beginPath();
45716
+ var barCount=0;
45717
+ for (var i=0;i<aryBar.length;++i)
45718
+ {
45719
+ var item=aryBar[i];
45720
+ var x=ToFixedPoint(item.X)
45721
+ if (bHScreen)
45722
+ {
45723
+ this.Canvas.moveTo(yCenter,x);
45724
+ this.Canvas.lineTo(item.Y,x);
45725
+ }
45726
+ else
45727
+ {
45728
+ this.Canvas.moveTo(x,yCenter);
45729
+ this.Canvas.lineTo(x,item.Y);
45730
+ }
45731
+ ++barCount;
45732
+ }
45733
+ if (barCount>0) this.Canvas.stroke();
45734
+ }
45735
+
45736
+ this.BuildCacheData=function()
45737
+ {
45738
+ this.MaxValue=null;
45739
+ var mapData=new Map();
45740
+ this.MapCache=mapData;
45741
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryData)) return;
45742
+
45743
+ var max=null, min=null;
45744
+ for(var i=0;i<this.AryData.length;++i)
45745
+ {
45746
+ var item=this.AryData[i];
45747
+ if (!item) continue;
45748
+
45749
+ var key=this.BuildKey(item);
45750
+ mapData.set(key,item);
45751
+
45752
+ if (IFrameSplitOperator.IsNumber(item.Up))
45753
+ {
45754
+ if (!max) max={ Value:item.Up };
45755
+ else if (max.Value<item.Up) max.Value=item.Up;
45756
+
45757
+ if (!min) min={ Value:item.Up };
45758
+ else if (min.Value>item.Up) min.Value=item.Up;
45759
+ }
45760
+
45761
+ if (IFrameSplitOperator.IsNumber(item.Down))
45762
+ {
45763
+ if (!max) max={ Value:item.Down };
45764
+ else if (max.Value<item.Down) max.Value=item.Down;
45765
+
45766
+ if (!min) min={ Value:item.Down };
45767
+ else if (min.Value>item.Down) min.Value=item.Down;
45768
+ }
45769
+ }
45770
+
45771
+ if (max && min)
45772
+ {
45773
+ this.MaxValue=Math.max(Math.abs(max.Value),Math.abs(min.Value));
45774
+ }
45775
+ }
45776
+
45777
+ this.GetMaxMin=function()
45778
+ {
45779
+ return {Min:null, Max:null};
45780
+ }
45781
+ }
45782
+
45590
45783
  function ChartClipColorStick()
45591
45784
  {
45592
45785
  this.newMethod=IChartPainting; //派生
@@ -79674,6 +79867,12 @@ function JSChartResource()
79674
79867
  ],
79675
79868
  }
79676
79869
 
79870
+ this.ChartBaseLineBar=
79871
+ {
79872
+ UpColor:"rgb(238,21,21)",
79873
+ DownColor:"rgb(25,158,0)"
79874
+ }
79875
+
79677
79876
  //手机端tooltip
79678
79877
  this.TooltipPaint = {
79679
79878
  BGColor:'rgba(250,250,250,0.8)', //背景色
@@ -81026,6 +81225,8 @@ function JSChartResource()
81026
81225
  if (style.ChartSimpleDoughnut) this.SetChartSimpleDoughnut(style.ChartSimpleDoughnut);
81027
81226
 
81028
81227
  if (style.ChartSimpleRadar) this.SetChartSimpleRadar(style.ChartSimpleRadar);
81228
+
81229
+ if (style.ChartBaseLineBar) this.SetChartBaseLineBar(style.ChartBaseLineBar);
81029
81230
 
81030
81231
  if (style.DRAWICON)
81031
81232
  {
@@ -82183,6 +82384,14 @@ function JSChartResource()
82183
82384
  if (IFrameSplitOperator.IsNonEmptyArray(style.AryArea)) dest.AryArea=style.AryArea.slice();
82184
82385
  }
82185
82386
 
82387
+ this.SetChartBaseLineBar=function(style)
82388
+ {
82389
+ var dest=this.ChartBaseLineBar;
82390
+
82391
+ if (style.UpColor) dest.UpColor=style.UpColor;
82392
+ if (style.DownColor) dest.DownColor=style.DownColor;
82393
+ }
82394
+
82186
82395
  this.SetIndexLock=function(style)
82187
82396
  {
82188
82397
  var item=style;
@@ -85346,7 +85555,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
85346
85555
  else
85347
85556
  {
85348
85557
  self.AutoUpdateEvent(true,'KLineChartContainer::RequestHistoryData');
85349
- self.AutoUpdate();
85558
+ self.AutoUpdate(500);
85350
85559
  }
85351
85560
  });
85352
85561
 
@@ -85666,7 +85875,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
85666
85875
  else
85667
85876
  {
85668
85877
  self.AutoUpdateEvent(true,'KLineChartContainer::ReqeustHistoryMinuteData');
85669
- self.AutoUpdate();
85878
+ self.AutoUpdate(500);
85670
85879
  }
85671
85880
  });
85672
85881
 
@@ -90162,6 +90371,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90162
90371
  }
90163
90372
 
90164
90373
  var frequency=this.AutoUpdateFrequency;
90374
+ if (IFrameSplitOperator.IsPlusNumber(waitTime)) frequency=waitTime;
90165
90375
  if (marketStatus==1) //盘前
90166
90376
  {
90167
90377
  this.AutoUpdateTimer=setTimeout(function()
@@ -126965,7 +127175,8 @@ var SCRIPT_CHART_NAME=
126965
127175
 
126966
127176
  CLIP_COLOR_STICK:"CLIP_COLOR_STICK", //上下柱子 裁剪
126967
127177
 
126968
- DRAW_KLINE:"DRAWKLINE"
127178
+ DRAW_KLINE:"DRAWKLINE",
127179
+ BASELINE_BAR:"BASELINE_BAR"
126969
127180
  }
126970
127181
 
126971
127182
 
@@ -129028,6 +129239,31 @@ function ScriptIndex(name,script,args,option)
129028
129239
  hqChart.ChartPaint.push(chart);
129029
129240
  }
129030
129241
 
129242
+ this.CreateBaseLineBar=function(hqChart,windowIndex,varItem,id)
129243
+ {
129244
+ var chart=new ChartBaseLineBar();
129245
+ chart.Canvas=hqChart.Canvas;
129246
+ chart.Name=varItem.Name;
129247
+ chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
129248
+ chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
129249
+ chart.HQChart=hqChart;
129250
+ chart.Identify=this.Guid;
129251
+
129252
+ chart.Data=hqChart.GetKData(); //绑定K线
129253
+ chart.AryData=varItem.Draw.DrawData;
129254
+
129255
+ var config=varItem.Draw.Config;
129256
+ if (config)
129257
+ {
129258
+ if (config.UpColor) chart.UpColor=config.UpColor;
129259
+ if (config.DownColor) chart.DownColor=config.DownColor;
129260
+ }
129261
+
129262
+ chart.BuildCacheData();
129263
+ this.SetChartIndexName(chart);
129264
+ hqChart.ChartPaint.push(chart);
129265
+ }
129266
+
129031
129267
 
129032
129268
  this.CreateClipColorStick=function(hqChart,windowIndex,varItem,id)
129033
129269
  {
@@ -129400,6 +129636,9 @@ function ScriptIndex(name,script,args,option)
129400
129636
  case SCRIPT_CHART_NAME.CLIP_COLOR_STICK:
129401
129637
  this.CreateClipColorStick(hqChart,windowIndex,item,i);
129402
129638
  break;
129639
+ case SCRIPT_CHART_NAME.BASELINE_BAR:
129640
+ this.CreateBaseLineBar(hqChart,windowIndex,item,i);
129641
+ break;
129403
129642
  default:
129404
129643
  {
129405
129644
  var find=g_ScriptIndexChartFactory.Get(item.Draw.DrawType); //外部挂接
@@ -129753,6 +129992,9 @@ function OverlayScriptIndex(name,script,args,option)
129753
129992
  case SCRIPT_CHART_NAME.OVERLAY_BARS:
129754
129993
  this.CreateStackedBar(hqChart,windowIndex,item,i);
129755
129994
  break;
129995
+ case SCRIPT_CHART_NAME.BASELINE_BAR:
129996
+ this.CreateBaseLineBar(hqChart,windowIndex,item,i);
129997
+ break;
129756
129998
  case "DRAWCOLORKLINE":
129757
129999
  this.CreateDrawColorKLine(hqChart,windowIndex,item,i);
129758
130000
  break;
@@ -130565,6 +130807,32 @@ function OverlayScriptIndex(name,script,args,option)
130565
130807
  frame.ChartPaint.push(chart);
130566
130808
  }
130567
130809
 
130810
+ this.CreateBaseLineBar=function(hqChart,windowIndex,varItem,id)
130811
+ {
130812
+ var overlayIndex=this.OverlayIndex;
130813
+ var frame=overlayIndex.Frame;
130814
+ var chart=new ChartBaseLineBar();
130815
+ chart.Canvas=hqChart.Canvas;
130816
+ chart.Name=varItem.Name;
130817
+ chart.HQChart=hqChart;
130818
+ chart.ChartBorder=frame.Frame.ChartBorder;
130819
+ chart.ChartFrame=frame.Frame;
130820
+ chart.Identify=overlayIndex.Identify;
130821
+
130822
+ chart.Data=hqChart.GetKData(); //绑定K线
130823
+ chart.AryData=varItem.Draw.DrawData;
130824
+
130825
+ var config=varItem.Draw.Config;
130826
+ if (config)
130827
+ {
130828
+ if (config.UpColor) chart.UpColor=config.UpColor;
130829
+ if (config.DownColor) chart.DownColor=config.DownColor;
130830
+ }
130831
+
130832
+ chart.BuildCacheData();
130833
+ frame.ChartPaint.push(chart);
130834
+ }
130835
+
130568
130836
 
130569
130837
  //创建通道
130570
130838
  this.CreateChannel=function(hqChart,windowIndex,varItem,id)
@@ -132474,6 +132742,17 @@ function APIScriptIndex(name,script,args,option, isOverlay)
132474
132742
  if (draw.Option) outVarItem.Option=draw.Option;
132475
132743
  result.push(outVarItem);
132476
132744
  }
132745
+ else if (draw.DrawType==SCRIPT_CHART_NAME.BASELINE_BAR)
132746
+ {
132747
+ drawItem.Name=draw.Name;
132748
+ drawItem.Type=draw.Type;
132749
+ drawItem.DrawType=draw.DrawType;
132750
+ drawItem.DrawData=draw.DrawData;
132751
+ drawItem.Config=draw.Config;
132752
+
132753
+ outVarItem.Draw=drawItem;
132754
+ result.push(outVarItem);
132755
+ }
132477
132756
  else if (draw.DrawType=='MULTI_LINE')
132478
132757
  {
132479
132758
  drawItem.Text=draw.Text;
@@ -160808,7 +161087,7 @@ function HQChartScriptWorker()
160808
161087
 
160809
161088
 
160810
161089
 
160811
- var HQCHART_VERSION="1.1.14835";
161090
+ var HQCHART_VERSION="1.1.14842";
160812
161091
 
160813
161092
  function PrintHQChartVersion()
160814
161093
  {