hqchart 1.1.14836 → 1.1.14846

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.
@@ -45543,6 +45543,201 @@ function ChartMACD()
45543
45543
  }
45544
45544
  }
45545
45545
 
45546
+ //基准线上下柱子
45547
+ function ChartBaseLineBar()
45548
+ {
45549
+ this.newMethod=IChartPainting; //派生
45550
+ this.newMethod();
45551
+ delete this.newMethod;
45552
+
45553
+ this.ClassName="ChartBaseLineBar";
45554
+ this.UpColor=g_JSChartResource.ChartBaseLineBar.UpColor;
45555
+ this.DownColor=g_JSChartResource.ChartBaseLineBar.DownColor;
45556
+ this.LineWidth=1;
45557
+ this.IsDrawFirst=true;
45558
+ this.AryData=[]; //{ Date, Time, Up, Down }
45559
+ this.DefaultMax; //默认最大值
45560
+
45561
+ this.MaxValue;
45562
+ this.YBaseLine;
45563
+ this.BarMaxHeight; //{ Up:, Down: }
45564
+
45565
+ this.Draw=function()
45566
+ {
45567
+ this.YBaseLine=null;
45568
+ this.BarMaxHeight=null;
45569
+ if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
45570
+ if (this.IsShowIndexTitleOnly()) return;
45571
+ if (this.IsHideScriptIndex()) return;
45572
+ if (!this.HQChart) return;
45573
+ if(!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
45574
+ if (!IFrameSplitOperator.IsNumber(this.MaxValue)) return;
45575
+ this.CalculateBaseLine();
45576
+
45577
+ if (!IFrameSplitOperator.IsNumber(this.YBaseLine)) return;
45578
+ if (!IFrameSplitOperator.IsPlusNumber(this.BarMaxHeight)) return;
45579
+
45580
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
45581
+ var bMinute=this.IsMinuteFrame();
45582
+ var dataWidth=this.ChartFrame.DataWidth;
45583
+ var distanceWidth=this.ChartFrame.DistanceWidth;
45584
+ var xPointCount=this.ChartFrame.XPointCount;
45585
+ var border=this.ChartFrame.GetBorder();
45586
+
45587
+ if (bHScreen)
45588
+ {
45589
+ var chartright=border.BottomEx;
45590
+ var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
45591
+ }
45592
+ else
45593
+ {
45594
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
45595
+ var chartright=border.RightEx;
45596
+ }
45597
+
45598
+ var yCenter=this.YBaseLine;
45599
+ var aryUpBar=[], aryDownBar=[];
45600
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
45601
+ {
45602
+ var kItem=this.Data.Data[i];
45603
+ if (!kItem) continue;
45604
+ var key=this.BuildKey(kItem);
45605
+ if (!this.MapCache.has(key)) continue;
45606
+
45607
+ var item=this.MapCache.get(key);
45608
+
45609
+ if (bMinute)
45610
+ {
45611
+ var x=this.ChartFrame.GetXFromIndex(j);
45612
+ }
45613
+ else
45614
+ {
45615
+ var left=xOffset;
45616
+ var right=xOffset+dataWidth;
45617
+ if (right>chartright) break;
45618
+ var x=left+(right-left)/2;
45619
+ }
45620
+
45621
+ if (IFrameSplitOperator.IsNumber(item.Up))
45622
+ {
45623
+ var y=yCenter-(item.Up*this.BarMaxHeight/this.MaxValue);
45624
+ aryUpBar.push({ X:x, Y:y});
45625
+ }
45626
+
45627
+ if (IFrameSplitOperator.IsNumber(item.Down))
45628
+ {
45629
+ var y=yCenter+(Math.abs(item.Down)*this.BarMaxHeight/this.MaxValue);
45630
+ aryDownBar.push({X:x, Y:y});
45631
+ }
45632
+ }
45633
+
45634
+ this.DrawBars(aryUpBar, this.UpColor);
45635
+ this.DrawBars(aryDownBar,this.DownColor);
45636
+ }
45637
+
45638
+ this.CalculateBaseLine=function()
45639
+ {
45640
+ if (!this.HQChart) return;
45641
+
45642
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
45643
+ var bMinute=this.IsMinuteFrame();
45644
+ var border=this.ChartFrame.GetBorder();
45645
+
45646
+ if (bMinute)
45647
+ {
45648
+ var chart=this.HQChart.ChartPaint[0];
45649
+ if (!chart || !IFrameSplitOperator.IsNumber(chart.YClose)) return;
45650
+
45651
+ this.YBaseLine=this.ChartFrame.GetYFromData(chart.YClose);
45652
+ if (bHScreen)
45653
+ {
45654
+ this.BarMaxHeight=(border.RightEx-this.YBaseLine)/3;
45655
+ }
45656
+ else
45657
+ {
45658
+ this.BarMaxHeight=(this.YBaseLine-border.TopEx)/3;
45659
+ }
45660
+ }
45661
+ else
45662
+ {
45663
+ //TODO:K线
45664
+ }
45665
+ }
45666
+
45667
+ this.DrawBars=function(aryBar, barColor)
45668
+ {
45669
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
45670
+ var yCenter=this.YBaseLine;
45671
+ this.Canvas.strokeStyle=barColor;
45672
+ this.Canvas.beginPath();
45673
+ var barCount=0;
45674
+ for (var i=0;i<aryBar.length;++i)
45675
+ {
45676
+ var item=aryBar[i];
45677
+ var x=ToFixedPoint(item.X)
45678
+ if (bHScreen)
45679
+ {
45680
+ this.Canvas.moveTo(yCenter,x);
45681
+ this.Canvas.lineTo(item.Y,x);
45682
+ }
45683
+ else
45684
+ {
45685
+ this.Canvas.moveTo(x,yCenter);
45686
+ this.Canvas.lineTo(x,item.Y);
45687
+ }
45688
+ ++barCount;
45689
+ }
45690
+ if (barCount>0) this.Canvas.stroke();
45691
+ }
45692
+
45693
+ this.BuildCacheData=function()
45694
+ {
45695
+ this.MaxValue=null;
45696
+ var mapData=new Map();
45697
+ this.MapCache=mapData;
45698
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryData)) return;
45699
+
45700
+ var max=null, min=null;
45701
+ for(var i=0;i<this.AryData.length;++i)
45702
+ {
45703
+ var item=this.AryData[i];
45704
+ if (!item) continue;
45705
+
45706
+ var key=this.BuildKey(item);
45707
+ mapData.set(key,item);
45708
+
45709
+ if (IFrameSplitOperator.IsNumber(item.Up))
45710
+ {
45711
+ if (!max) max={ Value:item.Up };
45712
+ else if (max.Value<item.Up) max.Value=item.Up;
45713
+
45714
+ if (!min) min={ Value:item.Up };
45715
+ else if (min.Value>item.Up) min.Value=item.Up;
45716
+ }
45717
+
45718
+ if (IFrameSplitOperator.IsNumber(item.Down))
45719
+ {
45720
+ if (!max) max={ Value:item.Down };
45721
+ else if (max.Value<item.Down) max.Value=item.Down;
45722
+
45723
+ if (!min) min={ Value:item.Down };
45724
+ else if (min.Value>item.Down) min.Value=item.Down;
45725
+ }
45726
+ }
45727
+
45728
+ if (max && min)
45729
+ {
45730
+ this.MaxValue=Math.max(Math.abs(max.Value),Math.abs(min.Value));
45731
+ if (IFrameSplitOperator.IsNumber(this.DefaultMax)) this.MaxValue=Math.max(this.DefaultMax,this.MaxValue);
45732
+ }
45733
+ }
45734
+
45735
+ this.GetMaxMin=function()
45736
+ {
45737
+ return {Min:null, Max:null};
45738
+ }
45739
+ }
45740
+
45546
45741
  function ChartClipColorStick()
45547
45742
  {
45548
45743
  this.newMethod=IChartPainting; //派生
@@ -79630,6 +79825,12 @@ function JSChartResource()
79630
79825
  ],
79631
79826
  }
79632
79827
 
79828
+ this.ChartBaseLineBar=
79829
+ {
79830
+ UpColor:"rgb(238,21,21)",
79831
+ DownColor:"rgb(25,158,0)"
79832
+ }
79833
+
79633
79834
  //手机端tooltip
79634
79835
  this.TooltipPaint = {
79635
79836
  BGColor:'rgba(250,250,250,0.8)', //背景色
@@ -80982,6 +81183,8 @@ function JSChartResource()
80982
81183
  if (style.ChartSimpleDoughnut) this.SetChartSimpleDoughnut(style.ChartSimpleDoughnut);
80983
81184
 
80984
81185
  if (style.ChartSimpleRadar) this.SetChartSimpleRadar(style.ChartSimpleRadar);
81186
+
81187
+ if (style.ChartBaseLineBar) this.SetChartBaseLineBar(style.ChartBaseLineBar);
80985
81188
 
80986
81189
  if (style.DRAWICON)
80987
81190
  {
@@ -82139,6 +82342,14 @@ function JSChartResource()
82139
82342
  if (IFrameSplitOperator.IsNonEmptyArray(style.AryArea)) dest.AryArea=style.AryArea.slice();
82140
82343
  }
82141
82344
 
82345
+ this.SetChartBaseLineBar=function(style)
82346
+ {
82347
+ var dest=this.ChartBaseLineBar;
82348
+
82349
+ if (style.UpColor) dest.UpColor=style.UpColor;
82350
+ if (style.DownColor) dest.DownColor=style.DownColor;
82351
+ }
82352
+
82142
82353
  this.SetIndexLock=function(style)
82143
82354
  {
82144
82355
  var item=style;
@@ -82223,6 +82434,7 @@ function JSChartLocalization()
82223
82434
  ['DialogTooltip-AC-AvPrice', {CN:'匹配均价', EN:'AVPrice', TC:'匹配均價'}],
82224
82435
  ['DialogTooltip-AC-Increase', {CN:'竞价涨幅', EN:'Increase', TC:'競價漲幅'}],
82225
82436
  ['DialogTooltip-AC-Vol', {CN:'匹配量', EN:'Vol', TC:'匹配量'}],
82437
+ ['DialogTooltip-AC-NotMatchVol', {CN:'未匹配量:', EN:'NV:', TC:'未匹配量'}],
82226
82438
  ['DialogTooltip-Value', {CN:'数值', EN:'Value', TC:'数值'}],
82227
82439
 
82228
82440
  ['FloatTooltip-Date', {CN:'日期', EN:'Date', TC:'日期'}],
@@ -85302,7 +85514,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
85302
85514
  else
85303
85515
  {
85304
85516
  self.AutoUpdateEvent(true,'KLineChartContainer::RequestHistoryData');
85305
- self.AutoUpdate();
85517
+ self.AutoUpdate(500);
85306
85518
  }
85307
85519
  });
85308
85520
 
@@ -85622,7 +85834,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
85622
85834
  else
85623
85835
  {
85624
85836
  self.AutoUpdateEvent(true,'KLineChartContainer::ReqeustHistoryMinuteData');
85625
- self.AutoUpdate();
85837
+ self.AutoUpdate(500);
85626
85838
  }
85627
85839
  });
85628
85840
 
@@ -90118,6 +90330,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90118
90330
  }
90119
90331
 
90120
90332
  var frequency=this.AutoUpdateFrequency;
90333
+ if (IFrameSplitOperator.IsPlusNumber(waitTime)) frequency=waitTime;
90121
90334
  if (marketStatus==1) //盘前
90122
90335
  {
90123
90336
  this.AutoUpdateTimer=setTimeout(function()
@@ -126921,7 +127134,8 @@ var SCRIPT_CHART_NAME=
126921
127134
 
126922
127135
  CLIP_COLOR_STICK:"CLIP_COLOR_STICK", //上下柱子 裁剪
126923
127136
 
126924
- DRAW_KLINE:"DRAWKLINE"
127137
+ DRAW_KLINE:"DRAWKLINE",
127138
+ BASELINE_BAR:"BASELINE_BAR"
126925
127139
  }
126926
127140
 
126927
127141
 
@@ -128984,6 +129198,32 @@ function ScriptIndex(name,script,args,option)
128984
129198
  hqChart.ChartPaint.push(chart);
128985
129199
  }
128986
129200
 
129201
+ this.CreateBaseLineBar=function(hqChart,windowIndex,varItem,id)
129202
+ {
129203
+ var chart=new ChartBaseLineBar();
129204
+ chart.Canvas=hqChart.Canvas;
129205
+ chart.Name=varItem.Name;
129206
+ chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
129207
+ chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
129208
+ chart.HQChart=hqChart;
129209
+ chart.Identify=this.Guid;
129210
+
129211
+ chart.Data=hqChart.GetKData(); //绑定K线
129212
+ chart.AryData=varItem.Draw.DrawData;
129213
+
129214
+ var config=varItem.Draw.Config;
129215
+ if (config)
129216
+ {
129217
+ if (config.UpColor) chart.UpColor=config.UpColor;
129218
+ if (config.DownColor) chart.DownColor=config.DownColor;
129219
+ if (IFrameSplitOperator.IsNumber(config.DefaultMax)) chart.DefaultMax=config.DefaultMax;
129220
+ }
129221
+
129222
+ chart.BuildCacheData();
129223
+ this.SetChartIndexName(chart);
129224
+ hqChart.ChartPaint.push(chart);
129225
+ }
129226
+
128987
129227
 
128988
129228
  this.CreateClipColorStick=function(hqChart,windowIndex,varItem,id)
128989
129229
  {
@@ -129356,6 +129596,9 @@ function ScriptIndex(name,script,args,option)
129356
129596
  case SCRIPT_CHART_NAME.CLIP_COLOR_STICK:
129357
129597
  this.CreateClipColorStick(hqChart,windowIndex,item,i);
129358
129598
  break;
129599
+ case SCRIPT_CHART_NAME.BASELINE_BAR:
129600
+ this.CreateBaseLineBar(hqChart,windowIndex,item,i);
129601
+ break;
129359
129602
  default:
129360
129603
  {
129361
129604
  var find=g_ScriptIndexChartFactory.Get(item.Draw.DrawType); //外部挂接
@@ -129709,6 +129952,9 @@ function OverlayScriptIndex(name,script,args,option)
129709
129952
  case SCRIPT_CHART_NAME.OVERLAY_BARS:
129710
129953
  this.CreateStackedBar(hqChart,windowIndex,item,i);
129711
129954
  break;
129955
+ case SCRIPT_CHART_NAME.BASELINE_BAR:
129956
+ this.CreateBaseLineBar(hqChart,windowIndex,item,i);
129957
+ break;
129712
129958
  case "DRAWCOLORKLINE":
129713
129959
  this.CreateDrawColorKLine(hqChart,windowIndex,item,i);
129714
129960
  break;
@@ -130521,6 +130767,33 @@ function OverlayScriptIndex(name,script,args,option)
130521
130767
  frame.ChartPaint.push(chart);
130522
130768
  }
130523
130769
 
130770
+ this.CreateBaseLineBar=function(hqChart,windowIndex,varItem,id)
130771
+ {
130772
+ var overlayIndex=this.OverlayIndex;
130773
+ var frame=overlayIndex.Frame;
130774
+ var chart=new ChartBaseLineBar();
130775
+ chart.Canvas=hqChart.Canvas;
130776
+ chart.Name=varItem.Name;
130777
+ chart.HQChart=hqChart;
130778
+ chart.ChartBorder=frame.Frame.ChartBorder;
130779
+ chart.ChartFrame=frame.Frame;
130780
+ chart.Identify=overlayIndex.Identify;
130781
+
130782
+ chart.Data=hqChart.GetKData(); //绑定K线
130783
+ chart.AryData=varItem.Draw.DrawData;
130784
+
130785
+ var config=varItem.Draw.Config;
130786
+ if (config)
130787
+ {
130788
+ if (config.UpColor) chart.UpColor=config.UpColor;
130789
+ if (config.DownColor) chart.DownColor=config.DownColor;
130790
+ if (IFrameSplitOperator.IsNumber(config.DefaultMax)) chart.DefaultMax=config.DefaultMax;
130791
+ }
130792
+
130793
+ chart.BuildCacheData();
130794
+ frame.ChartPaint.push(chart);
130795
+ }
130796
+
130524
130797
 
130525
130798
  //创建通道
130526
130799
  this.CreateChannel=function(hqChart,windowIndex,varItem,id)
@@ -132430,6 +132703,17 @@ function APIScriptIndex(name,script,args,option, isOverlay)
132430
132703
  if (draw.Option) outVarItem.Option=draw.Option;
132431
132704
  result.push(outVarItem);
132432
132705
  }
132706
+ else if (draw.DrawType==SCRIPT_CHART_NAME.BASELINE_BAR)
132707
+ {
132708
+ drawItem.Name=draw.Name;
132709
+ drawItem.Type=draw.Type;
132710
+ drawItem.DrawType=draw.DrawType;
132711
+ drawItem.DrawData=draw.DrawData;
132712
+ drawItem.Config=draw.Config;
132713
+
132714
+ outVarItem.Draw=drawItem;
132715
+ result.push(outVarItem);
132716
+ }
132433
132717
  else if (draw.DrawType=='MULTI_LINE')
132434
132718
  {
132435
132719
  drawItem.Text=draw.Text;
@@ -149785,7 +150069,7 @@ function ScrollBarBGChart()
149785
150069
 
149786
150070
 
149787
150071
 
149788
- var HQCHART_VERSION="1.1.14835";
150072
+ var HQCHART_VERSION="1.1.14845";
149789
150073
 
149790
150074
  function PrintHQChartVersion()
149791
150075
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14835";
8
+ var HQCHART_VERSION="1.1.14845";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {