hqchart 1.1.13191 → 1.1.13197

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.
@@ -6055,10 +6055,19 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
6055
6055
  {
6056
6056
  if(this.JSChartContainer && typeof(this.JSChartContainer.PopupMenuByTab)=='function')
6057
6057
  {
6058
- JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');
6058
+ JSConsole.Chart.Log('[JSChart:PopupMenuByTab] ');
6059
6059
  return this.JSChartContainer.PopupMenuByTab(menuData, rtTab);
6060
6060
  }
6061
6061
  }
6062
+
6063
+ this.PopupMenuByDrapdown=function(menuData, rtButton)
6064
+ {
6065
+ if(this.JSChartContainer && typeof(this.JSChartContainer.PopupMenuByDrapdown)=='function')
6066
+ {
6067
+ JSConsole.Chart.Log('[JSChart:PopupMenuByDrapdown] ');
6068
+ return this.JSChartContainer.PopupMenuByDrapdown(menuData, rtButton);
6069
+ }
6070
+ }
6062
6071
  }
6063
6072
 
6064
6073
  JSChart.LastVersion=null; //最新的版本号
@@ -6442,7 +6451,9 @@ var JSCHART_EVENT_ID=
6442
6451
  ON_CLICK_TREPORT_ROW:127, //左键点击点击T型报价列表
6443
6452
 
6444
6453
 
6445
- ON_CHANGE_INDEX:150, //切换指标
6454
+ ON_CHANGE_INDEX:150, //切换指标
6455
+ ON_MENU_COMMAND:151, //菜单时间回调
6456
+ ON_CREATE_RIGHT_MENU:152, //创建右键菜单
6446
6457
  }
6447
6458
 
6448
6459
  var JSCHART_OPERATOR_ID=
@@ -12942,6 +12953,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12942
12953
  }
12943
12954
  }
12944
12955
 
12956
+ //点tab弹菜单
12945
12957
  this.PopupMenuByTab=function(menuData, rtTab)
12946
12958
  {
12947
12959
  if (!this.JSPopMenu) return;
@@ -12965,7 +12977,32 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12965
12977
  this.JSPopMenu.PopupMenuByTab(rtCell);
12966
12978
  }
12967
12979
 
12968
- this.PopuMenuByRClick=function(menuData, x, y)
12980
+ //下拉菜单
12981
+ this.PopupMenuByDrapdown=function(menuData, rtButton)
12982
+ {
12983
+ if (!this.JSPopMenu) return;
12984
+
12985
+ var pixelRatio=GetDevicePixelRatio();
12986
+ var rtCell={ Left:rtButton.Left/pixelRatio, Right:rtButton.Right/pixelRatio, Bottom:rtButton.Bottom/pixelRatio, Top:rtButton.Top/pixelRatio };
12987
+ rtCell.Width=rtCell.Right-rtCell.Left;
12988
+ rtCell.Height=rtCell.Bottom-rtCell.Top;
12989
+
12990
+ var rtClient=this.UIElement.getBoundingClientRect();
12991
+ var rtScroll=GetScrollPosition();
12992
+
12993
+ var offsetLeft=rtClient.left+rtScroll.Left;
12994
+ var offsetTop=rtClient.top+rtScroll.Top;
12995
+ rtCell.Left+=offsetLeft;
12996
+ rtCell.Right+=offsetLeft;
12997
+ rtCell.Top+=offsetTop;
12998
+ rtCell.Bottom+=offsetTop;
12999
+
13000
+ this.JSPopMenu.CreatePopMenu(menuData);
13001
+ this.JSPopMenu.PopupMenuByDrapdown(rtCell);
13002
+ }
13003
+
13004
+ //右键菜单
13005
+ this.PopupMenuByRClick=function(menuData, x, y)
12969
13006
  {
12970
13007
  var rtClient=this.UIElement.getBoundingClientRect();
12971
13008
  var rtScroll=GetScrollPosition();
@@ -12977,14 +13014,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12977
13014
  this.JSPopMenu.PopupMenuByRight(x,y);
12978
13015
  }
12979
13016
 
12980
- //点击右键菜单
12981
- this.OnClickRightMenu=function(data)
13017
+ //菜单命令
13018
+ this.ExecuteMenuCommand=function(cmdID, aryArgs)
12982
13019
  {
12983
- JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
12984
- if (!data || !data.Data) return;
13020
+ JSConsole.Chart.Log('[JSChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
12985
13021
 
12986
- var cmdID=data.Data.ID; //命令ID
12987
- var aryArgs=data.Data.Args; //参数
12988
13022
  var param=null, srcParam=null; //原始值
12989
13023
  if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
12990
13024
  {
@@ -13160,6 +13194,44 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13160
13194
  break;
13161
13195
  }
13162
13196
  }
13197
+
13198
+ //点击右键菜单
13199
+ this.OnClickRightMenu=function(data)
13200
+ {
13201
+ JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
13202
+ if (!data || !data.Data) return;
13203
+
13204
+ var cmdID=data.Data.ID; //命令ID
13205
+ var aryArgs=data.Data.Args; //参数
13206
+
13207
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
13208
+ if (event && event.Callback)
13209
+ {
13210
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data };
13211
+ event.Callback(event,data,this);
13212
+ if (data.PreventDefault) return;
13213
+ }
13214
+
13215
+ this.ExecuteMenuCommand(cmdID, aryArgs);
13216
+ }
13217
+
13218
+ this.PopupRightMenuV2=function(data,e)
13219
+ {
13220
+ if (!this.JSPopMenu) return;
13221
+ var x=data.X, y=data.Y;
13222
+ var frameID=data.FrameID;
13223
+ var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
13224
+ menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
13225
+
13226
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU);
13227
+ if (event && event.Callback)
13228
+ {
13229
+ var sendData={ MenuData:menuData, FrameID:frameID };
13230
+ event.Callback(event, sendData, this);
13231
+ }
13232
+
13233
+ this.PopupMenuByRClick(menuData, x, y);
13234
+ }
13163
13235
  }
13164
13236
 
13165
13237
  function GetDevicePixelRatio()
@@ -16386,7 +16458,7 @@ function MinuteFrame()
16386
16458
  for(var i=0;i<this.CustomToolbar.length;++i)
16387
16459
  {
16388
16460
  var item=this.CustomToolbar[i];
16389
- if (item.ID && item.Style) aryButton.push({ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText });
16461
+ if (item.ID && item.Style) aryButton.push({ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText, Data:item.Data });
16390
16462
  }
16391
16463
  }
16392
16464
 
@@ -18516,7 +18588,7 @@ function KLineFrame()
18516
18588
  var item=this.CustomToolbar[i];
18517
18589
  if (item.ID && item.Style)
18518
18590
  {
18519
- var btnItem={ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText};
18591
+ var btnItem={ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText, Data:item.Data };
18520
18592
 
18521
18593
  if (item.IsLeft===true) //左侧按钮
18522
18594
  {
@@ -18582,7 +18654,7 @@ function KLineFrame()
18582
18654
  var item=this.CustomToolbar[i];
18583
18655
  if (item.ID && item.Style)
18584
18656
  {
18585
- var btnItem={ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText};
18657
+ var btnItem={ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText, Data:item.Data };
18586
18658
  if (item.IsLeft===true) aryLeftButton.push(btnItem); //左侧按钮
18587
18659
  }
18588
18660
  }
@@ -57588,7 +57660,7 @@ function DynamicChartTitlePainting()
57588
57660
  var rtButton={ Left:left, YCenter:yCenter };
57589
57661
  this.DrawButton(item, rtButton, moveonPoint, mouseStatus);
57590
57662
 
57591
- this.Buttons.push({ ID:item.ID, Rect:rtButton, FrameID:this.Frame.Identify, Type:0 }); //Type 0=主图按钮 1=附图按钮 2=主图指标名字按钮
57663
+ this.Buttons.push({ ID:item.ID, Rect:rtButton, FrameID:this.Frame.Identify, Type:0, Data:item.Data }); //Type 0=主图按钮 1=附图按钮 2=主图指标名字按钮
57592
57664
 
57593
57665
  left=rtButton.Right;
57594
57666
 
@@ -57649,7 +57721,7 @@ function DynamicChartTitlePainting()
57649
57721
  var rect=item.Rect;
57650
57722
  if (x>rect.Left && x<rect.Right && y>rect.Top && y<rect.Bottom)
57651
57723
  {
57652
- var result= { ID:item.ID, Rect:rect, FrameID:item.FrameID, Type:item.Type };
57724
+ var result= { ID:item.ID, Rect:rect, FrameID:item.FrameID, Type:item.Type, Data:item.Data };
57653
57725
  if (item.Type==1)
57654
57726
  {
57655
57727
  result.Title=item.Title;
@@ -59899,8 +59971,11 @@ function ChartDrawHLine()
59899
59971
  {
59900
59972
  var item=option.Button;
59901
59973
  if (item.CloseIcon) this.Button.CloseIcon=CloneData(item.CloseIcon);
59974
+ else if (item.CloseIcon===null) this.Button.CloseIcon=null;
59902
59975
  if (item.SettingIcon) this.Button.SettingIcon=CloneData(item.SettingIcon);
59976
+ else if (item.SettingIcon===null) this.Button.SettingIcon=null;
59903
59977
  }
59978
+
59904
59979
  if (option.ExtendData) this.ExtendData=option.ExtendData;
59905
59980
 
59906
59981
  if (IFrameSplitOperator.IsNonEmptyArray(option.IsShowPriceText))
@@ -76546,6 +76621,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
76546
76621
  { Name:"均线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "均线"]}},
76547
76622
  { Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BOLL"]}},
76548
76623
  { Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
76624
+ { Name:"MACD(粗)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD2"]}},
76549
76625
  { Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
76550
76626
  { Name:"VOL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "VOL"]}},
76551
76627
  { Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
@@ -76740,16 +76816,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
76740
76816
  return aryMenu;
76741
76817
  }
76742
76818
 
76743
- this.PopupRightMenuV2=function(data,e)
76744
- {
76745
- if (!this.JSPopMenu) return;
76746
- var x=data.X, y=data.Y;
76747
- var frameID=data.FrameID;
76748
- var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
76749
- menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
76750
76819
 
76751
- this.PopuMenuByRClick(menuData, x, y);
76752
- }
76753
76820
 
76754
76821
  this.PopupSelectRectMenuV2=function(data, e)
76755
76822
  {
@@ -76762,7 +76829,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
76762
76829
  var menuData={ Menu:aryMenu, Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
76763
76830
  menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
76764
76831
  var x=data.X, y=data.Y;
76765
- this.PopuMenuByRClick(menuData, x, y);
76832
+ this.PopupMenuByRClick(menuData, x, y);
76766
76833
  }
76767
76834
 
76768
76835
  //重新加载画图工具(切换股票|周期)
@@ -78151,7 +78218,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
78151
78218
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_TITLE_BUTTON);
78152
78219
  if (event && event.Callback)
78153
78220
  {
78154
- var data={ Info:button, PreventDefault:false }; //PreventDefault 是否阻止内置的点击处理
78221
+ var data={ Info:button, PreventDefault:false, e:e }; //PreventDefault 是否阻止内置的点击处理
78155
78222
  event.Callback(event,data,this);
78156
78223
  if (data.PreventDefault) return;
78157
78224
  }
@@ -80248,17 +80315,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
80248
80315
  return aryMenu;
80249
80316
  }
80250
80317
 
80251
- this.PopupRightMenuV2=function(data,e)
80252
- {
80253
- if (!this.JSPopMenu) return;
80254
- var x=data.X, y=data.Y;
80255
- var frameID=data.FrameID;
80256
- var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
80257
- menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
80258
-
80259
- this.PopuMenuByRClick(menuData, x, y);
80260
- }
80261
-
80262
80318
  this.OnWheel=function(e)
80263
80319
  {
80264
80320
  JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);
@@ -134275,6 +134331,8 @@ function JSPopMenu()
134275
134331
  {
134276
134332
  this.Clear();
134277
134333
 
134334
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Menu)) return;
134335
+
134278
134336
  var root=document.createElement("div");
134279
134337
  root.className="UMyChart_PopMenu";
134280
134338
 
@@ -134291,6 +134349,13 @@ function JSPopMenu()
134291
134349
  for(var i=0;i<data.Menu.length;++i)
134292
134350
  {
134293
134351
  var item=data.Menu[i];
134352
+ if (item.Name==JSPopMenu.SEPARATOR_LINE_NAME)
134353
+ {
134354
+ var trSeparator=this.CreateSeparatorTr();
134355
+ if (trSeparator) tbody.appendChild(trSeparator);
134356
+ continue;
134357
+ }
134358
+
134294
134359
  var trDom=this.CreateMenu(rootData, item);
134295
134360
  tbody.appendChild(trDom);
134296
134361
  }
@@ -134387,21 +134452,8 @@ function JSPopMenu()
134387
134452
  var subItem=item.SubMenu[i];
134388
134453
  if (subItem.Name==JSPopMenu.SEPARATOR_LINE_NAME)
134389
134454
  {
134390
- var trSeparator=document.createElement("tr");
134391
- trSeparator.className='UMyChart_MenuItem_Tr_Separator';
134392
- var tdDom=document.createElement("td");
134393
- tdDom.className="UMyChart_MenuItem_Td_Status_Separator";
134394
- trSeparator.appendChild(tdDom);
134395
- var tdDom=document.createElement("td");
134396
- tdDom.className="UMyChart_MenuItem_Td_Separator";
134397
- trSeparator.appendChild(tdDom);
134398
- var tdDom=document.createElement("td");
134399
- tdDom.className="UMyChart_MenuItem_Td_Separator";
134400
- trSeparator.appendChild(tdDom);
134401
- var tdDom=document.createElement("td");
134402
- tdDom.className="UMyChart_MenuItem_Td_Separator";
134403
- trSeparator.appendChild(tdDom);
134404
- subTbody.appendChild(trSeparator);
134455
+ var trSeparator=this.CreateSeparatorTr();
134456
+ if (trSeparator) subTbody.appendChild(trSeparator);
134405
134457
  continue;
134406
134458
  }
134407
134459
 
@@ -134423,6 +134475,30 @@ function JSPopMenu()
134423
134475
  return trDom;
134424
134476
  }
134425
134477
 
134478
+ this.CreateSeparatorTr=function()
134479
+ {
134480
+ var trSeparator=document.createElement("tr");
134481
+ trSeparator.className='UMyChart_MenuItem_Tr_Separator';
134482
+
134483
+ var tdDom=document.createElement("td");
134484
+ tdDom.className="UMyChart_MenuItem_Td_Status_Separator";
134485
+ trSeparator.appendChild(tdDom);
134486
+
134487
+ var tdDom=document.createElement("td");
134488
+ tdDom.className="UMyChart_MenuItem_Td_Separator";
134489
+ trSeparator.appendChild(tdDom);
134490
+
134491
+ var tdDom=document.createElement("td");
134492
+ tdDom.className="UMyChart_MenuItem_Td_Separator";
134493
+ trSeparator.appendChild(tdDom);
134494
+
134495
+ var tdDom=document.createElement("td");
134496
+ tdDom.className="UMyChart_MenuItem_Td_Separator";
134497
+ trSeparator.appendChild(tdDom);
134498
+
134499
+ return trSeparator;
134500
+ }
134501
+
134426
134502
  //弹tab菜单
134427
134503
  this.PopupMenuByTab=function(rtTab)
134428
134504
  {
@@ -134459,6 +134535,24 @@ function JSPopMenu()
134459
134535
  this.RootDOM.style.left = x + "px";
134460
134536
  }
134461
134537
 
134538
+ //下拉菜单
134539
+ this.PopupMenuByDrapdown=function(rtButton)
134540
+ {
134541
+ if (!this.RootDOM) return;
134542
+ if (!rtButton) return;
134543
+
134544
+ var xLeft=rtButton.Left;
134545
+ var yTop=rtButton.Bottom;
134546
+ var menuHeight=this.RootDOM.offsetHeight;
134547
+ var yMenuBottom=yTop+menuHeight;
134548
+ var yBottom=window.innerHeight-15;
134549
+ if (yMenuBottom>yBottom) yTop=rtButton.Top-menuHeight;
134550
+
134551
+ this.RootDOM.style.visibility='visible';
134552
+ this.RootDOM.style.top = yTop + "px";
134553
+ this.RootDOM.style.left = xLeft + "px";
134554
+ }
134555
+
134462
134556
  this.OnClickMenu=function(e, item, bSubMenu)
134463
134557
  {
134464
134558
  console.log("[JSPopMenu::OnClickMenu] e=, item=, bSubMenu", e, item, bSubMenu);
@@ -134664,7 +134758,7 @@ function HQChartScriptWorker()
134664
134758
 
134665
134759
 
134666
134760
 
134667
- var HQCHART_VERSION="1.1.13190";
134761
+ var HQCHART_VERSION="1.1.13196";
134668
134762
 
134669
134763
  function PrintHQChartVersion()
134670
134764
  {