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.
- package/lib/umychart.vue.js +76 -31
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +142 -14
- package/src/jscommon/umychart.js +267 -66
- package/src/jscommon/umychart.testdata/DayMinute/600000.sh.1day.minute.js +1 -1
- package/src/jscommon/umychart.testdata.js +141 -13
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +268 -67
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +142 -14
- package/src/jscommon/umychart.vue/umychart.vue.js +268 -67
package/src/jscommon/umychart.js
CHANGED
|
@@ -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=
|
|
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
|
-
|
|
14067
|
-
|
|
14068
|
-
|
|
14069
|
-
|
|
14070
|
-
|
|
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
|
-
|
|
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
|
|
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=
|
|
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
|
-
|
|
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 (
|
|
52831
|
+
if (!isFixedMaxMin)
|
|
52817
52832
|
{
|
|
52818
|
-
|
|
52819
|
-
|
|
52820
|
-
|
|
52821
|
-
|
|
52822
|
-
|
|
52823
|
-
|
|
52824
|
-
|
|
52825
|
-
|
|
52826
|
-
|
|
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)
|
|
52864
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
84165
|
+
if (corssCursorIndex.Type!=1 && corssCursorIndex.Type!=10) return false; //目前只支持连续交易时间段
|
|
83999
84166
|
|
|
84000
84167
|
xItem.Minute=
|
|
84001
84168
|
{
|
|
84002
|
-
DayIndex:
|
|
84003
|
-
DataIndex:
|
|
84004
|
-
Type:
|
|
84005
|
-
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:
|
|
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
|
-
|
|
84253
|
+
var frame=this.Frame.SubFrame[0].Frame;
|
|
84254
|
+
switch(corssCursorIndex.Type) //单日,多日 1=主图 2=盘前 3=盘后 //多日+多日集合竞价 10=主图 20=盘前 30=盘后
|
|
84087
84255
|
{
|
|
84088
|
-
case 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);
|