hqchart 1.1.14416 → 1.1.14432
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 +61 -59
- package/package.json +1 -1
- package/src/jscommon/umychart.PopKeyboard.js +12 -2
- package/src/jscommon/umychart.PopMinuteChart.js +8 -1
- package/src/jscommon/umychart.js +256 -308
- package/src/jscommon/umychart.resource/css/tools.css +2 -0
- package/src/jscommon/umychart.testdata/DayMinute/im2503.cf.1day.minute.export.js +6 -0
- package/src/jscommon/umychart.testdata/DayMinute/im2503.cf.1day.minute.js +1348 -0
- package/src/jscommon/umychart.testdata/DayMinute/im2503.cf.1day.minute.json +1348 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +257 -309
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +277 -312
package/src/jscommon/umychart.js
CHANGED
|
@@ -321,6 +321,12 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
321
321
|
if (IFrameSplitOperator.IsNumber(item.WheelYMove)) chart.EnableYDrag.WheelYMove=item.WheelYMove;
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
+
if (option.EnableXDrag)
|
|
325
|
+
{
|
|
326
|
+
var item=option.EnableXDrag;
|
|
327
|
+
if (IFrameSplitOperator.IsBool(item.Bottom)) chart.EnableXDrag.Bottom=item.Bottom;
|
|
328
|
+
}
|
|
329
|
+
|
|
324
330
|
if (option.KLineTooltip)
|
|
325
331
|
{
|
|
326
332
|
var item=option.KLineTooltip;
|
|
@@ -1885,6 +1891,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1885
1891
|
return [];
|
|
1886
1892
|
}
|
|
1887
1893
|
|
|
1894
|
+
//手动更新指标 aryIndex=[ {ID:主图指标ID, OverlayID:叠加指标ID }] ,option={ Draw:true/false }
|
|
1895
|
+
this.UpdateWindowIndexV2=function(aryIndex, option)
|
|
1896
|
+
{
|
|
1897
|
+
if (this.JSChartContainer && typeof(this.JSChartContainer.UpdateWindowIndexV2)=='function')
|
|
1898
|
+
return this.JSChartContainer.UpdateWindowIndexV2(aryIndex, option);
|
|
1899
|
+
}
|
|
1900
|
+
|
|
1888
1901
|
this.ChangeInstructionIndex=function(indexName, option)
|
|
1889
1902
|
{
|
|
1890
1903
|
if (this.JSChartContainer && typeof(this.JSChartContainer.ChangeInstructionIndex)=='function')
|
|
@@ -3056,7 +3069,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3056
3069
|
{
|
|
3057
3070
|
Left:false, Right:false, //是否可以拖拽缩放Y轴最大最小值
|
|
3058
3071
|
Wheel:false, WheelYMove:5 //是否可以滚轴缩放Y轴最大最小值
|
|
3059
|
-
};
|
|
3072
|
+
};
|
|
3073
|
+
|
|
3074
|
+
this.EnableXDrag={ Bottom:true }; //X轴拖动缩放
|
|
3060
3075
|
|
|
3061
3076
|
this.EnableZoomIndexWindow=false; //是否支持双击缩放附图窗口
|
|
3062
3077
|
this.EnableVerifyRecvData=false; //是否检测接收到的数据
|
|
@@ -3892,14 +3907,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3892
3907
|
|
|
3893
3908
|
var drag=
|
|
3894
3909
|
{
|
|
3895
|
-
|
|
3896
|
-
|
|
3910
|
+
Click:{},
|
|
3911
|
+
LastMove:{}, //最后移动的位置
|
|
3897
3912
|
CurrentMove:{}, //当前的移动
|
|
3913
|
+
IsInFrameBottom:false,
|
|
3898
3914
|
};
|
|
3899
3915
|
|
|
3916
|
+
|
|
3917
|
+
|
|
3900
3918
|
drag.Click.X=e.clientX;
|
|
3901
3919
|
drag.Click.Y=e.clientY;
|
|
3902
|
-
drag.Click.IsInFrameBottom=this.Frame.PtInFrameBottom(x,y); //是否点击在X轴上
|
|
3920
|
+
if (this.EnableXDrag.Bottom) drag.Click.IsInFrameBottom=this.Frame.PtInFrameBottom(x,y); //是否点击在X轴上
|
|
3903
3921
|
drag.LastMove.X=e.clientX;
|
|
3904
3922
|
drag.LastMove.Y=e.clientY;
|
|
3905
3923
|
|
|
@@ -5927,6 +5945,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
5927
5945
|
for(var i=0;i<this.ExtendChartPaint.length;++i)
|
|
5928
5946
|
{
|
|
5929
5947
|
var item=this.ExtendChartPaint[i];
|
|
5948
|
+
|
|
5930
5949
|
if (item.IsCallbackDraw)
|
|
5931
5950
|
{
|
|
5932
5951
|
if (["KLineYAxisBGPaint","DepthMapPaint","BackgroundPaint","MinuteBackgroundPaint", "SessionBreaksPaint"].includes(item.ClassName))
|
|
@@ -6601,7 +6620,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6601
6620
|
}
|
|
6602
6621
|
}
|
|
6603
6622
|
|
|
6604
|
-
|
|
6623
|
+
//X轴拖动缩放
|
|
6624
|
+
if (this.ClassName=="KLineChartContainer" && this.EnableXDrag.Bottom && this.Frame.PtInFrameBottom(x,y))
|
|
6605
6625
|
{
|
|
6606
6626
|
mouseStatus={ Cursor:"ew-resize", Name:"FrameButtom"};
|
|
6607
6627
|
JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] frame bottom ");
|
|
@@ -10573,69 +10593,82 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10573
10593
|
}
|
|
10574
10594
|
}
|
|
10575
10595
|
|
|
10576
|
-
|
|
10596
|
+
//手动更新指标 [ {ID:主图指标ID, OverlayID:叠加指标ID }]
|
|
10597
|
+
this.UpdateWindowIndexV2=function(aryIndex, option)
|
|
10577
10598
|
{
|
|
10599
|
+
if (!this.Frame || !this.Frame.SubFrame) return false;
|
|
10600
|
+
|
|
10601
|
+
var kData=this.GetKData();
|
|
10602
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
|
|
10603
|
+
|
|
10578
10604
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryIndex)) return false;
|
|
10579
10605
|
|
|
10580
|
-
var
|
|
10581
|
-
|
|
10606
|
+
var setMainIndex=new Set(); //主图指标
|
|
10607
|
+
var setOverlayIndex=new Set(); //附图指标
|
|
10608
|
+
|
|
10609
|
+
for(var i=0;aryIndex.length;++i)
|
|
10582
10610
|
{
|
|
10583
|
-
var item=
|
|
10611
|
+
var item=aryIndex[i];
|
|
10584
10612
|
if (!item) continue;
|
|
10585
|
-
if (!item.ID) continue;
|
|
10586
10613
|
|
|
10587
|
-
if (
|
|
10588
|
-
|
|
10589
|
-
aryID.push(i);
|
|
10590
|
-
}
|
|
10614
|
+
if (item.ID) setMainIndex.set(item.ID);
|
|
10615
|
+
if (item.OverlayID) setOverlayIndex.set(item.OverlayID);
|
|
10591
10616
|
}
|
|
10592
10617
|
|
|
10593
|
-
if (
|
|
10618
|
+
if (setMainIndex.size<=0 && setOverlayIndex.size<0) return false;
|
|
10594
10619
|
|
|
10620
|
+
//K线数据
|
|
10621
|
+
var bindData=new ChartData();
|
|
10622
|
+
if (kData) bindData.Data=kData.Data;
|
|
10595
10623
|
if (this.IsKLineContainer()) //K线
|
|
10596
10624
|
{
|
|
10597
|
-
var bindData=new ChartData();
|
|
10598
|
-
bindData.Data=this.SourceData.Data;
|
|
10599
10625
|
bindData.Period=this.Period;
|
|
10600
10626
|
bindData.Right=this.Right;
|
|
10627
|
+
}
|
|
10601
10628
|
|
|
10602
|
-
|
|
10629
|
+
//主图指标
|
|
10630
|
+
if (setMainIndex.size>0)
|
|
10631
|
+
{
|
|
10632
|
+
for(var i=0;i<this.WindowIndex.length;++i)
|
|
10603
10633
|
{
|
|
10634
|
+
var item=this.WindowIndex[i];
|
|
10635
|
+
if (!item) continue;
|
|
10604
10636
|
|
|
10637
|
+
if (setMainIndex.has(item.ID))
|
|
10638
|
+
{
|
|
10639
|
+
this.BindIndexData(i,bindData);
|
|
10640
|
+
}
|
|
10605
10641
|
}
|
|
10606
|
-
|
|
10642
|
+
}
|
|
10643
|
+
|
|
10644
|
+
//叠加指标
|
|
10645
|
+
if (setOverlayIndex.size>0)
|
|
10646
|
+
{
|
|
10647
|
+
for(var i=0;i<this.Frame.SubFrame.length;++i)
|
|
10607
10648
|
{
|
|
10608
|
-
|
|
10649
|
+
var item=this.Frame.SubFrame[i];
|
|
10650
|
+
for(var j=0; j<item.OverlayIndex.length; ++j)
|
|
10609
10651
|
{
|
|
10610
|
-
var
|
|
10611
|
-
bindData.Data=rightData;
|
|
10612
|
-
}
|
|
10652
|
+
var overlayItem=item.OverlayIndex[j];
|
|
10613
10653
|
|
|
10614
|
-
|
|
10615
|
-
|
|
10616
|
-
|
|
10617
|
-
|
|
10654
|
+
if (setOverlayIndex.has(overlayItem.Identify))
|
|
10655
|
+
{
|
|
10656
|
+
this.BindOverlayIndexData(overlayItem,i,hisData)
|
|
10657
|
+
}
|
|
10618
10658
|
}
|
|
10619
10659
|
}
|
|
10620
10660
|
}
|
|
10621
|
-
else if (this.IsMinuteContainer()) //分时图
|
|
10622
|
-
{
|
|
10623
|
-
var bindData=this.SourceData;
|
|
10624
|
-
}
|
|
10625
|
-
else
|
|
10626
|
-
{
|
|
10627
|
-
return;
|
|
10628
|
-
}
|
|
10629
10661
|
|
|
10630
|
-
|
|
10631
|
-
|
|
10662
|
+
var bDraw=true;
|
|
10663
|
+
if (option && option.Draw===false) bDraw=false;
|
|
10664
|
+
if (bDraw)
|
|
10632
10665
|
{
|
|
10633
|
-
this.
|
|
10666
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
10667
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
10668
|
+
this.Draw();
|
|
10634
10669
|
}
|
|
10635
10670
|
|
|
10636
|
-
|
|
10637
|
-
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
10638
|
-
this.Draw();
|
|
10671
|
+
return true;
|
|
10639
10672
|
}
|
|
10640
10673
|
|
|
10641
10674
|
this.GetKData=function()
|
|
@@ -44414,6 +44447,25 @@ function IExtendChartPainting()
|
|
|
44414
44447
|
{
|
|
44415
44448
|
return GetFontHeight(this.Canvas, font, "擎");
|
|
44416
44449
|
}
|
|
44450
|
+
|
|
44451
|
+
this.SetFillStyle=function(color, x0, y0, x1, y1)
|
|
44452
|
+
{
|
|
44453
|
+
if (Array.isArray(color))
|
|
44454
|
+
{
|
|
44455
|
+
let gradient = this.Canvas.createLinearGradient(x0, y0, x1, y1);
|
|
44456
|
+
var offset=1/(color.length-1);
|
|
44457
|
+
for(var i=0; i<color.length; ++i)
|
|
44458
|
+
{
|
|
44459
|
+
var value=i*offset;
|
|
44460
|
+
gradient.addColorStop(value, color[i]);
|
|
44461
|
+
}
|
|
44462
|
+
this.Canvas.fillStyle=gradient;
|
|
44463
|
+
}
|
|
44464
|
+
else
|
|
44465
|
+
{
|
|
44466
|
+
this.Canvas.fillStyle=color;
|
|
44467
|
+
}
|
|
44468
|
+
}
|
|
44417
44469
|
}
|
|
44418
44470
|
|
|
44419
44471
|
//K线Tooltip, 显示在左边或右边
|
|
@@ -48583,7 +48635,7 @@ function KLineYAxisBGPaint()
|
|
|
48583
48635
|
}
|
|
48584
48636
|
|
|
48585
48637
|
|
|
48586
|
-
//背景图 支持横屏
|
|
48638
|
+
//背景图 支持横屏 新版本
|
|
48587
48639
|
function BackgroundPaint()
|
|
48588
48640
|
{
|
|
48589
48641
|
this.newMethod=IExtendChartPainting; //派生
|
|
@@ -48595,327 +48647,210 @@ function BackgroundPaint()
|
|
|
48595
48647
|
this.IsDynamic=false;
|
|
48596
48648
|
this.IsCallbackDraw=true; //在回调函数里绘制, 不在Draw()中绘制
|
|
48597
48649
|
|
|
48650
|
+
this.IsDrawAllFrame=false; //全部的指标框都画
|
|
48651
|
+
this.SetDrawFrameID=new Set([0]); //指定几个指标框画
|
|
48652
|
+
|
|
48598
48653
|
this.FrameID=0;
|
|
48599
|
-
this.Data;
|
|
48654
|
+
this.Data; //背景数据[ { Start:{ Date:, Time: }, End:{ Date:, Time }, Color:['rgb(44,55,255)','rgb(200,55,255)'] }]
|
|
48655
|
+
this.IsShow=true;
|
|
48656
|
+
this.SubFrame=null;
|
|
48657
|
+
|
|
48600
48658
|
this.ID=Guid(); //唯一的ID
|
|
48601
|
-
|
|
48602
|
-
/*
|
|
48603
|
-
this.Data=
|
|
48604
|
-
[
|
|
48605
|
-
{ Start:{ Date:20181201 }, End:{ Date:20181230 }, Color:'rgb(44,55,44)' } ,
|
|
48606
|
-
{ Start:{ Date:20190308 }, End:{ Date:20190404 }, Color:['rgb(44,55,255)','rgb(200,55,255)'] }
|
|
48607
|
-
]
|
|
48608
|
-
*/
|
|
48609
|
-
|
|
48610
|
-
this.ChartSubFrame;
|
|
48611
|
-
this.ChartBorder;
|
|
48612
|
-
this.KData;
|
|
48613
|
-
this.Period;
|
|
48614
|
-
this.XPointCount=0;
|
|
48659
|
+
this.HQChart;
|
|
48615
48660
|
|
|
48616
48661
|
this.SetOption=function(option) //设置
|
|
48617
48662
|
{
|
|
48618
|
-
if (option
|
|
48663
|
+
if (!option) return;
|
|
48664
|
+
|
|
48665
|
+
if (IFrameSplitOperator.IsNumber(option.FrameID)) this.FrameID=option.FrameID;
|
|
48619
48666
|
if (IFrameSplitOperator.IsObjectExist(option.ID)) this.ID=option.ID;
|
|
48667
|
+
if (IFrameSplitOperator.IsBool(option.IsDrawAllFrame)) this.IsDrawAllFrame=option.IsDrawAllFrame;
|
|
48668
|
+
if (IFrameSplitOperator.IsNonEmptyArray(option.AryFrameID)) this.SetDrawFrameID=new Set(option.AryFrameID);
|
|
48620
48669
|
}
|
|
48621
48670
|
|
|
48622
48671
|
this.Draw=function()
|
|
48623
48672
|
{
|
|
48624
|
-
|
|
48625
|
-
|
|
48626
|
-
|
|
48627
|
-
if (!
|
|
48628
|
-
|
|
48629
|
-
this.
|
|
48630
|
-
|
|
48631
|
-
this.
|
|
48632
|
-
this.
|
|
48633
|
-
if (!this.
|
|
48634
|
-
|
|
48635
|
-
var
|
|
48636
|
-
|
|
48637
|
-
|
|
48638
|
-
|
|
48639
|
-
|
|
48640
|
-
var
|
|
48641
|
-
|
|
48642
|
-
var
|
|
48643
|
-
var
|
|
48644
|
-
|
|
48645
|
-
|
|
48646
|
-
|
|
48647
|
-
var bottom=this.ChartBorder.GetBottomEx();
|
|
48648
|
-
var top=this.ChartBorder.GetTopEx();
|
|
48649
|
-
var height=this.ChartBorder.GetHeightEx();
|
|
48650
|
-
if (isHScreen)
|
|
48673
|
+
this.SubFrame=null;
|
|
48674
|
+
|
|
48675
|
+
if (this.FrameID<0) return;
|
|
48676
|
+
if (!this.HQChart) return;
|
|
48677
|
+
if (!this.ChartFrame || !IFrameSplitOperator.IsNonEmptyArray(this.ChartFrame.SubFrame)) return;
|
|
48678
|
+
if (!this.IsShow) return;
|
|
48679
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Data)) return;
|
|
48680
|
+
if (!this.ChartFrame.SubFrame[this.FrameID]) return;
|
|
48681
|
+
this.SubFrame=this.ChartFrame.SubFrame[this.FrameID].Frame;
|
|
48682
|
+
if (!this.SubFrame) return;
|
|
48683
|
+
|
|
48684
|
+
var kData=this.HQChart.GetKData();
|
|
48685
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
|
|
48686
|
+
|
|
48687
|
+
var bHScreen=(this.SubFrame.IsHScreen===true);
|
|
48688
|
+
this.IsHScreen=bHScreen;
|
|
48689
|
+
var isMinute=this.SubFrame.IsMinuteFrame();
|
|
48690
|
+
var dataWidth=this.SubFrame.DataWidth;
|
|
48691
|
+
var distanceWidth=this.SubFrame.DistanceWidth;
|
|
48692
|
+
var xPointCount=this.SubFrame.XPointCount;
|
|
48693
|
+
|
|
48694
|
+
var border=this.SubFrame.GetBorder();
|
|
48695
|
+
if (bHScreen)
|
|
48651
48696
|
{
|
|
48652
|
-
|
|
48653
|
-
|
|
48654
|
-
|
|
48697
|
+
var chartright=border.BottomEx;
|
|
48698
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
48699
|
+
}
|
|
48700
|
+
else
|
|
48701
|
+
{
|
|
48702
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
48703
|
+
var chartright=border.RightEx;
|
|
48655
48704
|
}
|
|
48656
48705
|
|
|
48657
|
-
|
|
48706
|
+
var mapBG=new Map(); //key= index, Value={ Start:{Left, Center, Right, Item:}, End:{ Left, Center, Right, Item:} }
|
|
48707
|
+
var startIndex=kData.DataOffset;
|
|
48708
|
+
for(var i=startIndex,j=0;i<kData.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
48658
48709
|
{
|
|
48659
|
-
var
|
|
48660
|
-
var
|
|
48661
|
-
if (!
|
|
48710
|
+
var kItem=kData.Data[i];
|
|
48711
|
+
var aryFind=this.FindMatchData(kItem);
|
|
48712
|
+
if (!aryFind) continue;
|
|
48662
48713
|
|
|
48663
|
-
if (
|
|
48714
|
+
if (isMinute)
|
|
48664
48715
|
{
|
|
48665
|
-
var
|
|
48666
|
-
|
|
48667
|
-
|
|
48668
|
-
var offset=1/item.Color.length;
|
|
48669
|
-
for(var i in item.Color)
|
|
48670
|
-
{
|
|
48671
|
-
gradient.addColorStop(i*offset, item.Color[i]);
|
|
48672
|
-
}
|
|
48673
|
-
this.Canvas.fillStyle=gradient;
|
|
48716
|
+
var x=this.ChartFrame.GetXFromIndex(j);
|
|
48717
|
+
var left=x;
|
|
48718
|
+
var right=x;
|
|
48674
48719
|
}
|
|
48675
48720
|
else
|
|
48676
48721
|
{
|
|
48677
|
-
|
|
48722
|
+
var left=xOffset;
|
|
48723
|
+
var right=xOffset+dataWidth;
|
|
48724
|
+
var x=left+(right-left)/2;
|
|
48678
48725
|
}
|
|
48679
48726
|
|
|
48680
|
-
|
|
48681
|
-
|
|
48727
|
+
for(var k=0;k<aryFind.length;++k)
|
|
48728
|
+
{
|
|
48729
|
+
var findItem=aryFind[k];
|
|
48730
|
+
if (mapBG.has(findItem.Index))
|
|
48731
|
+
{
|
|
48732
|
+
var bgItem=mapBG.get(findItem.Index);
|
|
48733
|
+
bgItem.End.Left=left;
|
|
48734
|
+
bgItem.End.Right=right;
|
|
48735
|
+
bgItem.End.Item=findItem.Item;
|
|
48736
|
+
}
|
|
48737
|
+
else
|
|
48738
|
+
{
|
|
48739
|
+
mapBG.set(findItem.Index, { Item:findItem.Item, Start:{ Left:left, Right:right, Item:findItem.Item }, End:{ Left:left, Right:right, Item:findItem.Item }})
|
|
48740
|
+
}
|
|
48741
|
+
}
|
|
48742
|
+
}
|
|
48743
|
+
|
|
48744
|
+
if (mapBG.size>0)
|
|
48745
|
+
{
|
|
48746
|
+
this.Canvas.save();
|
|
48747
|
+
//this.ClipClient(bHScreen);
|
|
48748
|
+
|
|
48749
|
+
this.DrawBG(mapBG);
|
|
48750
|
+
|
|
48751
|
+
this.Canvas.restore();
|
|
48682
48752
|
}
|
|
48683
48753
|
}
|
|
48684
48754
|
|
|
48685
|
-
this.
|
|
48755
|
+
this.FindMatchData=function(kItem)
|
|
48686
48756
|
{
|
|
48687
|
-
|
|
48688
|
-
|
|
48689
|
-
var aryData=[];
|
|
48757
|
+
var aryFind=[];
|
|
48690
48758
|
for(var i=0;i<this.Data.length;++i)
|
|
48691
48759
|
{
|
|
48692
48760
|
var item=this.Data[i];
|
|
48693
|
-
var
|
|
48694
|
-
|
|
48695
|
-
|
|
48696
|
-
|
|
48697
|
-
if (item.Start.Date<first.Date && item.End.Date>end.Date)
|
|
48761
|
+
var start=item.Start;
|
|
48762
|
+
var end=item.End;
|
|
48763
|
+
var bMatch=false;
|
|
48764
|
+
if (IFrameSplitOperator.IsNumber(kItem.Date) && IFrameSplitOperator.IsNumber(kItem.Time))
|
|
48698
48765
|
{
|
|
48699
|
-
|
|
48700
|
-
|
|
48766
|
+
if (kItem.Date>start.Date && kItem.Date<end.Date)
|
|
48767
|
+
{
|
|
48768
|
+
bMatch=true;
|
|
48769
|
+
}
|
|
48770
|
+
else if (kItem.Date==start.Date && kItem.Date==end.Date)
|
|
48771
|
+
{
|
|
48772
|
+
if (kItem.Time>=start.Time && kItem.Time<=end.Time)bMatch=true;
|
|
48773
|
+
}
|
|
48774
|
+
else if (kItem.Date==start.Date)
|
|
48775
|
+
{
|
|
48776
|
+
if (kItem.Time>=start.Time) bMatch=true;
|
|
48777
|
+
}
|
|
48778
|
+
else if (kItem.Date==end.Date)
|
|
48779
|
+
{
|
|
48780
|
+
if ((kItem.Time<=end.Time)) bMatch=true;
|
|
48781
|
+
}
|
|
48701
48782
|
}
|
|
48702
|
-
|
|
48703
|
-
|
|
48704
|
-
if (showItem.Start || showItem.End)
|
|
48783
|
+
else if (IFrameSplitOperator.IsNumber(kItem.Date) && !IFrameSplitOperator.IsNumber(kItem.Time))
|
|
48705
48784
|
{
|
|
48706
|
-
|
|
48707
|
-
aryData.push(showItem);
|
|
48785
|
+
if (kItem.Date>=start.Date && kItem.Date<=end.Date) bMatch=true;
|
|
48708
48786
|
}
|
|
48787
|
+
|
|
48788
|
+
if (bMatch) aryFind.push({ Index:i, Item:item });
|
|
48709
48789
|
}
|
|
48710
48790
|
|
|
48711
|
-
|
|
48712
|
-
|
|
48791
|
+
if (aryFind.Length<=0) return null;
|
|
48792
|
+
|
|
48793
|
+
return aryFind;
|
|
48713
48794
|
}
|
|
48714
48795
|
|
|
48715
|
-
this.
|
|
48796
|
+
this.DrawBG=function(mapBG)
|
|
48716
48797
|
{
|
|
48717
|
-
var
|
|
48718
|
-
var dataWidth=this.ChartSubFrame.DataWidth;
|
|
48719
|
-
var distanceWidth=this.ChartSubFrame.DistanceWidth;
|
|
48720
|
-
var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
48721
|
-
if (isHScreen) xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
48722
|
-
var chartright=this.ChartBorder.GetRight();
|
|
48723
|
-
if (isHScreen) chartright=this.ChartBorder.GetBottom();
|
|
48724
|
-
|
|
48725
|
-
var mapKLine={ Data:new Map() ,Start:null, End:null } ; //Key: date / date time, Value:索引
|
|
48726
|
-
for(var i=this.KData.DataOffset,j=0; i<this.KData.Data.length && j<this.XPointCount; ++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
48798
|
+
for(var mapItem of mapBG)
|
|
48727
48799
|
{
|
|
48728
|
-
var
|
|
48729
|
-
|
|
48730
|
-
|
|
48731
|
-
|
|
48732
|
-
var x=left+(right-left)/2;
|
|
48733
|
-
|
|
48734
|
-
if (j==0) mapKLine.XLeft=left;
|
|
48735
|
-
mapKLine.XRight=right;
|
|
48736
|
-
|
|
48737
|
-
var value={ Index:i, ShowIndex:j , X:x, Right:right, Left:left, Date:kItem.Date };
|
|
48738
|
-
if (ChartData.IsMinutePeriod(this.Period,true))
|
|
48739
|
-
{
|
|
48740
|
-
var key=`Date:${kItem.Date} Time:${kItem.Time}`;
|
|
48741
|
-
value.Time=kItem.Time;
|
|
48742
|
-
}
|
|
48743
|
-
else
|
|
48800
|
+
var bgItem=mapItem[1];
|
|
48801
|
+
//this.DrawBGItem(this.SubFrame, bgItem);
|
|
48802
|
+
|
|
48803
|
+
for(var i=0;i<this.ChartFrame.SubFrame.length;++i)
|
|
48744
48804
|
{
|
|
48745
|
-
var
|
|
48805
|
+
var subFrame=this.ChartFrame.SubFrame[i].Frame;
|
|
48806
|
+
if (this.IsDrawAllFrame || this.SetDrawFrameID.has(i))
|
|
48807
|
+
{
|
|
48808
|
+
this.DrawBGItem(subFrame, bgItem);
|
|
48809
|
+
}
|
|
48746
48810
|
}
|
|
48747
|
-
|
|
48748
|
-
mapKLine.Data.set(key,value);
|
|
48749
|
-
|
|
48750
|
-
//保存下起始和结束位置
|
|
48751
|
-
if (j==0) mapKLine.Start=value;
|
|
48752
|
-
mapKLine.End=value;
|
|
48753
48811
|
}
|
|
48754
|
-
|
|
48755
|
-
return mapKLine;
|
|
48756
48812
|
}
|
|
48757
48813
|
|
|
48758
|
-
this.
|
|
48814
|
+
this.DrawBGItem=function(frame, bgItem)
|
|
48759
48815
|
{
|
|
48760
|
-
var
|
|
48761
|
-
|
|
48762
|
-
var bSingleDate=false;
|
|
48763
|
-
//JSConsole.Chart.Log('[BackgroundPaint::GetBGCoordinate] item ', item);
|
|
48764
|
-
if (isMinutePeriod)
|
|
48765
|
-
{
|
|
48766
|
-
if (item.Start && item.End && item.Start.Date==item.End.Date && item.Start.Time==item.End.Time) bSingleDate=true;
|
|
48767
|
-
}
|
|
48768
|
-
else
|
|
48769
|
-
{
|
|
48770
|
-
if (item.Start && item.End && item.Start.Date==item.End.Date) bSingleDate=true;
|
|
48771
|
-
}
|
|
48772
|
-
|
|
48773
|
-
if (bSingleDate)
|
|
48774
|
-
{
|
|
48775
|
-
if (isMinutePeriod)
|
|
48776
|
-
var key=`Date:${item.Start.Date} Time:${item.Start.Time}`;
|
|
48777
|
-
else
|
|
48778
|
-
var key=`Date:${item.Start.Date}`;
|
|
48779
|
-
|
|
48780
|
-
if (!kLineMap.Data.has(key)) return null;
|
|
48781
|
-
var findItem=kLineMap.Data.get(key);
|
|
48782
|
-
xLeft=findItem.Left;
|
|
48783
|
-
xRight=findItem.Right;
|
|
48784
|
-
return { Left:xLeft, Right:xRight, Width:xRight-xLeft };
|
|
48785
|
-
}
|
|
48786
|
-
|
|
48787
|
-
if (item.Start)
|
|
48816
|
+
var border=frame.GetBorder();
|
|
48817
|
+
if (this.IsHScreen)
|
|
48788
48818
|
{
|
|
48789
|
-
|
|
48790
|
-
|
|
48791
|
-
|
|
48792
|
-
var key=`Date:${item.Start.Date}`;
|
|
48793
|
-
|
|
48794
|
-
if (kLineMap.Data.has(key))
|
|
48795
|
-
{
|
|
48796
|
-
var findItem=kLineMap.Data.get(key);
|
|
48797
|
-
xLeft=findItem.Left;
|
|
48798
|
-
}
|
|
48799
|
-
else
|
|
48800
|
-
{
|
|
48801
|
-
if (isMinutePeriod)
|
|
48802
|
-
{
|
|
48803
|
-
if (item.Start.Date<kLineMap.Start.Date || (item.Start.Date==kLineMap.Start.Date && item.Start.Time<=kLineMap.Start.Time) )
|
|
48804
|
-
{
|
|
48805
|
-
xLeft=kLineMap.Start.Left;
|
|
48806
|
-
}
|
|
48807
|
-
else
|
|
48808
|
-
{
|
|
48809
|
-
for(var kItem of kLineMap.Data)
|
|
48810
|
-
{
|
|
48811
|
-
var value=kItem[1];
|
|
48812
|
-
if (value.Date>item.Start.Date || (value.Date==item.Start.Date && value.Time>item.Start.Time))
|
|
48813
|
-
{
|
|
48814
|
-
xLeft=value.Left;
|
|
48815
|
-
break;
|
|
48816
|
-
}
|
|
48817
|
-
}
|
|
48818
|
-
}
|
|
48819
|
-
}
|
|
48820
|
-
else
|
|
48821
|
-
{
|
|
48822
|
-
if (item.Start.Date<=kLineMap.Start.Date)
|
|
48823
|
-
{
|
|
48824
|
-
xLeft=kLineMap.Start.Left;
|
|
48825
|
-
}
|
|
48826
|
-
else
|
|
48827
|
-
{
|
|
48828
|
-
for(var kItem of kLineMap.Data)
|
|
48829
|
-
{
|
|
48830
|
-
var value=kItem[1];
|
|
48831
|
-
if (value.Date>item.Start.Date)
|
|
48832
|
-
{
|
|
48833
|
-
xLeft=value.Left;
|
|
48834
|
-
break;
|
|
48835
|
-
}
|
|
48836
|
-
}
|
|
48837
|
-
}
|
|
48838
|
-
}
|
|
48839
|
-
}
|
|
48819
|
+
var top=border.RightEx;
|
|
48820
|
+
var bottom=border.LeftEx;
|
|
48821
|
+
var left=border.Top;
|
|
48840
48822
|
}
|
|
48841
48823
|
else
|
|
48842
48824
|
{
|
|
48843
|
-
|
|
48825
|
+
var top=border.TopEx;
|
|
48826
|
+
var bottom=border.BottomEx;
|
|
48827
|
+
var left=border.Left;
|
|
48844
48828
|
}
|
|
48845
48829
|
|
|
48846
|
-
if (
|
|
48830
|
+
if (this.IsHScreen)
|
|
48847
48831
|
{
|
|
48848
|
-
|
|
48849
|
-
|
|
48850
|
-
|
|
48851
|
-
|
|
48852
|
-
|
|
48853
|
-
|
|
48854
|
-
|
|
48855
|
-
var findItem=kLineMap.Data.get(key);
|
|
48856
|
-
xRight=findItem.Right;
|
|
48857
|
-
}
|
|
48858
|
-
else
|
|
48859
|
-
{
|
|
48860
|
-
if (isMinutePeriod)
|
|
48861
|
-
{
|
|
48862
|
-
if (item.End.Date<kLineMap.Start.Date || (item.End.Date==kLineMap.Start.Date && item.End.Time<kLineMap.Start.Time)) return null;
|
|
48863
|
-
|
|
48864
|
-
if (item.End.Date<kLineMap.End.Date || (item.End.Date==kLineMap.End.Date && item.End.Time>=kLineMap.End.Time) )
|
|
48865
|
-
{
|
|
48866
|
-
xRight=kLineMap.End.Right;
|
|
48867
|
-
}
|
|
48868
|
-
else
|
|
48869
|
-
{
|
|
48870
|
-
var previousX=null;
|
|
48871
|
-
for(var kItem of kLineMap.Data)
|
|
48872
|
-
{
|
|
48873
|
-
var value=kItem[1];
|
|
48874
|
-
if (value.Date>item.End.Date || (value.Date==item.End.Date && value.Time>item.End.Time) )
|
|
48875
|
-
{
|
|
48876
|
-
xRight=previousX;
|
|
48877
|
-
break;
|
|
48878
|
-
}
|
|
48879
|
-
previousX=value.Right;
|
|
48880
|
-
}
|
|
48881
|
-
}
|
|
48882
|
-
}
|
|
48883
|
-
else
|
|
48884
|
-
{
|
|
48885
|
-
if (item.End.Date<kLineMap.Start.Date) return null;
|
|
48886
|
-
|
|
48887
|
-
if (item.End.Date<=kLineMap.End.Date)
|
|
48888
|
-
{
|
|
48889
|
-
xRight=kLineMap.End.Right;
|
|
48890
|
-
}
|
|
48891
|
-
else
|
|
48892
|
-
{
|
|
48893
|
-
var previousX=null;
|
|
48894
|
-
for(var kItem of kLineMap.Data)
|
|
48895
|
-
{
|
|
48896
|
-
var value=kItem[1];
|
|
48897
|
-
if (value.Date>item.End.Date)
|
|
48898
|
-
{
|
|
48899
|
-
xRight=previousX;
|
|
48900
|
-
break;
|
|
48901
|
-
}
|
|
48902
|
-
previousX=value.Right;
|
|
48903
|
-
}
|
|
48904
|
-
}
|
|
48905
|
-
}
|
|
48906
|
-
}
|
|
48832
|
+
this.SetFillStyle(bgItem.Item.Color,top,left,bottom,left);
|
|
48833
|
+
var start=bgItem.Start;
|
|
48834
|
+
var end=bgItem.End;
|
|
48835
|
+
var rtBG={ Left:bottom, Right:top, Top:start.Left, Bottom:end.Right };
|
|
48836
|
+
rtBG.Width=rtBG.Right-rtBG.Left;
|
|
48837
|
+
rtBG.Height=rtBG.Bottom-rtBG.Top;
|
|
48838
|
+
this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width),ToFixedRect(rtBG.Height));
|
|
48907
48839
|
}
|
|
48908
48840
|
else
|
|
48909
48841
|
{
|
|
48910
|
-
|
|
48842
|
+
this.SetFillStyle(bgItem.Item.Color, left,top, left,bottom);
|
|
48843
|
+
var start=bgItem.Start;
|
|
48844
|
+
var end=bgItem.End;
|
|
48845
|
+
var rtBG={ Left:start.Left, Right:end.Right, Top:top, Bottom:bottom };
|
|
48846
|
+
rtBG.Width=rtBG.Right-rtBG.Left;
|
|
48847
|
+
rtBG.Height=rtBG.Bottom-rtBG.Top;
|
|
48848
|
+
this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width),ToFixedRect(rtBG.Height));
|
|
48911
48849
|
}
|
|
48912
|
-
|
|
48913
|
-
if (xLeft==null || xRight==null) return null;
|
|
48914
|
-
|
|
48915
|
-
return { Left:xLeft, Right:xRight, Width:xRight-xLeft };
|
|
48916
48850
|
}
|
|
48917
48851
|
}
|
|
48918
48852
|
|
|
48853
|
+
|
|
48919
48854
|
function MinuteBackgroundPaint()
|
|
48920
48855
|
{
|
|
48921
48856
|
this.newMethod=IExtendChartPainting; //派生
|
|
@@ -58515,7 +58450,7 @@ function DynamicChartTitlePainting()
|
|
|
58515
58450
|
var left=positionInfo.Left;
|
|
58516
58451
|
var right=positionInfo.Right;
|
|
58517
58452
|
var bottom=positionInfo.Bottom;
|
|
58518
|
-
|
|
58453
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
58519
58454
|
for(var i=0; i<this.Data.length; ++i)
|
|
58520
58455
|
{
|
|
58521
58456
|
var item=this.Data[i];
|
|
@@ -58534,7 +58469,9 @@ function DynamicChartTitlePainting()
|
|
|
58534
58469
|
if (titleItem.Name) text=titleItem.Name+":"+titleItem.Text;
|
|
58535
58470
|
else text=titleItem.Text;
|
|
58536
58471
|
|
|
58537
|
-
|
|
58472
|
+
if (IFrameSplitOperator.IsNumber(titleItem.LeftSpace)) left+=titleItem.LeftSpace*pixelRatio;
|
|
58473
|
+
|
|
58474
|
+
var space=this.ParamSpace*pixelRatio;
|
|
58538
58475
|
var indexTextWidth=this.Canvas.measureText(text).width; //标题+数值长度
|
|
58539
58476
|
var textWidth=indexTextWidth;
|
|
58540
58477
|
|
|
@@ -58610,7 +58547,7 @@ function DynamicChartTitlePainting()
|
|
|
58610
58547
|
if (dyTitle) text=dyTitle+":"+valueText;
|
|
58611
58548
|
else text=item.Name+":"+valueText;
|
|
58612
58549
|
}
|
|
58613
|
-
var space=this.ParamSpace*
|
|
58550
|
+
var space=this.ParamSpace*pixelRatio;
|
|
58614
58551
|
var textWidth=this.Canvas.measureText(text).width+space;
|
|
58615
58552
|
if ((left+textWidth)>right) break;
|
|
58616
58553
|
|
|
@@ -76186,12 +76123,14 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
76186
76123
|
var item=option.PopMinuteChart;
|
|
76187
76124
|
this.PopMinuteChart=new JSPopMinuteChart();
|
|
76188
76125
|
this.PopMinuteChart.Inital(this, item);
|
|
76126
|
+
this.PopMinuteChart.Create();
|
|
76189
76127
|
return true;
|
|
76190
76128
|
}
|
|
76191
76129
|
else if (option.KLine && option.KLine.KLineDoubleClick===true) //旧的格式 不要使用了
|
|
76192
76130
|
{
|
|
76193
76131
|
this.PopMinuteChart=new JSPopMinuteChart();
|
|
76194
76132
|
this.PopMinuteChart.Inital(this);
|
|
76133
|
+
this.PopMinuteChart.Create();
|
|
76195
76134
|
return true;
|
|
76196
76135
|
}
|
|
76197
76136
|
|
|
@@ -88373,6 +88312,15 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
88373
88312
|
chart.SetOption(option);
|
|
88374
88313
|
this.ExtendChartPaint.push(chart);
|
|
88375
88314
|
return chart;
|
|
88315
|
+
case "背景图":
|
|
88316
|
+
chart=new BackgroundPaint();
|
|
88317
|
+
chart.Canvas=this.Canvas;
|
|
88318
|
+
chart.ChartBorder=this.Frame.ChartBorder;
|
|
88319
|
+
chart.ChartFrame=this.Frame;
|
|
88320
|
+
chart.HQChart=this;
|
|
88321
|
+
chart.SetOption(option);
|
|
88322
|
+
this.ExtendChartPaint.push(chart);
|
|
88323
|
+
return chart;
|
|
88376
88324
|
default:
|
|
88377
88325
|
chart=g_ExtendChartPaintFactory.Create(name);
|
|
88378
88326
|
if (!chart) return null;
|