hqchart 1.1.14311 → 1.1.14320

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14311",
3
+ "version": "1.1.14320",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -11542,8 +11542,24 @@ function JSDraw(errorHandler,symbolData)
11542
11542
  }
11543
11543
 
11544
11544
  //饼图
11545
- this.PIE_CELL=function(value, color, text, textColor, lineColor)
11545
+ this.PIE_CELL=function(data, color, text, textColor, lineColor)
11546
11546
  {
11547
+ var value=null;
11548
+ if (IFrameSplitOperator.IsNumber(data))
11549
+ {
11550
+ value=data;
11551
+ }
11552
+ else if (IFrameSplitOperator.IsString(data))
11553
+ {
11554
+ value=parseFloat(data);
11555
+ }
11556
+ else if (IFrameSplitOperator.IsNonEmptyArray(data))
11557
+ {
11558
+ var lastValue=data[data.length-1];
11559
+ if (IFrameSplitOperator.IsNumber(lastValue)) value=lastValue;
11560
+ else if (IFrameSplitOperator.IsString(lastValue)) value=parseFloat(lastValue);
11561
+ }
11562
+
11547
11563
  var cellItem={ Value:value, Color:color };
11548
11564
  if (text) cellItem.Text=text;
11549
11565
  if (textColor) cellItem.TextColor=textColor;
@@ -31929,6 +31929,220 @@ 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
+ this.BorderPoint=[]; //边框点
31942
+ this.DataPoint=[]; //数据点
31943
+ this.CenterPoint={};
31944
+ this.StartAngle=0;
31945
+ this.Color='rgb(198,198,198)';
31946
+ this.AreaColor='rgba(242,154,118,0.4)'; //面积图颜色
31947
+ this.AreaLineColor='rgb(242,154,118)';
31948
+ this.TitleFont=24*GetDevicePixelRatio()+'px 微软雅黑';
31949
+ this.TitleColor='rgb(102,102,102)';
31950
+ this.BGColor = ['rgb(255,255,255)', 'rgb(224,224,224)']//背景色
31951
+
31952
+ this.DrawBorder=function() //画边框
31953
+ {
31954
+ if (this.BorderPoint.length<=0) return;
31955
+
31956
+ this.Canvas.font=this.TitleFont;
31957
+ this.Canvas.strokeStyle = this.Color;
31958
+ const aryBorder=[1,0.8,0.6,0.4,0.2];
31959
+ for (let j in aryBorder)
31960
+ {
31961
+ var rate = aryBorder[j];
31962
+ var isFirstDraw=true;
31963
+ for(let i in this.BorderPoint)
31964
+ {
31965
+ var item=this.BorderPoint[i];
31966
+ item.X = this.CenterPoint.X + item.Radius * Math.cos(item.Angle * Math.PI / 180) * rate;
31967
+ item.Y = this.CenterPoint.Y + item.Radius * Math.sin(item.Angle * Math.PI / 180) * rate;
31968
+ if (isFirstDraw)
31969
+ {
31970
+ this.Canvas.beginPath();
31971
+ this.Canvas.moveTo(item.X,item.Y);
31972
+ isFirstDraw=false;
31973
+ }
31974
+ else
31975
+ {
31976
+ this.Canvas.lineTo(item.X,item.Y);
31977
+ }
31978
+ }
31979
+
31980
+ this.Canvas.closePath();
31981
+ this.Canvas.stroke();
31982
+ this.Canvas.fillStyle = this.BGColor[j%2==0?0:1];
31983
+ this.Canvas.fill();
31984
+ }
31985
+
31986
+ this.Canvas.beginPath();
31987
+ for(let i in this.BorderPoint)
31988
+ {
31989
+ var item=this.BorderPoint[i];
31990
+ item.X = this.CenterPoint.X + item.Radius * Math.cos(item.Angle * Math.PI / 180);
31991
+ item.Y = this.CenterPoint.Y + item.Radius * Math.sin(item.Angle * Math.PI / 180);
31992
+ this.Canvas.moveTo(this.CenterPoint.X,this.CenterPoint.Y);
31993
+ this.Canvas.lineTo(item.X,item.Y);
31994
+ this.DrawText(item);
31995
+ }
31996
+ this.Canvas.stroke();
31997
+ }
31998
+
31999
+ this.DrawArea=function()
32000
+ {
32001
+ if (!this.DataPoint || this.DataPoint.length<=0) return;
32002
+
32003
+ this.Canvas.fillStyle = this.AreaColor;
32004
+ this.Canvas.strokeStyle = this.AreaLineColor;
32005
+ this.Canvas.beginPath();
32006
+ var isFirstDraw=true;
32007
+ for(let i in this.DataPoint)
32008
+ {
32009
+ var item=this.DataPoint[i];
32010
+ if (isFirstDraw)
32011
+ {
32012
+ this.Canvas.beginPath();
32013
+ this.Canvas.moveTo(item.X,item.Y);
32014
+ isFirstDraw=false;
32015
+ }
32016
+ else
32017
+ {
32018
+ this.Canvas.lineTo(item.X,item.Y);
32019
+ }
32020
+ }
32021
+
32022
+ this.Canvas.closePath();
32023
+ this.Canvas.fill();
32024
+ this.Canvas.stroke();
32025
+ }
32026
+
32027
+ this.DrawText=function(item)
32028
+ {
32029
+ if (!item.Text) return;
32030
+
32031
+ //JSConsole.Chart.Log(item.Text, item.Angle);
32032
+ this.Canvas.fillStyle = this.TitleColor;
32033
+ var xText = item.X, yText = item.Y;
32034
+
32035
+ //显示每个角度的位置
32036
+ if (item.Angle > 0 && item.Angle < 45) {
32037
+ this.Canvas.textAlign = 'left';
32038
+ this.Canvas.textBaseline = 'middle';
32039
+ xText += 2;
32040
+ }
32041
+ else if (item.Angle >= 0 && item.Angle < 90) {
32042
+ this.Canvas.textAlign = 'left';
32043
+ this.Canvas.textBaseline = 'top';
32044
+ xText += 2;
32045
+ }
32046
+ else if (item.Angle >= 90 && item.Angle < 135) {
32047
+ this.Canvas.textAlign = 'right';
32048
+ this.Canvas.textBaseline = 'top';
32049
+ xText -= 2;
32050
+ }
32051
+ else if (item.Angle >= 135 && item.Angle < 180) {
32052
+ this.Canvas.textAlign = 'right';
32053
+ this.Canvas.textBaseline = 'top';
32054
+ xText -= 2;
32055
+ }
32056
+ else if (item.Angle >= 180 && item.Angle < 225) {
32057
+ this.Canvas.textAlign = 'right';
32058
+ this.Canvas.textBaseline = 'middle';
32059
+ xText -= 2;
32060
+ }
32061
+ else if (item.Angle >= 225 && item.Angle <= 270) {
32062
+ this.Canvas.textAlign = 'center';
32063
+ this.Canvas.textBaseline = 'bottom';
32064
+ }
32065
+ else if (item.Angle > 270 && item.Angle < 315) {
32066
+ this.Canvas.textAlign = 'left';
32067
+ this.Canvas.textBaseline = 'bottom';
32068
+ xText += 2;
32069
+ }
32070
+ else {
32071
+ this.Canvas.textAlign = 'left';
32072
+ this.Canvas.textBaseline = 'middle';
32073
+ xText += 2;
32074
+ }
32075
+
32076
+ this.Canvas.fillText(item.Text, xText, yText);
32077
+ }
32078
+
32079
+ this.Draw=function()
32080
+ {
32081
+ this.BorderPoint=[];
32082
+ this.DataPoint=[];
32083
+ this.CenterPoint={};
32084
+ if (!this.Data || !this.Data.Data || !(this.Data.Data.length>0))
32085
+ this.CalculatePoints(null);
32086
+ else
32087
+ this.CalculatePoints(this.Data.Data);
32088
+
32089
+ this.DrawBorder();
32090
+ this.DrawArea();
32091
+ }
32092
+
32093
+ this.CalculatePoints=function(data)
32094
+ {
32095
+ let left=this.ChartBorder.GetLeft();
32096
+ let right=this.ChartBorder.GetRight();
32097
+ let top=this.ChartBorder.GetTop();
32098
+ let bottom=this.ChartBorder.GetBottom();
32099
+ let width=this.ChartBorder.GetWidth();
32100
+ let height=this.ChartBorder.GetHeight();
32101
+
32102
+ let ptCenter={X:left+width/2, Y:top+height/2}; //中心点
32103
+ let radius=Math.min(width/2,height/2)-2 //半径
32104
+ let count=Math.max(5,data?data.length:0);
32105
+ let averageAngle=360/count;
32106
+ for(let i=0;i<count;++i)
32107
+ {
32108
+ let ptBorder = { Index: i, Radius: radius, Angle: i * averageAngle + this.StartAngle };
32109
+ let angle = ptBorder.Angle;
32110
+
32111
+ if (data && i<data.length)
32112
+ {
32113
+ var item=data[i];
32114
+ let ptData={Index:i,Text:item.Text};
32115
+ ptBorder.Text=item.Name;
32116
+ if (!item.Value)
32117
+ {
32118
+ ptData.X=ptCenter.X;
32119
+ ptData.Y=ptCenter.Y;
32120
+ }
32121
+ else
32122
+ {
32123
+ var value=item.Value;
32124
+ if (value>=1) value=1;
32125
+ var dataRadius=radius*value;
32126
+ ptData.X=ptCenter.X+dataRadius*Math.cos(angle*Math.PI/180);
32127
+ ptData.Y=ptCenter.Y+dataRadius*Math.sin(angle*Math.PI/180);
32128
+ }
32129
+
32130
+ this.DataPoint.push(ptData);
32131
+ }
32132
+
32133
+ this.BorderPoint.push(ptBorder);
32134
+ }
32135
+
32136
+ this.CenterPoint=ptCenter;
32137
+ }
32138
+
32139
+ //空数据
32140
+ this.DrawEmptyData=function()
32141
+ {
32142
+ JSConsole.Chart.Log('[ChartPie::DrawEmptyData]')
32143
+ }
32144
+ }
32145
+
31932
32146
  //分钟成交量 支持横屏
31933
32147
  function ChartMinuteVolumBar()
31934
32148
  {
@@ -41487,6 +41701,7 @@ function ChartDrawSVG()
41487
41701
  {
41488
41702
  var item=this.Texts[i];
41489
41703
  var key=this.BuildKey(item);
41704
+ if (!key) continue;
41490
41705
 
41491
41706
  if (mapData.has(key))
41492
41707
  {
@@ -41792,10 +42007,13 @@ function ChartDrawSVG()
41792
42007
  }
41793
42008
 
41794
42009
  var x,y,price;
42010
+ var setKey=new Set(); //已经画过的Key就不再用了
41795
42011
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
41796
42012
  {
41797
42013
  var kItem=this.Data.Data[i];
41798
42014
  var key=this.BuildKey(kItem);
42015
+ if (setKey.has(key)) continue;
42016
+
41799
42017
  if (!this.MapCache.has(key)) continue;
41800
42018
  var mapItem=this.MapCache.get(key);
41801
42019
 
@@ -41953,6 +42171,8 @@ function ChartDrawSVG()
41953
42171
  this.Canvas.setLineDash([]);
41954
42172
  }
41955
42173
  }
42174
+
42175
+ setKey.add(key);
41956
42176
  }
41957
42177
  }
41958
42178
 
@@ -52550,6 +52770,7 @@ function ChartCorssCursor()
52550
52770
  this.TextBGColor=g_JSChartResource.CorssCursorBGColor; //文本背景色
52551
52771
  this.BorderColor=g_JSChartResource.CorssCursorBorderColor; //边框颜色
52552
52772
  this.XRangeBGColor=g_JSChartResource.CorssCursorXRangeBGColor;
52773
+ this.LineDash=g_JSChartResource.CorssCursorLineDash.slice(); //虚线
52553
52774
  this.TextHeight=20; //文本字体高度
52554
52775
  this.LastPoint;
52555
52776
  this.LastValue; //{ Y:{ Value:, Extend: } }
@@ -52605,6 +52826,7 @@ function ChartCorssCursor()
52605
52826
  this.TextBGColor=g_JSChartResource.CorssCursorBGColor; //文本背景色
52606
52827
  this.BorderColor=g_JSChartResource.CorssCursorBorderColor; //边框颜色
52607
52828
  this.XRangeBGColor=g_JSChartResource.CorssCursorXRangeBGColor;
52829
+ this.LineDash=g_JSChartResource.CorssCursorLineDash.slice(); //虚线
52608
52830
  }
52609
52831
 
52610
52832
  this.GetCloseYPoint=function(index)
@@ -52863,10 +53085,10 @@ function ChartCorssCursor()
52863
53085
  }
52864
53086
 
52865
53087
  var pixel=GetDevicePixelRatio();
52866
- if (this.HPenType==1 || this.HPenType==0) //0=实线 1=虚线
53088
+ if (this.HPenType==1 || this.HPenType==0) //0=虚线 1=实线
52867
53089
  {
52868
53090
  this.Canvas.strokeStyle=this.HPenColor;
52869
- if (this.HPenType==0) this.Canvas.setLineDash([3*pixel,2*pixel]); //虚线
53091
+ if (this.HPenType==0) this.Canvas.setLineDash(this.LineDash); //虚线
52870
53092
  //this.Canvas.lineWidth=0.5
52871
53093
  this.Canvas.beginPath();
52872
53094
  this.Canvas.moveTo(left,ToFixedPoint(y));
@@ -52879,7 +53101,7 @@ function ChartCorssCursor()
52879
53101
  this.Canvas.strokeStyle=this.VPenColor;
52880
53102
  if (this.VPenType==0)
52881
53103
  {
52882
- this.Canvas.setLineDash([3*pixel,2*pixel]); //虚线
53104
+ this.Canvas.setLineDash(this.LineDash); //虚线
52883
53105
  }
52884
53106
  else if (this.VPenType==2)
52885
53107
  {
@@ -53474,7 +53696,7 @@ function ChartCorssCursor()
53474
53696
  var pixel=GetDevicePixelRatio();
53475
53697
  this.Canvas.save();
53476
53698
  this.Canvas.strokeStyle=this.HPenColor;
53477
- if (this.HPenType==0) this.Canvas.setLineDash([3*pixel,2*pixel]); //虚线
53699
+ if (this.HPenType==0) this.Canvas.setLineDash(this.LineDash); //虚线
53478
53700
 
53479
53701
  //画竖线
53480
53702
  this.Canvas.beginPath();
@@ -53488,7 +53710,7 @@ function ChartCorssCursor()
53488
53710
  this.Canvas.strokeStyle=this.VPenColor;
53489
53711
  if (this.VPenType==0)
53490
53712
  {
53491
- this.Canvas.setLineDash([3*pixel,2*pixel]); //虚线
53713
+ this.Canvas.setLineDash(this.LineDash); //虚线
53492
53714
  }
53493
53715
  else if (this.VPenType==2)
53494
53716
  {
@@ -56764,7 +56986,12 @@ function DynamicChartTitlePainting()
56764
56986
  {
56765
56987
  this.Font=g_JSChartResource.TitleFont;
56766
56988
  this.TitleColor=g_JSChartResource.DefaultTextColor;
56989
+ this.SelectedColor=g_JSChartResource.IndexTitleSelectedColor;
56767
56990
  this.OverlayIndexType.BGColor=g_JSChartResource.OverlayIndexTitleBGColor;
56991
+
56992
+ this.BGColor=g_JSChartResource.IndexTitleBGColor;
56993
+ this.BGBorderColor=g_JSChartResource.IndexTitleBorderColor;
56994
+ this.BGBorderMoveOnColor=g_JSChartResource.IndexTitleBorderMoveOnColor;
56768
56995
  }
56769
56996
 
56770
56997
  this.SetDynamicTitleData=function(outName, args, data)
@@ -70438,6 +70665,7 @@ function JSChartResource()
70438
70665
  this.CorssCursorHPenColor="rgb(130,130,130)"; //十字光标线段颜色(水平)
70439
70666
  this.CorssCursorVPenColor="rgb(130,130,130)"; //十字光标线段颜色(垂直)
70440
70667
  this.CorssCursorXRangeBGColor="rgba(100,149,237,0.3)"; //十字光标X轴访问背景色
70668
+ this.CorssCursorLineDash=[3*GetDevicePixelRatio(),2*GetDevicePixelRatio()]; //十字光标虚线
70441
70669
 
70442
70670
  this.CorssCursor=
70443
70671
  {
@@ -71858,6 +72086,7 @@ function JSChartResource()
71858
72086
  if (style.CorssCursorHPenColor) this.CorssCursorHPenColor = style.CorssCursorHPenColor;
71859
72087
  if (style.CorssCursorBorderColor) this.CorssCursorBorderColor=style.CorssCursorBorderColor;
71860
72088
  if (style.CorssCursorXRangeBGColor) this.CorssCursorXRangeBGColor=style.CorssCursorXRangeBGColor;
72089
+ if (style.CorssCursorLineDash) this.CorssCursorLineDash=style.CorssCursorLineDash.slice();
71861
72090
  if (style.CorssCursor && style.CorssCursor.RightButton)
71862
72091
  {
71863
72092
  var item=style.CorssCursor.RightButton;
@@ -85897,12 +86126,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
85897
86126
  this.CaclutateCallCationYRange();
85898
86127
  }
85899
86128
 
86129
+ //增量更新
85900
86130
  this.RecvUpdateMinuteData=function(data)
85901
86131
  {
85902
86132
  var minuteData=MinuteChartContainer.JsonDataToUpdateMinuteData(data);
85903
86133
  var aryColorData=MinuteChartContainer.JsonDataToMinuteLineColorData(data);
85904
- this.BeforeOpenData=null;
85905
- this.AfterCloseData=null;
86134
+
85906
86135
  var beforeOpenData=MinuteChartContainer.JsonDataToBeforeOpenData(data);
85907
86136
  var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);
85908
86137
  var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data); //数据最后的更新时间
@@ -85921,92 +86150,22 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
85921
86150
  return;
85922
86151
  }
85923
86152
 
85924
- //原始数据
86153
+ if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
86154
+ if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
85925
86155
 
86156
+ //原始数据
85926
86157
  this.UpdateLatestMinuteDataV2(minuteData);
85927
- var sourceData=this.SourceData;
85928
- var aryMinuteData=this.SourceData.Data;
85929
- this.ColorLineData=aryColorData;
85930
- this.TradeDate=data.stock[0].date;
85931
- this.Frame.SetDayCount(1); //单日数据
85932
- this.SourceData.UpdateTime=updateTime;
85933
- this.Symbol=minuteData.Symbol;
85934
- this.Name=minuteData.Name;
85935
-
85936
- this.SetCallCationDataBorder( { Left:this.IsBeforeData, Right:this.IsAfterData , MultiDay:{ Left:false, Right:false }} );
85937
-
85938
- if (this.ShareAfterVol==2) //盘前, 盘后成交量公用坐标
85939
- {
85940
- if (this.BeforeOpenData && this.AfterCloseData)
85941
- {
85942
- var max=Math.max(this.BeforeOpenData.VolMax, this.AfterCloseData.VolMax);
85943
- var min=Math.min(this.BeforeOpenData.VolMin, this.AfterCloseData.VolMin);
85944
- this.BeforeOpenData.VolMax=this.AfterCloseData.VolMax=max;
85945
- this.BeforeOpenData.VolMin=this.AfterCloseData.VolMin=min;
85946
- }
85947
- }
86158
+ this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvUpdateMinuteData"});
85948
86159
 
85949
- var yClose=minuteData.YClose;
85950
- var upperSymbol=this.Symbol.toUpperCase();
85951
- var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
85952
- if (minuteData.YClearing>0 && isFutures) yClose=minuteData.YClearing; //期货使用前结算价
85953
- this.CaclutateLimitPrice(yClose, minuteData.LimitPrice); //计算涨停价格
85954
- var extendData=null;
85955
- if (minuteData.High>0 && minuteData.Low>0) extendData={ High:minuteData.High, Low:minuteData.Low };
85956
- this.BindMainData(sourceData,yClose, extendData);
85957
-
85958
- if (this.Frame.SubFrame.length>2)
86160
+ if (data.AutoUpdate===false) //不执行自动更新
85959
86161
  {
85960
- var bindData=new ChartData();
85961
- bindData.Data=aryMinuteData;
85962
- for(var i=2; i<this.Frame.SubFrame.length; ++i)
85963
- {
85964
- this.BindIndexData(i,bindData);
85965
- }
85966
- }
85967
86162
 
85968
- for(let i=0; i<this.Frame.SubFrame.length; ++i)
86163
+ }
86164
+ else
85969
86165
  {
85970
- var item=this.Frame.SubFrame[i];
85971
- item.Frame.XSplitOperator.Symbol=this.Symbol;
85972
- item.Frame.XSplitOperator.DayCount=1;
85973
- item.Frame.XSplitOperator.Operator(); //调整X轴个数
85974
- item.Frame.YSplitOperator.Symbol=this.Symbol;
85975
-
85976
- if (IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))
85977
- {
85978
- for(var j=0;j<item.OverlayIndex.length; ++j) //子坐标X轴个数同步
85979
- {
85980
- var overlayItem=item.OverlayIndex[j];
85981
- overlayItem.Frame.XPointCount=item.Frame.XPointCount;
85982
- overlayItem.Frame.MinuteCount=item.Frame.MinuteCount;
85983
- }
85984
- }
86166
+ this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
86167
+ this.AutoUpdate();
85985
86168
  }
85986
-
85987
- this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;
85988
- this.ChartCorssCursor.StringFormatX.Symbol=this.Symbol;
85989
-
85990
- if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)) this.TitlePaint[0].IsShowDate=false;
85991
-
85992
- if (data.stock[0].IsHistoryMinute==true) this.TitlePaint[0].IsShowDate=true;
85993
-
85994
- var chartInfo=this.GetChartMinuteInfo();
85995
- if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
85996
-
85997
- this.RecvMinuteDataEvent( {FunctionName:"RecvUpdateMinuteData"} );
85998
- this.RequestMinuteInfoData();
85999
- this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
86000
- this.CreateChartDrawPictureByStorage(); //创建画图工具
86001
-
86002
- this.UpdateFrameMaxMin(); //调整坐标最大 最小值
86003
- this.Frame.SetSizeChage(true);
86004
- this.Draw();
86005
-
86006
- this.BindAllOverlayIndexData(this.SourceData);
86007
-
86008
- this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
86009
- this.AutoUpdate();
86010
86169
  }
86011
86170
 
86012
86171
  this.RecvMinuteData=function(data)
@@ -86073,15 +86232,31 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86073
86232
  var sourceData=new ChartData();
86074
86233
  sourceData.Data=aryMinuteData;
86075
86234
  sourceData.UpdateTime=updateTime;
86235
+ this.SourceData=sourceData;
86076
86236
 
86077
86237
  this.ColorLineData=aryColorData;
86078
86238
 
86079
- this.TradeDate=data.stock[0].date;
86239
+ this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvMinuteData", Day:{ IsFirstData:bFirstData} });
86240
+
86241
+ if (data.AutoUpdate===false) //不执行自动更新
86242
+ {
86243
+
86244
+ }
86245
+ else
86246
+ {
86247
+ this.AutoUpdateEvent(true, "MinuteChartContainer::RecvMinuteData");
86248
+ this.AutoUpdate();
86249
+ }
86250
+ }
86251
+
86252
+ //更新单日分时图
86253
+ this.UpdateMinuteUI=function(stockData, eventData)
86254
+ {
86255
+ this.TradeDate=stockData.date;
86080
86256
  this.Frame.SetDayCount(1); //单日数据
86081
86257
 
86082
- this.SourceData=sourceData;
86083
- this.Symbol=data.stock[0].symbol;
86084
- this.Name=data.stock[0].name;
86258
+ this.Symbol=stockData.symbol;
86259
+ this.Name=stockData.name;
86085
86260
 
86086
86261
  this.SetCallCationDataBorder( { Left:this.IsBeforeData, Right:this.IsAfterData , MultiDay:{ Left:false, Right:false }} );
86087
86262
 
@@ -86096,26 +86271,26 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86096
86271
  }
86097
86272
  }
86098
86273
 
86099
- var yClose=data.stock[0].yclose;
86274
+ var yClose=stockData.yclose;
86100
86275
  var upperSymbol=this.Symbol.toUpperCase();
86101
86276
  var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
86102
- if (data.stock[0].yclearing>0 && isFutures) yClose=data.stock[0].yclearing; //期货使用前结算价
86103
- this.CaclutateLimitPrice(yClose, data.stock[0].limitprice); //计算涨停价格
86277
+ if (stockData.yclearing>0 && isFutures) yClose=stockData.yclearing; //期货使用前结算价
86278
+ this.CaclutateLimitPrice(yClose, stockData.limitprice); //计算涨停价格
86104
86279
  var extendData=null;
86105
- if (data.stock[0].high>0 && data.stock[0].low>0) extendData={ High:data.stock[0].high, Low:data.stock[0].low };
86106
- this.BindMainData(sourceData,yClose, extendData);
86280
+ if (stockData.high>0 && stockData.low>0) extendData={ High:stockData.high, Low:stockData.low };
86281
+ this.BindMainData(this.SourceData,yClose, extendData);
86107
86282
 
86108
86283
  if (this.Frame.SubFrame.length>2)
86109
86284
  {
86110
86285
  var bindData=new ChartData();
86111
- bindData.Data=aryMinuteData;
86286
+ bindData.Data=this.SourceData.Data;
86112
86287
  for(var i=2; i<this.Frame.SubFrame.length; ++i)
86113
86288
  {
86114
86289
  this.BindIndexData(i,bindData);
86115
86290
  }
86116
86291
  }
86117
86292
 
86118
- for(let i in this.Frame.SubFrame)
86293
+ for(var i=0, j=0; i<this.Frame.SubFrame.length; ++i)
86119
86294
  {
86120
86295
  var item=this.Frame.SubFrame[i];
86121
86296
  item.Frame.XSplitOperator.Symbol=this.Symbol;
@@ -86123,7 +86298,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86123
86298
  item.Frame.XSplitOperator.Operator(); //调整X轴个数
86124
86299
  item.Frame.YSplitOperator.Symbol=this.Symbol;
86125
86300
 
86126
- for(var j in item.OverlayIndex) //子坐标X轴个数同步
86301
+ for(j=0;j<item.OverlayIndex.length;++j) //子坐标X轴个数同步
86127
86302
  {
86128
86303
  var overlayItem=item.OverlayIndex[j];
86129
86304
  overlayItem.Frame.XPointCount=item.Frame.XPointCount;
@@ -86136,12 +86311,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86136
86311
 
86137
86312
  if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)) this.TitlePaint[0].IsShowDate=false;
86138
86313
 
86139
- if (data.stock[0].IsHistoryMinute==true) this.TitlePaint[0].IsShowDate=true;
86314
+ if (stockData.IsHistoryMinute==true) this.TitlePaint[0].IsShowDate=true;
86140
86315
 
86141
86316
  var chartInfo=this.GetChartMinuteInfo();
86142
86317
  if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
86143
86318
 
86144
- this.RecvMinuteDataEvent( {FunctionName:"RecvMinuteData", Day:{ IsFirstData:bFirstData} } );
86319
+ if (eventData) this.RecvMinuteDataEvent( eventData );
86145
86320
  this.RequestMinuteInfoData();
86146
86321
  this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
86147
86322
  this.CreateChartDrawPictureByStorage(); //创建画图工具
@@ -86151,16 +86326,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86151
86326
  this.Draw();
86152
86327
 
86153
86328
  this.BindAllOverlayIndexData(this.SourceData);
86154
-
86155
- if (data.AutoUpdate===false) //不执行自动更新
86156
- {
86157
-
86158
- }
86159
- else
86160
- {
86161
- this.AutoUpdateEvent(true, "MinuteChartContainer::RecvMinuteData");
86162
- this.AutoUpdate();
86163
- }
86164
86329
  }
86165
86330
 
86166
86331
  this.CaclutateLimitPrice=function(yClose, limitData)