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
|
@@ -4290,6 +4290,12 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4290
4290
|
if (IFrameSplitOperator.IsNumber(item.WheelYMove)) chart.EnableYDrag.WheelYMove=item.WheelYMove;
|
|
4291
4291
|
}
|
|
4292
4292
|
|
|
4293
|
+
if (option.EnableXDrag)
|
|
4294
|
+
{
|
|
4295
|
+
var item=option.EnableXDrag;
|
|
4296
|
+
if (IFrameSplitOperator.IsBool(item.Bottom)) chart.EnableXDrag.Bottom=item.Bottom;
|
|
4297
|
+
}
|
|
4298
|
+
|
|
4293
4299
|
if (option.KLineTooltip)
|
|
4294
4300
|
{
|
|
4295
4301
|
var item=option.KLineTooltip;
|
|
@@ -5854,6 +5860,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5854
5860
|
return [];
|
|
5855
5861
|
}
|
|
5856
5862
|
|
|
5863
|
+
//手动更新指标 aryIndex=[ {ID:主图指标ID, OverlayID:叠加指标ID }] ,option={ Draw:true/false }
|
|
5864
|
+
this.UpdateWindowIndexV2=function(aryIndex, option)
|
|
5865
|
+
{
|
|
5866
|
+
if (this.JSChartContainer && typeof(this.JSChartContainer.UpdateWindowIndexV2)=='function')
|
|
5867
|
+
return this.JSChartContainer.UpdateWindowIndexV2(aryIndex, option);
|
|
5868
|
+
}
|
|
5869
|
+
|
|
5857
5870
|
this.ChangeInstructionIndex=function(indexName, option)
|
|
5858
5871
|
{
|
|
5859
5872
|
if (this.JSChartContainer && typeof(this.JSChartContainer.ChangeInstructionIndex)=='function')
|
|
@@ -7025,7 +7038,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7025
7038
|
{
|
|
7026
7039
|
Left:false, Right:false, //是否可以拖拽缩放Y轴最大最小值
|
|
7027
7040
|
Wheel:false, WheelYMove:5 //是否可以滚轴缩放Y轴最大最小值
|
|
7028
|
-
};
|
|
7041
|
+
};
|
|
7042
|
+
|
|
7043
|
+
this.EnableXDrag={ Bottom:true }; //X轴拖动缩放
|
|
7029
7044
|
|
|
7030
7045
|
this.EnableZoomIndexWindow=false; //是否支持双击缩放附图窗口
|
|
7031
7046
|
this.EnableVerifyRecvData=false; //是否检测接收到的数据
|
|
@@ -7861,14 +7876,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7861
7876
|
|
|
7862
7877
|
var drag=
|
|
7863
7878
|
{
|
|
7864
|
-
|
|
7865
|
-
|
|
7879
|
+
Click:{},
|
|
7880
|
+
LastMove:{}, //最后移动的位置
|
|
7866
7881
|
CurrentMove:{}, //当前的移动
|
|
7882
|
+
IsInFrameBottom:false,
|
|
7867
7883
|
};
|
|
7868
7884
|
|
|
7885
|
+
|
|
7886
|
+
|
|
7869
7887
|
drag.Click.X=e.clientX;
|
|
7870
7888
|
drag.Click.Y=e.clientY;
|
|
7871
|
-
drag.Click.IsInFrameBottom=this.Frame.PtInFrameBottom(x,y); //是否点击在X轴上
|
|
7889
|
+
if (this.EnableXDrag.Bottom) drag.Click.IsInFrameBottom=this.Frame.PtInFrameBottom(x,y); //是否点击在X轴上
|
|
7872
7890
|
drag.LastMove.X=e.clientX;
|
|
7873
7891
|
drag.LastMove.Y=e.clientY;
|
|
7874
7892
|
|
|
@@ -9896,6 +9914,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9896
9914
|
for(var i=0;i<this.ExtendChartPaint.length;++i)
|
|
9897
9915
|
{
|
|
9898
9916
|
var item=this.ExtendChartPaint[i];
|
|
9917
|
+
|
|
9899
9918
|
if (item.IsCallbackDraw)
|
|
9900
9919
|
{
|
|
9901
9920
|
if (["KLineYAxisBGPaint","DepthMapPaint","BackgroundPaint","MinuteBackgroundPaint", "SessionBreaksPaint"].includes(item.ClassName))
|
|
@@ -10570,7 +10589,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10570
10589
|
}
|
|
10571
10590
|
}
|
|
10572
10591
|
|
|
10573
|
-
|
|
10592
|
+
//X轴拖动缩放
|
|
10593
|
+
if (this.ClassName=="KLineChartContainer" && this.EnableXDrag.Bottom && this.Frame.PtInFrameBottom(x,y))
|
|
10574
10594
|
{
|
|
10575
10595
|
mouseStatus={ Cursor:"ew-resize", Name:"FrameButtom"};
|
|
10576
10596
|
JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] frame bottom ");
|
|
@@ -14542,69 +14562,82 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14542
14562
|
}
|
|
14543
14563
|
}
|
|
14544
14564
|
|
|
14545
|
-
|
|
14565
|
+
//手动更新指标 [ {ID:主图指标ID, OverlayID:叠加指标ID }]
|
|
14566
|
+
this.UpdateWindowIndexV2=function(aryIndex, option)
|
|
14546
14567
|
{
|
|
14568
|
+
if (!this.Frame || !this.Frame.SubFrame) return false;
|
|
14569
|
+
|
|
14570
|
+
var kData=this.GetKData();
|
|
14571
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
|
|
14572
|
+
|
|
14547
14573
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryIndex)) return false;
|
|
14548
14574
|
|
|
14549
|
-
var
|
|
14550
|
-
|
|
14575
|
+
var setMainIndex=new Set(); //主图指标
|
|
14576
|
+
var setOverlayIndex=new Set(); //附图指标
|
|
14577
|
+
|
|
14578
|
+
for(var i=0;aryIndex.length;++i)
|
|
14551
14579
|
{
|
|
14552
|
-
var item=
|
|
14580
|
+
var item=aryIndex[i];
|
|
14553
14581
|
if (!item) continue;
|
|
14554
|
-
if (!item.ID) continue;
|
|
14555
14582
|
|
|
14556
|
-
if (
|
|
14557
|
-
|
|
14558
|
-
aryID.push(i);
|
|
14559
|
-
}
|
|
14583
|
+
if (item.ID) setMainIndex.set(item.ID);
|
|
14584
|
+
if (item.OverlayID) setOverlayIndex.set(item.OverlayID);
|
|
14560
14585
|
}
|
|
14561
14586
|
|
|
14562
|
-
if (
|
|
14587
|
+
if (setMainIndex.size<=0 && setOverlayIndex.size<0) return false;
|
|
14563
14588
|
|
|
14589
|
+
//K线数据
|
|
14590
|
+
var bindData=new ChartData();
|
|
14591
|
+
if (kData) bindData.Data=kData.Data;
|
|
14564
14592
|
if (this.IsKLineContainer()) //K线
|
|
14565
14593
|
{
|
|
14566
|
-
var bindData=new ChartData();
|
|
14567
|
-
bindData.Data=this.SourceData.Data;
|
|
14568
14594
|
bindData.Period=this.Period;
|
|
14569
14595
|
bindData.Right=this.Right;
|
|
14596
|
+
}
|
|
14570
14597
|
|
|
14571
|
-
|
|
14598
|
+
//主图指标
|
|
14599
|
+
if (setMainIndex.size>0)
|
|
14600
|
+
{
|
|
14601
|
+
for(var i=0;i<this.WindowIndex.length;++i)
|
|
14572
14602
|
{
|
|
14603
|
+
var item=this.WindowIndex[i];
|
|
14604
|
+
if (!item) continue;
|
|
14573
14605
|
|
|
14606
|
+
if (setMainIndex.has(item.ID))
|
|
14607
|
+
{
|
|
14608
|
+
this.BindIndexData(i,bindData);
|
|
14609
|
+
}
|
|
14574
14610
|
}
|
|
14575
|
-
|
|
14611
|
+
}
|
|
14612
|
+
|
|
14613
|
+
//叠加指标
|
|
14614
|
+
if (setOverlayIndex.size>0)
|
|
14615
|
+
{
|
|
14616
|
+
for(var i=0;i<this.Frame.SubFrame.length;++i)
|
|
14576
14617
|
{
|
|
14577
|
-
|
|
14618
|
+
var item=this.Frame.SubFrame[i];
|
|
14619
|
+
for(var j=0; j<item.OverlayIndex.length; ++j)
|
|
14578
14620
|
{
|
|
14579
|
-
var
|
|
14580
|
-
bindData.Data=rightData;
|
|
14581
|
-
}
|
|
14621
|
+
var overlayItem=item.OverlayIndex[j];
|
|
14582
14622
|
|
|
14583
|
-
|
|
14584
|
-
|
|
14585
|
-
|
|
14586
|
-
|
|
14623
|
+
if (setOverlayIndex.has(overlayItem.Identify))
|
|
14624
|
+
{
|
|
14625
|
+
this.BindOverlayIndexData(overlayItem,i,hisData)
|
|
14626
|
+
}
|
|
14587
14627
|
}
|
|
14588
14628
|
}
|
|
14589
14629
|
}
|
|
14590
|
-
else if (this.IsMinuteContainer()) //分时图
|
|
14591
|
-
{
|
|
14592
|
-
var bindData=this.SourceData;
|
|
14593
|
-
}
|
|
14594
|
-
else
|
|
14595
|
-
{
|
|
14596
|
-
return;
|
|
14597
|
-
}
|
|
14598
14630
|
|
|
14599
|
-
|
|
14600
|
-
|
|
14631
|
+
var bDraw=true;
|
|
14632
|
+
if (option && option.Draw===false) bDraw=false;
|
|
14633
|
+
if (bDraw)
|
|
14601
14634
|
{
|
|
14602
|
-
this.
|
|
14635
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
14636
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
14637
|
+
this.Draw();
|
|
14603
14638
|
}
|
|
14604
14639
|
|
|
14605
|
-
|
|
14606
|
-
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
14607
|
-
this.Draw();
|
|
14640
|
+
return true;
|
|
14608
14641
|
}
|
|
14609
14642
|
|
|
14610
14643
|
this.GetKData=function()
|
|
@@ -48383,6 +48416,25 @@ function IExtendChartPainting()
|
|
|
48383
48416
|
{
|
|
48384
48417
|
return GetFontHeight(this.Canvas, font, "擎");
|
|
48385
48418
|
}
|
|
48419
|
+
|
|
48420
|
+
this.SetFillStyle=function(color, x0, y0, x1, y1)
|
|
48421
|
+
{
|
|
48422
|
+
if (Array.isArray(color))
|
|
48423
|
+
{
|
|
48424
|
+
let gradient = this.Canvas.createLinearGradient(x0, y0, x1, y1);
|
|
48425
|
+
var offset=1/(color.length-1);
|
|
48426
|
+
for(var i=0; i<color.length; ++i)
|
|
48427
|
+
{
|
|
48428
|
+
var value=i*offset;
|
|
48429
|
+
gradient.addColorStop(value, color[i]);
|
|
48430
|
+
}
|
|
48431
|
+
this.Canvas.fillStyle=gradient;
|
|
48432
|
+
}
|
|
48433
|
+
else
|
|
48434
|
+
{
|
|
48435
|
+
this.Canvas.fillStyle=color;
|
|
48436
|
+
}
|
|
48437
|
+
}
|
|
48386
48438
|
}
|
|
48387
48439
|
|
|
48388
48440
|
//K线Tooltip, 显示在左边或右边
|
|
@@ -52552,7 +52604,7 @@ function KLineYAxisBGPaint()
|
|
|
52552
52604
|
}
|
|
52553
52605
|
|
|
52554
52606
|
|
|
52555
|
-
//背景图 支持横屏
|
|
52607
|
+
//背景图 支持横屏 新版本
|
|
52556
52608
|
function BackgroundPaint()
|
|
52557
52609
|
{
|
|
52558
52610
|
this.newMethod=IExtendChartPainting; //派生
|
|
@@ -52564,327 +52616,210 @@ function BackgroundPaint()
|
|
|
52564
52616
|
this.IsDynamic=false;
|
|
52565
52617
|
this.IsCallbackDraw=true; //在回调函数里绘制, 不在Draw()中绘制
|
|
52566
52618
|
|
|
52619
|
+
this.IsDrawAllFrame=false; //全部的指标框都画
|
|
52620
|
+
this.SetDrawFrameID=new Set([0]); //指定几个指标框画
|
|
52621
|
+
|
|
52567
52622
|
this.FrameID=0;
|
|
52568
|
-
this.Data;
|
|
52623
|
+
this.Data; //背景数据[ { Start:{ Date:, Time: }, End:{ Date:, Time }, Color:['rgb(44,55,255)','rgb(200,55,255)'] }]
|
|
52624
|
+
this.IsShow=true;
|
|
52625
|
+
this.SubFrame=null;
|
|
52626
|
+
|
|
52569
52627
|
this.ID=Guid(); //唯一的ID
|
|
52570
|
-
|
|
52571
|
-
/*
|
|
52572
|
-
this.Data=
|
|
52573
|
-
[
|
|
52574
|
-
{ Start:{ Date:20181201 }, End:{ Date:20181230 }, Color:'rgb(44,55,44)' } ,
|
|
52575
|
-
{ Start:{ Date:20190308 }, End:{ Date:20190404 }, Color:['rgb(44,55,255)','rgb(200,55,255)'] }
|
|
52576
|
-
]
|
|
52577
|
-
*/
|
|
52578
|
-
|
|
52579
|
-
this.ChartSubFrame;
|
|
52580
|
-
this.ChartBorder;
|
|
52581
|
-
this.KData;
|
|
52582
|
-
this.Period;
|
|
52583
|
-
this.XPointCount=0;
|
|
52628
|
+
this.HQChart;
|
|
52584
52629
|
|
|
52585
52630
|
this.SetOption=function(option) //设置
|
|
52586
52631
|
{
|
|
52587
|
-
if (option
|
|
52632
|
+
if (!option) return;
|
|
52633
|
+
|
|
52634
|
+
if (IFrameSplitOperator.IsNumber(option.FrameID)) this.FrameID=option.FrameID;
|
|
52588
52635
|
if (IFrameSplitOperator.IsObjectExist(option.ID)) this.ID=option.ID;
|
|
52636
|
+
if (IFrameSplitOperator.IsBool(option.IsDrawAllFrame)) this.IsDrawAllFrame=option.IsDrawAllFrame;
|
|
52637
|
+
if (IFrameSplitOperator.IsNonEmptyArray(option.AryFrameID)) this.SetDrawFrameID=new Set(option.AryFrameID);
|
|
52589
52638
|
}
|
|
52590
52639
|
|
|
52591
52640
|
this.Draw=function()
|
|
52592
52641
|
{
|
|
52593
|
-
|
|
52594
|
-
|
|
52595
|
-
|
|
52596
|
-
if (!
|
|
52597
|
-
|
|
52598
|
-
this.
|
|
52599
|
-
|
|
52600
|
-
this.
|
|
52601
|
-
this.
|
|
52602
|
-
if (!this.
|
|
52603
|
-
|
|
52604
|
-
var
|
|
52605
|
-
|
|
52606
|
-
|
|
52607
|
-
|
|
52608
|
-
|
|
52609
|
-
var
|
|
52610
|
-
|
|
52611
|
-
var
|
|
52612
|
-
var
|
|
52613
|
-
|
|
52614
|
-
|
|
52615
|
-
|
|
52616
|
-
var bottom=this.ChartBorder.GetBottomEx();
|
|
52617
|
-
var top=this.ChartBorder.GetTopEx();
|
|
52618
|
-
var height=this.ChartBorder.GetHeightEx();
|
|
52619
|
-
if (isHScreen)
|
|
52642
|
+
this.SubFrame=null;
|
|
52643
|
+
|
|
52644
|
+
if (this.FrameID<0) return;
|
|
52645
|
+
if (!this.HQChart) return;
|
|
52646
|
+
if (!this.ChartFrame || !IFrameSplitOperator.IsNonEmptyArray(this.ChartFrame.SubFrame)) return;
|
|
52647
|
+
if (!this.IsShow) return;
|
|
52648
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Data)) return;
|
|
52649
|
+
if (!this.ChartFrame.SubFrame[this.FrameID]) return;
|
|
52650
|
+
this.SubFrame=this.ChartFrame.SubFrame[this.FrameID].Frame;
|
|
52651
|
+
if (!this.SubFrame) return;
|
|
52652
|
+
|
|
52653
|
+
var kData=this.HQChart.GetKData();
|
|
52654
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
|
|
52655
|
+
|
|
52656
|
+
var bHScreen=(this.SubFrame.IsHScreen===true);
|
|
52657
|
+
this.IsHScreen=bHScreen;
|
|
52658
|
+
var isMinute=this.SubFrame.IsMinuteFrame();
|
|
52659
|
+
var dataWidth=this.SubFrame.DataWidth;
|
|
52660
|
+
var distanceWidth=this.SubFrame.DistanceWidth;
|
|
52661
|
+
var xPointCount=this.SubFrame.XPointCount;
|
|
52662
|
+
|
|
52663
|
+
var border=this.SubFrame.GetBorder();
|
|
52664
|
+
if (bHScreen)
|
|
52620
52665
|
{
|
|
52621
|
-
|
|
52622
|
-
|
|
52623
|
-
|
|
52666
|
+
var chartright=border.BottomEx;
|
|
52667
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
52668
|
+
}
|
|
52669
|
+
else
|
|
52670
|
+
{
|
|
52671
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
52672
|
+
var chartright=border.RightEx;
|
|
52624
52673
|
}
|
|
52625
52674
|
|
|
52626
|
-
|
|
52675
|
+
var mapBG=new Map(); //key= index, Value={ Start:{Left, Center, Right, Item:}, End:{ Left, Center, Right, Item:} }
|
|
52676
|
+
var startIndex=kData.DataOffset;
|
|
52677
|
+
for(var i=startIndex,j=0;i<kData.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
52627
52678
|
{
|
|
52628
|
-
var
|
|
52629
|
-
var
|
|
52630
|
-
if (!
|
|
52679
|
+
var kItem=kData.Data[i];
|
|
52680
|
+
var aryFind=this.FindMatchData(kItem);
|
|
52681
|
+
if (!aryFind) continue;
|
|
52631
52682
|
|
|
52632
|
-
if (
|
|
52683
|
+
if (isMinute)
|
|
52633
52684
|
{
|
|
52634
|
-
var
|
|
52635
|
-
|
|
52636
|
-
|
|
52637
|
-
var offset=1/item.Color.length;
|
|
52638
|
-
for(var i in item.Color)
|
|
52639
|
-
{
|
|
52640
|
-
gradient.addColorStop(i*offset, item.Color[i]);
|
|
52641
|
-
}
|
|
52642
|
-
this.Canvas.fillStyle=gradient;
|
|
52685
|
+
var x=this.ChartFrame.GetXFromIndex(j);
|
|
52686
|
+
var left=x;
|
|
52687
|
+
var right=x;
|
|
52643
52688
|
}
|
|
52644
52689
|
else
|
|
52645
52690
|
{
|
|
52646
|
-
|
|
52691
|
+
var left=xOffset;
|
|
52692
|
+
var right=xOffset+dataWidth;
|
|
52693
|
+
var x=left+(right-left)/2;
|
|
52647
52694
|
}
|
|
52648
52695
|
|
|
52649
|
-
|
|
52650
|
-
|
|
52696
|
+
for(var k=0;k<aryFind.length;++k)
|
|
52697
|
+
{
|
|
52698
|
+
var findItem=aryFind[k];
|
|
52699
|
+
if (mapBG.has(findItem.Index))
|
|
52700
|
+
{
|
|
52701
|
+
var bgItem=mapBG.get(findItem.Index);
|
|
52702
|
+
bgItem.End.Left=left;
|
|
52703
|
+
bgItem.End.Right=right;
|
|
52704
|
+
bgItem.End.Item=findItem.Item;
|
|
52705
|
+
}
|
|
52706
|
+
else
|
|
52707
|
+
{
|
|
52708
|
+
mapBG.set(findItem.Index, { Item:findItem.Item, Start:{ Left:left, Right:right, Item:findItem.Item }, End:{ Left:left, Right:right, Item:findItem.Item }})
|
|
52709
|
+
}
|
|
52710
|
+
}
|
|
52711
|
+
}
|
|
52712
|
+
|
|
52713
|
+
if (mapBG.size>0)
|
|
52714
|
+
{
|
|
52715
|
+
this.Canvas.save();
|
|
52716
|
+
//this.ClipClient(bHScreen);
|
|
52717
|
+
|
|
52718
|
+
this.DrawBG(mapBG);
|
|
52719
|
+
|
|
52720
|
+
this.Canvas.restore();
|
|
52651
52721
|
}
|
|
52652
52722
|
}
|
|
52653
52723
|
|
|
52654
|
-
this.
|
|
52724
|
+
this.FindMatchData=function(kItem)
|
|
52655
52725
|
{
|
|
52656
|
-
|
|
52657
|
-
|
|
52658
|
-
var aryData=[];
|
|
52726
|
+
var aryFind=[];
|
|
52659
52727
|
for(var i=0;i<this.Data.length;++i)
|
|
52660
52728
|
{
|
|
52661
52729
|
var item=this.Data[i];
|
|
52662
|
-
var
|
|
52663
|
-
|
|
52664
|
-
|
|
52665
|
-
|
|
52666
|
-
if (item.Start.Date<first.Date && item.End.Date>end.Date)
|
|
52730
|
+
var start=item.Start;
|
|
52731
|
+
var end=item.End;
|
|
52732
|
+
var bMatch=false;
|
|
52733
|
+
if (IFrameSplitOperator.IsNumber(kItem.Date) && IFrameSplitOperator.IsNumber(kItem.Time))
|
|
52667
52734
|
{
|
|
52668
|
-
|
|
52669
|
-
|
|
52735
|
+
if (kItem.Date>start.Date && kItem.Date<end.Date)
|
|
52736
|
+
{
|
|
52737
|
+
bMatch=true;
|
|
52738
|
+
}
|
|
52739
|
+
else if (kItem.Date==start.Date && kItem.Date==end.Date)
|
|
52740
|
+
{
|
|
52741
|
+
if (kItem.Time>=start.Time && kItem.Time<=end.Time)bMatch=true;
|
|
52742
|
+
}
|
|
52743
|
+
else if (kItem.Date==start.Date)
|
|
52744
|
+
{
|
|
52745
|
+
if (kItem.Time>=start.Time) bMatch=true;
|
|
52746
|
+
}
|
|
52747
|
+
else if (kItem.Date==end.Date)
|
|
52748
|
+
{
|
|
52749
|
+
if ((kItem.Time<=end.Time)) bMatch=true;
|
|
52750
|
+
}
|
|
52670
52751
|
}
|
|
52671
|
-
|
|
52672
|
-
|
|
52673
|
-
if (showItem.Start || showItem.End)
|
|
52752
|
+
else if (IFrameSplitOperator.IsNumber(kItem.Date) && !IFrameSplitOperator.IsNumber(kItem.Time))
|
|
52674
52753
|
{
|
|
52675
|
-
|
|
52676
|
-
aryData.push(showItem);
|
|
52754
|
+
if (kItem.Date>=start.Date && kItem.Date<=end.Date) bMatch=true;
|
|
52677
52755
|
}
|
|
52756
|
+
|
|
52757
|
+
if (bMatch) aryFind.push({ Index:i, Item:item });
|
|
52678
52758
|
}
|
|
52679
52759
|
|
|
52680
|
-
|
|
52681
|
-
|
|
52760
|
+
if (aryFind.Length<=0) return null;
|
|
52761
|
+
|
|
52762
|
+
return aryFind;
|
|
52682
52763
|
}
|
|
52683
52764
|
|
|
52684
|
-
this.
|
|
52765
|
+
this.DrawBG=function(mapBG)
|
|
52685
52766
|
{
|
|
52686
|
-
var
|
|
52687
|
-
var dataWidth=this.ChartSubFrame.DataWidth;
|
|
52688
|
-
var distanceWidth=this.ChartSubFrame.DistanceWidth;
|
|
52689
|
-
var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
52690
|
-
if (isHScreen) xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
52691
|
-
var chartright=this.ChartBorder.GetRight();
|
|
52692
|
-
if (isHScreen) chartright=this.ChartBorder.GetBottom();
|
|
52693
|
-
|
|
52694
|
-
var mapKLine={ Data:new Map() ,Start:null, End:null } ; //Key: date / date time, Value:索引
|
|
52695
|
-
for(var i=this.KData.DataOffset,j=0; i<this.KData.Data.length && j<this.XPointCount; ++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
52767
|
+
for(var mapItem of mapBG)
|
|
52696
52768
|
{
|
|
52697
|
-
var
|
|
52698
|
-
|
|
52699
|
-
|
|
52700
|
-
|
|
52701
|
-
var x=left+(right-left)/2;
|
|
52702
|
-
|
|
52703
|
-
if (j==0) mapKLine.XLeft=left;
|
|
52704
|
-
mapKLine.XRight=right;
|
|
52705
|
-
|
|
52706
|
-
var value={ Index:i, ShowIndex:j , X:x, Right:right, Left:left, Date:kItem.Date };
|
|
52707
|
-
if (ChartData.IsMinutePeriod(this.Period,true))
|
|
52708
|
-
{
|
|
52709
|
-
var key=`Date:${kItem.Date} Time:${kItem.Time}`;
|
|
52710
|
-
value.Time=kItem.Time;
|
|
52711
|
-
}
|
|
52712
|
-
else
|
|
52769
|
+
var bgItem=mapItem[1];
|
|
52770
|
+
//this.DrawBGItem(this.SubFrame, bgItem);
|
|
52771
|
+
|
|
52772
|
+
for(var i=0;i<this.ChartFrame.SubFrame.length;++i)
|
|
52713
52773
|
{
|
|
52714
|
-
var
|
|
52774
|
+
var subFrame=this.ChartFrame.SubFrame[i].Frame;
|
|
52775
|
+
if (this.IsDrawAllFrame || this.SetDrawFrameID.has(i))
|
|
52776
|
+
{
|
|
52777
|
+
this.DrawBGItem(subFrame, bgItem);
|
|
52778
|
+
}
|
|
52715
52779
|
}
|
|
52716
|
-
|
|
52717
|
-
mapKLine.Data.set(key,value);
|
|
52718
|
-
|
|
52719
|
-
//保存下起始和结束位置
|
|
52720
|
-
if (j==0) mapKLine.Start=value;
|
|
52721
|
-
mapKLine.End=value;
|
|
52722
52780
|
}
|
|
52723
|
-
|
|
52724
|
-
return mapKLine;
|
|
52725
52781
|
}
|
|
52726
52782
|
|
|
52727
|
-
this.
|
|
52783
|
+
this.DrawBGItem=function(frame, bgItem)
|
|
52728
52784
|
{
|
|
52729
|
-
var
|
|
52730
|
-
|
|
52731
|
-
var bSingleDate=false;
|
|
52732
|
-
//JSConsole.Chart.Log('[BackgroundPaint::GetBGCoordinate] item ', item);
|
|
52733
|
-
if (isMinutePeriod)
|
|
52734
|
-
{
|
|
52735
|
-
if (item.Start && item.End && item.Start.Date==item.End.Date && item.Start.Time==item.End.Time) bSingleDate=true;
|
|
52736
|
-
}
|
|
52737
|
-
else
|
|
52738
|
-
{
|
|
52739
|
-
if (item.Start && item.End && item.Start.Date==item.End.Date) bSingleDate=true;
|
|
52740
|
-
}
|
|
52741
|
-
|
|
52742
|
-
if (bSingleDate)
|
|
52743
|
-
{
|
|
52744
|
-
if (isMinutePeriod)
|
|
52745
|
-
var key=`Date:${item.Start.Date} Time:${item.Start.Time}`;
|
|
52746
|
-
else
|
|
52747
|
-
var key=`Date:${item.Start.Date}`;
|
|
52748
|
-
|
|
52749
|
-
if (!kLineMap.Data.has(key)) return null;
|
|
52750
|
-
var findItem=kLineMap.Data.get(key);
|
|
52751
|
-
xLeft=findItem.Left;
|
|
52752
|
-
xRight=findItem.Right;
|
|
52753
|
-
return { Left:xLeft, Right:xRight, Width:xRight-xLeft };
|
|
52754
|
-
}
|
|
52755
|
-
|
|
52756
|
-
if (item.Start)
|
|
52785
|
+
var border=frame.GetBorder();
|
|
52786
|
+
if (this.IsHScreen)
|
|
52757
52787
|
{
|
|
52758
|
-
|
|
52759
|
-
|
|
52760
|
-
|
|
52761
|
-
var key=`Date:${item.Start.Date}`;
|
|
52762
|
-
|
|
52763
|
-
if (kLineMap.Data.has(key))
|
|
52764
|
-
{
|
|
52765
|
-
var findItem=kLineMap.Data.get(key);
|
|
52766
|
-
xLeft=findItem.Left;
|
|
52767
|
-
}
|
|
52768
|
-
else
|
|
52769
|
-
{
|
|
52770
|
-
if (isMinutePeriod)
|
|
52771
|
-
{
|
|
52772
|
-
if (item.Start.Date<kLineMap.Start.Date || (item.Start.Date==kLineMap.Start.Date && item.Start.Time<=kLineMap.Start.Time) )
|
|
52773
|
-
{
|
|
52774
|
-
xLeft=kLineMap.Start.Left;
|
|
52775
|
-
}
|
|
52776
|
-
else
|
|
52777
|
-
{
|
|
52778
|
-
for(var kItem of kLineMap.Data)
|
|
52779
|
-
{
|
|
52780
|
-
var value=kItem[1];
|
|
52781
|
-
if (value.Date>item.Start.Date || (value.Date==item.Start.Date && value.Time>item.Start.Time))
|
|
52782
|
-
{
|
|
52783
|
-
xLeft=value.Left;
|
|
52784
|
-
break;
|
|
52785
|
-
}
|
|
52786
|
-
}
|
|
52787
|
-
}
|
|
52788
|
-
}
|
|
52789
|
-
else
|
|
52790
|
-
{
|
|
52791
|
-
if (item.Start.Date<=kLineMap.Start.Date)
|
|
52792
|
-
{
|
|
52793
|
-
xLeft=kLineMap.Start.Left;
|
|
52794
|
-
}
|
|
52795
|
-
else
|
|
52796
|
-
{
|
|
52797
|
-
for(var kItem of kLineMap.Data)
|
|
52798
|
-
{
|
|
52799
|
-
var value=kItem[1];
|
|
52800
|
-
if (value.Date>item.Start.Date)
|
|
52801
|
-
{
|
|
52802
|
-
xLeft=value.Left;
|
|
52803
|
-
break;
|
|
52804
|
-
}
|
|
52805
|
-
}
|
|
52806
|
-
}
|
|
52807
|
-
}
|
|
52808
|
-
}
|
|
52788
|
+
var top=border.RightEx;
|
|
52789
|
+
var bottom=border.LeftEx;
|
|
52790
|
+
var left=border.Top;
|
|
52809
52791
|
}
|
|
52810
52792
|
else
|
|
52811
52793
|
{
|
|
52812
|
-
|
|
52794
|
+
var top=border.TopEx;
|
|
52795
|
+
var bottom=border.BottomEx;
|
|
52796
|
+
var left=border.Left;
|
|
52813
52797
|
}
|
|
52814
52798
|
|
|
52815
|
-
if (
|
|
52799
|
+
if (this.IsHScreen)
|
|
52816
52800
|
{
|
|
52817
|
-
|
|
52818
|
-
|
|
52819
|
-
|
|
52820
|
-
|
|
52821
|
-
|
|
52822
|
-
|
|
52823
|
-
|
|
52824
|
-
var findItem=kLineMap.Data.get(key);
|
|
52825
|
-
xRight=findItem.Right;
|
|
52826
|
-
}
|
|
52827
|
-
else
|
|
52828
|
-
{
|
|
52829
|
-
if (isMinutePeriod)
|
|
52830
|
-
{
|
|
52831
|
-
if (item.End.Date<kLineMap.Start.Date || (item.End.Date==kLineMap.Start.Date && item.End.Time<kLineMap.Start.Time)) return null;
|
|
52832
|
-
|
|
52833
|
-
if (item.End.Date<kLineMap.End.Date || (item.End.Date==kLineMap.End.Date && item.End.Time>=kLineMap.End.Time) )
|
|
52834
|
-
{
|
|
52835
|
-
xRight=kLineMap.End.Right;
|
|
52836
|
-
}
|
|
52837
|
-
else
|
|
52838
|
-
{
|
|
52839
|
-
var previousX=null;
|
|
52840
|
-
for(var kItem of kLineMap.Data)
|
|
52841
|
-
{
|
|
52842
|
-
var value=kItem[1];
|
|
52843
|
-
if (value.Date>item.End.Date || (value.Date==item.End.Date && value.Time>item.End.Time) )
|
|
52844
|
-
{
|
|
52845
|
-
xRight=previousX;
|
|
52846
|
-
break;
|
|
52847
|
-
}
|
|
52848
|
-
previousX=value.Right;
|
|
52849
|
-
}
|
|
52850
|
-
}
|
|
52851
|
-
}
|
|
52852
|
-
else
|
|
52853
|
-
{
|
|
52854
|
-
if (item.End.Date<kLineMap.Start.Date) return null;
|
|
52855
|
-
|
|
52856
|
-
if (item.End.Date<=kLineMap.End.Date)
|
|
52857
|
-
{
|
|
52858
|
-
xRight=kLineMap.End.Right;
|
|
52859
|
-
}
|
|
52860
|
-
else
|
|
52861
|
-
{
|
|
52862
|
-
var previousX=null;
|
|
52863
|
-
for(var kItem of kLineMap.Data)
|
|
52864
|
-
{
|
|
52865
|
-
var value=kItem[1];
|
|
52866
|
-
if (value.Date>item.End.Date)
|
|
52867
|
-
{
|
|
52868
|
-
xRight=previousX;
|
|
52869
|
-
break;
|
|
52870
|
-
}
|
|
52871
|
-
previousX=value.Right;
|
|
52872
|
-
}
|
|
52873
|
-
}
|
|
52874
|
-
}
|
|
52875
|
-
}
|
|
52801
|
+
this.SetFillStyle(bgItem.Item.Color,top,left,bottom,left);
|
|
52802
|
+
var start=bgItem.Start;
|
|
52803
|
+
var end=bgItem.End;
|
|
52804
|
+
var rtBG={ Left:bottom, Right:top, Top:start.Left, Bottom:end.Right };
|
|
52805
|
+
rtBG.Width=rtBG.Right-rtBG.Left;
|
|
52806
|
+
rtBG.Height=rtBG.Bottom-rtBG.Top;
|
|
52807
|
+
this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width),ToFixedRect(rtBG.Height));
|
|
52876
52808
|
}
|
|
52877
52809
|
else
|
|
52878
52810
|
{
|
|
52879
|
-
|
|
52811
|
+
this.SetFillStyle(bgItem.Item.Color, left,top, left,bottom);
|
|
52812
|
+
var start=bgItem.Start;
|
|
52813
|
+
var end=bgItem.End;
|
|
52814
|
+
var rtBG={ Left:start.Left, Right:end.Right, Top:top, Bottom:bottom };
|
|
52815
|
+
rtBG.Width=rtBG.Right-rtBG.Left;
|
|
52816
|
+
rtBG.Height=rtBG.Bottom-rtBG.Top;
|
|
52817
|
+
this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width),ToFixedRect(rtBG.Height));
|
|
52880
52818
|
}
|
|
52881
|
-
|
|
52882
|
-
if (xLeft==null || xRight==null) return null;
|
|
52883
|
-
|
|
52884
|
-
return { Left:xLeft, Right:xRight, Width:xRight-xLeft };
|
|
52885
52819
|
}
|
|
52886
52820
|
}
|
|
52887
52821
|
|
|
52822
|
+
|
|
52888
52823
|
function MinuteBackgroundPaint()
|
|
52889
52824
|
{
|
|
52890
52825
|
this.newMethod=IExtendChartPainting; //派生
|
|
@@ -62484,7 +62419,7 @@ function DynamicChartTitlePainting()
|
|
|
62484
62419
|
var left=positionInfo.Left;
|
|
62485
62420
|
var right=positionInfo.Right;
|
|
62486
62421
|
var bottom=positionInfo.Bottom;
|
|
62487
|
-
|
|
62422
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
62488
62423
|
for(var i=0; i<this.Data.length; ++i)
|
|
62489
62424
|
{
|
|
62490
62425
|
var item=this.Data[i];
|
|
@@ -62503,7 +62438,9 @@ function DynamicChartTitlePainting()
|
|
|
62503
62438
|
if (titleItem.Name) text=titleItem.Name+":"+titleItem.Text;
|
|
62504
62439
|
else text=titleItem.Text;
|
|
62505
62440
|
|
|
62506
|
-
|
|
62441
|
+
if (IFrameSplitOperator.IsNumber(titleItem.LeftSpace)) left+=titleItem.LeftSpace*pixelRatio;
|
|
62442
|
+
|
|
62443
|
+
var space=this.ParamSpace*pixelRatio;
|
|
62507
62444
|
var indexTextWidth=this.Canvas.measureText(text).width; //标题+数值长度
|
|
62508
62445
|
var textWidth=indexTextWidth;
|
|
62509
62446
|
|
|
@@ -62579,7 +62516,7 @@ function DynamicChartTitlePainting()
|
|
|
62579
62516
|
if (dyTitle) text=dyTitle+":"+valueText;
|
|
62580
62517
|
else text=item.Name+":"+valueText;
|
|
62581
62518
|
}
|
|
62582
|
-
var space=this.ParamSpace*
|
|
62519
|
+
var space=this.ParamSpace*pixelRatio;
|
|
62583
62520
|
var textWidth=this.Canvas.measureText(text).width+space;
|
|
62584
62521
|
if ((left+textWidth)>right) break;
|
|
62585
62522
|
|
|
@@ -80155,12 +80092,14 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80155
80092
|
var item=option.PopMinuteChart;
|
|
80156
80093
|
this.PopMinuteChart=new JSPopMinuteChart();
|
|
80157
80094
|
this.PopMinuteChart.Inital(this, item);
|
|
80095
|
+
this.PopMinuteChart.Create();
|
|
80158
80096
|
return true;
|
|
80159
80097
|
}
|
|
80160
80098
|
else if (option.KLine && option.KLine.KLineDoubleClick===true) //旧的格式 不要使用了
|
|
80161
80099
|
{
|
|
80162
80100
|
this.PopMinuteChart=new JSPopMinuteChart();
|
|
80163
80101
|
this.PopMinuteChart.Inital(this);
|
|
80102
|
+
this.PopMinuteChart.Create();
|
|
80164
80103
|
return true;
|
|
80165
80104
|
}
|
|
80166
80105
|
|
|
@@ -92342,6 +92281,15 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
92342
92281
|
chart.SetOption(option);
|
|
92343
92282
|
this.ExtendChartPaint.push(chart);
|
|
92344
92283
|
return chart;
|
|
92284
|
+
case "背景图":
|
|
92285
|
+
chart=new BackgroundPaint();
|
|
92286
|
+
chart.Canvas=this.Canvas;
|
|
92287
|
+
chart.ChartBorder=this.Frame.ChartBorder;
|
|
92288
|
+
chart.ChartFrame=this.Frame;
|
|
92289
|
+
chart.HQChart=this;
|
|
92290
|
+
chart.SetOption(option);
|
|
92291
|
+
this.ExtendChartPaint.push(chart);
|
|
92292
|
+
return chart;
|
|
92345
92293
|
default:
|
|
92346
92294
|
chart=g_ExtendChartPaintFactory.Create(name);
|
|
92347
92295
|
if (!chart) return null;
|
|
@@ -148198,6 +148146,13 @@ function JSPopMinuteChart()
|
|
|
148198
148146
|
this.Minute.JSChart.ChangeSymbol(data.Symbol);
|
|
148199
148147
|
}
|
|
148200
148148
|
|
|
148149
|
+
if (!this.Minute.Option.EnableResize)
|
|
148150
|
+
{
|
|
148151
|
+
if (this.Minute.JSChart) this.Minute.JSChart.OnSize();
|
|
148152
|
+
}
|
|
148153
|
+
|
|
148154
|
+
|
|
148155
|
+
|
|
148201
148156
|
//超出窗口调整位置
|
|
148202
148157
|
var height=this.DivDialog.offsetHeight;
|
|
148203
148158
|
var width=this.DivDialog.offsetWidth;
|
|
@@ -148299,7 +148254,7 @@ JSPopMinuteChart.GetMinuteOption=function()
|
|
|
148299
148254
|
|
|
148300
148255
|
EnableSelectRect:true,
|
|
148301
148256
|
EnableZoomIndexWindow:true,
|
|
148302
|
-
EnableResize:
|
|
148257
|
+
EnableResize:false,
|
|
148303
148258
|
|
|
148304
148259
|
//BeforeOpen:{IsShow:true, Width:120, IsShowMultiDay:true, MulitiDayWidth:100, },
|
|
148305
148260
|
//AfterClose:{IsShow:true, Width:100, IsShowMultiDay:true, MulitiDayWidth:50, ShareVol:2 }, //ShareVol:0=盘后成交量独立坐标, 1==盘后成交量主图共用 2==盘后成交量盘前共用
|
|
@@ -148647,8 +148602,13 @@ function JSPopKeyboard()
|
|
|
148647
148602
|
JSChart:null,
|
|
148648
148603
|
}
|
|
148649
148604
|
|
|
148650
|
-
this.Inital=function()
|
|
148605
|
+
this.Inital=function(option)
|
|
148651
148606
|
{
|
|
148607
|
+
if (option)
|
|
148608
|
+
{
|
|
148609
|
+
if (IFrameSplitOperator.IsBool(option.EnableResize)) this.Keyboard.Option.EnableResize=option.EnableResize;
|
|
148610
|
+
}
|
|
148611
|
+
|
|
148652
148612
|
window.addEventListener('mousedown', (e)=>{ this.OnWindowMouseDown(e)});
|
|
148653
148613
|
}
|
|
148654
148614
|
|
|
@@ -148848,6 +148808,11 @@ function JSPopKeyboard()
|
|
|
148848
148808
|
{
|
|
148849
148809
|
if (!this.DivDialog) return;
|
|
148850
148810
|
|
|
148811
|
+
if (!this.Keyboard.Option.EnableResize) //自动调整大小
|
|
148812
|
+
{
|
|
148813
|
+
if (this.Keyboard.JSChart) this.Keyboard.JSChart.OnSize();
|
|
148814
|
+
}
|
|
148815
|
+
|
|
148851
148816
|
//显示在右下方
|
|
148852
148817
|
var height=this.DivDialog.offsetHeight;
|
|
148853
148818
|
var width=this.DivDialog.offsetWidth;
|
|
@@ -148979,7 +148944,7 @@ JSPopKeyboard.GetOption=function()
|
|
|
148979
148944
|
},
|
|
148980
148945
|
|
|
148981
148946
|
BorderLine:1|2|4|8,
|
|
148982
|
-
EnableResize:
|
|
148947
|
+
EnableResize:false,
|
|
148983
148948
|
|
|
148984
148949
|
//{ Type:列id, Title:标题, TextAlign:文字对齐方式, MaxText:文字最大宽度 , TextColor:文字颜色, Sort:0=不支持排序 1=本地排序 0=远程排序 }
|
|
148985
148950
|
Column:
|
|
@@ -153200,7 +153165,7 @@ function HQChartScriptWorker()
|
|
|
153200
153165
|
|
|
153201
153166
|
|
|
153202
153167
|
|
|
153203
|
-
var HQCHART_VERSION="1.1.
|
|
153168
|
+
var HQCHART_VERSION="1.1.14431";
|
|
153204
153169
|
|
|
153205
153170
|
function PrintHQChartVersion()
|
|
153206
153171
|
{
|