hqchart 1.1.14313 → 1.1.14330

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.
@@ -31929,6 +31929,313 @@ function ChartSimplePie()
31929
31929
  }
31930
31930
  }
31931
31931
 
31932
+
31933
+ //雷达图
31934
+ function ChartSimpleRadar()
31935
+ {
31936
+ this.newMethod=IChartPainting; //派生
31937
+ this.newMethod();
31938
+ delete this.newMethod;
31939
+
31940
+ this.ClassName='ChartSimpleRadar'; //类名
31941
+
31942
+ this.AreaColor='rgba(242,154,118,0.4)'; //
31943
+ this.AreaLineColor='rgb(242,154,118)';
31944
+
31945
+ this.TitleColor=g_JSChartResource.ChartSimpleRadar.TextColor;
31946
+ this.TextFontConfig=CloneData(g_JSChartResource.ChartSimpleRadar.TextFont);
31947
+ this.Offset=CloneData(g_JSChartResource.ChartSimpleRadar.Offset);
31948
+ this.BorderColor=g_JSChartResource.ChartSimpleRadar.BorderColor;
31949
+ this.AryBGColor=g_JSChartResource.ChartSimpleRadar.AryBGColor.slice();//背景色
31950
+ this.AryAreaConfig=g_JSChartResource.ChartSimpleRadar.AryArea.slice(); //面积图颜色
31951
+
31952
+ this.StartAngle=270;
31953
+ this.Radius=50;
31954
+ this.AryBorder=[1, 0.75, 0.5, 0.25];
31955
+ this.AryIndex; //指标{ Name:, Max:100, Min:0 },
31956
+
31957
+ this.CenterPoint={};
31958
+ this.RectClient={ };
31959
+ this.AryIndexCache=[];
31960
+ this.MapDataCache=new Map(); //key=name value={ Data:[] }
31961
+ this.TextFont;
31962
+
31963
+
31964
+ this.ReloadResource=function(resource)
31965
+ {
31966
+ this.TitleColor=g_JSChartResource.ChartSimpleRadar.TextColor;
31967
+ this.TextFontConfig=CloneData(g_JSChartResource.ChartSimpleRadar.TextFont);
31968
+ this.Offset=CloneData(g_JSChartResource.ChartSimpleRadar.Offset);
31969
+ this.BorderColor=g_JSChartResource.ChartSimpleRadar.BorderColor;
31970
+ this.AryBGColor=g_JSChartResource.ChartSimpleRadar.AryBGColor.slice();//背景色
31971
+ this.AryAreaConfig=g_JSChartResource.ChartSimpleRadar.AryArea.slice(); //面积图颜色
31972
+ }
31973
+
31974
+ this.DrawBorder=function() //画边框
31975
+ {
31976
+ this.Canvas.strokeStyle = this.BorderColor;
31977
+ this.Canvas.font=this.TextFont;
31978
+ for(var i=0;i<this.AryBorder.length;++i)
31979
+ {
31980
+ var rate = this.AryBorder[i];
31981
+ var radius=this.RectClient.Radius*rate;
31982
+ var bFirstDraw=true;
31983
+ for(var j=0;j<this.AryIndexCache.length;++j)
31984
+ {
31985
+ var item=this.AryIndexCache[j];
31986
+ var x = this.CenterPoint.X + radius * Math.cos(item.Angle * Math.PI / 180);
31987
+ var y = this.CenterPoint.Y + radius * Math.sin(item.Angle * Math.PI / 180);
31988
+ if (bFirstDraw)
31989
+ {
31990
+ this.Canvas.beginPath();
31991
+ this.Canvas.moveTo(x,y);
31992
+ bFirstDraw=false;
31993
+ }
31994
+ else
31995
+ {
31996
+ this.Canvas.lineTo(x,y);
31997
+ }
31998
+ }
31999
+
32000
+ this.Canvas.closePath();
32001
+ this.Canvas.stroke();
32002
+
32003
+ if (IFrameSplitOperator.IsNonEmptyArray(this.AryBGColor))
32004
+ {
32005
+ this.Canvas.fillStyle = this.AryBGColor[i%this.AryBGColor.length];
32006
+ this.Canvas.fill();
32007
+ }
32008
+ }
32009
+
32010
+ this.Canvas.beginPath();
32011
+ for(var i=0;i<this.AryIndexCache.length;++i)
32012
+ {
32013
+ var item=this.AryIndexCache[i];
32014
+ var x = this.CenterPoint.X + item.Radius * Math.cos(item.Angle * Math.PI / 180);
32015
+ var y = this.CenterPoint.Y + item.Radius * Math.sin(item.Angle * Math.PI / 180);
32016
+ this.Canvas.moveTo(this.CenterPoint.X,this.CenterPoint.Y);
32017
+ this.Canvas.lineTo(x,y);
32018
+ this.DrawText(item, x, y);
32019
+ }
32020
+ this.Canvas.stroke();
32021
+
32022
+ }
32023
+
32024
+ this.GetRadarRate=function(indexItem, value)
32025
+ {
32026
+ var range={ Max:100, Min:0 };
32027
+ if (IFrameSplitOperator.IsNumber(indexItem.Max)) range.Max=indexItem.Max;
32028
+ if (IFrameSplitOperator.IsNumber(indexItem.Min)) range.Min=indexItem.Min;
32029
+
32030
+ if (value>range.Max) value=range.Max;
32031
+ else if (value<range.Min) value=range.Min;
32032
+
32033
+ return (value-range.Min)/(range.Max-range.Min);
32034
+ }
32035
+
32036
+ this.DrawArea=function()
32037
+ {
32038
+ if (this.MapDataCache.size<=0) return;
32039
+
32040
+ var index=0;
32041
+ for(var mapItem of this.MapDataCache)
32042
+ {
32043
+ var mapData=mapItem[1].MapData;
32044
+
32045
+ var bFirstDraw=true;
32046
+ var pointCount=0;
32047
+ for(var i=0;i<this.AryIndexCache.length;++i)
32048
+ {
32049
+ var indexItem=this.AryIndexCache[i];
32050
+ if (!indexItem.Data || !indexItem.Data.Name) continue;
32051
+ if (!mapData.has(indexItem.Data.Name)) continue;
32052
+ var item=mapData.get(indexItem.Data.Name);
32053
+ if (!item.Data && !IFrameSplitOperator.IsNumber(item.Data.Value)) conintue;
32054
+
32055
+ var widthRate=this.GetRadarRate(indexItem, item.Data.Value);
32056
+ var x = this.CenterPoint.X+indexItem.Radius*widthRate*Math.cos(indexItem.Angle * Math.PI / 180);
32057
+ var y = this.CenterPoint.Y+indexItem.Radius*widthRate*Math.sin(indexItem.Angle * Math.PI / 180);
32058
+
32059
+ if (bFirstDraw)
32060
+ {
32061
+ this.Canvas.beginPath();
32062
+ this.Canvas.moveTo(x,y);
32063
+ bFirstDraw=false;
32064
+ ++pointCount;
32065
+ }
32066
+ else
32067
+ {
32068
+ this.Canvas.lineTo(x,y);
32069
+ ++pointCount;
32070
+ }
32071
+ }
32072
+
32073
+ if (pointCount>0)
32074
+ {
32075
+ this.Canvas.closePath();
32076
+
32077
+ var config=this.AryAreaConfig[index%this.AryAreaConfig.length];
32078
+ if (config.Color)
32079
+ {
32080
+ this.Canvas.fillStyle = config.Color;
32081
+ this.Canvas.fill();
32082
+ }
32083
+
32084
+ if (config.LineColor)
32085
+ {
32086
+ this.Canvas.strokeStyle = config.LineColor;
32087
+ this.Canvas.stroke();
32088
+ }
32089
+ }
32090
+
32091
+ ++index;
32092
+ }
32093
+ }
32094
+
32095
+ this.DrawText=function(item, x, y)
32096
+ {
32097
+ if (!item.Data || !item.Data.Name) return;
32098
+
32099
+ //JSConsole.Chart.Log(item.Text, item.Angle);
32100
+ this.Canvas.fillStyle = this.TitleColor;
32101
+ var xText = x, yText =y;
32102
+
32103
+ var angle=item.Angle%360;
32104
+
32105
+ //显示每个角度的位置
32106
+ if (angle > 0 && angle < 45) {
32107
+ this.Canvas.textAlign = 'left';
32108
+ this.Canvas.textBaseline = 'middle';
32109
+ xText += 2;
32110
+ }
32111
+ else if (angle >= 45 && angle < 90) {
32112
+ this.Canvas.textAlign = 'left';
32113
+ this.Canvas.textBaseline = 'top';
32114
+ xText += 2;
32115
+ }
32116
+ else if (angle==90)
32117
+ {
32118
+ this.Canvas.textAlign = 'center';
32119
+ this.Canvas.textBaseline = 'top';
32120
+ yText+=2;
32121
+ }
32122
+ else if (angle >= 90 && angle < 135) {
32123
+ this.Canvas.textAlign = 'right';
32124
+ this.Canvas.textBaseline = 'top';
32125
+ xText -= 2;
32126
+ }
32127
+ else if (angle >= 135 && angle < 180) {
32128
+ this.Canvas.textAlign = 'right';
32129
+ this.Canvas.textBaseline = 'top';
32130
+ xText -= 2;
32131
+ }
32132
+ else if (angle >= 180 && angle < 225) {
32133
+ this.Canvas.textAlign = 'right';
32134
+ this.Canvas.textBaseline = 'middle';
32135
+ xText -= 2;
32136
+ }
32137
+ else if (angle >= 225 && angle <= 270) {
32138
+ this.Canvas.textAlign = 'center';
32139
+ this.Canvas.textBaseline = 'bottom';
32140
+ }
32141
+ else if (angle > 270 && angle < 315) {
32142
+ this.Canvas.textAlign = 'left';
32143
+ this.Canvas.textBaseline = 'bottom';
32144
+ xText += 2;
32145
+ }
32146
+ else
32147
+ {
32148
+ this.Canvas.textAlign = 'left';
32149
+ this.Canvas.textBaseline = 'middle';
32150
+ xText += 2;
32151
+ }
32152
+
32153
+ this.Canvas.fillText(item.Data.Name, xText, yText);
32154
+ }
32155
+
32156
+ this.Draw=function()
32157
+ {
32158
+ this.AryIndexCache=[];
32159
+ this.MapData=new Map();
32160
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIndex)) return;
32161
+
32162
+ this.CalculateSize();
32163
+
32164
+ this.DrawBorder();
32165
+
32166
+ this.DrawArea();
32167
+ }
32168
+
32169
+ this.BuildCacheData=function()
32170
+ {
32171
+ this.MapDataCache=new Map();
32172
+
32173
+ for(var i=0;i<this.Data.Data.length;++i)
32174
+ {
32175
+ var item=this.Data.Data[i];
32176
+ if (!this.MapDataCache.has(item.Group))
32177
+ {
32178
+ this.MapDataCache.set(item.Group, { MapData:new Map() })
32179
+ }
32180
+
32181
+ var mpaItem=this.MapDataCache.get(item.Group);
32182
+ mpaItem.MapData.set(item.Name, { Data:item });
32183
+ }
32184
+ }
32185
+
32186
+ this.CalculateSize=function(data)
32187
+ {
32188
+ var border=this.ChartBorder.GetBorder();
32189
+ var pixelRatio=GetDevicePixelRatio();
32190
+ this.TextFont=`${this.TextFontConfig.Size*pixelRatio}px ${ this.TextFontConfig.Name}`;
32191
+ var fontHeight=this.GetFontHeight(this.TextFont,"擎")+1;
32192
+
32193
+ var maxTextWidth=0;
32194
+ if (IFrameSplitOperator.IsNonEmptyArray(this.AryIndex))
32195
+ {
32196
+ for(var i=0;i<this.AryIndex.length;++i)
32197
+ {
32198
+ var item=this.AryIndex[i];
32199
+ if (!item.Name) continue;
32200
+ var textWidth=this.Canvas.measureText(item.Name).width;
32201
+ if (maxTextWidth<textWidth) maxTextWidth=textWidth;
32202
+ }
32203
+ }
32204
+
32205
+ var radius=this.Radius*2*pixelRatio; //半径
32206
+ this.RectClient={ Width:radius*2, Height:radius*2, Radius:radius };
32207
+ this.RectClient.Right=border.Right+this.Offset.X-maxTextWidth;
32208
+ this.RectClient.Top=border.TopEx+this.Offset.Y+fontHeight;
32209
+ this.RectClient.Left=this.RectClient.Right-this.RectClient.Width;
32210
+ this.RectClient.Bottom=this.RectClient.Top+this.RectClient.Height;
32211
+
32212
+ var ptCenter={X:this.RectClient.Left+this.RectClient.Width/2, Y:this.RectClient.Top+this.RectClient.Height/2}; //中心点
32213
+
32214
+ var count=Math.max(5,this.AryIndex.length);
32215
+ var averageAngle=360/count;
32216
+ for(var i=0;i<count;++i)
32217
+ {
32218
+ var angle=i*averageAngle+this.StartAngle;
32219
+
32220
+ var indexItem={ Data:null, Index:i, Angle:angle, Radius:radius };
32221
+ if (this.AryIndex && this.AryIndex[i])
32222
+ {
32223
+ indexItem.Data=this.AryIndex[i];
32224
+ }
32225
+
32226
+ this.AryIndexCache.push(indexItem);
32227
+ }
32228
+
32229
+ this.CenterPoint=ptCenter;
32230
+ }
32231
+
32232
+ //空数据
32233
+ this.DrawEmptyData=function()
32234
+ {
32235
+ JSConsole.Chart.Log('[ChartSimpleRadar::DrawEmptyData]')
32236
+ }
32237
+ }
32238
+
31932
32239
  //分钟成交量 支持横屏
31933
32240
  function ChartMinuteVolumBar()
31934
32241
  {
@@ -52556,6 +52863,7 @@ function ChartCorssCursor()
52556
52863
  this.TextBGColor=g_JSChartResource.CorssCursorBGColor; //文本背景色
52557
52864
  this.BorderColor=g_JSChartResource.CorssCursorBorderColor; //边框颜色
52558
52865
  this.XRangeBGColor=g_JSChartResource.CorssCursorXRangeBGColor;
52866
+ this.LineDash=g_JSChartResource.CorssCursorLineDash.slice(); //虚线
52559
52867
  this.TextHeight=20; //文本字体高度
52560
52868
  this.LastPoint;
52561
52869
  this.LastValue; //{ Y:{ Value:, Extend: } }
@@ -52611,6 +52919,7 @@ function ChartCorssCursor()
52611
52919
  this.TextBGColor=g_JSChartResource.CorssCursorBGColor; //文本背景色
52612
52920
  this.BorderColor=g_JSChartResource.CorssCursorBorderColor; //边框颜色
52613
52921
  this.XRangeBGColor=g_JSChartResource.CorssCursorXRangeBGColor;
52922
+ this.LineDash=g_JSChartResource.CorssCursorLineDash.slice(); //虚线
52614
52923
  }
52615
52924
 
52616
52925
  this.GetCloseYPoint=function(index)
@@ -52869,10 +53178,10 @@ function ChartCorssCursor()
52869
53178
  }
52870
53179
 
52871
53180
  var pixel=GetDevicePixelRatio();
52872
- if (this.HPenType==1 || this.HPenType==0) //0=实线 1=虚线
53181
+ if (this.HPenType==1 || this.HPenType==0) //0=虚线 1=实线
52873
53182
  {
52874
53183
  this.Canvas.strokeStyle=this.HPenColor;
52875
- if (this.HPenType==0) this.Canvas.setLineDash([3*pixel,2*pixel]); //虚线
53184
+ if (this.HPenType==0) this.Canvas.setLineDash(this.LineDash); //虚线
52876
53185
  //this.Canvas.lineWidth=0.5
52877
53186
  this.Canvas.beginPath();
52878
53187
  this.Canvas.moveTo(left,ToFixedPoint(y));
@@ -52885,7 +53194,7 @@ function ChartCorssCursor()
52885
53194
  this.Canvas.strokeStyle=this.VPenColor;
52886
53195
  if (this.VPenType==0)
52887
53196
  {
52888
- this.Canvas.setLineDash([3*pixel,2*pixel]); //虚线
53197
+ this.Canvas.setLineDash(this.LineDash); //虚线
52889
53198
  }
52890
53199
  else if (this.VPenType==2)
52891
53200
  {
@@ -53480,7 +53789,7 @@ function ChartCorssCursor()
53480
53789
  var pixel=GetDevicePixelRatio();
53481
53790
  this.Canvas.save();
53482
53791
  this.Canvas.strokeStyle=this.HPenColor;
53483
- if (this.HPenType==0) this.Canvas.setLineDash([3*pixel,2*pixel]); //虚线
53792
+ if (this.HPenType==0) this.Canvas.setLineDash(this.LineDash); //虚线
53484
53793
 
53485
53794
  //画竖线
53486
53795
  this.Canvas.beginPath();
@@ -53494,7 +53803,7 @@ function ChartCorssCursor()
53494
53803
  this.Canvas.strokeStyle=this.VPenColor;
53495
53804
  if (this.VPenType==0)
53496
53805
  {
53497
- this.Canvas.setLineDash([3*pixel,2*pixel]); //虚线
53806
+ this.Canvas.setLineDash(this.LineDash); //虚线
53498
53807
  }
53499
53808
  else if (this.VPenType==2)
53500
53809
  {
@@ -56770,7 +57079,12 @@ function DynamicChartTitlePainting()
56770
57079
  {
56771
57080
  this.Font=g_JSChartResource.TitleFont;
56772
57081
  this.TitleColor=g_JSChartResource.DefaultTextColor;
57082
+ this.SelectedColor=g_JSChartResource.IndexTitleSelectedColor;
56773
57083
  this.OverlayIndexType.BGColor=g_JSChartResource.OverlayIndexTitleBGColor;
57084
+
57085
+ this.BGColor=g_JSChartResource.IndexTitleBGColor;
57086
+ this.BGBorderColor=g_JSChartResource.IndexTitleBorderColor;
57087
+ this.BGBorderMoveOnColor=g_JSChartResource.IndexTitleBorderMoveOnColor;
56774
57088
  }
56775
57089
 
56776
57090
  this.SetDynamicTitleData=function(outName, args, data)
@@ -70444,6 +70758,7 @@ function JSChartResource()
70444
70758
  this.CorssCursorHPenColor="rgb(130,130,130)"; //十字光标线段颜色(水平)
70445
70759
  this.CorssCursorVPenColor="rgb(130,130,130)"; //十字光标线段颜色(垂直)
70446
70760
  this.CorssCursorXRangeBGColor="rgba(100,149,237,0.3)"; //十字光标X轴访问背景色
70761
+ this.CorssCursorLineDash=[3*GetDevicePixelRatio(),2*GetDevicePixelRatio()]; //十字光标虚线
70447
70762
 
70448
70763
  this.CorssCursor=
70449
70764
  {
@@ -70814,6 +71129,20 @@ function JSChartResource()
70814
71129
  Offset:{ X:-5, Y:5 }
70815
71130
  }
70816
71131
 
71132
+ this.ChartSimpleRadar=
71133
+ {
71134
+ TextFont:{ Family:'微软雅黑' , Size:12 },
71135
+ BorderColor:"rgb(169,169,169)",
71136
+ Offset:{ X:-5, Y:5 },
71137
+ TextColor:"rgb(105,105,105)",
71138
+ AryBGColor:['rgba(255,255,255,0.9)', 'rgba(230, 234, 242,0.9)'],
71139
+ AryArea:
71140
+ [
71141
+ { Color:"rgba(242,154,118,0.4)", LineColor:"rgb(242,154,118)"},
71142
+ { Color:"rgba(121,197,228,0.4)", LineColor:"rgb(92,165,196)"},
71143
+ ],
71144
+ }
71145
+
70817
71146
  //手机端tooltip
70818
71147
  this.TooltipPaint = {
70819
71148
  BGColor:'rgba(250,250,250,0.8)', //背景色
@@ -71864,6 +72193,7 @@ function JSChartResource()
71864
72193
  if (style.CorssCursorHPenColor) this.CorssCursorHPenColor = style.CorssCursorHPenColor;
71865
72194
  if (style.CorssCursorBorderColor) this.CorssCursorBorderColor=style.CorssCursorBorderColor;
71866
72195
  if (style.CorssCursorXRangeBGColor) this.CorssCursorXRangeBGColor=style.CorssCursorXRangeBGColor;
72196
+ if (style.CorssCursorLineDash) this.CorssCursorLineDash=style.CorssCursorLineDash.slice();
71867
72197
  if (style.CorssCursor && style.CorssCursor.RightButton)
71868
72198
  {
71869
72199
  var item=style.CorssCursor.RightButton;
@@ -72044,6 +72374,7 @@ function JSChartResource()
72044
72374
 
72045
72375
  if (style.ChartSimpleTable) this.SetChartSimpleTable(style.ChartSimpleTable);
72046
72376
  if (style.ChartSimplePie) this.SetChartSimplePie(style.ChartSimplePie);
72377
+ if (style.ChartSimpleRadar) this.SetChartSimpleRadar(style.ChartSimpleRadar);
72047
72378
 
72048
72379
  if (style.DRAWICON)
72049
72380
  {
@@ -73137,6 +73468,30 @@ function JSChartResource()
73137
73468
  }
73138
73469
  }
73139
73470
 
73471
+ this.SetChartSimpleRadar=function(style)
73472
+ {
73473
+ var dest=this.ChartSimpleRadar;
73474
+ if (style.TextFont)
73475
+ {
73476
+ var item=style.TextFont;
73477
+ if (item.Name) dest.TextFont.Name=item.Name;
73478
+ if (IFrameSplitOperator.IsNumber(item.Size)) dest.TextFont.Size=item.Size;
73479
+ }
73480
+
73481
+ if (style.BorderColor) dest.BorderColor=style.BorderColor;
73482
+ if (style.TextColor) dest.TextColor=style.TextColor;
73483
+
73484
+ if (style.Offset)
73485
+ {
73486
+ var item=style.Offset;
73487
+ if (IFrameSplitOperator.IsNumber(item.X)) dest.Offset.X=item.X;
73488
+ if (IFrameSplitOperator.IsNumber(item.Y)) dest.Offset.Y=item.Y;
73489
+ }
73490
+
73491
+ if (IFrameSplitOperator.IsNonEmptyArray(style.AryBGColor)) dest.AryBGColor=style.AryBGColor.slice();
73492
+ if (IFrameSplitOperator.IsNonEmptyArray(style.AryArea)) dest.AryArea=style.AryArea.slice();
73493
+ }
73494
+
73140
73495
  }
73141
73496
 
73142
73497
  var g_JSChartResource=new JSChartResource();
@@ -85903,12 +86258,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
85903
86258
  this.CaclutateCallCationYRange();
85904
86259
  }
85905
86260
 
86261
+ //增量更新
85906
86262
  this.RecvUpdateMinuteData=function(data)
85907
86263
  {
85908
86264
  var minuteData=MinuteChartContainer.JsonDataToUpdateMinuteData(data);
85909
86265
  var aryColorData=MinuteChartContainer.JsonDataToMinuteLineColorData(data);
85910
- this.BeforeOpenData=null;
85911
- this.AfterCloseData=null;
86266
+
85912
86267
  var beforeOpenData=MinuteChartContainer.JsonDataToBeforeOpenData(data);
85913
86268
  var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);
85914
86269
  var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data); //数据最后的更新时间
@@ -85927,92 +86282,22 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
85927
86282
  return;
85928
86283
  }
85929
86284
 
85930
- //原始数据
86285
+ if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
86286
+ if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
85931
86287
 
86288
+ //原始数据
85932
86289
  this.UpdateLatestMinuteDataV2(minuteData);
85933
- var sourceData=this.SourceData;
85934
- var aryMinuteData=this.SourceData.Data;
85935
- this.ColorLineData=aryColorData;
85936
- this.TradeDate=data.stock[0].date;
85937
- this.Frame.SetDayCount(1); //单日数据
85938
- this.SourceData.UpdateTime=updateTime;
85939
- this.Symbol=minuteData.Symbol;
85940
- this.Name=minuteData.Name;
86290
+ this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvUpdateMinuteData"});
85941
86291
 
85942
- this.SetCallCationDataBorder( { Left:this.IsBeforeData, Right:this.IsAfterData , MultiDay:{ Left:false, Right:false }} );
85943
-
85944
- if (this.ShareAfterVol==2) //盘前, 盘后成交量公用坐标
85945
- {
85946
- if (this.BeforeOpenData && this.AfterCloseData)
85947
- {
85948
- var max=Math.max(this.BeforeOpenData.VolMax, this.AfterCloseData.VolMax);
85949
- var min=Math.min(this.BeforeOpenData.VolMin, this.AfterCloseData.VolMin);
85950
- this.BeforeOpenData.VolMax=this.AfterCloseData.VolMax=max;
85951
- this.BeforeOpenData.VolMin=this.AfterCloseData.VolMin=min;
85952
- }
85953
- }
85954
-
85955
- var yClose=minuteData.YClose;
85956
- var upperSymbol=this.Symbol.toUpperCase();
85957
- var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
85958
- if (minuteData.YClearing>0 && isFutures) yClose=minuteData.YClearing; //期货使用前结算价
85959
- this.CaclutateLimitPrice(yClose, minuteData.LimitPrice); //计算涨停价格
85960
- var extendData=null;
85961
- if (minuteData.High>0 && minuteData.Low>0) extendData={ High:minuteData.High, Low:minuteData.Low };
85962
- this.BindMainData(sourceData,yClose, extendData);
85963
-
85964
- if (this.Frame.SubFrame.length>2)
86292
+ if (data.AutoUpdate===false) //不执行自动更新
85965
86293
  {
85966
- var bindData=new ChartData();
85967
- bindData.Data=aryMinuteData;
85968
- for(var i=2; i<this.Frame.SubFrame.length; ++i)
85969
- {
85970
- this.BindIndexData(i,bindData);
85971
- }
85972
- }
85973
86294
 
85974
- for(let i=0; i<this.Frame.SubFrame.length; ++i)
86295
+ }
86296
+ else
85975
86297
  {
85976
- var item=this.Frame.SubFrame[i];
85977
- item.Frame.XSplitOperator.Symbol=this.Symbol;
85978
- item.Frame.XSplitOperator.DayCount=1;
85979
- item.Frame.XSplitOperator.Operator(); //调整X轴个数
85980
- item.Frame.YSplitOperator.Symbol=this.Symbol;
85981
-
85982
- if (IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))
85983
- {
85984
- for(var j=0;j<item.OverlayIndex.length; ++j) //子坐标X轴个数同步
85985
- {
85986
- var overlayItem=item.OverlayIndex[j];
85987
- overlayItem.Frame.XPointCount=item.Frame.XPointCount;
85988
- overlayItem.Frame.MinuteCount=item.Frame.MinuteCount;
85989
- }
85990
- }
86298
+ this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
86299
+ this.AutoUpdate();
85991
86300
  }
85992
-
85993
- this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;
85994
- this.ChartCorssCursor.StringFormatX.Symbol=this.Symbol;
85995
-
85996
- if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)) this.TitlePaint[0].IsShowDate=false;
85997
-
85998
- if (data.stock[0].IsHistoryMinute==true) this.TitlePaint[0].IsShowDate=true;
85999
-
86000
- var chartInfo=this.GetChartMinuteInfo();
86001
- if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
86002
-
86003
- this.RecvMinuteDataEvent( {FunctionName:"RecvUpdateMinuteData"} );
86004
- this.RequestMinuteInfoData();
86005
- this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
86006
- this.CreateChartDrawPictureByStorage(); //创建画图工具
86007
-
86008
- this.UpdateFrameMaxMin(); //调整坐标最大 最小值
86009
- this.Frame.SetSizeChage(true);
86010
- this.Draw();
86011
-
86012
- this.BindAllOverlayIndexData(this.SourceData);
86013
-
86014
- this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
86015
- this.AutoUpdate();
86016
86301
  }
86017
86302
 
86018
86303
  this.RecvMinuteData=function(data)
@@ -86079,15 +86364,31 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86079
86364
  var sourceData=new ChartData();
86080
86365
  sourceData.Data=aryMinuteData;
86081
86366
  sourceData.UpdateTime=updateTime;
86367
+ this.SourceData=sourceData;
86082
86368
 
86083
86369
  this.ColorLineData=aryColorData;
86084
86370
 
86085
- this.TradeDate=data.stock[0].date;
86371
+ this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvMinuteData", Day:{ IsFirstData:bFirstData} });
86372
+
86373
+ if (data.AutoUpdate===false) //不执行自动更新
86374
+ {
86375
+
86376
+ }
86377
+ else
86378
+ {
86379
+ this.AutoUpdateEvent(true, "MinuteChartContainer::RecvMinuteData");
86380
+ this.AutoUpdate();
86381
+ }
86382
+ }
86383
+
86384
+ //更新单日分时图
86385
+ this.UpdateMinuteUI=function(stockData, eventData)
86386
+ {
86387
+ this.TradeDate=stockData.date;
86086
86388
  this.Frame.SetDayCount(1); //单日数据
86087
86389
 
86088
- this.SourceData=sourceData;
86089
- this.Symbol=data.stock[0].symbol;
86090
- this.Name=data.stock[0].name;
86390
+ this.Symbol=stockData.symbol;
86391
+ this.Name=stockData.name;
86091
86392
 
86092
86393
  this.SetCallCationDataBorder( { Left:this.IsBeforeData, Right:this.IsAfterData , MultiDay:{ Left:false, Right:false }} );
86093
86394
 
@@ -86102,26 +86403,26 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86102
86403
  }
86103
86404
  }
86104
86405
 
86105
- var yClose=data.stock[0].yclose;
86406
+ var yClose=stockData.yclose;
86106
86407
  var upperSymbol=this.Symbol.toUpperCase();
86107
86408
  var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
86108
- if (data.stock[0].yclearing>0 && isFutures) yClose=data.stock[0].yclearing; //期货使用前结算价
86109
- this.CaclutateLimitPrice(yClose, data.stock[0].limitprice); //计算涨停价格
86409
+ if (stockData.yclearing>0 && isFutures) yClose=stockData.yclearing; //期货使用前结算价
86410
+ this.CaclutateLimitPrice(yClose, stockData.limitprice); //计算涨停价格
86110
86411
  var extendData=null;
86111
- if (data.stock[0].high>0 && data.stock[0].low>0) extendData={ High:data.stock[0].high, Low:data.stock[0].low };
86112
- this.BindMainData(sourceData,yClose, extendData);
86412
+ if (stockData.high>0 && stockData.low>0) extendData={ High:stockData.high, Low:stockData.low };
86413
+ this.BindMainData(this.SourceData,yClose, extendData);
86113
86414
 
86114
86415
  if (this.Frame.SubFrame.length>2)
86115
86416
  {
86116
86417
  var bindData=new ChartData();
86117
- bindData.Data=aryMinuteData;
86418
+ bindData.Data=this.SourceData.Data;
86118
86419
  for(var i=2; i<this.Frame.SubFrame.length; ++i)
86119
86420
  {
86120
86421
  this.BindIndexData(i,bindData);
86121
86422
  }
86122
86423
  }
86123
86424
 
86124
- for(let i in this.Frame.SubFrame)
86425
+ for(var i=0, j=0; i<this.Frame.SubFrame.length; ++i)
86125
86426
  {
86126
86427
  var item=this.Frame.SubFrame[i];
86127
86428
  item.Frame.XSplitOperator.Symbol=this.Symbol;
@@ -86129,7 +86430,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86129
86430
  item.Frame.XSplitOperator.Operator(); //调整X轴个数
86130
86431
  item.Frame.YSplitOperator.Symbol=this.Symbol;
86131
86432
 
86132
- for(var j in item.OverlayIndex) //子坐标X轴个数同步
86433
+ for(j=0;j<item.OverlayIndex.length;++j) //子坐标X轴个数同步
86133
86434
  {
86134
86435
  var overlayItem=item.OverlayIndex[j];
86135
86436
  overlayItem.Frame.XPointCount=item.Frame.XPointCount;
@@ -86142,12 +86443,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86142
86443
 
86143
86444
  if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)) this.TitlePaint[0].IsShowDate=false;
86144
86445
 
86145
- if (data.stock[0].IsHistoryMinute==true) this.TitlePaint[0].IsShowDate=true;
86446
+ if (stockData.IsHistoryMinute==true) this.TitlePaint[0].IsShowDate=true;
86146
86447
 
86147
86448
  var chartInfo=this.GetChartMinuteInfo();
86148
86449
  if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
86149
86450
 
86150
- this.RecvMinuteDataEvent( {FunctionName:"RecvMinuteData", Day:{ IsFirstData:bFirstData} } );
86451
+ if (eventData) this.RecvMinuteDataEvent( eventData );
86151
86452
  this.RequestMinuteInfoData();
86152
86453
  this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
86153
86454
  this.CreateChartDrawPictureByStorage(); //创建画图工具
@@ -86157,16 +86458,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86157
86458
  this.Draw();
86158
86459
 
86159
86460
  this.BindAllOverlayIndexData(this.SourceData);
86160
-
86161
- if (data.AutoUpdate===false) //不执行自动更新
86162
- {
86163
-
86164
- }
86165
- else
86166
- {
86167
- this.AutoUpdateEvent(true, "MinuteChartContainer::RecvMinuteData");
86168
- this.AutoUpdate();
86169
- }
86170
86461
  }
86171
86462
 
86172
86463
  this.CaclutateLimitPrice=function(yClose, limitData)