hqchart 1.1.14501 → 1.1.14508
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/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -4246,6 +4246,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4246
4246
|
drag.LastMove.X=e.clientX;
|
|
4247
4247
|
drag.LastMove.Y=e.clientY;
|
|
4248
4248
|
}
|
|
4249
|
+
else if (drag.Click && drag.Click.IsInFrameBottom)
|
|
4250
|
+
{
|
|
4251
|
+
this.OnDragXCoordinateZoom(drag, {X:moveSetp, Y:moveSetpY}, e);
|
|
4252
|
+
}
|
|
4249
4253
|
else if ((bLButtonSelectRect || bRButtonSelectRect) && !isDragSelectRect && !isDragSubSelectRect) //左右键区间选择
|
|
4250
4254
|
{
|
|
4251
4255
|
var yMoveSetp=Math.abs(drag.LastMove.Y-e.clientY);
|
|
@@ -4267,6 +4271,38 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4267
4271
|
}
|
|
4268
4272
|
}
|
|
4269
4273
|
|
|
4274
|
+
this.OnDragXCoordinateZoom=function(drag, moveData, e)
|
|
4275
|
+
{
|
|
4276
|
+
var moveSetp=moveData.X;
|
|
4277
|
+
var moveSetpY=moveData.Y;
|
|
4278
|
+
if (moveSetp<5) return;
|
|
4279
|
+
|
|
4280
|
+
var isLeft=true;
|
|
4281
|
+
if (drag.LastMove.X<e.clientX) isLeft=false;//右移数据
|
|
4282
|
+
|
|
4283
|
+
var cursorStatus="ew-resize";
|
|
4284
|
+
|
|
4285
|
+
var oneStepWidth=this.GetMoveOneStepWidth();
|
|
4286
|
+
if (moveSetp<oneStepWidth)
|
|
4287
|
+
{
|
|
4288
|
+
this.SetCursor({Cursor:cursorStatus});
|
|
4289
|
+
return;
|
|
4290
|
+
}
|
|
4291
|
+
|
|
4292
|
+
if (this.XCoordinateZoom(moveSetp,isLeft))
|
|
4293
|
+
{
|
|
4294
|
+
this.UpdataDataoffset();
|
|
4295
|
+
this.UpdateFrameMaxMin();
|
|
4296
|
+
this.ResetFrameXYSplit();
|
|
4297
|
+
|
|
4298
|
+
this.Draw();
|
|
4299
|
+
this.OnKLinePageChange("datamove");
|
|
4300
|
+
}
|
|
4301
|
+
|
|
4302
|
+
drag.LastMove.X=e.clientX;
|
|
4303
|
+
this.SetCursor({Cursor:cursorStatus});
|
|
4304
|
+
}
|
|
4305
|
+
|
|
4270
4306
|
this.OnDragMode_One=function(moveData, e)
|
|
4271
4307
|
{
|
|
4272
4308
|
var moveSetp=moveData.X;
|
|
@@ -4327,7 +4363,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4327
4363
|
if (drag.LastMove.X<e.clientX) isLeft=false;//右移数据
|
|
4328
4364
|
|
|
4329
4365
|
var cursorStatus="pointer";
|
|
4330
|
-
if (drag.Click.IsInFrameBottom) cursorStatus="ew-resize";
|
|
4331
4366
|
var oneStepWidth=this.GetMoveOneStepWidth();
|
|
4332
4367
|
if (moveSetp<oneStepWidth)
|
|
4333
4368
|
{
|
|
@@ -4338,18 +4373,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4338
4373
|
}
|
|
4339
4374
|
else
|
|
4340
4375
|
{
|
|
4341
|
-
if
|
|
4342
|
-
{
|
|
4343
|
-
|
|
4344
|
-
if (this.XCoordinateZoom(moveSetp,isLeft))
|
|
4345
|
-
{
|
|
4346
|
-
this.UpdataDataoffset();
|
|
4347
|
-
this.UpdateFrameMaxMin();
|
|
4348
|
-
this.ResetFrameXYSplit();
|
|
4349
|
-
bNeedDraw=true;
|
|
4350
|
-
}
|
|
4351
|
-
}
|
|
4352
|
-
else if(this.DataMove(moveSetp,isLeft))
|
|
4376
|
+
if(this.DataMove(moveSetp,isLeft))
|
|
4353
4377
|
{
|
|
4354
4378
|
this.UpdataDataoffset();
|
|
4355
4379
|
//this.UpdatePointByCursorIndex(); //推拽数据的时候不需要把鼠标位置更新到K线上
|
|
@@ -4474,9 +4498,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4474
4498
|
}
|
|
4475
4499
|
else if (IsMinuteChart)
|
|
4476
4500
|
{
|
|
4477
|
-
if (this.OnMinuteSelectRectMouseUp) this.OnMinuteSelectRectMouseUp(e);
|
|
4501
|
+
if (this.OnMinuteSelectRectMouseUp) this.OnMinuteSelectRectMouseUp(e); //分时图区间选择
|
|
4478
4502
|
}
|
|
4479
|
-
else if (bLButtonSelectRect || bRButtonSelectRect)
|
|
4503
|
+
else if (bLButtonSelectRect || bRButtonSelectRect) //K线图区间选择
|
|
4480
4504
|
{
|
|
4481
4505
|
var drag=this.MouseDrag;
|
|
4482
4506
|
drag.LastMove.X=e.clientX;
|
|
@@ -4491,49 +4515,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4491
4515
|
selectData.YEnd=(drag.LastMove.Y-uielement.getBoundingClientRect().top)*pixelTatio;
|
|
4492
4516
|
selectData.JSChartContainer=this;
|
|
4493
4517
|
selectData.Stock={Symbol:this.Symbol, Name:this.Name};
|
|
4518
|
+
selectData.IsLButton=bLButtonSelectRect;
|
|
4519
|
+
selectData.IsRButton=bRButtonSelectRect;
|
|
4494
4520
|
|
|
4495
4521
|
if (!this.BorderDrag && this.GetSelectRectData(selectData))
|
|
4496
4522
|
{
|
|
4497
|
-
|
|
4498
|
-
var paint=this.GetRectSelectPaint();
|
|
4499
|
-
var isShowMenu=true;
|
|
4500
|
-
if (event && event.Callback)
|
|
4501
|
-
{
|
|
4502
|
-
var data=
|
|
4503
|
-
{
|
|
4504
|
-
X:drag.LastMove.X-uielement.getBoundingClientRect().left,
|
|
4505
|
-
Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,
|
|
4506
|
-
SelectData:selectData, //区间选择的数据
|
|
4507
|
-
RectSelectPaint:paint, //区间选择背景
|
|
4508
|
-
IsShowMenu:true,
|
|
4509
|
-
e,e
|
|
4510
|
-
};
|
|
4511
|
-
event.Callback(event,data,this);
|
|
4512
|
-
isShowMenu=data.IsShowMenu;
|
|
4513
|
-
}
|
|
4514
|
-
|
|
4515
|
-
if (IsMinuteChart) //分时图直接显示显示区间选择
|
|
4516
|
-
{
|
|
4517
|
-
this.HideSelectRect();
|
|
4518
|
-
this.UpdateSelectRect(selectData.Start,selectData.End);
|
|
4519
|
-
}
|
|
4520
|
-
else
|
|
4521
|
-
{
|
|
4522
|
-
if (isShowMenu)
|
|
4523
|
-
{
|
|
4524
|
-
var data=
|
|
4525
|
-
{
|
|
4526
|
-
Chart:this,
|
|
4527
|
-
X:drag.LastMove.X-uielement.getBoundingClientRect().left,
|
|
4528
|
-
Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,
|
|
4529
|
-
SelectData:selectData, //区间选择的数据
|
|
4530
|
-
RectSelectPaint:paint //区间选择背景
|
|
4531
|
-
};
|
|
4532
|
-
|
|
4533
|
-
e.data=data;
|
|
4534
|
-
this.PopupSelectRectMenuV2(data, e);
|
|
4535
|
-
}
|
|
4536
|
-
}
|
|
4523
|
+
this.FinishSelectRect(selectData, e);
|
|
4537
4524
|
}
|
|
4538
4525
|
else
|
|
4539
4526
|
{
|
|
@@ -4573,6 +4560,92 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4573
4560
|
this.ClearDocContextMenuTimer(5000);
|
|
4574
4561
|
}
|
|
4575
4562
|
|
|
4563
|
+
//区间选择完成
|
|
4564
|
+
this.FinishSelectRect=function(selectData, e)
|
|
4565
|
+
{
|
|
4566
|
+
var bMinuteChart=this.IsMinuteContainer();
|
|
4567
|
+
var drag=this.MouseDrag;
|
|
4568
|
+
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SELECT_RECT);
|
|
4569
|
+
var paint=this.GetRectSelectPaint();
|
|
4570
|
+
|
|
4571
|
+
var x=drag.LastMove.X-uielement.getBoundingClientRect().left;
|
|
4572
|
+
var y=drag.LastMove.Y-uielement.getBoundingClientRect().top;
|
|
4573
|
+
|
|
4574
|
+
if (e) //往事件里面 写如我们的数据
|
|
4575
|
+
{
|
|
4576
|
+
var data=
|
|
4577
|
+
{
|
|
4578
|
+
Chart:this, X:x,Y:y,
|
|
4579
|
+
SelectData:selectData, //区间选择的数据
|
|
4580
|
+
RectSelectPaint:paint, //区间选择背景
|
|
4581
|
+
IsLButton:selectData.IsLButton, IsRButton:selectData.IsRButton,
|
|
4582
|
+
};
|
|
4583
|
+
|
|
4584
|
+
e.data=data;
|
|
4585
|
+
}
|
|
4586
|
+
|
|
4587
|
+
var aryMenu=null, command=null;
|
|
4588
|
+
if (bMinuteChart) //分时图 默认区间统计
|
|
4589
|
+
{
|
|
4590
|
+
command={ ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID, Args:[e,selectData] };
|
|
4591
|
+
}
|
|
4592
|
+
else //K线默认 区间选择K线
|
|
4593
|
+
{
|
|
4594
|
+
aryMenu=
|
|
4595
|
+
[
|
|
4596
|
+
{ Name:"区间统计", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID, Args:[e,selectData] }},
|
|
4597
|
+
{ Name:"区间放大", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID, Args:[selectData] }}
|
|
4598
|
+
];
|
|
4599
|
+
}
|
|
4600
|
+
|
|
4601
|
+
if (event && event.Callback)
|
|
4602
|
+
|
|
4603
|
+
var sendData=
|
|
4604
|
+
{
|
|
4605
|
+
X:x, Y:y, e:e,
|
|
4606
|
+
SelectData:selectData, //区间选择的数据
|
|
4607
|
+
RectSelectPaint:paint, //区间选择背景
|
|
4608
|
+
AryMenu:aryMenu, //菜单 填null 不就会弹菜单
|
|
4609
|
+
Command:command, //执行命令
|
|
4610
|
+
IsLButton:selectData.IsLButton, IsRButton:selectData.IsRButton,
|
|
4611
|
+
PreventDefault:false,
|
|
4612
|
+
};
|
|
4613
|
+
if (bMinuteChart) sendData.Command=null; //分时图 调用事件 不做任何事
|
|
4614
|
+
|
|
4615
|
+
event.Callback(event,sendData,this);
|
|
4616
|
+
|
|
4617
|
+
if (sendData.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
|
|
4618
|
+
|
|
4619
|
+
aryMenu=sendData.AryMenu;
|
|
4620
|
+
command=sendData.Command;
|
|
4621
|
+
|
|
4622
|
+
|
|
4623
|
+
if (aryMenu) //弹菜单
|
|
4624
|
+
{
|
|
4625
|
+
this.PopupSelectRectMenuV3(aryMenu, data, e);
|
|
4626
|
+
return;
|
|
4627
|
+
}
|
|
4628
|
+
|
|
4629
|
+
if (command) //执行命令
|
|
4630
|
+
{
|
|
4631
|
+
this.ExecuteMenuCommand(command.ID, command.Args);
|
|
4632
|
+
return;
|
|
4633
|
+
}
|
|
4634
|
+
|
|
4635
|
+
this.HideSelectRect();
|
|
4636
|
+
this.UpdateSelectRect(selectData.Start,selectData.End);
|
|
4637
|
+
}
|
|
4638
|
+
|
|
4639
|
+
this.PopupSelectRectMenuV3=function(aryMenu, data, e)
|
|
4640
|
+
{
|
|
4641
|
+
if (!aryMenu) return;
|
|
4642
|
+
|
|
4643
|
+
var menuData={ Menu:aryMenu, Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
4644
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
4645
|
+
var x=data.X, y=data.Y;
|
|
4646
|
+
this.PopupMenuByRClick(menuData, x, y);
|
|
4647
|
+
}
|
|
4648
|
+
|
|
4576
4649
|
this.DocContextMenu=function(e)
|
|
4577
4650
|
{
|
|
4578
4651
|
e.preventDefault();
|
|
@@ -25013,12 +25086,12 @@ function IChartPainting()
|
|
|
25013
25086
|
if (valueType==1) //K线收盘价
|
|
25014
25087
|
{
|
|
25015
25088
|
var kItem=this.Data.Data[i];
|
|
25016
|
-
if (IFrameSplitOperator.IsNumber(kItem.Close)) value=kItem.Close
|
|
25089
|
+
if (kItem && IFrameSplitOperator.IsNumber(kItem.Close)) value=kItem.Close
|
|
25017
25090
|
}
|
|
25018
25091
|
else if (valueType==2)
|
|
25019
25092
|
{
|
|
25020
25093
|
var kItem=this.Data.Data[i];
|
|
25021
|
-
if (IFrameSplitOperator.IsNumber(kItem.Vol)) value=kItem.Vol
|
|
25094
|
+
if (kItem && IFrameSplitOperator.IsNumber(kItem.Vol)) value=kItem.Vol
|
|
25022
25095
|
}
|
|
25023
25096
|
else if (valueType==3)
|
|
25024
25097
|
{
|
|
@@ -76642,8 +76715,21 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
76642
76715
|
x+=(rtClient.left+rtScroll.Left);
|
|
76643
76716
|
y+=(rtClient.top+rtScroll.Top);
|
|
76644
76717
|
|
|
76645
|
-
var
|
|
76646
|
-
var
|
|
76718
|
+
var item=data.Tooltip.Data;
|
|
76719
|
+
var date=item.Date;
|
|
76720
|
+
var symbol=null;
|
|
76721
|
+
|
|
76722
|
+
if (data.Tooltip.ChartPaint && data.Tooltip.ChartPaint.Name=="DRAWKLINE")
|
|
76723
|
+
{
|
|
76724
|
+
if (item.Symbol) symbol=item.Symbol;
|
|
76725
|
+
else if (data.Tooltip.Symbol) symbol=data.Tooltip.Symbol;
|
|
76726
|
+
}
|
|
76727
|
+
else
|
|
76728
|
+
{
|
|
76729
|
+
symbol=data.Chart.Symbol;
|
|
76730
|
+
}
|
|
76731
|
+
|
|
76732
|
+
if (!symbol) return;
|
|
76647
76733
|
|
|
76648
76734
|
this.PopMinuteChart.Show({ Date:date, Symbol:symbol, Data:data.Tooltip.Data }, x/pixelRatio,y/pixelRatio);
|
|
76649
76735
|
}
|
|
@@ -83365,6 +83451,30 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
83365
83451
|
|
|
83366
83452
|
return position;
|
|
83367
83453
|
}
|
|
83454
|
+
|
|
83455
|
+
this.GetDateTimeByPoint=function(x,y)
|
|
83456
|
+
{
|
|
83457
|
+
var clientPos=this.PtInClient(x,y);
|
|
83458
|
+
if (clientPos<0) return null;
|
|
83459
|
+
|
|
83460
|
+
if (!IFrameSplitOperator.IsNumber(x)) return;
|
|
83461
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return null;
|
|
83462
|
+
var frame=this.Frame.SubFrame[0].Frame;
|
|
83463
|
+
if (!frame) return null;
|
|
83464
|
+
var kData=this.GetKData();
|
|
83465
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return null;
|
|
83466
|
+
|
|
83467
|
+
var index=parseInt(frame.GetXData(x));
|
|
83468
|
+
var dataIndex=index+kData.DataOffset;
|
|
83469
|
+
if (dataIndex<0 || dataIndex>=kData.Data.length) return null;
|
|
83470
|
+
|
|
83471
|
+
var kItem=kData.Data[dataIndex];
|
|
83472
|
+
if (!kItem) return null;
|
|
83473
|
+
|
|
83474
|
+
var result={ Date:kItem.Date, Time:kItem.Time, DataIndex:dataIndex, Index:index, ClientPos:clientPos };
|
|
83475
|
+
|
|
83476
|
+
return result;
|
|
83477
|
+
}
|
|
83368
83478
|
}
|
|
83369
83479
|
|
|
83370
83480
|
//API 返回数据 转化为array[]
|
|
@@ -84208,6 +84318,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
84208
84318
|
}
|
|
84209
84319
|
else if ((bRButtonSelectRect || bLButtonSelectRect) && !this.BorderDrag && this.GetSelectRectData(selectData))
|
|
84210
84320
|
{
|
|
84321
|
+
this.FinishSelectRect(selectData, e);
|
|
84322
|
+
|
|
84323
|
+
/*
|
|
84211
84324
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SELECT_RECT);
|
|
84212
84325
|
var paint=this.GetRectSelectPaint();
|
|
84213
84326
|
var isShowDialog=true; //是否显示内置区间选择框
|
|
@@ -84245,6 +84358,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
84245
84358
|
this.HideSelectRect();
|
|
84246
84359
|
this.UpdateSelectRect(selectData.Start,selectData.End);
|
|
84247
84360
|
}
|
|
84361
|
+
*/
|
|
84248
84362
|
}
|
|
84249
84363
|
else
|
|
84250
84364
|
{
|
|
@@ -8171,6 +8171,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8171
8171
|
drag.LastMove.X=e.clientX;
|
|
8172
8172
|
drag.LastMove.Y=e.clientY;
|
|
8173
8173
|
}
|
|
8174
|
+
else if (drag.Click && drag.Click.IsInFrameBottom)
|
|
8175
|
+
{
|
|
8176
|
+
this.OnDragXCoordinateZoom(drag, {X:moveSetp, Y:moveSetpY}, e);
|
|
8177
|
+
}
|
|
8174
8178
|
else if ((bLButtonSelectRect || bRButtonSelectRect) && !isDragSelectRect && !isDragSubSelectRect) //左右键区间选择
|
|
8175
8179
|
{
|
|
8176
8180
|
var yMoveSetp=Math.abs(drag.LastMove.Y-e.clientY);
|
|
@@ -8192,6 +8196,38 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8192
8196
|
}
|
|
8193
8197
|
}
|
|
8194
8198
|
|
|
8199
|
+
this.OnDragXCoordinateZoom=function(drag, moveData, e)
|
|
8200
|
+
{
|
|
8201
|
+
var moveSetp=moveData.X;
|
|
8202
|
+
var moveSetpY=moveData.Y;
|
|
8203
|
+
if (moveSetp<5) return;
|
|
8204
|
+
|
|
8205
|
+
var isLeft=true;
|
|
8206
|
+
if (drag.LastMove.X<e.clientX) isLeft=false;//右移数据
|
|
8207
|
+
|
|
8208
|
+
var cursorStatus="ew-resize";
|
|
8209
|
+
|
|
8210
|
+
var oneStepWidth=this.GetMoveOneStepWidth();
|
|
8211
|
+
if (moveSetp<oneStepWidth)
|
|
8212
|
+
{
|
|
8213
|
+
this.SetCursor({Cursor:cursorStatus});
|
|
8214
|
+
return;
|
|
8215
|
+
}
|
|
8216
|
+
|
|
8217
|
+
if (this.XCoordinateZoom(moveSetp,isLeft))
|
|
8218
|
+
{
|
|
8219
|
+
this.UpdataDataoffset();
|
|
8220
|
+
this.UpdateFrameMaxMin();
|
|
8221
|
+
this.ResetFrameXYSplit();
|
|
8222
|
+
|
|
8223
|
+
this.Draw();
|
|
8224
|
+
this.OnKLinePageChange("datamove");
|
|
8225
|
+
}
|
|
8226
|
+
|
|
8227
|
+
drag.LastMove.X=e.clientX;
|
|
8228
|
+
this.SetCursor({Cursor:cursorStatus});
|
|
8229
|
+
}
|
|
8230
|
+
|
|
8195
8231
|
this.OnDragMode_One=function(moveData, e)
|
|
8196
8232
|
{
|
|
8197
8233
|
var moveSetp=moveData.X;
|
|
@@ -8252,7 +8288,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8252
8288
|
if (drag.LastMove.X<e.clientX) isLeft=false;//右移数据
|
|
8253
8289
|
|
|
8254
8290
|
var cursorStatus="pointer";
|
|
8255
|
-
if (drag.Click.IsInFrameBottom) cursorStatus="ew-resize";
|
|
8256
8291
|
var oneStepWidth=this.GetMoveOneStepWidth();
|
|
8257
8292
|
if (moveSetp<oneStepWidth)
|
|
8258
8293
|
{
|
|
@@ -8263,18 +8298,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8263
8298
|
}
|
|
8264
8299
|
else
|
|
8265
8300
|
{
|
|
8266
|
-
if
|
|
8267
|
-
{
|
|
8268
|
-
|
|
8269
|
-
if (this.XCoordinateZoom(moveSetp,isLeft))
|
|
8270
|
-
{
|
|
8271
|
-
this.UpdataDataoffset();
|
|
8272
|
-
this.UpdateFrameMaxMin();
|
|
8273
|
-
this.ResetFrameXYSplit();
|
|
8274
|
-
bNeedDraw=true;
|
|
8275
|
-
}
|
|
8276
|
-
}
|
|
8277
|
-
else if(this.DataMove(moveSetp,isLeft))
|
|
8301
|
+
if(this.DataMove(moveSetp,isLeft))
|
|
8278
8302
|
{
|
|
8279
8303
|
this.UpdataDataoffset();
|
|
8280
8304
|
//this.UpdatePointByCursorIndex(); //推拽数据的时候不需要把鼠标位置更新到K线上
|
|
@@ -8399,9 +8423,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8399
8423
|
}
|
|
8400
8424
|
else if (IsMinuteChart)
|
|
8401
8425
|
{
|
|
8402
|
-
if (this.OnMinuteSelectRectMouseUp) this.OnMinuteSelectRectMouseUp(e);
|
|
8426
|
+
if (this.OnMinuteSelectRectMouseUp) this.OnMinuteSelectRectMouseUp(e); //分时图区间选择
|
|
8403
8427
|
}
|
|
8404
|
-
else if (bLButtonSelectRect || bRButtonSelectRect)
|
|
8428
|
+
else if (bLButtonSelectRect || bRButtonSelectRect) //K线图区间选择
|
|
8405
8429
|
{
|
|
8406
8430
|
var drag=this.MouseDrag;
|
|
8407
8431
|
drag.LastMove.X=e.clientX;
|
|
@@ -8416,49 +8440,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8416
8440
|
selectData.YEnd=(drag.LastMove.Y-uielement.getBoundingClientRect().top)*pixelTatio;
|
|
8417
8441
|
selectData.JSChartContainer=this;
|
|
8418
8442
|
selectData.Stock={Symbol:this.Symbol, Name:this.Name};
|
|
8443
|
+
selectData.IsLButton=bLButtonSelectRect;
|
|
8444
|
+
selectData.IsRButton=bRButtonSelectRect;
|
|
8419
8445
|
|
|
8420
8446
|
if (!this.BorderDrag && this.GetSelectRectData(selectData))
|
|
8421
8447
|
{
|
|
8422
|
-
|
|
8423
|
-
var paint=this.GetRectSelectPaint();
|
|
8424
|
-
var isShowMenu=true;
|
|
8425
|
-
if (event && event.Callback)
|
|
8426
|
-
{
|
|
8427
|
-
var data=
|
|
8428
|
-
{
|
|
8429
|
-
X:drag.LastMove.X-uielement.getBoundingClientRect().left,
|
|
8430
|
-
Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,
|
|
8431
|
-
SelectData:selectData, //区间选择的数据
|
|
8432
|
-
RectSelectPaint:paint, //区间选择背景
|
|
8433
|
-
IsShowMenu:true,
|
|
8434
|
-
e,e
|
|
8435
|
-
};
|
|
8436
|
-
event.Callback(event,data,this);
|
|
8437
|
-
isShowMenu=data.IsShowMenu;
|
|
8438
|
-
}
|
|
8439
|
-
|
|
8440
|
-
if (IsMinuteChart) //分时图直接显示显示区间选择
|
|
8441
|
-
{
|
|
8442
|
-
this.HideSelectRect();
|
|
8443
|
-
this.UpdateSelectRect(selectData.Start,selectData.End);
|
|
8444
|
-
}
|
|
8445
|
-
else
|
|
8446
|
-
{
|
|
8447
|
-
if (isShowMenu)
|
|
8448
|
-
{
|
|
8449
|
-
var data=
|
|
8450
|
-
{
|
|
8451
|
-
Chart:this,
|
|
8452
|
-
X:drag.LastMove.X-uielement.getBoundingClientRect().left,
|
|
8453
|
-
Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,
|
|
8454
|
-
SelectData:selectData, //区间选择的数据
|
|
8455
|
-
RectSelectPaint:paint //区间选择背景
|
|
8456
|
-
};
|
|
8457
|
-
|
|
8458
|
-
e.data=data;
|
|
8459
|
-
this.PopupSelectRectMenuV2(data, e);
|
|
8460
|
-
}
|
|
8461
|
-
}
|
|
8448
|
+
this.FinishSelectRect(selectData, e);
|
|
8462
8449
|
}
|
|
8463
8450
|
else
|
|
8464
8451
|
{
|
|
@@ -8498,6 +8485,92 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8498
8485
|
this.ClearDocContextMenuTimer(5000);
|
|
8499
8486
|
}
|
|
8500
8487
|
|
|
8488
|
+
//区间选择完成
|
|
8489
|
+
this.FinishSelectRect=function(selectData, e)
|
|
8490
|
+
{
|
|
8491
|
+
var bMinuteChart=this.IsMinuteContainer();
|
|
8492
|
+
var drag=this.MouseDrag;
|
|
8493
|
+
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SELECT_RECT);
|
|
8494
|
+
var paint=this.GetRectSelectPaint();
|
|
8495
|
+
|
|
8496
|
+
var x=drag.LastMove.X-uielement.getBoundingClientRect().left;
|
|
8497
|
+
var y=drag.LastMove.Y-uielement.getBoundingClientRect().top;
|
|
8498
|
+
|
|
8499
|
+
if (e) //往事件里面 写如我们的数据
|
|
8500
|
+
{
|
|
8501
|
+
var data=
|
|
8502
|
+
{
|
|
8503
|
+
Chart:this, X:x,Y:y,
|
|
8504
|
+
SelectData:selectData, //区间选择的数据
|
|
8505
|
+
RectSelectPaint:paint, //区间选择背景
|
|
8506
|
+
IsLButton:selectData.IsLButton, IsRButton:selectData.IsRButton,
|
|
8507
|
+
};
|
|
8508
|
+
|
|
8509
|
+
e.data=data;
|
|
8510
|
+
}
|
|
8511
|
+
|
|
8512
|
+
var aryMenu=null, command=null;
|
|
8513
|
+
if (bMinuteChart) //分时图 默认区间统计
|
|
8514
|
+
{
|
|
8515
|
+
command={ ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID, Args:[e,selectData] };
|
|
8516
|
+
}
|
|
8517
|
+
else //K线默认 区间选择K线
|
|
8518
|
+
{
|
|
8519
|
+
aryMenu=
|
|
8520
|
+
[
|
|
8521
|
+
{ Name:"区间统计", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID, Args:[e,selectData] }},
|
|
8522
|
+
{ Name:"区间放大", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID, Args:[selectData] }}
|
|
8523
|
+
];
|
|
8524
|
+
}
|
|
8525
|
+
|
|
8526
|
+
if (event && event.Callback)
|
|
8527
|
+
|
|
8528
|
+
var sendData=
|
|
8529
|
+
{
|
|
8530
|
+
X:x, Y:y, e:e,
|
|
8531
|
+
SelectData:selectData, //区间选择的数据
|
|
8532
|
+
RectSelectPaint:paint, //区间选择背景
|
|
8533
|
+
AryMenu:aryMenu, //菜单 填null 不就会弹菜单
|
|
8534
|
+
Command:command, //执行命令
|
|
8535
|
+
IsLButton:selectData.IsLButton, IsRButton:selectData.IsRButton,
|
|
8536
|
+
PreventDefault:false,
|
|
8537
|
+
};
|
|
8538
|
+
if (bMinuteChart) sendData.Command=null; //分时图 调用事件 不做任何事
|
|
8539
|
+
|
|
8540
|
+
event.Callback(event,sendData,this);
|
|
8541
|
+
|
|
8542
|
+
if (sendData.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
|
|
8543
|
+
|
|
8544
|
+
aryMenu=sendData.AryMenu;
|
|
8545
|
+
command=sendData.Command;
|
|
8546
|
+
|
|
8547
|
+
|
|
8548
|
+
if (aryMenu) //弹菜单
|
|
8549
|
+
{
|
|
8550
|
+
this.PopupSelectRectMenuV3(aryMenu, data, e);
|
|
8551
|
+
return;
|
|
8552
|
+
}
|
|
8553
|
+
|
|
8554
|
+
if (command) //执行命令
|
|
8555
|
+
{
|
|
8556
|
+
this.ExecuteMenuCommand(command.ID, command.Args);
|
|
8557
|
+
return;
|
|
8558
|
+
}
|
|
8559
|
+
|
|
8560
|
+
this.HideSelectRect();
|
|
8561
|
+
this.UpdateSelectRect(selectData.Start,selectData.End);
|
|
8562
|
+
}
|
|
8563
|
+
|
|
8564
|
+
this.PopupSelectRectMenuV3=function(aryMenu, data, e)
|
|
8565
|
+
{
|
|
8566
|
+
if (!aryMenu) return;
|
|
8567
|
+
|
|
8568
|
+
var menuData={ Menu:aryMenu, Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
8569
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
8570
|
+
var x=data.X, y=data.Y;
|
|
8571
|
+
this.PopupMenuByRClick(menuData, x, y);
|
|
8572
|
+
}
|
|
8573
|
+
|
|
8501
8574
|
this.DocContextMenu=function(e)
|
|
8502
8575
|
{
|
|
8503
8576
|
e.preventDefault();
|
|
@@ -28938,12 +29011,12 @@ function IChartPainting()
|
|
|
28938
29011
|
if (valueType==1) //K线收盘价
|
|
28939
29012
|
{
|
|
28940
29013
|
var kItem=this.Data.Data[i];
|
|
28941
|
-
if (IFrameSplitOperator.IsNumber(kItem.Close)) value=kItem.Close
|
|
29014
|
+
if (kItem && IFrameSplitOperator.IsNumber(kItem.Close)) value=kItem.Close
|
|
28942
29015
|
}
|
|
28943
29016
|
else if (valueType==2)
|
|
28944
29017
|
{
|
|
28945
29018
|
var kItem=this.Data.Data[i];
|
|
28946
|
-
if (IFrameSplitOperator.IsNumber(kItem.Vol)) value=kItem.Vol
|
|
29019
|
+
if (kItem && IFrameSplitOperator.IsNumber(kItem.Vol)) value=kItem.Vol
|
|
28947
29020
|
}
|
|
28948
29021
|
else if (valueType==3)
|
|
28949
29022
|
{
|
|
@@ -80567,8 +80640,21 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80567
80640
|
x+=(rtClient.left+rtScroll.Left);
|
|
80568
80641
|
y+=(rtClient.top+rtScroll.Top);
|
|
80569
80642
|
|
|
80570
|
-
var
|
|
80571
|
-
var
|
|
80643
|
+
var item=data.Tooltip.Data;
|
|
80644
|
+
var date=item.Date;
|
|
80645
|
+
var symbol=null;
|
|
80646
|
+
|
|
80647
|
+
if (data.Tooltip.ChartPaint && data.Tooltip.ChartPaint.Name=="DRAWKLINE")
|
|
80648
|
+
{
|
|
80649
|
+
if (item.Symbol) symbol=item.Symbol;
|
|
80650
|
+
else if (data.Tooltip.Symbol) symbol=data.Tooltip.Symbol;
|
|
80651
|
+
}
|
|
80652
|
+
else
|
|
80653
|
+
{
|
|
80654
|
+
symbol=data.Chart.Symbol;
|
|
80655
|
+
}
|
|
80656
|
+
|
|
80657
|
+
if (!symbol) return;
|
|
80572
80658
|
|
|
80573
80659
|
this.PopMinuteChart.Show({ Date:date, Symbol:symbol, Data:data.Tooltip.Data }, x/pixelRatio,y/pixelRatio);
|
|
80574
80660
|
}
|
|
@@ -87290,6 +87376,30 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
87290
87376
|
|
|
87291
87377
|
return position;
|
|
87292
87378
|
}
|
|
87379
|
+
|
|
87380
|
+
this.GetDateTimeByPoint=function(x,y)
|
|
87381
|
+
{
|
|
87382
|
+
var clientPos=this.PtInClient(x,y);
|
|
87383
|
+
if (clientPos<0) return null;
|
|
87384
|
+
|
|
87385
|
+
if (!IFrameSplitOperator.IsNumber(x)) return;
|
|
87386
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return null;
|
|
87387
|
+
var frame=this.Frame.SubFrame[0].Frame;
|
|
87388
|
+
if (!frame) return null;
|
|
87389
|
+
var kData=this.GetKData();
|
|
87390
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return null;
|
|
87391
|
+
|
|
87392
|
+
var index=parseInt(frame.GetXData(x));
|
|
87393
|
+
var dataIndex=index+kData.DataOffset;
|
|
87394
|
+
if (dataIndex<0 || dataIndex>=kData.Data.length) return null;
|
|
87395
|
+
|
|
87396
|
+
var kItem=kData.Data[dataIndex];
|
|
87397
|
+
if (!kItem) return null;
|
|
87398
|
+
|
|
87399
|
+
var result={ Date:kItem.Date, Time:kItem.Time, DataIndex:dataIndex, Index:index, ClientPos:clientPos };
|
|
87400
|
+
|
|
87401
|
+
return result;
|
|
87402
|
+
}
|
|
87293
87403
|
}
|
|
87294
87404
|
|
|
87295
87405
|
//API 返回数据 转化为array[]
|
|
@@ -88133,6 +88243,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
88133
88243
|
}
|
|
88134
88244
|
else if ((bRButtonSelectRect || bLButtonSelectRect) && !this.BorderDrag && this.GetSelectRectData(selectData))
|
|
88135
88245
|
{
|
|
88246
|
+
this.FinishSelectRect(selectData, e);
|
|
88247
|
+
|
|
88248
|
+
/*
|
|
88136
88249
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SELECT_RECT);
|
|
88137
88250
|
var paint=this.GetRectSelectPaint();
|
|
88138
88251
|
var isShowDialog=true; //是否显示内置区间选择框
|
|
@@ -88170,6 +88283,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
88170
88283
|
this.HideSelectRect();
|
|
88171
88284
|
this.UpdateSelectRect(selectData.Start,selectData.End);
|
|
88172
88285
|
}
|
|
88286
|
+
*/
|
|
88173
88287
|
}
|
|
88174
88288
|
else
|
|
88175
88289
|
{
|
|
@@ -144319,7 +144433,7 @@ function ScrollBarBGChart()
|
|
|
144319
144433
|
|
|
144320
144434
|
|
|
144321
144435
|
|
|
144322
|
-
var HQCHART_VERSION="1.1.
|
|
144436
|
+
var HQCHART_VERSION="1.1.14507";
|
|
144323
144437
|
|
|
144324
144438
|
function PrintHQChartVersion()
|
|
144325
144439
|
{
|