hqchart 1.1.14965 → 1.1.14975
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 +33 -16
- package/package.json +1 -1
- package/src/jscommon/umychart.DialogDrawTool.js +3 -0
- package/src/jscommon/umychart.NetworkFilterTest.js +76 -2
- package/src/jscommon/umychart.index.data.js +1 -1
- package/src/jscommon/umychart.js +597 -4
- package/src/jscommon/umychart.resource/font/drawtool/demo_index.html +49 -3
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.css +11 -3
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.js +1 -1
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.json +14 -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.style.js +25 -0
- package/src/jscommon/umychart.testdata.js +76 -2
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +624 -6
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +76 -2
- package/src/jscommon/umychart.vue/umychart.vue.js +627 -6
package/src/jscommon/umychart.js
CHANGED
|
@@ -2832,7 +2832,9 @@ var JSCHART_EVENT_ID=
|
|
|
2832
2832
|
ON_RELOAD_RESOURCE:173,
|
|
2833
2833
|
|
|
2834
2834
|
ON_REPORT_DATA_FILTER:174, //数据筛选
|
|
2835
|
-
ON_REPORT_SHOW_TOOLTIP:175, //报价列表
|
|
2835
|
+
ON_REPORT_SHOW_TOOLTIP:175, //报价列表 提示信息\
|
|
2836
|
+
|
|
2837
|
+
ON_FORMAT_TVLONGPOSITION_LABEL:176,
|
|
2836
2838
|
}
|
|
2837
2839
|
|
|
2838
2840
|
var JSCHART_OPERATOR_ID=
|
|
@@ -4995,9 +4997,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4995
4997
|
{
|
|
4996
4998
|
drawPicture.PointStatus=drawPicture.Status;
|
|
4997
4999
|
if (this.FinishChartDrawPicturePoint())
|
|
5000
|
+
{
|
|
5001
|
+
if (drawPicture.IsDrawMain) this.Draw();
|
|
4998
5002
|
this.DrawDynamicInfo();
|
|
5003
|
+
}
|
|
4999
5004
|
else
|
|
5005
|
+
{
|
|
5000
5006
|
bClearDrawPicture=false;
|
|
5007
|
+
}
|
|
5001
5008
|
}
|
|
5002
5009
|
else if (drawPicture.Status==20)
|
|
5003
5010
|
{
|
|
@@ -6552,7 +6559,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6552
6559
|
{
|
|
6553
6560
|
var item=this.ChartDrawPicture[i];
|
|
6554
6561
|
if (item.IsDrawFirst) continue;
|
|
6555
|
-
if (item.IsDrawMain && item.IsDrawMain())
|
|
6562
|
+
if (item.IsDrawMain && item.IsDrawMain())
|
|
6563
|
+
{
|
|
6564
|
+
if (item.MainPartDraw) item.MainPartDraw();
|
|
6565
|
+
continue;
|
|
6566
|
+
}
|
|
6567
|
+
|
|
6556
6568
|
if (this.SelectChartDrawPicture && this.SelectChartDrawPicture.Guid==item.Guid) continue; //当前选中在最后画
|
|
6557
6569
|
|
|
6558
6570
|
item.Draw();
|
|
@@ -7116,7 +7128,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7116
7128
|
{
|
|
7117
7129
|
var item=this.ChartDrawPicture[i];
|
|
7118
7130
|
if (item.IsDrawFirst) continue;
|
|
7119
|
-
if (item.IsDrawMain && item.IsDrawMain())
|
|
7131
|
+
if (item.IsDrawMain && item.IsDrawMain())
|
|
7132
|
+
{
|
|
7133
|
+
if (item.MainPartDraw) item.MainPartDraw();
|
|
7134
|
+
continue;
|
|
7135
|
+
}
|
|
7120
7136
|
if (this.SelectChartDrawPicture &&item.Guid==this.SelectChartDrawPicture.Guid) continue; //选中画图最后画 确保显示在最外面
|
|
7121
7137
|
|
|
7122
7138
|
item.Draw(moveonPoint, this.LastMouseStatus);
|
|
@@ -65135,6 +65151,17 @@ function IChartDrawPicture()
|
|
|
65135
65151
|
yText+=labelInfo.LineHeight;
|
|
65136
65152
|
}
|
|
65137
65153
|
}
|
|
65154
|
+
|
|
65155
|
+
this.IsActive=function()
|
|
65156
|
+
{
|
|
65157
|
+
if (!this.GetActiveDrawPicture) return false;
|
|
65158
|
+
|
|
65159
|
+
var active=this.GetActiveDrawPicture();
|
|
65160
|
+
if (active.Move.Guid!=this.Guid && active.Select.Guid!=this.Guid && active.MoveOn.Guid!=this.Guid)
|
|
65161
|
+
return false;
|
|
65162
|
+
|
|
65163
|
+
return true;
|
|
65164
|
+
}
|
|
65138
65165
|
}
|
|
65139
65166
|
|
|
65140
65167
|
IChartDrawPicture.ColorToRGBA=function(color,opacity)
|
|
@@ -65282,6 +65309,8 @@ IChartDrawPicture.ArrayDrawPricture=
|
|
|
65282
65309
|
{ Name:"TrendAngle", ClassName:"ChartTrendAngle", Create:function() { return new ChartTrendAngle(); }},
|
|
65283
65310
|
{ Name:"ArrowMarker", ClassName:"ChartArrowMarker", Create:function() { return new ChartArrowMarker(); } },
|
|
65284
65311
|
{ Name:"BarsPattern", ClassName:"ChartBarsPattern", Create:function() { return new ChartBarsPattern(); } },
|
|
65312
|
+
{ Name:"TVLongPosition", ClassName:"ChartDrawTVLongPosition", Create:function() { return new ChartDrawTVLongPosition(); } },
|
|
65313
|
+
{ Name:"TVShortPosition", ClassName:"ChartDrawTVShortPositionn", Create:function() { return new ChartDrawTVShortPosition(); } },
|
|
65285
65314
|
];
|
|
65286
65315
|
|
|
65287
65316
|
IChartDrawPicture.MapIonFont=new Map(
|
|
@@ -75252,6 +75281,500 @@ function ChartBarsPattern()
|
|
|
75252
75281
|
}
|
|
75253
75282
|
}
|
|
75254
75283
|
|
|
75284
|
+
function ChartDrawTVLongPosition()
|
|
75285
|
+
{
|
|
75286
|
+
this.newMethod=IChartDrawPicture; //派生
|
|
75287
|
+
this.newMethod();
|
|
75288
|
+
delete this.newMethod;
|
|
75289
|
+
|
|
75290
|
+
this.ClassName='ChartDrawTVLongPosition';
|
|
75291
|
+
this.PointCount=2; //起始2个点 画完4个点
|
|
75292
|
+
|
|
75293
|
+
this.TopAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.TopArea);
|
|
75294
|
+
this.BottomAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.BottomArea);
|
|
75295
|
+
this.LabelConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.Label);
|
|
75296
|
+
|
|
75297
|
+
//内部变量
|
|
75298
|
+
this.AryRectArea=[];
|
|
75299
|
+
|
|
75300
|
+
this.GetXYCoordinate=this.GetXYCoordinate_default;
|
|
75301
|
+
this.SetOption_Backup=this.SetOption;
|
|
75302
|
+
this.PointToValue_Backup=this.PointToValue;
|
|
75303
|
+
|
|
75304
|
+
this.SetOption=function(option)
|
|
75305
|
+
{
|
|
75306
|
+
this.SetOption_Backup();
|
|
75307
|
+
|
|
75308
|
+
if (option)
|
|
75309
|
+
{
|
|
75310
|
+
|
|
75311
|
+
}
|
|
75312
|
+
}
|
|
75313
|
+
|
|
75314
|
+
this.PointToValue=function()
|
|
75315
|
+
{
|
|
75316
|
+
//拖拽完成 把点移动到线段头尾
|
|
75317
|
+
if (this.Frame.IsHScreen)
|
|
75318
|
+
{
|
|
75319
|
+
this.Point[1].X=this.Point[0].X;
|
|
75320
|
+
}
|
|
75321
|
+
else
|
|
75322
|
+
{
|
|
75323
|
+
this.Point[1].Y=this.Point[0].Y;
|
|
75324
|
+
}
|
|
75325
|
+
|
|
75326
|
+
this.PointToValue_Backup();
|
|
75327
|
+
}
|
|
75328
|
+
|
|
75329
|
+
//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
|
|
75330
|
+
this.IsPointIn=function(x,y, option)
|
|
75331
|
+
{
|
|
75332
|
+
if (this.Status!=10) return -1;
|
|
75333
|
+
|
|
75334
|
+
var value=this.IsPointInXYValue(x,y,option);
|
|
75335
|
+
if (value>=0) return value;
|
|
75336
|
+
|
|
75337
|
+
for(var i=0;i<this.AryRectArea.length;++i)
|
|
75338
|
+
{
|
|
75339
|
+
var item=this.AryRectArea[i];
|
|
75340
|
+
if (!item) continue;
|
|
75341
|
+
|
|
75342
|
+
if (Path2DHelper.PtInRect(x, y, item.Rect))
|
|
75343
|
+
{
|
|
75344
|
+
return item.ID;
|
|
75345
|
+
}
|
|
75346
|
+
}
|
|
75347
|
+
|
|
75348
|
+
return -1;
|
|
75349
|
+
}
|
|
75350
|
+
|
|
75351
|
+
this.OnFinish=function()
|
|
75352
|
+
{
|
|
75353
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Value)) return false;
|
|
75354
|
+
|
|
75355
|
+
if (!this.Frame) return false;
|
|
75356
|
+
var data=this.Frame.Data;
|
|
75357
|
+
if (!data) return false;
|
|
75358
|
+
|
|
75359
|
+
var firstPoint=this.Point[0];
|
|
75360
|
+
var firstValue=this.Value[0];
|
|
75361
|
+
var entryPrice=firstValue.YValue;
|
|
75362
|
+
|
|
75363
|
+
var topPrice=entryPrice*(1+0.05);
|
|
75364
|
+
var bottomPrice=entryPrice*(1-0.05);
|
|
75365
|
+
|
|
75366
|
+
this.Value[2]={ XValue:firstValue.XValue, YValue:topPrice };
|
|
75367
|
+
this.Value[3]={ XValue:firstValue.XValue, YValue:bottomPrice };
|
|
75368
|
+
if (firstValue.DateTime)
|
|
75369
|
+
{
|
|
75370
|
+
var item=firstValue.DateTime;
|
|
75371
|
+
this.Value[2].DateTime={ Date:item.Date, Time:item.Time };
|
|
75372
|
+
this.Value[3].DateTime={ Date:item.Date, Time:item.Time };
|
|
75373
|
+
}
|
|
75374
|
+
|
|
75375
|
+
this.Point[2]={ X:firstPoint.X, Y:this.Frame.GetYFromData(topPrice,false)};
|
|
75376
|
+
this.Point[3]={ X:firstPoint.X, Y:this.Frame.GetYFromData(bottomPrice,false)};
|
|
75377
|
+
|
|
75378
|
+
this.PointCount=4;
|
|
75379
|
+
}
|
|
75380
|
+
|
|
75381
|
+
this.IsDrawMain=function() //选中绘制在动态绘图上, 没有选中绘制在背景上
|
|
75382
|
+
{
|
|
75383
|
+
if (!this.GetActiveDrawPicture) return true;
|
|
75384
|
+
|
|
75385
|
+
var active=this.GetActiveDrawPicture();
|
|
75386
|
+
if (active.Select.Guid==this.Guid) return false;
|
|
75387
|
+
|
|
75388
|
+
return true;
|
|
75389
|
+
}
|
|
75390
|
+
|
|
75391
|
+
this.IsSelected=function()
|
|
75392
|
+
{
|
|
75393
|
+
if (!this.GetActiveDrawPicture) return false;
|
|
75394
|
+
|
|
75395
|
+
var active=this.GetActiveDrawPicture();
|
|
75396
|
+
//console.log(`[IsSelected] Select=${active.Select.Guid} MoveOn=${active.MoveOn.Guid}`);
|
|
75397
|
+
if (active.Select.Guid==this.Guid || active.MoveOn.Guid==this.Guid) return true;
|
|
75398
|
+
|
|
75399
|
+
return false;
|
|
75400
|
+
}
|
|
75401
|
+
|
|
75402
|
+
//未选中 作为背景色绘制
|
|
75403
|
+
this.MainDraw=function()
|
|
75404
|
+
{
|
|
75405
|
+
this.AryRectArea=[]
|
|
75406
|
+
if (this.IsFrameMinSize()) return;
|
|
75407
|
+
|
|
75408
|
+
//0=开始画 1=完成第1个点 2=完成第2个点 3=完成第3个点 10=完成 20=移动)
|
|
75409
|
+
if (this.Status!=10 && this.Status!=20) return;
|
|
75410
|
+
|
|
75411
|
+
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:true} );
|
|
75412
|
+
if (!drawPoint) return;
|
|
75413
|
+
if (drawPoint.length<2) return;
|
|
75414
|
+
this.IsHScreen=this.Frame.IsHScreen;
|
|
75415
|
+
if (this.IsHScreen) return;
|
|
75416
|
+
|
|
75417
|
+
this.ClipFrame();
|
|
75418
|
+
|
|
75419
|
+
this.ChartBorder=this.Frame.ChartBorder;
|
|
75420
|
+
this.DrawArea(drawPoint);
|
|
75421
|
+
|
|
75422
|
+
this.Canvas.restore();
|
|
75423
|
+
}
|
|
75424
|
+
|
|
75425
|
+
//鼠标在上面 动态绘制点和文字信息
|
|
75426
|
+
this.MainPartDraw=function()
|
|
75427
|
+
{
|
|
75428
|
+
if (this.IsFrameMinSize()) return;
|
|
75429
|
+
if (this.Status!=10 && this.Status!=20) return;
|
|
75430
|
+
|
|
75431
|
+
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:true} );
|
|
75432
|
+
if (!drawPoint) return;
|
|
75433
|
+
if (drawPoint.length<2) return;
|
|
75434
|
+
this.IsHScreen=this.Frame.IsHScreen;
|
|
75435
|
+
if (this.IsHScreen) return;
|
|
75436
|
+
|
|
75437
|
+
this.ClipFrame();
|
|
75438
|
+
|
|
75439
|
+
this.ChartBorder=this.Frame.ChartBorder;
|
|
75440
|
+
this.DrawLabel(drawPoint);
|
|
75441
|
+
this.DrawPoint(drawPoint);
|
|
75442
|
+
|
|
75443
|
+
this.Canvas.restore();
|
|
75444
|
+
}
|
|
75445
|
+
|
|
75446
|
+
this.Draw=function()
|
|
75447
|
+
{
|
|
75448
|
+
this.AryRectArea=[]
|
|
75449
|
+
if (this.IsFrameMinSize()) return;
|
|
75450
|
+
|
|
75451
|
+
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:true} );
|
|
75452
|
+
if (!drawPoint) return;
|
|
75453
|
+
if (drawPoint.length<2) return;
|
|
75454
|
+
this.IsHScreen=this.Frame.IsHScreen;
|
|
75455
|
+
if (this.IsHScreen) return;
|
|
75456
|
+
|
|
75457
|
+
this.ClipFrame();
|
|
75458
|
+
this.ChartBorder=this.Frame.ChartBorder;
|
|
75459
|
+
|
|
75460
|
+
if (this.Status==10 || this.Status==20) //0=开始画 1=完成第1个点 2=完成第2个点 3=完成第3个点 10=完成 20=移动)
|
|
75461
|
+
{
|
|
75462
|
+
this.DrawArea(drawPoint);
|
|
75463
|
+
this.DrawLabel(drawPoint);
|
|
75464
|
+
this.DrawPoint(drawPoint);
|
|
75465
|
+
}
|
|
75466
|
+
else
|
|
75467
|
+
{
|
|
75468
|
+
var ptStart=drawPoint[0];
|
|
75469
|
+
var ptEnd=drawPoint[1];
|
|
75470
|
+
this.Canvas.strokeStyle=this.LineColor;
|
|
75471
|
+
this.DrawVerticalLine(ptStart,ptEnd);
|
|
75472
|
+
}
|
|
75473
|
+
|
|
75474
|
+
this.Canvas.restore();
|
|
75475
|
+
}
|
|
75476
|
+
|
|
75477
|
+
this.DrawVerticalLine=function(ptStart, ptEnd)
|
|
75478
|
+
{
|
|
75479
|
+
var data=this.Frame.Data;
|
|
75480
|
+
if (this.IsHScreen)
|
|
75481
|
+
{
|
|
75482
|
+
var left=this.ChartBorder.GetLeft();
|
|
75483
|
+
var right=this.ChartBorder.GetRight();
|
|
75484
|
+
var xValue=Math.round(this.Frame.GetXData(ptStart.Y,false))+data.DataOffset;
|
|
75485
|
+
if (xValue<0) xValue=0;
|
|
75486
|
+
else if (xValue>=data.Data.length) xValue=data.Data.length-1;
|
|
75487
|
+
var yStart=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);
|
|
75488
|
+
|
|
75489
|
+
xValue=Math.round(this.Frame.GetXData(ptEnd.Y,false))+data.DataOffset;
|
|
75490
|
+
if (xValue<0) xValue=0;
|
|
75491
|
+
else if (xValue>=data.Data.length) xValue=data.Data.length-1;
|
|
75492
|
+
var yEnd=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);
|
|
75493
|
+
|
|
75494
|
+
this.Canvas.beginPath();
|
|
75495
|
+
this.Canvas.moveTo(left,yStart);
|
|
75496
|
+
this.Canvas.lineTo(right,yStart);
|
|
75497
|
+
|
|
75498
|
+
this.Canvas.moveTo(left,yEnd);
|
|
75499
|
+
this.Canvas.lineTo(right,yEnd);
|
|
75500
|
+
this.Canvas.stroke();
|
|
75501
|
+
|
|
75502
|
+
this.Canvas.beginPath();
|
|
75503
|
+
this.Canvas.moveTo(ptStart.X,yStart);
|
|
75504
|
+
this.Canvas.lineTo(ptStart.X,yEnd);
|
|
75505
|
+
this.Canvas.stroke();
|
|
75506
|
+
}
|
|
75507
|
+
else
|
|
75508
|
+
{
|
|
75509
|
+
var top=this.ChartBorder.GetTopEx();
|
|
75510
|
+
var bottom=this.ChartBorder.GetBottomEx();
|
|
75511
|
+
|
|
75512
|
+
var xValue=Math.round(this.Frame.GetXData(ptStart.X,false))+data.DataOffset;
|
|
75513
|
+
if (xValue<0) xValue=0;
|
|
75514
|
+
else if (xValue>=data.Data.length) xValue=data.Data.length-1;
|
|
75515
|
+
var xStart=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);
|
|
75516
|
+
|
|
75517
|
+
xValue=Math.round(this.Frame.GetXData(ptEnd.X,false))+data.DataOffset;
|
|
75518
|
+
if (xValue<0) xValue=0;
|
|
75519
|
+
else if (xValue>=data.Data.length) xValue=data.Data.length-1;
|
|
75520
|
+
var xEnd=this.Frame.GetXFromIndex(xValue-data.DataOffset,false);
|
|
75521
|
+
|
|
75522
|
+
this.Canvas.beginPath();
|
|
75523
|
+
this.Canvas.moveTo(xStart,top);
|
|
75524
|
+
this.Canvas.lineTo(xStart,bottom);
|
|
75525
|
+
|
|
75526
|
+
this.Canvas.moveTo(xEnd,top);
|
|
75527
|
+
this.Canvas.lineTo(xEnd,bottom);
|
|
75528
|
+
this.Canvas.stroke();
|
|
75529
|
+
|
|
75530
|
+
this.Canvas.beginPath();
|
|
75531
|
+
this.Canvas.moveTo(xStart,ptStart.Y);
|
|
75532
|
+
this.Canvas.lineTo(xEnd,ptStart.Y);
|
|
75533
|
+
this.Canvas.stroke();
|
|
75534
|
+
}
|
|
75535
|
+
}
|
|
75536
|
+
|
|
75537
|
+
this.GetCursorType=function(ptIndex)
|
|
75538
|
+
{
|
|
75539
|
+
if (ptIndex==100) return "pointer";
|
|
75540
|
+
else if (ptIndex==0) return "move";
|
|
75541
|
+
else if (ptIndex==1) return "ew-resize";
|
|
75542
|
+
else if (ptIndex==2 || ptIndex==3) return "ns-resize";
|
|
75543
|
+
|
|
75544
|
+
return null;
|
|
75545
|
+
}
|
|
75546
|
+
|
|
75547
|
+
this.DrawArea=function(drawPoint)
|
|
75548
|
+
{
|
|
75549
|
+
var ptCenter=drawPoint[0];
|
|
75550
|
+
var ptRight=drawPoint[1]
|
|
75551
|
+
var ptTop=drawPoint[2];
|
|
75552
|
+
var ptBottom=drawPoint[3];
|
|
75553
|
+
var bSelected=this.IsSelected();
|
|
75554
|
+
|
|
75555
|
+
var rtTopArea={ Left:ptCenter.X, Top: ptTop.Y, Right:ptRight.X, Bottom:ptCenter.Y};
|
|
75556
|
+
rtTopArea.Width=rtTopArea.Right-rtTopArea.Left;
|
|
75557
|
+
rtTopArea.Height=rtTopArea.Bottom-rtTopArea.Top;
|
|
75558
|
+
|
|
75559
|
+
this.Canvas.fillStyle=bSelected ? this.TopAreaConfig.SelectedAreaColor: this.TopAreaConfig.AreaColor;
|
|
75560
|
+
this.Canvas.beginPath();
|
|
75561
|
+
this.Canvas.fillRect(rtTopArea.Left,rtTopArea.Top,rtTopArea.Width,rtTopArea.Height);
|
|
75562
|
+
this.AryRectArea[0]={ ID:100, Rect:rtTopArea };
|
|
75563
|
+
|
|
75564
|
+
var rtBottomArea={Left:ptCenter.X, Top: ptCenter.Y, Right:ptRight.X, Bottom:ptBottom.Y};
|
|
75565
|
+
rtBottomArea.Width=rtBottomArea.Right-rtBottomArea.Left;
|
|
75566
|
+
rtBottomArea.Height=rtBottomArea.Bottom-rtBottomArea.Top;
|
|
75567
|
+
this.Canvas.fillStyle=bSelected? this.BottomAreaConfig.SelectedAreaColor:this.BottomAreaConfig.AreaColor;
|
|
75568
|
+
this.Canvas.beginPath();
|
|
75569
|
+
this.Canvas.fillRect(rtBottomArea.Left,rtBottomArea.Top,rtBottomArea.Width,rtBottomArea.Height);
|
|
75570
|
+
this.AryRectArea[1]={ ID:100, Rect:rtBottomArea };
|
|
75571
|
+
|
|
75572
|
+
//线段
|
|
75573
|
+
this.Canvas.strokeStyle=this.LineColor;
|
|
75574
|
+
this.Canvas.beginPath();
|
|
75575
|
+
this.Canvas.moveTo(ptCenter.X,ToFixedPoint(ptCenter.Y));
|
|
75576
|
+
this.Canvas.lineTo(ptRight.X,ToFixedPoint(ptRight.Y));
|
|
75577
|
+
this.Canvas.stroke();
|
|
75578
|
+
}
|
|
75579
|
+
|
|
75580
|
+
this.DrawLabel=function(drawPoint)
|
|
75581
|
+
{
|
|
75582
|
+
if (!this.IsActive()) return; //激活状态下才显示
|
|
75583
|
+
|
|
75584
|
+
var aryLabel=this.FormatLabelText(drawPoint);
|
|
75585
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryLabel)) return;
|
|
75586
|
+
|
|
75587
|
+
this.TextFontHeight=this.GetFontHeight(this.LabelConfig.Font,"擎");
|
|
75588
|
+
|
|
75589
|
+
for(var i=0;i<aryLabel.length;++i)
|
|
75590
|
+
{
|
|
75591
|
+
var item=aryLabel[i];
|
|
75592
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(item.AryText)) continue;
|
|
75593
|
+
|
|
75594
|
+
this.CalculateLabelSize(item);
|
|
75595
|
+
this.DrawLabelItem(item, drawPoint);
|
|
75596
|
+
}
|
|
75597
|
+
}
|
|
75598
|
+
|
|
75599
|
+
this.DrawLabelItem=function(lableItem, drawPoint)
|
|
75600
|
+
{
|
|
75601
|
+
var ptCenter=drawPoint[0];
|
|
75602
|
+
var ptRight=drawPoint[1];
|
|
75603
|
+
var ptTop=drawPoint[2];
|
|
75604
|
+
var ptBottom=drawPoint[3];
|
|
75605
|
+
var clientWidth=ptRight.X-ptCenter.X;
|
|
75606
|
+
var config=this.LabelConfig;
|
|
75607
|
+
var margin=config.Margin;
|
|
75608
|
+
|
|
75609
|
+
var rtText={ Width:lableItem.Width+margin.Left+margin.Right, Height:lableItem.Height+margin.Top+margin.Bottom };
|
|
75610
|
+
if (lableItem.Type==0) //中间
|
|
75611
|
+
{
|
|
75612
|
+
rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;
|
|
75613
|
+
rtText.Right=rtText.Left+rtText.Width;
|
|
75614
|
+
rtText.Top=ptCenter.Y-rtText.Height/2;
|
|
75615
|
+
rtText.Bottom=rtText.Top+rtText.Height;
|
|
75616
|
+
}
|
|
75617
|
+
else if (lableItem.Type==1) //顶部
|
|
75618
|
+
{
|
|
75619
|
+
rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;
|
|
75620
|
+
rtText.Right=rtText.Left+rtText.Width;
|
|
75621
|
+
rtText.Top=ptTop.Y-rtText.Height;
|
|
75622
|
+
rtText.Bottom=rtText.Top+rtText.Height;
|
|
75623
|
+
}
|
|
75624
|
+
else if (lableItem.Type==2)
|
|
75625
|
+
{
|
|
75626
|
+
rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;
|
|
75627
|
+
rtText.Right=rtText.Left+rtText.Width;
|
|
75628
|
+
rtText.Top=ptBottom.Y;
|
|
75629
|
+
rtText.Bottom=rtText.Top+rtText.Height;
|
|
75630
|
+
}
|
|
75631
|
+
else
|
|
75632
|
+
{
|
|
75633
|
+
return;
|
|
75634
|
+
}
|
|
75635
|
+
|
|
75636
|
+
this.Canvas.fillStyle=lableItem.BGColor;
|
|
75637
|
+
this.Canvas.fillRect(rtText.Left, rtText.Top, rtText.Width, rtText.Height);
|
|
75638
|
+
|
|
75639
|
+
this.Canvas.textAlign = 'left';
|
|
75640
|
+
this.Canvas.textBaseline = 'bottom';
|
|
75641
|
+
this.Canvas.fillStyle=lableItem.TextColor;
|
|
75642
|
+
var x=rtText.Left+margin.Left;
|
|
75643
|
+
var y=rtText.Top+margin.Top+this.TextFontHeight;
|
|
75644
|
+
for(var i=0;i<lableItem.AryText.length;++i)
|
|
75645
|
+
{
|
|
75646
|
+
var item=lableItem.AryText[i];
|
|
75647
|
+
var xText=x;
|
|
75648
|
+
var yText=y;
|
|
75649
|
+
if (IFrameSplitOperator.IsNumber(item.YOffset)) yText+=item.YOffset;
|
|
75650
|
+
|
|
75651
|
+
this.Canvas.fillText(item.Text, xText, yText);
|
|
75652
|
+
|
|
75653
|
+
y+=this.TextFontHeight;
|
|
75654
|
+
}
|
|
75655
|
+
}
|
|
75656
|
+
|
|
75657
|
+
this.FormatLabelText=function(drawPoint)
|
|
75658
|
+
{
|
|
75659
|
+
if (this.HQChart)
|
|
75660
|
+
{
|
|
75661
|
+
var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_TVLONGPOSITION_LABEL);
|
|
75662
|
+
if (event && event.Callback)
|
|
75663
|
+
{
|
|
75664
|
+
var sendData={ Frame:this.Frame, AryLabel:null, AryPoint:drawPoint, PreventDefault:false };
|
|
75665
|
+
event.Callback(event, sendData, this);
|
|
75666
|
+
if (sendData.PreventDefault) return sendData.AryLabel;
|
|
75667
|
+
}
|
|
75668
|
+
}
|
|
75669
|
+
|
|
75670
|
+
var ptCenter=drawPoint[0];
|
|
75671
|
+
var ptTop=drawPoint[2];
|
|
75672
|
+
var ptBottom=drawPoint[3];
|
|
75673
|
+
var aryData=[];
|
|
75674
|
+
var yValue=this.Frame.GetYData(ptCenter.Y,false);
|
|
75675
|
+
aryData.push(
|
|
75676
|
+
{
|
|
75677
|
+
Type:0,
|
|
75678
|
+
AryText:
|
|
75679
|
+
[
|
|
75680
|
+
{ Text:`Open: ${yValue.toFixed(2)}`},
|
|
75681
|
+
//{ Text:"第2行:xxx"}
|
|
75682
|
+
],
|
|
75683
|
+
BGColor:"rgb(112,128,144)", TextColor:"rgb(255,255,255)"
|
|
75684
|
+
});
|
|
75685
|
+
|
|
75686
|
+
var yValue=this.Frame.GetYData(ptTop.Y,false);
|
|
75687
|
+
aryData.push({ Type:1, AryText:[{ Text:`Target: ${yValue.toFixed(2)}`, YOffset:-1 } ], BGColor:this.TopAreaConfig.TextBGColor, TextColor:this.TopAreaConfig.TextColor });
|
|
75688
|
+
|
|
75689
|
+
var yValue=this.Frame.GetYData(ptBottom.Y,false);
|
|
75690
|
+
aryData.push({ Type:2, AryText:[{ Text:`Stop: ${yValue.toFixed(2)}`, YOffset:-1 } ], BGColor:this.BottomAreaConfig.TextBGColor, TextColor:this.BottomAreaConfig.TextColor });
|
|
75691
|
+
|
|
75692
|
+
return aryData;
|
|
75693
|
+
}
|
|
75694
|
+
|
|
75695
|
+
this.CalculateLabelSize=function(lableItem)
|
|
75696
|
+
{
|
|
75697
|
+
lableItem.Width=0;
|
|
75698
|
+
lableItem.Height=0;
|
|
75699
|
+
for(var i=0;i<lableItem.AryText.length;++i)
|
|
75700
|
+
{
|
|
75701
|
+
var item=lableItem.AryText[i];
|
|
75702
|
+
var textWidth=this.Canvas.measureText(item.Text).width;
|
|
75703
|
+
|
|
75704
|
+
item.TextWidth=textWidth;
|
|
75705
|
+
if (lableItem.Width<textWidth) lableItem.Width=textWidth;
|
|
75706
|
+
lableItem.Height+=this.TextFontHeight;
|
|
75707
|
+
}
|
|
75708
|
+
}
|
|
75709
|
+
|
|
75710
|
+
this.Move=function(xStep,yStep)
|
|
75711
|
+
{
|
|
75712
|
+
if (this.Status!=20) return false;
|
|
75713
|
+
if (!this.Frame) return false;
|
|
75714
|
+
var data=this.Frame.Data;
|
|
75715
|
+
if (!data) return false;
|
|
75716
|
+
|
|
75717
|
+
if (this.MovePointIndex==100) //整体移动
|
|
75718
|
+
{
|
|
75719
|
+
for(var i=0; i<this.Point.length;++i)
|
|
75720
|
+
{
|
|
75721
|
+
var item= this.Point[i];
|
|
75722
|
+
item.X+=xStep;
|
|
75723
|
+
item.Y+=yStep;
|
|
75724
|
+
}
|
|
75725
|
+
}
|
|
75726
|
+
else if (this.MovePointIndex===0)
|
|
75727
|
+
{
|
|
75728
|
+
for(var i=0;i<this.Point.length;++i)
|
|
75729
|
+
{
|
|
75730
|
+
var item=this.Point[i];
|
|
75731
|
+
if (i==0)
|
|
75732
|
+
{
|
|
75733
|
+
item.X+=xStep;
|
|
75734
|
+
item.Y+=yStep;
|
|
75735
|
+
}
|
|
75736
|
+
else if (i==1)
|
|
75737
|
+
{
|
|
75738
|
+
item.Y+=yStep;
|
|
75739
|
+
}
|
|
75740
|
+
else if (i==2 || i==3)
|
|
75741
|
+
{
|
|
75742
|
+
item.X+=xStep;
|
|
75743
|
+
}
|
|
75744
|
+
}
|
|
75745
|
+
}
|
|
75746
|
+
else if (this.MovePointIndex==1)
|
|
75747
|
+
{
|
|
75748
|
+
this.Point[1].X+=xStep;
|
|
75749
|
+
}
|
|
75750
|
+
else if (this.MovePointIndex==2)
|
|
75751
|
+
{
|
|
75752
|
+
var ptCenter=this.Point[0];
|
|
75753
|
+
var item=this.Point[2];
|
|
75754
|
+
if (item.Y+yStep<ptCenter.Y) item.Y+=yStep;
|
|
75755
|
+
}
|
|
75756
|
+
else if (this.MovePointIndex==3)
|
|
75757
|
+
{
|
|
75758
|
+
var ptCenter=this.Point[0];
|
|
75759
|
+
var item=this.Point[3];
|
|
75760
|
+
if (item.Y+yStep>ptCenter.Y) item.Y+=yStep;
|
|
75761
|
+
}
|
|
75762
|
+
|
|
75763
|
+
}
|
|
75764
|
+
}
|
|
75765
|
+
|
|
75766
|
+
|
|
75767
|
+
function ChartDrawTVShortPosition()
|
|
75768
|
+
{
|
|
75769
|
+
this.newMethod=ChartDrawTVLongPosition; //派生
|
|
75770
|
+
this.newMethod();
|
|
75771
|
+
delete this.newMethod;
|
|
75772
|
+
|
|
75773
|
+
this.ClassName='ChartDrawTVShortPosition';
|
|
75774
|
+
this.TopAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.BottomArea);
|
|
75775
|
+
this.BottomAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.TopArea);
|
|
75776
|
+
}
|
|
75777
|
+
|
|
75255
75778
|
|
|
75256
75779
|
function ChartDrawStorage()
|
|
75257
75780
|
{
|
|
@@ -76321,6 +76844,31 @@ function JSChartResource()
|
|
|
76321
76844
|
DownColor:"rgb(25,158,0)"
|
|
76322
76845
|
}
|
|
76323
76846
|
|
|
76847
|
+
this.ChartDrawTVLongPosition=
|
|
76848
|
+
{
|
|
76849
|
+
TopArea:
|
|
76850
|
+
{
|
|
76851
|
+
AreaColor:"rgba(214, 234, 230,0.8)",
|
|
76852
|
+
SelectedAreaColor:"rgba(214, 234, 230,0.55)",
|
|
76853
|
+
TextBGColor:"rgb(80, 150, 130)",
|
|
76854
|
+
TextColor:"rgb(255,255,255)"
|
|
76855
|
+
},
|
|
76856
|
+
|
|
76857
|
+
BottomArea:
|
|
76858
|
+
{
|
|
76859
|
+
AreaColor:"rgb(243, 217, 218,0.8)",
|
|
76860
|
+
SelectedAreaColor:"rgba(243, 217, 218,0.55)",
|
|
76861
|
+
TextBGColor:"rgb(214, 75, 75)",
|
|
76862
|
+
TextColor:"rgb(255,255,255)"
|
|
76863
|
+
},
|
|
76864
|
+
|
|
76865
|
+
Label:
|
|
76866
|
+
{
|
|
76867
|
+
Font:`${12*GetDevicePixelRatio()}px 微软雅黑`,
|
|
76868
|
+
Margin:{ Left:2, Top:2, Bottom:2, Right:2 },
|
|
76869
|
+
}
|
|
76870
|
+
}
|
|
76871
|
+
|
|
76324
76872
|
//手机端tooltip
|
|
76325
76873
|
this.TooltipPaint = {
|
|
76326
76874
|
BGColor:'rgba(250,250,250,0.8)', //背景色
|
|
@@ -78148,6 +78696,42 @@ function JSChartResource()
|
|
|
78148
78696
|
|
|
78149
78697
|
if (style.IndexLock) this.SetIndexLock(style.IndexLock);
|
|
78150
78698
|
if (style.ChartScatterPlotV2) this.SetChartScatterPlotV2(style.ChartScatterPlotV2);
|
|
78699
|
+
|
|
78700
|
+
if (style.ChartDrawTVLongPosition) this.SetChartDrawTVLongPosition(style.ChartDrawTVLongPosition);
|
|
78701
|
+
}
|
|
78702
|
+
|
|
78703
|
+
|
|
78704
|
+
this.SetChartDrawTVLongPosition=function(style)
|
|
78705
|
+
{
|
|
78706
|
+
if (style.TopArea)
|
|
78707
|
+
{
|
|
78708
|
+
var item=style.TopArea;
|
|
78709
|
+
var dest=this.ChartDrawTVLongPosition.TopArea;
|
|
78710
|
+
|
|
78711
|
+
if (item.AreaColor) dest.AreaColor=item.AreaColor;
|
|
78712
|
+
if (item.SelectedAreaColor) dest.SelectedAreaColor=item.SelectedAreaColor;
|
|
78713
|
+
if (item.TextBGColor) dest.TextBGColor=item.TextBGColor;
|
|
78714
|
+
if (item.TextColor) dest.BorderColor=item.TextColor;
|
|
78715
|
+
}
|
|
78716
|
+
|
|
78717
|
+
if (style.BottomArea)
|
|
78718
|
+
{
|
|
78719
|
+
var item=style.BottomArea;
|
|
78720
|
+
var dest=this.ChartDrawTVLongPosition.BottomArea;
|
|
78721
|
+
|
|
78722
|
+
if (item.AreaColor) dest.AreaColor=item.AreaColor;
|
|
78723
|
+
if (item.SelectedAreaColor) dest.SelectedAreaColor=item.SelectedAreaColor;
|
|
78724
|
+
if (item.TextBGColor) dest.TextBGColor=item.TextBGColor;
|
|
78725
|
+
if (item.TextColor) dest.BorderColor=item.TextColor;
|
|
78726
|
+
}
|
|
78727
|
+
|
|
78728
|
+
if (style.Label)
|
|
78729
|
+
{
|
|
78730
|
+
var item=style.Label;
|
|
78731
|
+
var dest=this.ChartDrawTVLongPosition.Label;
|
|
78732
|
+
if (item.Font) dest.Font=item.Font;
|
|
78733
|
+
CopyMarginConfig(dest.Margin, item.Margin);
|
|
78734
|
+
}
|
|
78151
78735
|
}
|
|
78152
78736
|
|
|
78153
78737
|
|
|
@@ -85904,7 +86488,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
85904
86488
|
if (item)
|
|
85905
86489
|
{
|
|
85906
86490
|
drawPicture=item.Create();
|
|
85907
|
-
|
|
86491
|
+
drawPicture.HQChart=this;
|
|
85908
86492
|
}
|
|
85909
86493
|
|
|
85910
86494
|
if (!drawPicture) //iconfont图标
|
|
@@ -103867,6 +104451,15 @@ Path2DHelper.FormatRadian=function(angle)
|
|
|
103867
104451
|
}
|
|
103868
104452
|
|
|
103869
104453
|
|
|
104454
|
+
Path2DHelper.PtInRect=function(x, y, rect)
|
|
104455
|
+
{
|
|
104456
|
+
if (x>=rect.Left && x<=rect.Right && y>=rect.Top && y<=rect.Bottom) return true;
|
|
104457
|
+
|
|
104458
|
+
return false;
|
|
104459
|
+
}
|
|
104460
|
+
|
|
104461
|
+
|
|
104462
|
+
|
|
103870
104463
|
|
|
103871
104464
|
|
|
103872
104465
|
|