hqchart 1.1.14394 → 1.1.14406

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.
@@ -951,6 +951,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
951
951
  }
952
952
  }
953
953
 
954
+ if (option.EnableYDrag)
955
+ {
956
+ var item=option.EnableYDrag;
957
+ if (IFrameSplitOperator.IsBool(item.Left)) chart.EnableYDrag.Left=item.Left;
958
+ if (IFrameSplitOperator.IsBool(item.Right)) chart.EnableYDrag.Right=item.Right;
959
+ if (IFrameSplitOperator.IsBool(item.Wheel)) chart.EnableYDrag.Wheel=item.Wheel;
960
+ if (IFrameSplitOperator.IsNumber(item.WheelYMove)) chart.EnableYDrag.WheelYMove=item.WheelYMove;
961
+ }
962
+
954
963
  //分页
955
964
  if (option.PageInfo) chart.SetPageInfo(option.PageInfo);
956
965
 
@@ -1026,7 +1035,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1026
1035
  }
1027
1036
  if (item.Height>=0) chart.Frame.SubFrame[i].Height = item.Height;
1028
1037
  if (item.Custom) chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;
1029
- if (item.RightTextFormat>0) chart.Frame.SubFrame[i].Frame.YSplitOperator.RightTextFormat=item.RightTextFormat;
1030
1038
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
1031
1039
  if (IFrameSplitOperator.IsNumber(item.BorderLine)) chart.Frame.SubFrame[i].Frame.BorderLine=item.BorderLine;
1032
1040
  if (IFrameSplitOperator.IsBool(item.EnableRemoveZero)) chart.Frame.SubFrame[i].Frame.YSplitOperator.EnableRemoveZero=item.EnableRemoveZero;
@@ -1044,6 +1052,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1044
1052
 
1045
1053
  if (item.ClientBGColor) subFrame.ClientBGColor=item.ClientBGColor;
1046
1054
  if (!IFrameSplitOperator.IsUndefined(item.HorizontalReserved)) subFrame.HorizontalReserved=item.HorizontalReserved;
1055
+
1056
+ if (i==0)
1057
+ {
1058
+ if (IFrameSplitOperator.IsNumber(item.RightTextFormat))
1059
+ {
1060
+ subFrame.YSplitOperator.RightTextFormat=item.RightTextFormat;
1061
+ if (item.RightTextFormat==2) subFrame.MultiTextFormat=1;
1062
+ }
1063
+ }
1047
1064
  }
1048
1065
 
1049
1066
  chart.UpdateXShowText();
@@ -12436,7 +12453,7 @@ function AverageWidthFrame()
12436
12453
  var item=aryText[i];
12437
12454
  var message=item.Item;
12438
12455
 
12439
- this.Canvas.textBaseline=message.TextBaseline;
12456
+ this.Canvas.textBaseline=item.TextBaseline;
12440
12457
  if (message.ExtendData && message.ExtendData.Font) this.Canvas.font=message.ExtendData.Font;
12441
12458
  else if (message.Font) this.Canvas.font=message.Font;
12442
12459
 
@@ -14059,20 +14076,17 @@ function AverageWidthFrame()
14059
14076
 
14060
14077
  if (Array.isArray(item.Message[1]))
14061
14078
  {
14062
- if (this.MultiTextFormat==1) //显示1行 格式:价格/百分比
14079
+ if (this.MultiTextFormat==1 && IFrameSplitOperator.IsNonEmptyArray(item.Message[1])) //显示1行 格式:价格/百分比
14063
14080
  {
14064
- if (item.ExtendData)
14065
- {
14066
- if (item.ExtendData.Font) this.Canvas.font=item.ExtendData.Font;
14067
- var width1=this.Canvas.measureText(item.Message[1][0]).width;
14068
- var width2=this.Canvas.measureText(item.Message[1][1]).width;
14069
- var width3=this.Canvas.measureText('/').width;
14070
- textWidth=width1+width3;
14071
-
14072
- if (rightExtendWidth<width2) rightExtendWidth=width2;
14081
+ if (item.ExtendData && item.ExtendData.Font) this.Canvas.font=item.ExtendData.Font;
14082
+
14083
+ var width1=this.Canvas.measureText(item.Message[1][0]).width;
14084
+ var width2=this.Canvas.measureText(item.Message[1][1]).width;
14085
+ var width3=this.Canvas.measureText('/').width;
14086
+ textWidth=width1+width3;
14087
+ if (rightExtendWidth<width2) rightExtendWidth=width2;
14073
14088
 
14074
- //JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[1][1]}/${item.Message[1][0]} ${textWidth}, ${rightExtendWidth}`);
14075
- }
14089
+ //JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[1][1]}/${item.Message[1][0]} ${textWidth}, ${rightExtendWidth}`);
14076
14090
  }
14077
14091
  else if (this.MultiTextFormat==2) //显示2行
14078
14092
  {
@@ -37097,7 +37111,7 @@ function ChartMinutePriceLine()
37097
37111
  if (value==null) continue;
37098
37112
 
37099
37113
  var x=this.ChartFrame.GetXFromIndex(j);
37100
- var y=this.ChartFrame.GetYFromData(value);
37114
+ var y=this.ChartFrame.GetYFromData(value,false);
37101
37115
 
37102
37116
  if (bFirstPoint)
37103
37117
  {
@@ -52334,7 +52348,7 @@ function FrameSplitMinutePriceY()
52334
52348
  this.DefaultSplitType=0;
52335
52349
  this.LimitPrice; //{Max: Min:} 涨跌停价
52336
52350
  this.Custom;
52337
- this.RightTextFormat=0; //右边刻度显示模式 0=百分比 1=价格
52351
+ this.RightTextFormat=0; //右边刻度显示模式 0=百分比 1=价格 2=价格 | 百分比
52338
52352
 
52339
52353
  this.BeforeOpenData;
52340
52354
  this.IsBeforeData=false;
@@ -52350,9 +52364,12 @@ function FrameSplitMinutePriceY()
52350
52364
  this.GlobalOption;
52351
52365
  this.HQChart;
52352
52366
 
52367
+ this.FixedYMaxMin; //{ Max, Min} 固定Y轴最大最小值
52368
+ this.EnableZoomUpDown=false;
52369
+
52353
52370
  this.IsEnableDragY=function()
52354
52371
  {
52355
- return false;
52372
+ return true;
52356
52373
  }
52357
52374
 
52358
52375
  this.Operator=function()
@@ -52361,23 +52378,35 @@ function FrameSplitMinutePriceY()
52361
52378
  this.Frame.CustomHorizontalInfo=[];
52362
52379
  if (!this.Data) return;
52363
52380
 
52364
- var range=this.GetMaxMin();
52381
+ var range=null;
52382
+ var isFixedMaxMin=(this.FixedYMaxMin && IFrameSplitOperator.IsNumber(this.FixedYMaxMin.Max) && IFrameSplitOperator.IsNumber(this.FixedYMaxMin.Min));
52383
+ if (isFixedMaxMin)
52384
+ {
52385
+ range={ Max:this.FixedYMaxMin.Max, Min:this.FixedYMaxMin.Min };
52386
+ JSConsole.Chart.Log(`[FrameSplitMinutePriceY::Operator] FixedYMaxMin.Max=${this.FixedYMaxMin.Max} FixedYMaxMin.Min=${this.FixedYMaxMin.Min} `);
52387
+ }
52388
+ else
52389
+ {
52390
+ range=this.GetMaxMin();
52391
+ }
52365
52392
 
52366
52393
  if (this.Symbol && MARKET_SUFFIX_NAME.IsUSA(this.Symbol.toUpperCase()))
52367
52394
  {
52368
- this.USASplit(range);
52395
+ this.USASplit(range,isFixedMaxMin);
52369
52396
  }
52370
52397
  else if (this.SplitType==2)
52371
52398
  {
52372
- this.USASplit(range);
52399
+ this.USASplit(range,isFixedMaxMin);
52373
52400
  }
52374
52401
  else
52375
52402
  {
52376
- this.DefaultSplit(range);
52403
+ this.DefaultSplit(range,isFixedMaxMin);
52377
52404
  }
52378
52405
 
52379
52406
  this.CustomCoordinate();
52380
52407
 
52408
+ if (this.EnableZoomUpDown==true && !this.FixedYMaxMin) this.FixedYMaxMin={ Max:range.Max, Min:range.Min };
52409
+
52381
52410
  this.ReservedHeight({ Max:this.Frame.HorizontalMax, Min:this.Frame.HorizontalMin }); //预留高度
52382
52411
 
52383
52412
  if (this.GetEventCallback)
@@ -52765,21 +52794,7 @@ function FrameSplitMinutePriceY()
52765
52794
  if (this.YClose && price==this.YClose) continue;
52766
52795
  var coordinate=new CoordinateInfo();
52767
52796
  coordinate.Value=price;
52768
- var strPrice=price.toFixed(defaultfloatPrecision); //价格刻度字符串
52769
- if (this.IsShowLeftText) coordinate.Message[0]=strPrice;
52770
-
52771
- if (this.YClose && this.YClose!=0)
52772
- {
52773
- var per=(price/this.YClose-1)*100;
52774
- if (per>0) coordinate.TextColor=g_JSChartResource.UpTextColor;
52775
- else if (per<0) coordinate.TextColor=g_JSChartResource.DownTextColor;
52776
- if (this.IsShowRightText)
52777
- {
52778
- if (this.RightTextFormat==1) coordinate.Message[1]=strPrice;
52779
- else coordinate.Message[1]=IFrameSplitOperator.FormatValueString(per,2)+'%'; //百分比
52780
- }
52781
- }
52782
-
52797
+ this.FormatCoordinate(coordinate,defaultfloatPrecision);
52783
52798
  this.Frame.HorizontalInfo.push(coordinate);
52784
52799
  }
52785
52800
 
@@ -52808,22 +52823,25 @@ function FrameSplitMinutePriceY()
52808
52823
  this.Frame.HorizontalMin=min;
52809
52824
  }
52810
52825
 
52811
- this.DefaultSplit=function(range)
52826
+ this.DefaultSplit=function(range,isFixedMaxMin)
52812
52827
  {
52813
52828
  var max=range.Max;
52814
52829
  var min=range.Min;
52815
52830
 
52816
- if (this.YClose==max && this.YClose==min)
52831
+ if (!isFixedMaxMin)
52817
52832
  {
52818
- max=this.YClose+this.YClose*0.1;
52819
- min=this.YClose-this.YClose*0.1
52820
- }
52821
- else
52822
- {
52823
- var distanceValue=Math.max(Math.abs(this.YClose-max),Math.abs(this.YClose-min));
52824
- max=this.YClose+distanceValue;
52825
- min=this.YClose-distanceValue;
52826
- if (min<0) min=range.Min;
52833
+ if (this.YClose==max && this.YClose==min)
52834
+ {
52835
+ max=this.YClose+this.YClose*0.1;
52836
+ min=this.YClose-this.YClose*0.1
52837
+ }
52838
+ else
52839
+ {
52840
+ var distanceValue=Math.max(Math.abs(this.YClose-max),Math.abs(this.YClose-min));
52841
+ max=this.YClose+distanceValue;
52842
+ min=this.YClose-distanceValue;
52843
+ if (min<0) min=range.Min;
52844
+ }
52827
52845
  }
52828
52846
 
52829
52847
  var pixelTatio = GetDevicePixelRatio(); //获取设备的分辨率
@@ -52836,13 +52854,34 @@ function FrameSplitMinutePriceY()
52836
52854
  const minDistance=[1, 0.1, 0.01, 0.001, 0.0001];
52837
52855
  var defaultfloatPrecision=GetfloatPrecision(this.Symbol);
52838
52856
  if (isPhoneModel && MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol)) defaultfloatPrecision = 0; //手机端指数不显示小数位数,太长了
52839
- if (distance<minDistance[defaultfloatPrecision])
52857
+ if (distance<minDistance[defaultfloatPrecision] && !isFixedMaxMin)
52840
52858
  {
52841
52859
  distance=minDistance[defaultfloatPrecision];
52842
52860
  max=this.YClose+(distance*(showCount-1)/2);
52843
52861
  min=this.YClose-(distance*(showCount-1)/2);
52844
52862
  }
52845
52863
 
52864
+ var aryCoordinate=[];
52865
+ var extendValue=distance*0.5;
52866
+ for(var price=this.YClose, i=0; price<=max+extendValue && i<30; price+=distance, ++i)
52867
+ {
52868
+ var coordinate=new CoordinateInfo();
52869
+ coordinate.Value=price;
52870
+ this.FormatCoordinate(coordinate,defaultfloatPrecision);
52871
+ aryCoordinate.push(coordinate);
52872
+ }
52873
+
52874
+ for(var price=this.YClose-distance, i=0; price>=min-extendValue && i<30; price-=distance, ++i)
52875
+ {
52876
+ var coordinate=new CoordinateInfo();
52877
+ coordinate.Value=price;
52878
+ this.FormatCoordinate(coordinate,defaultfloatPrecision);
52879
+ aryCoordinate.push(coordinate);
52880
+ }
52881
+
52882
+ aryCoordinate.sort((left,right)=>{ return left.Value-right.Value; })
52883
+
52884
+ /*
52846
52885
  for(var i=0;i<showCount;++i)
52847
52886
  {
52848
52887
  var price=min+(distance*i);
@@ -52857,11 +52896,21 @@ function FrameSplitMinutePriceY()
52857
52896
  var per=(price/this.YClose-1)*100;
52858
52897
  if (per>0) coordinate.TextColor=g_JSChartResource.UpTextColor;
52859
52898
  else if (per<0) coordinate.TextColor=g_JSChartResource.DownTextColor;
52860
-
52899
+ var strPer=`${IFrameSplitOperator.FormatValueString(per,2)}%`;
52861
52900
  if (this.IsShowRightText)
52862
52901
  {
52863
- if (this.RightTextFormat==1) coordinate.Message[1]=strPrice;
52864
- else coordinate.Message[1]=IFrameSplitOperator.FormatValueString(per,2)+'%'; //百分比
52902
+ if (this.RightTextFormat==1)
52903
+ {
52904
+ coordinate.Message[1]=strPrice;
52905
+ }
52906
+ else if (this.RightTextFormat==2) //价格/百分比
52907
+ {
52908
+ coordinate.Message[1]=[strPer,strPrice];
52909
+ }
52910
+ else
52911
+ {
52912
+ coordinate.Message[1]=strPer; //百分比
52913
+ }
52865
52914
  }
52866
52915
 
52867
52916
  if (Math.abs(price-this.YClose) <0.00000000001) //小数有精度问题 使用差值
@@ -52871,13 +52920,51 @@ function FrameSplitMinutePriceY()
52871
52920
  if (g_JSChartResource.FrameDotSplitPen) coordinate.LineColor=g_JSChartResource.FrameDotSplitPen;
52872
52921
  }
52873
52922
  }
52874
-
52875
- }
52923
+ }*/
52876
52924
 
52925
+ this.Frame.HorizontalInfo=aryCoordinate;
52877
52926
  this.Frame.HorizontalMax=max;
52878
52927
  this.Frame.HorizontalMin=min;
52879
52928
  }
52880
52929
 
52930
+ this.FormatCoordinate=function(coordinate, defaultfloatPrecision)
52931
+ {
52932
+ var price=coordinate.Value;
52933
+ var strPrice=price.toFixed(defaultfloatPrecision); //价格刻度字符串
52934
+ if (this.IsShowLeftText) coordinate.Message[0]=strPrice;
52935
+
52936
+ if (IFrameSplitOperator.IsNumber(this.YClose) && this.YClose!=0)
52937
+ {
52938
+ var per=(price/this.YClose-1)*100;
52939
+ if (per>0) coordinate.TextColor=g_JSChartResource.UpTextColor;
52940
+ else if (per<0) coordinate.TextColor=g_JSChartResource.DownTextColor;
52941
+ var strPer=`${IFrameSplitOperator.FormatValueString(per,2)}%`;
52942
+
52943
+ if (this.IsShowRightText)
52944
+ {
52945
+ if (this.RightTextFormat==1)
52946
+ {
52947
+ coordinate.Message[1]=strPrice;
52948
+ }
52949
+ else if (this.RightTextFormat==2) //价格/百分比
52950
+ {
52951
+ coordinate.Message[1]=[strPer,strPrice];
52952
+ }
52953
+ else
52954
+ {
52955
+ coordinate.Message[1]=strPer; //百分比
52956
+ }
52957
+ }
52958
+
52959
+ if (Math.abs(price-this.YClose) <0.00000000001) //小数有精度问题 使用差值
52960
+ {
52961
+ coordinate.LineType=2;//中间的线画虚线
52962
+ coordinate.TextColor=g_JSChartResource.UnchagneTextColor;
52963
+ if (g_JSChartResource.FrameDotSplitPen) coordinate.LineColor=g_JSChartResource.FrameDotSplitPen;
52964
+ }
52965
+ }
52966
+ }
52967
+
52881
52968
  }
52882
52969
 
52883
52970
  function FrameSplitMinuteX()
@@ -83575,14 +83662,30 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
83575
83662
  var moveSetp=moveData.X;
83576
83663
  var yMoveSetp=moveData.Y;
83577
83664
 
83578
- if (this.RectSelectDrag && this.RectSelectDrag.Index>=0) //区间选择
83665
+ var bNeedDraw=true;
83666
+ if (this.UpDownDrag && this.UpDownDrag.Index>=0)
83667
+ {
83668
+ if (yMoveSetp>=5)
83669
+ {
83670
+ var yMove=e.clientY-drag.LastMove.Y;
83671
+ JSConsole.Chart.Log("[MinuteChartContainer::OnDragMode_One] UpDownDrag ",this.UpDownDrag,yMove);
83672
+ //this.UIElement.style.cursor="pointer";
83673
+ this.SetCursor({Cursor:"pointer"});
83674
+ if (this.OnUpDonwFrameY(this.UpDownDrag, yMove))
83675
+ {
83676
+ drag.LastMove.Y=e.clientY;
83677
+ bNeedDraw=true;
83678
+ }
83679
+ }
83680
+ }
83681
+ else if (this.RectSelectDrag && this.RectSelectDrag.Index>=0) //区间选择
83579
83682
  {
83580
83683
  if (moveSetp<5) return;
83581
83684
  var obj={ X:e.clientX, Y:e.clientY, PointIndex:this.RectSelectDrag.Index, Name:"MoveRectSelectLine" };
83582
83685
  if (this.MoveRectSelectPoint(obj))
83583
83686
  {
83584
83687
  drag.LastMove.X=e.clientX;
83585
- this.Draw();
83688
+ bNeedDraw=true;
83586
83689
  }
83587
83690
  }
83588
83691
  else
@@ -83600,6 +83703,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
83600
83703
  drag.LastMove.X=e.clientX;
83601
83704
  drag.LastMove.Y=e.clientY;
83602
83705
  }
83706
+
83707
+ if (bNeedDraw) this.Draw();
83603
83708
  }
83604
83709
 
83605
83710
  this.OnMinuteSelectRectMouseUp=function(e)
@@ -83617,8 +83722,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
83617
83722
  selectData.YEnd=(drag.LastMove.Y-uielement.getBoundingClientRect().top)*pixelTatio;
83618
83723
  selectData.JSChartContainer=this;
83619
83724
  selectData.Stock={Symbol:this.Symbol, Name:this.Name};
83725
+
83726
+ if (this.UpDownDrag)
83727
+ {
83620
83728
 
83621
- if (this.EnableSelectRect && !this.BorderDrag && this.GetSelectRectData(selectData))
83729
+ }
83730
+ else if (this.EnableSelectRect && !this.BorderDrag && this.GetSelectRectData(selectData))
83622
83731
  {
83623
83732
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SELECT_RECT);
83624
83733
  var paint=this.GetRectSelectPaint();
@@ -83989,25 +84098,83 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
83989
84098
  }
83990
84099
  }
83991
84100
 
84101
+
84102
+ this.GetDataIndexByDatTime=function(date, time)
84103
+ {
84104
+ var result={ DayIndex:-1, DataIndex:-1, Index:-1 };
84105
+ var frame=this.Frame.SubFrame[0].Frame;
84106
+ var minCount=frame.MinuteCount; //每天的分钟个数
84107
+ var kData=this.GetKData();
84108
+ for(var i=0;i<kData.Data.length;++i)
84109
+ {
84110
+ var minItem=kData.Data[i];
84111
+ if (!minItem) continue;
84112
+
84113
+ if (minItem.Date==date && minItem.Time==time)
84114
+ {
84115
+ result.Index=i;
84116
+ result.DayIndex=parseInt(i/minCount);
84117
+ result.DataIndex=i%minCount;
84118
+ break;
84119
+ }
84120
+ }
84121
+
84122
+ return result;
84123
+ }
84124
+
84125
+ //获取十字光标位置 通过日期和时间 目前只支持连续交易时间段
84126
+ this.GetCorssCursorIndexByDateTime=function(date, time)
84127
+ {
84128
+ var border=this.Frame.ChartBorder.GetBorder();
84129
+
84130
+ if (border.DayBorder) //多日分时主图+多日集合竞价
84131
+ {
84132
+ var corssCursorIndex=this.GetDataIndexByDatTime(date, time);
84133
+ corssCursorIndex.Type=10;
84134
+ }
84135
+ else //单日,多日
84136
+ {
84137
+ var corssCursorIndex=this.GetDataIndexByDatTime(date, time);
84138
+ corssCursorIndex.Type=1;
84139
+ corssCursorIndex.DayIndex=0;
84140
+ corssCursorIndex.DataIndex=corssCursorIndex.Index;
84141
+ }
84142
+
84143
+ return corssCursorIndex;
84144
+ }
84145
+
83992
84146
  this.LockCorssCursor=function(option)
83993
84147
  {
83994
84148
  var xItem=this.GlobalOption.LockCorssCursor.X;
84149
+
84150
+ var corssCursorIndex={ DayIndex:-1, DataIndex:-1, Type:-1, Index:this.CursorIndex };
84151
+ if (this.EnableNewIndex)
84152
+ {
84153
+ corssCursorIndex.Type=this.CorssCursorIndex.Type;
84154
+ corssCursorIndex.DayIndex=this.CorssCursorIndex.DayIndex;
84155
+ corssCursorIndex.DataIndex=this.CorssCursorIndex.DataIndex;
84156
+ }
84157
+
84158
+ if (option && option.KItem) //指定日期时间
84159
+ {
84160
+ corssCursorIndex=this.GetCorssCursorIndexByDateTime(option.KItem.Date, option.KItem.Time);
84161
+ }
83995
84162
 
83996
84163
  if (this.EnableNewIndex)
83997
84164
  {
83998
- if (this.CorssCursorIndex.Type!=1 && this.CorssCursorIndex.Type!=10) return false; //目前只支持连续交易时间段
84165
+ if (corssCursorIndex.Type!=1 && corssCursorIndex.Type!=10) return false; //目前只支持连续交易时间段
83999
84166
 
84000
84167
  xItem.Minute=
84001
84168
  {
84002
- DayIndex:this.CorssCursorIndex.DayIndex,
84003
- DataIndex:this.CorssCursorIndex.DataIndex,
84004
- Type:this.CorssCursorIndex.Type,
84005
- CursorIndex:this.CursorIndex,
84169
+ DayIndex:corssCursorIndex.DayIndex,
84170
+ DataIndex:corssCursorIndex.DataIndex,
84171
+ Type:corssCursorIndex.Type,
84172
+ CursorIndex:corssCursorIndex.Index,
84006
84173
  };
84007
84174
  }
84008
84175
  else
84009
84176
  {
84010
- xItem.Minute={ CursorIndex:this.CursorIndex };
84177
+ xItem.Minute={ CursorIndex:corssCursorIndex.Index };
84011
84178
  }
84012
84179
 
84013
84180
  xItem.Enable=true;
@@ -84083,12 +84250,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
84083
84250
  var x=null;
84084
84251
  var dayIndex=corssCursorIndex.DayIndex;
84085
84252
  var dataIndex=corssCursorIndex.DataIndex;
84086
- switch(corssCursorIndex.Type) //单日 1=主图 2=盘前 3=盘后 //多日 10=主图 20=盘前 30=盘后
84253
+ var frame=this.Frame.SubFrame[0].Frame;
84254
+ switch(corssCursorIndex.Type) //单日,多日 1=主图 2=盘前 3=盘后 //多日+多日集合竞价 10=主图 20=盘前 30=盘后
84087
84255
  {
84088
- case 1: //单日 1=主图
84089
- case 10: //多日 10=主图
84256
+ case 1: //单日,多日 1=主图
84090
84257
  x=this.Frame.GetXFromIndex(dataIndex)
84091
84258
  break;
84259
+ case 10: //多日+多日集合竞价 10=主图
84260
+ var cursorIndex=frame.MinuteCount*dayIndex+dataIndex;
84261
+ x=this.Frame.GetXFromIndex(cursorIndex);
84262
+ break;
84092
84263
  /*
84093
84264
  case 2: //单日 2=盘前
84094
84265
  x=this.Frame.SubFrame[0].Frame.GetLeftExtendXFromIndex(dataIndex,this.GetBeforeOpenData());
@@ -84886,6 +85057,17 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
84886
85057
  var bShowCorss=false; //十字光标十字线
84887
85058
  if (this.ChartCorssCursor) bShowCorss=this.ChartCorssCursor.IsShowCorss;
84888
85059
 
85060
+ var minItem=null;
85061
+ if (frameID>=0 && option && IFrameSplitOperator.IsNumber(option.CursorIndex))
85062
+ {
85063
+ var kData=this.GetKData();
85064
+ if (kData && IFrameSplitOperator.IsNonEmptyArray(kData.Data))
85065
+ {
85066
+ var dataIndex=kData.DataOffset+parseInt(option.CursorIndex.toFixed(0));
85067
+ if (dataIndex>=0 && dataIndex<kData.Data.length) minItem=kData.Data[dataIndex];
85068
+ }
85069
+ }
85070
+
84889
85071
  var aryMenu=
84890
85072
  [
84891
85073
  {
@@ -85017,7 +85199,14 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
85017
85199
  }
85018
85200
  else if (item.Name=="其他设置")
85019
85201
  {
85020
-
85202
+ if (minItem)
85203
+ {
85204
+ var bLocked=this.IsLockCorssCursor();
85205
+ if (bLocked)
85206
+ item.SubMenu.push({ Name:"锁十字光标", Data:{ ID: JSCHART_MENU_ID.CMD_UNLOCK_CROSSCURSOR }, Checked:bLocked });
85207
+ else
85208
+ item.SubMenu.push({ Name:"锁十字光标", Data:{ ID: JSCHART_MENU_ID.CMD_LOCK_CROSSCURSOR, Args:[{ KItem:{Date:minItem.Date, Time:minItem.Time}, Draw:true }] }, Checked:bLocked });
85209
+ }
85021
85210
  }
85022
85211
  }
85023
85212
 
@@ -85033,6 +85222,18 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
85033
85222
  {
85034
85223
  JSConsole.Chart.Log("[MinuteChartContainer::OnDoubleClick]", e);
85035
85224
 
85225
+ if (this.EnableYDrag && (this.EnableYDrag.Left || this.EnableYDrag.Right) && this.Frame && this.Frame.PtInFrameY)
85226
+ {
85227
+ var pixelTatio = GetDevicePixelRatio();
85228
+ var x = (e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;
85229
+ var y = (e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;
85230
+ var dragY=this.Frame.PtInFrameY(x,y);
85231
+ if (dragY && dragY.Index>=0)
85232
+ {
85233
+ this.CancelZoomUpDownFrameY(dragY);
85234
+ }
85235
+ }
85236
+
85036
85237
  if (this.ClickChartTimer!=null)
85037
85238
  {
85038
85239
  clearTimeout(this.ClickChartTimer);
@@ -2191,7 +2191,7 @@ var SH_600000_1DAY_MINUTE={
2191
2191
  "low": 8.51,
2192
2192
  "high": 8.51,
2193
2193
  "vol": 0,
2194
- "amount": 47285797,
2194
+ "amount": 4728579,
2195
2195
  "time": 1500
2196
2196
  }
2197
2197
  ],