hqchart 1.1.13346 → 1.1.13355
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 +40 -20
- package/package.json +1 -1
- package/src/jscommon/umychart.DialogDrawTool.js +4 -2
- package/src/jscommon/umychart.js +264 -115
- package/src/jscommon/umychart.resource/css/tools.css +1 -0
- package/src/jscommon/umychart.resource/font/drawtool/demo_index.html +26 -3
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.css +7 -3
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.js +1 -1
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.json +7 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.ttf +0 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.woff +0 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.woff2 +0 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +265 -116
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +269 -118
|
@@ -4270,13 +4270,22 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4270
4270
|
if (IFrameSplitOperator.IsBool(item.IsShowKLineDivTooltip)) chart.IsShowKLineDivTooltip=item.IsShowKLineDivTooltip;
|
|
4271
4271
|
if (option.KLine.MaxRequestMinuteDayCount>0) chart.MaxRequestMinuteDayCount=option.KLine.MaxRequestMinuteDayCount;
|
|
4272
4272
|
if (option.KLine.DrawType) chart.KLineDrawType=option.KLine.DrawType;
|
|
4273
|
-
if (option.KLine.FirstShowDate>19910101) chart.CustomShow={ Date:option.KLine.FirstShowDate, PageSize:option.KLine.PageSize };
|
|
4273
|
+
if (option.KLine.FirstShowDate>19910101) chart.CustomShow={ Date:option.KLine.FirstShowDate, PageSize:option.KLine.PageSize }; //!!已弃用 新的格式"CustomShow"
|
|
4274
4274
|
if (option.KLine.RightSpaceCount>0) chart.RightSpaceCount=option.KLine.RightSpaceCount;
|
|
4275
4275
|
if (option.KLine.ZoomType>0) chart.ZoomType=option.KLine.ZoomType;
|
|
4276
4276
|
if (option.KLine.DataWidth>=1) chart.KLineSize={ DataWidth:option.KLine.DataWidth };
|
|
4277
4277
|
if (IFrameSplitOperator.IsNumber(option.KLine.RightFormula)) chart.RightFormula=option.KLine.RightFormula;
|
|
4278
4278
|
}
|
|
4279
4279
|
|
|
4280
|
+
//自定义显示位置
|
|
4281
|
+
if (option.CustomShow && IFrameSplitOperator.IsPlusNumber(option.CustomShow.Date))
|
|
4282
|
+
{
|
|
4283
|
+
var item=option.CustomShow;
|
|
4284
|
+
chart.CustomShow={ Date:item.Date };
|
|
4285
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) chart.CustomShow.Time=item.Time;
|
|
4286
|
+
if (IFrameSplitOperator.IsPlusNumber(item.PageSize)) chart.CustomShow.PageSize=item.PageSize;
|
|
4287
|
+
}
|
|
4288
|
+
|
|
4280
4289
|
if (option.EnableFlowCapital)
|
|
4281
4290
|
{
|
|
4282
4291
|
var item=option.EnableFlowCapital;
|
|
@@ -49352,6 +49361,51 @@ function IFrameSplitOperator()
|
|
|
49352
49361
|
}
|
|
49353
49362
|
|
|
49354
49363
|
this.SetOption=function(option) { }
|
|
49364
|
+
|
|
49365
|
+
//计算上下预留
|
|
49366
|
+
this.ReservedHeight=function(splitData)
|
|
49367
|
+
{
|
|
49368
|
+
if (!this.Frame) return;
|
|
49369
|
+
if (this.Frame.IsHScreen) return; //横屏以后再搞
|
|
49370
|
+
|
|
49371
|
+
var yReserved=this.Frame.HorizontalReserved;
|
|
49372
|
+
if (!yReserved) return;
|
|
49373
|
+
|
|
49374
|
+
var reservedHeight=0;
|
|
49375
|
+
if (IFrameSplitOperator.IsPlusNumber(yReserved.Top)) reservedHeight+=yReserved.Top;
|
|
49376
|
+
if (IFrameSplitOperator.IsPlusNumber(yReserved.Bottom)) reservedHeight+=yReserved.Bottom;
|
|
49377
|
+
if (reservedHeight<=0) return;
|
|
49378
|
+
|
|
49379
|
+
var border=this.Frame.GetBorder();
|
|
49380
|
+
var top=border.TopEx;
|
|
49381
|
+
var bottom=border.BottomEx;
|
|
49382
|
+
var srcHeight=bottom-top;
|
|
49383
|
+
if (srcHeight<reservedHeight) return;
|
|
49384
|
+
|
|
49385
|
+
var max=splitData.Max;
|
|
49386
|
+
var min=splitData.Min;
|
|
49387
|
+
if (IFrameSplitOperator.IsPlusNumber(yReserved.Top)) top-=yReserved.Top;
|
|
49388
|
+
if (IFrameSplitOperator.IsPlusNumber(yReserved.Bottom)) bottom+=yReserved.Bottom;
|
|
49389
|
+
|
|
49390
|
+
var value=(max-min)/(bottom-top); //1个像素点对应的数值
|
|
49391
|
+
if (IFrameSplitOperator.IsPlusNumber(yReserved.Top))
|
|
49392
|
+
{
|
|
49393
|
+
var topValue=value*yReserved.Top;
|
|
49394
|
+
max+=topValue;
|
|
49395
|
+
}
|
|
49396
|
+
|
|
49397
|
+
if (IFrameSplitOperator.IsPlusNumber(yReserved.Bottom))
|
|
49398
|
+
{
|
|
49399
|
+
var bottomValue=value*yReserved.Bottom;
|
|
49400
|
+
min-=bottomValue;
|
|
49401
|
+
}
|
|
49402
|
+
|
|
49403
|
+
splitData.Max=max;
|
|
49404
|
+
splitData.Min=min;
|
|
49405
|
+
|
|
49406
|
+
this.Frame.HorizontalMax=splitData.Max;
|
|
49407
|
+
this.Frame.HorizontalMin=splitData.Min;
|
|
49408
|
+
}
|
|
49355
49409
|
}
|
|
49356
49410
|
|
|
49357
49411
|
//字符串格式化 千分位分割
|
|
@@ -50004,6 +50058,8 @@ function FrameSplitKLinePriceY()
|
|
|
50004
50058
|
}
|
|
50005
50059
|
*/
|
|
50006
50060
|
|
|
50061
|
+
this.ReservedHeight(splitData); //预留高度
|
|
50062
|
+
|
|
50007
50063
|
JSConsole.Chart.Log(`[FrameSplitKLinePriceY::Operator] fixed . Max=${splitData.Max} Min=${splitData.Min} Count=${splitData.Count}`);
|
|
50008
50064
|
|
|
50009
50065
|
if (this.GetEventCallback)
|
|
@@ -50842,50 +50898,6 @@ function FrameSplitY()
|
|
|
50842
50898
|
}
|
|
50843
50899
|
}
|
|
50844
50900
|
|
|
50845
|
-
this.ReservedHeight=function(splitData)
|
|
50846
|
-
{
|
|
50847
|
-
if (this.Frame.IsHScreen) return; //横屏以后再搞
|
|
50848
|
-
|
|
50849
|
-
var yReserved=this.Frame.HorizontalReserved;
|
|
50850
|
-
if (!yReserved) return;
|
|
50851
|
-
|
|
50852
|
-
var reservedHeight=0;
|
|
50853
|
-
if (IFrameSplitOperator.IsPlusNumber(yReserved.Top)) reservedHeight+=yReserved.Top;
|
|
50854
|
-
if (IFrameSplitOperator.IsPlusNumber(yReserved.Bottom)) reservedHeight+=yReserved.Bottom;
|
|
50855
|
-
if (reservedHeight<=0) return;
|
|
50856
|
-
|
|
50857
|
-
var border=this.Frame.GetBorder();
|
|
50858
|
-
var top=border.TopEx;
|
|
50859
|
-
var bottom=border.BottomEx;
|
|
50860
|
-
var srcHeight=bottom-top;
|
|
50861
|
-
if (srcHeight<reservedHeight) return;
|
|
50862
|
-
|
|
50863
|
-
var max=splitData.Max;
|
|
50864
|
-
var min=splitData.Min;
|
|
50865
|
-
if (IFrameSplitOperator.IsPlusNumber(yReserved.Top)) top-=yReserved.Top;
|
|
50866
|
-
if (IFrameSplitOperator.IsPlusNumber(yReserved.Bottom)) bottom+=yReserved.Bottom;
|
|
50867
|
-
|
|
50868
|
-
var value=(max-min)/(bottom-top); //1个像素点对应的数值
|
|
50869
|
-
if (IFrameSplitOperator.IsPlusNumber(yReserved.Top))
|
|
50870
|
-
{
|
|
50871
|
-
var topValue=value*yReserved.Top;
|
|
50872
|
-
max+=topValue;
|
|
50873
|
-
}
|
|
50874
|
-
|
|
50875
|
-
if (IFrameSplitOperator.IsPlusNumber(yReserved.Bottom))
|
|
50876
|
-
{
|
|
50877
|
-
var bottomValue=value*yReserved.Bottom;
|
|
50878
|
-
min-=bottomValue;
|
|
50879
|
-
}
|
|
50880
|
-
|
|
50881
|
-
splitData.Max=max;
|
|
50882
|
-
splitData.Min=min;
|
|
50883
|
-
|
|
50884
|
-
this.Frame.HorizontalMax=splitData.Max;
|
|
50885
|
-
this.Frame.HorizontalMin=splitData.Min;
|
|
50886
|
-
}
|
|
50887
|
-
|
|
50888
|
-
|
|
50889
50901
|
this.FormatValueString=function(value)
|
|
50890
50902
|
{
|
|
50891
50903
|
var text;
|
|
@@ -59682,6 +59694,7 @@ IChartDrawPicture.ArrayDrawPricture=
|
|
|
59682
59694
|
{ Name:"PriceRange", ClassName:"ChartPriceRange", Create:function() { return new ChartPriceRange(); }},
|
|
59683
59695
|
{ Name:"DateRange", ClassName:"ChartDateRange", Create:function() { return new ChartDateRange(); }},
|
|
59684
59696
|
{ Name:"InfoLine", ClassName:"ChartInfoLine", Create:function() { return new ChartInfoLine(); }},
|
|
59697
|
+
{ Name:"TrendAngle", ClassName:"ChartTrendAngle", Create:function() { return new ChartTrendAngle(); }}
|
|
59685
59698
|
];
|
|
59686
59699
|
|
|
59687
59700
|
IChartDrawPicture.MapIonFont=new Map(
|
|
@@ -59846,6 +59859,103 @@ function ChartDrawPictureLine()
|
|
|
59846
59859
|
}
|
|
59847
59860
|
}
|
|
59848
59861
|
|
|
59862
|
+
//趋势线角度
|
|
59863
|
+
function ChartTrendAngle()
|
|
59864
|
+
{
|
|
59865
|
+
this.newMethod=ChartDrawPictureLine; //派生
|
|
59866
|
+
this.newMethod();
|
|
59867
|
+
delete this.newMethod;
|
|
59868
|
+
|
|
59869
|
+
this.ClassName='ChartTrendAngle';
|
|
59870
|
+
this.AngleLineLength=100;
|
|
59871
|
+
this.AngleLineDash=[3,3];
|
|
59872
|
+
this.Font=12*GetDevicePixelRatio() +"px 微软雅黑";
|
|
59873
|
+
this.Super_SetOption=this.SetOption; //父类函数
|
|
59874
|
+
|
|
59875
|
+
this.SetOption=function(option)
|
|
59876
|
+
{
|
|
59877
|
+
if (this.Super_SetOption) this.Super_SetOption(option);
|
|
59878
|
+
if (option)
|
|
59879
|
+
{
|
|
59880
|
+
if (IFrameSplitOperator.IsNumber(option.AngleLineLength)) this.AngleLineLength=option.AngleLineLength;
|
|
59881
|
+
if (option.Font) this.Font=option.Font;
|
|
59882
|
+
if (option.AngleLineDash) this.AngleLineDash=option.AngleLineDash;
|
|
59883
|
+
}
|
|
59884
|
+
}
|
|
59885
|
+
|
|
59886
|
+
this.Draw=function()
|
|
59887
|
+
{
|
|
59888
|
+
this.LinePoint=[];
|
|
59889
|
+
if (this.IsFrameMinSize()) return;
|
|
59890
|
+
if (!this.IsShow) return;
|
|
59891
|
+
|
|
59892
|
+
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:false} );
|
|
59893
|
+
if (!drawPoint) return;
|
|
59894
|
+
if (drawPoint.length!=2) return;
|
|
59895
|
+
|
|
59896
|
+
this.ClipFrame();
|
|
59897
|
+
|
|
59898
|
+
var ptStart=drawPoint[0];
|
|
59899
|
+
var ptEnd=drawPoint[1];
|
|
59900
|
+
|
|
59901
|
+
this.SetLineWidth();
|
|
59902
|
+
this.Canvas.strokeStyle=this.LineColor;
|
|
59903
|
+
this.Canvas.beginPath();
|
|
59904
|
+
this.Canvas.moveTo(ptStart.X,ptStart.Y);
|
|
59905
|
+
this.Canvas.lineTo(ptEnd.X,ptEnd.Y);
|
|
59906
|
+
this.Canvas.stroke();
|
|
59907
|
+
this.RestoreLineWidth();
|
|
59908
|
+
|
|
59909
|
+
this.DrawAngle(ptStart, ptEnd);
|
|
59910
|
+
|
|
59911
|
+
var line={Start:ptStart, End:ptEnd};
|
|
59912
|
+
this.LinePoint.push(line);
|
|
59913
|
+
|
|
59914
|
+
this.DrawPoint(drawPoint); //画点
|
|
59915
|
+
this.Canvas.restore();
|
|
59916
|
+
}
|
|
59917
|
+
|
|
59918
|
+
this.DrawAngle=function(ptStart, ptEnd)
|
|
59919
|
+
{
|
|
59920
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
59921
|
+
var angle=this.CalculateAngle(ptStart.X, ptStart.Y, ptEnd.X, ptEnd.Y); //角度
|
|
59922
|
+
var lineLength=this.AngleLineLength*pixelRatio; //角度线长度
|
|
59923
|
+
var ptRight={ X:ptStart.X+lineLength, Y:ptStart.Y };
|
|
59924
|
+
|
|
59925
|
+
if (this.AngleLineDash) this.Canvas.setLineDash(this.AngleLineDash); //画虚线
|
|
59926
|
+
|
|
59927
|
+
this.Canvas.lineWidth=1*GetDevicePixelRatio();
|
|
59928
|
+
this.Canvas.beginPath();
|
|
59929
|
+
this.Canvas.moveTo(ToFixedPoint(ptStart.X),ToFixedPoint(ptStart.Y));
|
|
59930
|
+
this.Canvas.lineTo(ToFixedPoint(ptRight.X),ToFixedPoint(ptRight.Y));
|
|
59931
|
+
this.Canvas.stroke();
|
|
59932
|
+
|
|
59933
|
+
this.Canvas.beginPath();
|
|
59934
|
+
if (angle<=180)
|
|
59935
|
+
{
|
|
59936
|
+
this.Canvas.arc(ptStart.X,ToFixedPoint(ptStart.Y),lineLength,0,(Math.PI / 180)*(360-angle), true);
|
|
59937
|
+
var text=`${angle.toFixed(0)}°`;
|
|
59938
|
+
}
|
|
59939
|
+
else
|
|
59940
|
+
{
|
|
59941
|
+
this.Canvas.arc(ptStart.X,ToFixedPoint(ptStart.Y),lineLength,0,(Math.PI / 180)*(360-angle), false);
|
|
59942
|
+
var text=`${(angle-360).toFixed(0)}°`;
|
|
59943
|
+
}
|
|
59944
|
+
|
|
59945
|
+
this.Canvas.stroke();
|
|
59946
|
+
|
|
59947
|
+
this.Canvas.textAlign="left";
|
|
59948
|
+
this.Canvas.textBaseline="middle";
|
|
59949
|
+
this.Canvas.font=this.Font;
|
|
59950
|
+
this.Canvas.fillStyle=this.LineColor;
|
|
59951
|
+
|
|
59952
|
+
if (this.AngleLineDash) this.Canvas.setLineDash([]);
|
|
59953
|
+
|
|
59954
|
+
|
|
59955
|
+
this.Canvas.fillText(text,ptRight.X+5,ptRight.Y);
|
|
59956
|
+
}
|
|
59957
|
+
}
|
|
59958
|
+
|
|
59849
59959
|
//画图工具-涂鸦线段 Y轴关联数值, X轴不关联
|
|
59850
59960
|
function ChartDrawGraffitiLine()
|
|
59851
59961
|
{
|
|
@@ -72125,7 +72235,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72125
72235
|
this.SourceDataLimit=new Map(); //每个周期缓存数据最大个数 key=周期 value=最大个数
|
|
72126
72236
|
this.CtrlMoveStep=5; //Ctrl+(Left/Right) 移动数据个数
|
|
72127
72237
|
|
|
72128
|
-
this.CustomShow=null; //首先显示的K线的起始日期 { Date
|
|
72238
|
+
this.CustomShow=null; //首先显示的K线的起始日期 { Date:日期, Time:时间, PageSize:}
|
|
72129
72239
|
this.ZoomType=0; //缩放模式 0=最右边固定缩放, 1=十字光标两边缩放
|
|
72130
72240
|
this.IsZoomLockRight=false;
|
|
72131
72241
|
this.KLineSize=null; //{ DataWidth:, }
|
|
@@ -72711,47 +72821,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72711
72821
|
var hisData=this.ChartOperator_Temp_GetHistroyData();
|
|
72712
72822
|
if (!hisData) return; //数据还没有到达
|
|
72713
72823
|
|
|
72714
|
-
var index=
|
|
72715
|
-
if (ChartData.IsDayPeriod(this.Period,true))
|
|
72716
|
-
{
|
|
72717
|
-
for(var i=0;i<hisData.Data.length;++i)
|
|
72718
|
-
{
|
|
72719
|
-
var item=hisData.Data[i];
|
|
72720
|
-
if (item.Date>=obj.Date)
|
|
72721
|
-
{
|
|
72722
|
-
index=i;
|
|
72723
|
-
break;
|
|
72724
|
-
}
|
|
72725
|
-
}
|
|
72726
|
-
}
|
|
72727
|
-
else if (ChartData.IsMinutePeriod(this.Period,true))
|
|
72728
|
-
{
|
|
72729
|
-
let findTime=obj.Time;
|
|
72730
|
-
if (IFrameSplitOperator.IsPlusNumber(findTime))
|
|
72731
|
-
{
|
|
72732
|
-
for(var i=0;i<hisData.Data.length;++i)
|
|
72733
|
-
{
|
|
72734
|
-
var item=hisData.Data[i];
|
|
72735
|
-
if (item.Date>obj.Date || (item.Date==obj.Date && item.Time>=findTime))
|
|
72736
|
-
{
|
|
72737
|
-
index=i;
|
|
72738
|
-
break;
|
|
72739
|
-
}
|
|
72740
|
-
}
|
|
72741
|
-
}
|
|
72742
|
-
else //只有日期
|
|
72743
|
-
{
|
|
72744
|
-
for(var i=0;i<hisData.Data.length;++i)
|
|
72745
|
-
{
|
|
72746
|
-
var item=hisData.Data[i];
|
|
72747
|
-
if (item.Date>=obj.Date)
|
|
72748
|
-
{
|
|
72749
|
-
index=i;
|
|
72750
|
-
break;
|
|
72751
|
-
}
|
|
72752
|
-
}
|
|
72753
|
-
}
|
|
72754
|
-
}
|
|
72824
|
+
var index=this.ChartOperator_GetIndex_ByDateTime(hisData, obj, this.Period, 0);
|
|
72755
72825
|
|
|
72756
72826
|
if (index===null)
|
|
72757
72827
|
{
|
|
@@ -72871,6 +72941,63 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72871
72941
|
this.UpdatePointByCursorIndex(); //更新十字光标位子
|
|
72872
72942
|
}
|
|
72873
72943
|
|
|
72944
|
+
//定位K线的索引
|
|
72945
|
+
//searchType 0模糊匹配 1=精确匹配
|
|
72946
|
+
this.ChartOperator_GetIndex_ByDateTime=function(hisData, dateTime, period, searchType)
|
|
72947
|
+
{
|
|
72948
|
+
if (!hisData) return null; //数据还没有到达
|
|
72949
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(hisData.Data)) return null;
|
|
72950
|
+
if (!IFrameSplitOperator.IsPlusNumber(dateTime.Date) || dateTime.Date<19810101) return null;
|
|
72951
|
+
|
|
72952
|
+
if (ChartData.IsDayPeriod(period, true))
|
|
72953
|
+
{
|
|
72954
|
+
for(var i=0;i<hisData.Data.length;++i)
|
|
72955
|
+
{
|
|
72956
|
+
var item=hisData.Data[i];
|
|
72957
|
+
if (searchType==1)
|
|
72958
|
+
{
|
|
72959
|
+
if (item.Date==dateTime.Date) return i;
|
|
72960
|
+
}
|
|
72961
|
+
else
|
|
72962
|
+
{
|
|
72963
|
+
if (item.Date>=dateTime.Date) return i;
|
|
72964
|
+
}
|
|
72965
|
+
}
|
|
72966
|
+
|
|
72967
|
+
return null;
|
|
72968
|
+
}
|
|
72969
|
+
|
|
72970
|
+
if (ChartData.IsMinutePeriod(period,true) || ChartData.IsMilliSecondPeriod(period))
|
|
72971
|
+
{
|
|
72972
|
+
var findTime=null;
|
|
72973
|
+
if (IFrameSplitOperator.IsNumber(dateTime.Time)) findTime=dateTime.Time;
|
|
72974
|
+
for(var i=0;i<hisData.Data.length;++i)
|
|
72975
|
+
{
|
|
72976
|
+
var item=hisData.Data[i];
|
|
72977
|
+
if (searchType==1) //精确匹配
|
|
72978
|
+
{
|
|
72979
|
+
if (findTime==null) return null;
|
|
72980
|
+
if (item.Date==dateTime.Date && item.Time==findTime) return i;
|
|
72981
|
+
}
|
|
72982
|
+
else
|
|
72983
|
+
{
|
|
72984
|
+
if (findTime==null) //只有日期
|
|
72985
|
+
{
|
|
72986
|
+
if (item.Date>=dateTime.Date) return i;
|
|
72987
|
+
}
|
|
72988
|
+
else
|
|
72989
|
+
{
|
|
72990
|
+
if (item.Date>dateTime.Date || (item.Date==dateTime.Date && item.Time>=findTime)) return i;
|
|
72991
|
+
}
|
|
72992
|
+
}
|
|
72993
|
+
}
|
|
72994
|
+
|
|
72995
|
+
return null;
|
|
72996
|
+
}
|
|
72997
|
+
|
|
72998
|
+
return null;
|
|
72999
|
+
}
|
|
73000
|
+
|
|
72874
73001
|
this.OnWheel=function(e)
|
|
72875
73002
|
{
|
|
72876
73003
|
JSConsole.Chart.Log('[KLineChartContainer::OnWheel]',e);
|
|
@@ -73489,37 +73616,21 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73489
73616
|
|
|
73490
73617
|
this.SetCustomShow=function(customShow,hisData)
|
|
73491
73618
|
{
|
|
73492
|
-
|
|
73493
|
-
|
|
73494
|
-
var firstDate=customShow.Date;
|
|
73495
|
-
var index=null;
|
|
73496
|
-
for(var i =0;i<hisData.Data.length;++i)
|
|
73497
|
-
{
|
|
73498
|
-
var item=hisData.Data[i];
|
|
73499
|
-
if (item.Date>=firstDate)
|
|
73500
|
-
{
|
|
73501
|
-
index=i;
|
|
73502
|
-
break;
|
|
73503
|
-
}
|
|
73504
|
-
}
|
|
73619
|
+
var index=this.ChartOperator_GetIndex_ByDateTime(hisData,customShow, this.Period, 0);
|
|
73505
73620
|
if (index===null)
|
|
73506
73621
|
{
|
|
73507
|
-
JSConsole.Chart.Log(
|
|
73622
|
+
JSConsole.Chart.Log("[KLineChartContainer::SetCustomShow] Can't find index by customShow=",customShow);
|
|
73508
73623
|
return;
|
|
73509
73624
|
}
|
|
73510
73625
|
|
|
73511
|
-
|
|
73512
|
-
if (customShow.PageSize>0) count=customShow.PageSize;
|
|
73513
|
-
|
|
73514
|
-
var customShowCount=count;
|
|
73515
|
-
var pageSize=this.GetMaxMinPageSize();
|
|
73516
|
-
if (count>pageSize.Max) customShowCount=pageSize.Max;
|
|
73517
|
-
else if (count<pageSize.Min) customShowCount=pageSize.Min;
|
|
73518
|
-
|
|
73519
|
-
for(var i in this.Frame.SubFrame)
|
|
73626
|
+
if (IFrameSplitOperator.IsPlusNumber(customShow.PageSize)) //调整一屏显示个数 否则使用默认的
|
|
73520
73627
|
{
|
|
73521
|
-
var
|
|
73522
|
-
|
|
73628
|
+
var showCount=customShow.PageSize;
|
|
73629
|
+
for(var i=0;i<this.Frame.SubFrame.length; ++i)
|
|
73630
|
+
{
|
|
73631
|
+
var item =this.Frame.SubFrame[i].Frame;
|
|
73632
|
+
item.XPointCount=showCount;
|
|
73633
|
+
}
|
|
73523
73634
|
}
|
|
73524
73635
|
|
|
73525
73636
|
this.ChartPaint[0].Data.DataOffset=index;
|
|
@@ -75667,15 +75778,40 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
75667
75778
|
}
|
|
75668
75779
|
}
|
|
75669
75780
|
|
|
75781
|
+
this.SetFrameAttribute=function(windowIndex, attr)
|
|
75782
|
+
{
|
|
75783
|
+
if (!window || !this.Frame.SubFrame[windowIndex] || !this.Frame.SubFrame[windowIndex].Frame) return;
|
|
75784
|
+
if (!attr) return;
|
|
75785
|
+
|
|
75786
|
+
var frame=this.Frame.SubFrame[windowIndex].Frame;
|
|
75787
|
+
|
|
75788
|
+
if (!IFrameSplitOperator.IsUndefined(attr.HorizontalReserved)) frame.HorizontalReserved=attr.HorizontalReserved; //Y轴上下预留
|
|
75789
|
+
if (IFrameSplitOperator.IsNumber(attr.TitleHeight)) frame.ChartBorder.TitleHeight=attr.TitleHeight; //指标标题高度
|
|
75790
|
+
}
|
|
75791
|
+
|
|
75792
|
+
this.ResetFrameAttribute=function(windowIndex)
|
|
75793
|
+
{
|
|
75794
|
+
if (!window || !this.Frame.SubFrame[windowIndex] || !this.Frame.SubFrame[windowIndex].Frame) return;
|
|
75795
|
+
var frame=this.Frame.SubFrame[windowIndex].Frame;
|
|
75796
|
+
|
|
75797
|
+
frame.HorizontalReserved=null;
|
|
75798
|
+
}
|
|
75799
|
+
|
|
75800
|
+
|
|
75670
75801
|
//切换成 脚本指标
|
|
75671
75802
|
this.ChangeScriptIndex=function(windowIndex,indexData,option)
|
|
75672
75803
|
{
|
|
75673
75804
|
this.DeleteIndexPaint(windowIndex, true);
|
|
75674
75805
|
this.WindowIndex[windowIndex]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
|
|
75806
|
+
this.ResetFrameAttribute(windowIndex);
|
|
75675
75807
|
|
|
75676
75808
|
if (option)
|
|
75677
75809
|
{
|
|
75678
|
-
if (option.Window)
|
|
75810
|
+
if (option.Window)
|
|
75811
|
+
{
|
|
75812
|
+
this.SetFrameToolbar(windowIndex,option.Window);
|
|
75813
|
+
this.SetFrameAttribute(windowIndex,option.Window); //窗口属性
|
|
75814
|
+
}
|
|
75679
75815
|
}
|
|
75680
75816
|
|
|
75681
75817
|
this.OnChangeIndexEvent(windowIndex, { ID:indexData.ID, Name:indexData.Name, FunctionName:"ChangeScriptIndex" });
|
|
@@ -75722,14 +75858,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
75722
75858
|
//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
|
|
75723
75859
|
var apiItem=indexData.API;
|
|
75724
75860
|
this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,indexData);
|
|
75861
|
+
this.ResetFrameAttribute(windowIndex);
|
|
75725
75862
|
|
|
75726
75863
|
this.OnChangeIndexEvent(windowIndex, { ID:indexData.ID, Name:indexData.Name, FunctionName:"ChangeAPIIndex" });
|
|
75727
75864
|
|
|
75728
75865
|
if (indexData)
|
|
75729
75866
|
{
|
|
75730
|
-
if (indexData.Window)
|
|
75867
|
+
if (indexData.Window)
|
|
75868
|
+
{
|
|
75869
|
+
this.SetFrameToolbar(windowIndex,indexData.Window);
|
|
75870
|
+
this.SetFrameAttribute(windowIndex,indexData.Window); //窗口属性
|
|
75871
|
+
}
|
|
75731
75872
|
}
|
|
75732
|
-
|
|
75873
|
+
|
|
75733
75874
|
this.Frame.ClearUpDonwFrameYData({ Index:windowIndex });
|
|
75734
75875
|
var bindData=this.ChartPaint[0].Data;
|
|
75735
75876
|
this.BindIndexData(windowIndex,bindData); //执行脚本
|
|
@@ -76807,6 +76948,14 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
76807
76948
|
}
|
|
76808
76949
|
}
|
|
76809
76950
|
}
|
|
76951
|
+
|
|
76952
|
+
if (option.CustomShow && IFrameSplitOperator.IsPlusNumber(option.CustomShow.Date))
|
|
76953
|
+
{
|
|
76954
|
+
var item=option.CustomShow;
|
|
76955
|
+
this.CustomShow={ Date:item.Date };
|
|
76956
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) this.CustomShow.Time=item.Time;
|
|
76957
|
+
if (IFrameSplitOperator.IsPlusNumber(item.PageSize)) this.CustomShow.PageSize=item.PageSize;
|
|
76958
|
+
}
|
|
76810
76959
|
}
|
|
76811
76960
|
|
|
76812
76961
|
this.ReloadChartDrawPicture();
|
|
@@ -135965,6 +136114,7 @@ function JSDialogDrawTool()
|
|
|
135965
136114
|
{ Title: '线段', ClassName: 'hqchart_drawtool icon-draw_line', Type:0, Data:{ ID:"线段" } },
|
|
135966
136115
|
{ Title: '线段信息', ClassName: 'hqchart_drawtool icon-infoline', Type:0, Data:{ ID:"InfoLine" } },
|
|
135967
136116
|
{ Title: '射线', ClassName: 'hqchart_drawtool icon-draw_rays', Type:0, Data:{ ID:"射线" } },
|
|
136117
|
+
{ Title: "趋势线角度", ClassName:"hqchart_drawtool icon-qushixianjiaodu", Type:0, Data:{ ID:"TrendAngle" }},
|
|
135968
136118
|
{ Title: '标价线', ClassName: 'hqchart_drawtool icon-price_line', Type:0, Data:{ ID:"标价线" } },
|
|
135969
136119
|
{ Title: '垂直线', ClassName: 'hqchart_drawtool icon-vertical_line', Type:0, Data:{ ID:"垂直线" } },
|
|
135970
136120
|
{ Title: '十字线', ClassName: 'hqchart_drawtool icon-tubiao_shizixian', Type:0, Data:{ ID:"十字线" } },
|
|
@@ -136080,7 +136230,7 @@ function JSDialogDrawTool()
|
|
|
136080
136230
|
this.LineColorIndex=0;
|
|
136081
136231
|
this.RandomLineColor=["rgb(255,69,0)", "rgb(0,191,255)", "rgb(255,0,255)", "rgb(255,105,180)"];
|
|
136082
136232
|
this.LineWidth=1*GetDevicePixelRatio();
|
|
136083
|
-
this.ColumnCount=
|
|
136233
|
+
this.ColumnCount=5
|
|
136084
136234
|
|
|
136085
136235
|
this.DragTitle=null;
|
|
136086
136236
|
|
|
@@ -136849,7 +136999,8 @@ function JSDialogModifyDraw()
|
|
|
136849
136999
|
this.DivDialog.style.left = left + 'px'
|
|
136850
137000
|
this.DivDialog.style.top = top + 'px'
|
|
136851
137001
|
|
|
136852
|
-
if(e.preventDefault) e.preventDefault();
|
|
137002
|
+
if (e.preventDefault) e.preventDefault();
|
|
137003
|
+
if (e.stopPropagation) e.stopPropagation();
|
|
136853
137004
|
}
|
|
136854
137005
|
|
|
136855
137006
|
this.DocOnMouseUpTitle=function(e)
|
|
@@ -136985,7 +137136,7 @@ function HQChartScriptWorker()
|
|
|
136985
137136
|
|
|
136986
137137
|
|
|
136987
137138
|
|
|
136988
|
-
var HQCHART_VERSION="1.1.
|
|
137139
|
+
var HQCHART_VERSION="1.1.13354";
|
|
136989
137140
|
|
|
136990
137141
|
function PrintHQChartVersion()
|
|
136991
137142
|
{
|