hqchart 1.1.13194 → 1.1.13199

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13194",
3
+ "version": "1.1.13199",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -2515,7 +2515,9 @@ var JSCHART_EVENT_ID=
2515
2515
  ON_CLICK_TREPORT_ROW:127, //左键点击点击T型报价列表
2516
2516
 
2517
2517
 
2518
- ON_CHANGE_INDEX:150, //切换指标
2518
+ ON_CHANGE_INDEX:150, //切换指标
2519
+ ON_MENU_COMMAND:151, //菜单时间回调
2520
+ ON_CREATE_RIGHT_MENU:152, //创建右键菜单
2519
2521
  }
2520
2522
 
2521
2523
  var JSCHART_OPERATOR_ID=
@@ -9076,14 +9078,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9076
9078
  this.JSPopMenu.PopupMenuByRight(x,y);
9077
9079
  }
9078
9080
 
9079
- //点击右键菜单
9080
- this.OnClickRightMenu=function(data)
9081
+ //菜单命令
9082
+ this.ExecuteMenuCommand=function(cmdID, aryArgs)
9081
9083
  {
9082
- JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
9083
- if (!data || !data.Data) return;
9084
+ JSConsole.Chart.Log('[JSChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
9084
9085
 
9085
- var cmdID=data.Data.ID; //命令ID
9086
- var aryArgs=data.Data.Args; //参数
9087
9086
  var param=null, srcParam=null; //原始值
9088
9087
  if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
9089
9088
  {
@@ -9259,6 +9258,44 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9259
9258
  break;
9260
9259
  }
9261
9260
  }
9261
+
9262
+ //点击右键菜单
9263
+ this.OnClickRightMenu=function(data)
9264
+ {
9265
+ JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
9266
+ if (!data || !data.Data) return;
9267
+
9268
+ var cmdID=data.Data.ID; //命令ID
9269
+ var aryArgs=data.Data.Args; //参数
9270
+
9271
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
9272
+ if (event && event.Callback)
9273
+ {
9274
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data };
9275
+ event.Callback(event,data,this);
9276
+ if (data.PreventDefault) return;
9277
+ }
9278
+
9279
+ this.ExecuteMenuCommand(cmdID, aryArgs);
9280
+ }
9281
+
9282
+ this.PopupRightMenuV2=function(data,e)
9283
+ {
9284
+ if (!this.JSPopMenu) return;
9285
+ var x=data.X, y=data.Y;
9286
+ var frameID=data.FrameID;
9287
+ var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
9288
+ menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
9289
+
9290
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU);
9291
+ if (event && event.Callback)
9292
+ {
9293
+ var sendData={ MenuData:menuData, FrameID:frameID };
9294
+ event.Callback(event, sendData, this);
9295
+ }
9296
+
9297
+ this.PopupMenuByRClick(menuData, x, y);
9298
+ }
9262
9299
  }
9263
9300
 
9264
9301
  function GetDevicePixelRatio()
@@ -55998,8 +56035,11 @@ function ChartDrawHLine()
55998
56035
  {
55999
56036
  var item=option.Button;
56000
56037
  if (item.CloseIcon) this.Button.CloseIcon=CloneData(item.CloseIcon);
56038
+ else if (item.CloseIcon===null) this.Button.CloseIcon=null;
56001
56039
  if (item.SettingIcon) this.Button.SettingIcon=CloneData(item.SettingIcon);
56040
+ else if (item.SettingIcon===null) this.Button.SettingIcon=null;
56002
56041
  }
56042
+
56003
56043
  if (option.ExtendData) this.ExtendData=option.ExtendData;
56004
56044
 
56005
56045
  if (IFrameSplitOperator.IsNonEmptyArray(option.IsShowPriceText))
@@ -72645,6 +72685,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72645
72685
  { Name:"均线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "均线"]}},
72646
72686
  { Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BOLL"]}},
72647
72687
  { Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
72688
+ { Name:"MACD(粗)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD2"]}},
72648
72689
  { Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
72649
72690
  { Name:"VOL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "VOL"]}},
72650
72691
  { Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
@@ -72839,16 +72880,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72839
72880
  return aryMenu;
72840
72881
  }
72841
72882
 
72842
- this.PopupRightMenuV2=function(data,e)
72843
- {
72844
- if (!this.JSPopMenu) return;
72845
- var x=data.X, y=data.Y;
72846
- var frameID=data.FrameID;
72847
- var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
72848
- menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
72849
72883
 
72850
- this.PopupMenuByRClick(menuData, x, y);
72851
- }
72852
72884
 
72853
72885
  this.PopupSelectRectMenuV2=function(data, e)
72854
72886
  {
@@ -76347,17 +76379,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
76347
76379
  return aryMenu;
76348
76380
  }
76349
76381
 
76350
- this.PopupRightMenuV2=function(data,e)
76351
- {
76352
- if (!this.JSPopMenu) return;
76353
- var x=data.X, y=data.Y;
76354
- var frameID=data.FrameID;
76355
- var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
76356
- menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
76357
-
76358
- this.PopupMenuByRClick(menuData, x, y);
76359
- }
76360
-
76361
76382
  this.OnWheel=function(e)
76362
76383
  {
76363
76384
  JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);
@@ -78212,7 +78233,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78212
78233
  if (!this.mapEvent.has(JSCHART_EVENT_ID.RECV_MINUTE_DATA)) return;
78213
78234
 
78214
78235
  var event=this.mapEvent.get(JSCHART_EVENT_ID.RECV_MINUTE_DATA);
78215
- var data={ MinuteData:this.SourceData, Stock:{ Symbol:this.Symbol, Name:this.Name }, Option:option };
78236
+ var data={ MinuteData:this.SourceData, Stock:{ Symbol:this.Symbol, Name:this.Name }, Option:option, DataStatus:this.DataStatus };
78216
78237
  event.Callback(event,data,this);
78217
78238
  }
78218
78239
 
@@ -78410,6 +78431,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78410
78431
  if (this.IsBeforeData) this.BeforeOpenData=beforeOpenData;
78411
78432
  if (this.IsAfterData) this.AfterCloseData=afterCloseData;
78412
78433
 
78434
+ var bFirstData=(this.DataStatus.LatestDay==false); //首条单日数据
78413
78435
  this.DataStatus.LatestDay=true;
78414
78436
 
78415
78437
  if (this.DayCount>1) //多日走势图
@@ -78498,7 +78520,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78498
78520
  var chartInfo=this.GetChartMinuteInfo();
78499
78521
  if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
78500
78522
 
78501
- this.RecvMinuteDataEvent( {FunctionName:"RecvMinuteData"} );
78523
+ this.RecvMinuteDataEvent( {FunctionName:"RecvMinuteData", Day:{ IsFirstData:bFirstData} } );
78502
78524
  this.RequestMinuteInfoData();
78503
78525
  this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
78504
78526
  this.CreateChartDrawPictureByStorage(); //创建画图工具
@@ -41,6 +41,8 @@ function JSPopMenu()
41
41
  {
42
42
  this.Clear();
43
43
 
44
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Menu)) return;
45
+
44
46
  var root=document.createElement("div");
45
47
  root.className="UMyChart_PopMenu";
46
48
 
@@ -57,6 +59,13 @@ function JSPopMenu()
57
59
  for(var i=0;i<data.Menu.length;++i)
58
60
  {
59
61
  var item=data.Menu[i];
62
+ if (item.Name==JSPopMenu.SEPARATOR_LINE_NAME)
63
+ {
64
+ var trSeparator=this.CreateSeparatorTr();
65
+ if (trSeparator) tbody.appendChild(trSeparator);
66
+ continue;
67
+ }
68
+
60
69
  var trDom=this.CreateMenu(rootData, item);
61
70
  tbody.appendChild(trDom);
62
71
  }
@@ -153,21 +162,8 @@ function JSPopMenu()
153
162
  var subItem=item.SubMenu[i];
154
163
  if (subItem.Name==JSPopMenu.SEPARATOR_LINE_NAME)
155
164
  {
156
- var trSeparator=document.createElement("tr");
157
- trSeparator.className='UMyChart_MenuItem_Tr_Separator';
158
- var tdDom=document.createElement("td");
159
- tdDom.className="UMyChart_MenuItem_Td_Status_Separator";
160
- trSeparator.appendChild(tdDom);
161
- var tdDom=document.createElement("td");
162
- tdDom.className="UMyChart_MenuItem_Td_Separator";
163
- trSeparator.appendChild(tdDom);
164
- var tdDom=document.createElement("td");
165
- tdDom.className="UMyChart_MenuItem_Td_Separator";
166
- trSeparator.appendChild(tdDom);
167
- var tdDom=document.createElement("td");
168
- tdDom.className="UMyChart_MenuItem_Td_Separator";
169
- trSeparator.appendChild(tdDom);
170
- subTbody.appendChild(trSeparator);
165
+ var trSeparator=this.CreateSeparatorTr();
166
+ if (trSeparator) subTbody.appendChild(trSeparator);
171
167
  continue;
172
168
  }
173
169
 
@@ -189,6 +185,30 @@ function JSPopMenu()
189
185
  return trDom;
190
186
  }
191
187
 
188
+ this.CreateSeparatorTr=function()
189
+ {
190
+ var trSeparator=document.createElement("tr");
191
+ trSeparator.className='UMyChart_MenuItem_Tr_Separator';
192
+
193
+ var tdDom=document.createElement("td");
194
+ tdDom.className="UMyChart_MenuItem_Td_Status_Separator";
195
+ trSeparator.appendChild(tdDom);
196
+
197
+ var tdDom=document.createElement("td");
198
+ tdDom.className="UMyChart_MenuItem_Td_Separator";
199
+ trSeparator.appendChild(tdDom);
200
+
201
+ var tdDom=document.createElement("td");
202
+ tdDom.className="UMyChart_MenuItem_Td_Separator";
203
+ trSeparator.appendChild(tdDom);
204
+
205
+ var tdDom=document.createElement("td");
206
+ tdDom.className="UMyChart_MenuItem_Td_Separator";
207
+ trSeparator.appendChild(tdDom);
208
+
209
+ return trSeparator;
210
+ }
211
+
192
212
  //弹tab菜单
193
213
  this.PopupMenuByTab=function(rtTab)
194
214
  {
@@ -6407,7 +6407,9 @@ var JSCHART_EVENT_ID=
6407
6407
  ON_CLICK_TREPORT_ROW:127, //左键点击点击T型报价列表
6408
6408
 
6409
6409
 
6410
- ON_CHANGE_INDEX:150, //切换指标
6410
+ ON_CHANGE_INDEX:150, //切换指标
6411
+ ON_MENU_COMMAND:151, //菜单时间回调
6412
+ ON_CREATE_RIGHT_MENU:152, //创建右键菜单
6411
6413
  }
6412
6414
 
6413
6415
  var JSCHART_OPERATOR_ID=
@@ -12968,14 +12970,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12968
12970
  this.JSPopMenu.PopupMenuByRight(x,y);
12969
12971
  }
12970
12972
 
12971
- //点击右键菜单
12972
- this.OnClickRightMenu=function(data)
12973
+ //菜单命令
12974
+ this.ExecuteMenuCommand=function(cmdID, aryArgs)
12973
12975
  {
12974
- JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
12975
- if (!data || !data.Data) return;
12976
+ JSConsole.Chart.Log('[JSChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
12976
12977
 
12977
- var cmdID=data.Data.ID; //命令ID
12978
- var aryArgs=data.Data.Args; //参数
12979
12978
  var param=null, srcParam=null; //原始值
12980
12979
  if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
12981
12980
  {
@@ -13151,6 +13150,44 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13151
13150
  break;
13152
13151
  }
13153
13152
  }
13153
+
13154
+ //点击右键菜单
13155
+ this.OnClickRightMenu=function(data)
13156
+ {
13157
+ JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
13158
+ if (!data || !data.Data) return;
13159
+
13160
+ var cmdID=data.Data.ID; //命令ID
13161
+ var aryArgs=data.Data.Args; //参数
13162
+
13163
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
13164
+ if (event && event.Callback)
13165
+ {
13166
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data };
13167
+ event.Callback(event,data,this);
13168
+ if (data.PreventDefault) return;
13169
+ }
13170
+
13171
+ this.ExecuteMenuCommand(cmdID, aryArgs);
13172
+ }
13173
+
13174
+ this.PopupRightMenuV2=function(data,e)
13175
+ {
13176
+ if (!this.JSPopMenu) return;
13177
+ var x=data.X, y=data.Y;
13178
+ var frameID=data.FrameID;
13179
+ var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
13180
+ menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
13181
+
13182
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU);
13183
+ if (event && event.Callback)
13184
+ {
13185
+ var sendData={ MenuData:menuData, FrameID:frameID };
13186
+ event.Callback(event, sendData, this);
13187
+ }
13188
+
13189
+ this.PopupMenuByRClick(menuData, x, y);
13190
+ }
13154
13191
  }
13155
13192
 
13156
13193
  function GetDevicePixelRatio()
@@ -59890,8 +59927,11 @@ function ChartDrawHLine()
59890
59927
  {
59891
59928
  var item=option.Button;
59892
59929
  if (item.CloseIcon) this.Button.CloseIcon=CloneData(item.CloseIcon);
59930
+ else if (item.CloseIcon===null) this.Button.CloseIcon=null;
59893
59931
  if (item.SettingIcon) this.Button.SettingIcon=CloneData(item.SettingIcon);
59932
+ else if (item.SettingIcon===null) this.Button.SettingIcon=null;
59894
59933
  }
59934
+
59895
59935
  if (option.ExtendData) this.ExtendData=option.ExtendData;
59896
59936
 
59897
59937
  if (IFrameSplitOperator.IsNonEmptyArray(option.IsShowPriceText))
@@ -76537,6 +76577,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
76537
76577
  { Name:"均线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "均线"]}},
76538
76578
  { Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BOLL"]}},
76539
76579
  { Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
76580
+ { Name:"MACD(粗)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD2"]}},
76540
76581
  { Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
76541
76582
  { Name:"VOL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "VOL"]}},
76542
76583
  { Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
@@ -76731,16 +76772,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
76731
76772
  return aryMenu;
76732
76773
  }
76733
76774
 
76734
- this.PopupRightMenuV2=function(data,e)
76735
- {
76736
- if (!this.JSPopMenu) return;
76737
- var x=data.X, y=data.Y;
76738
- var frameID=data.FrameID;
76739
- var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
76740
- menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
76741
76775
 
76742
- this.PopupMenuByRClick(menuData, x, y);
76743
- }
76744
76776
 
76745
76777
  this.PopupSelectRectMenuV2=function(data, e)
76746
76778
  {
@@ -80239,17 +80271,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
80239
80271
  return aryMenu;
80240
80272
  }
80241
80273
 
80242
- this.PopupRightMenuV2=function(data,e)
80243
- {
80244
- if (!this.JSPopMenu) return;
80245
- var x=data.X, y=data.Y;
80246
- var frameID=data.FrameID;
80247
- var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
80248
- menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
80249
-
80250
- this.PopupMenuByRClick(menuData, x, y);
80251
- }
80252
-
80253
80274
  this.OnWheel=function(e)
80254
80275
  {
80255
80276
  JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);
@@ -82104,7 +82125,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
82104
82125
  if (!this.mapEvent.has(JSCHART_EVENT_ID.RECV_MINUTE_DATA)) return;
82105
82126
 
82106
82127
  var event=this.mapEvent.get(JSCHART_EVENT_ID.RECV_MINUTE_DATA);
82107
- var data={ MinuteData:this.SourceData, Stock:{ Symbol:this.Symbol, Name:this.Name }, Option:option };
82128
+ var data={ MinuteData:this.SourceData, Stock:{ Symbol:this.Symbol, Name:this.Name }, Option:option, DataStatus:this.DataStatus };
82108
82129
  event.Callback(event,data,this);
82109
82130
  }
82110
82131
 
@@ -82302,6 +82323,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
82302
82323
  if (this.IsBeforeData) this.BeforeOpenData=beforeOpenData;
82303
82324
  if (this.IsAfterData) this.AfterCloseData=afterCloseData;
82304
82325
 
82326
+ var bFirstData=(this.DataStatus.LatestDay==false); //首条单日数据
82305
82327
  this.DataStatus.LatestDay=true;
82306
82328
 
82307
82329
  if (this.DayCount>1) //多日走势图
@@ -82390,7 +82412,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
82390
82412
  var chartInfo=this.GetChartMinuteInfo();
82391
82413
  if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
82392
82414
 
82393
- this.RecvMinuteDataEvent( {FunctionName:"RecvMinuteData"} );
82415
+ this.RecvMinuteDataEvent( {FunctionName:"RecvMinuteData", Day:{ IsFirstData:bFirstData} } );
82394
82416
  this.RequestMinuteInfoData();
82395
82417
  this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
82396
82418
  this.CreateChartDrawPictureByStorage(); //创建画图工具
@@ -131824,7 +131846,7 @@ function ScrollBarBGChart()
131824
131846
 
131825
131847
 
131826
131848
 
131827
- var HQCHART_VERSION="1.1.13193";
131849
+ var HQCHART_VERSION="1.1.13198";
131828
131850
 
131829
131851
  function PrintHQChartVersion()
131830
131852
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13193";
8
+ var HQCHART_VERSION="1.1.13198";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -6451,7 +6451,9 @@ var JSCHART_EVENT_ID=
6451
6451
  ON_CLICK_TREPORT_ROW:127, //左键点击点击T型报价列表
6452
6452
 
6453
6453
 
6454
- ON_CHANGE_INDEX:150, //切换指标
6454
+ ON_CHANGE_INDEX:150, //切换指标
6455
+ ON_MENU_COMMAND:151, //菜单时间回调
6456
+ ON_CREATE_RIGHT_MENU:152, //创建右键菜单
6455
6457
  }
6456
6458
 
6457
6459
  var JSCHART_OPERATOR_ID=
@@ -13012,14 +13014,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13012
13014
  this.JSPopMenu.PopupMenuByRight(x,y);
13013
13015
  }
13014
13016
 
13015
- //点击右键菜单
13016
- this.OnClickRightMenu=function(data)
13017
+ //菜单命令
13018
+ this.ExecuteMenuCommand=function(cmdID, aryArgs)
13017
13019
  {
13018
- JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
13019
- if (!data || !data.Data) return;
13020
+ JSConsole.Chart.Log('[JSChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
13020
13021
 
13021
- var cmdID=data.Data.ID; //命令ID
13022
- var aryArgs=data.Data.Args; //参数
13023
13022
  var param=null, srcParam=null; //原始值
13024
13023
  if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
13025
13024
  {
@@ -13195,6 +13194,44 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13195
13194
  break;
13196
13195
  }
13197
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
+ }
13198
13235
  }
13199
13236
 
13200
13237
  function GetDevicePixelRatio()
@@ -59934,8 +59971,11 @@ function ChartDrawHLine()
59934
59971
  {
59935
59972
  var item=option.Button;
59936
59973
  if (item.CloseIcon) this.Button.CloseIcon=CloneData(item.CloseIcon);
59974
+ else if (item.CloseIcon===null) this.Button.CloseIcon=null;
59937
59975
  if (item.SettingIcon) this.Button.SettingIcon=CloneData(item.SettingIcon);
59976
+ else if (item.SettingIcon===null) this.Button.SettingIcon=null;
59938
59977
  }
59978
+
59939
59979
  if (option.ExtendData) this.ExtendData=option.ExtendData;
59940
59980
 
59941
59981
  if (IFrameSplitOperator.IsNonEmptyArray(option.IsShowPriceText))
@@ -76581,6 +76621,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
76581
76621
  { Name:"均线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "均线"]}},
76582
76622
  { Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BOLL"]}},
76583
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"]}},
76584
76625
  { Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
76585
76626
  { Name:"VOL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "VOL"]}},
76586
76627
  { Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
@@ -76775,16 +76816,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
76775
76816
  return aryMenu;
76776
76817
  }
76777
76818
 
76778
- this.PopupRightMenuV2=function(data,e)
76779
- {
76780
- if (!this.JSPopMenu) return;
76781
- var x=data.X, y=data.Y;
76782
- var frameID=data.FrameID;
76783
- var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
76784
- menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
76785
76819
 
76786
- this.PopupMenuByRClick(menuData, x, y);
76787
- }
76788
76820
 
76789
76821
  this.PopupSelectRectMenuV2=function(data, e)
76790
76822
  {
@@ -80283,17 +80315,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
80283
80315
  return aryMenu;
80284
80316
  }
80285
80317
 
80286
- this.PopupRightMenuV2=function(data,e)
80287
- {
80288
- if (!this.JSPopMenu) return;
80289
- var x=data.X, y=data.Y;
80290
- var frameID=data.FrameID;
80291
- var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
80292
- menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
80293
-
80294
- this.PopupMenuByRClick(menuData, x, y);
80295
- }
80296
-
80297
80318
  this.OnWheel=function(e)
80298
80319
  {
80299
80320
  JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);
@@ -82148,7 +82169,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
82148
82169
  if (!this.mapEvent.has(JSCHART_EVENT_ID.RECV_MINUTE_DATA)) return;
82149
82170
 
82150
82171
  var event=this.mapEvent.get(JSCHART_EVENT_ID.RECV_MINUTE_DATA);
82151
- var data={ MinuteData:this.SourceData, Stock:{ Symbol:this.Symbol, Name:this.Name }, Option:option };
82172
+ var data={ MinuteData:this.SourceData, Stock:{ Symbol:this.Symbol, Name:this.Name }, Option:option, DataStatus:this.DataStatus };
82152
82173
  event.Callback(event,data,this);
82153
82174
  }
82154
82175
 
@@ -82346,6 +82367,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
82346
82367
  if (this.IsBeforeData) this.BeforeOpenData=beforeOpenData;
82347
82368
  if (this.IsAfterData) this.AfterCloseData=afterCloseData;
82348
82369
 
82370
+ var bFirstData=(this.DataStatus.LatestDay==false); //首条单日数据
82349
82371
  this.DataStatus.LatestDay=true;
82350
82372
 
82351
82373
  if (this.DayCount>1) //多日走势图
@@ -82434,7 +82456,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
82434
82456
  var chartInfo=this.GetChartMinuteInfo();
82435
82457
  if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
82436
82458
 
82437
- this.RecvMinuteDataEvent( {FunctionName:"RecvMinuteData"} );
82459
+ this.RecvMinuteDataEvent( {FunctionName:"RecvMinuteData", Day:{ IsFirstData:bFirstData} } );
82438
82460
  this.RequestMinuteInfoData();
82439
82461
  this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
82440
82462
  this.CreateChartDrawPictureByStorage(); //创建画图工具
@@ -134310,6 +134332,8 @@ function JSPopMenu()
134310
134332
  {
134311
134333
  this.Clear();
134312
134334
 
134335
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Menu)) return;
134336
+
134313
134337
  var root=document.createElement("div");
134314
134338
  root.className="UMyChart_PopMenu";
134315
134339
 
@@ -134326,6 +134350,13 @@ function JSPopMenu()
134326
134350
  for(var i=0;i<data.Menu.length;++i)
134327
134351
  {
134328
134352
  var item=data.Menu[i];
134353
+ if (item.Name==JSPopMenu.SEPARATOR_LINE_NAME)
134354
+ {
134355
+ var trSeparator=this.CreateSeparatorTr();
134356
+ if (trSeparator) tbody.appendChild(trSeparator);
134357
+ continue;
134358
+ }
134359
+
134329
134360
  var trDom=this.CreateMenu(rootData, item);
134330
134361
  tbody.appendChild(trDom);
134331
134362
  }
@@ -134422,21 +134453,8 @@ function JSPopMenu()
134422
134453
  var subItem=item.SubMenu[i];
134423
134454
  if (subItem.Name==JSPopMenu.SEPARATOR_LINE_NAME)
134424
134455
  {
134425
- var trSeparator=document.createElement("tr");
134426
- trSeparator.className='UMyChart_MenuItem_Tr_Separator';
134427
- var tdDom=document.createElement("td");
134428
- tdDom.className="UMyChart_MenuItem_Td_Status_Separator";
134429
- trSeparator.appendChild(tdDom);
134430
- var tdDom=document.createElement("td");
134431
- tdDom.className="UMyChart_MenuItem_Td_Separator";
134432
- trSeparator.appendChild(tdDom);
134433
- var tdDom=document.createElement("td");
134434
- tdDom.className="UMyChart_MenuItem_Td_Separator";
134435
- trSeparator.appendChild(tdDom);
134436
- var tdDom=document.createElement("td");
134437
- tdDom.className="UMyChart_MenuItem_Td_Separator";
134438
- trSeparator.appendChild(tdDom);
134439
- subTbody.appendChild(trSeparator);
134456
+ var trSeparator=this.CreateSeparatorTr();
134457
+ if (trSeparator) subTbody.appendChild(trSeparator);
134440
134458
  continue;
134441
134459
  }
134442
134460
 
@@ -134458,6 +134476,30 @@ function JSPopMenu()
134458
134476
  return trDom;
134459
134477
  }
134460
134478
 
134479
+ this.CreateSeparatorTr=function()
134480
+ {
134481
+ var trSeparator=document.createElement("tr");
134482
+ trSeparator.className='UMyChart_MenuItem_Tr_Separator';
134483
+
134484
+ var tdDom=document.createElement("td");
134485
+ tdDom.className="UMyChart_MenuItem_Td_Status_Separator";
134486
+ trSeparator.appendChild(tdDom);
134487
+
134488
+ var tdDom=document.createElement("td");
134489
+ tdDom.className="UMyChart_MenuItem_Td_Separator";
134490
+ trSeparator.appendChild(tdDom);
134491
+
134492
+ var tdDom=document.createElement("td");
134493
+ tdDom.className="UMyChart_MenuItem_Td_Separator";
134494
+ trSeparator.appendChild(tdDom);
134495
+
134496
+ var tdDom=document.createElement("td");
134497
+ tdDom.className="UMyChart_MenuItem_Td_Separator";
134498
+ trSeparator.appendChild(tdDom);
134499
+
134500
+ return trSeparator;
134501
+ }
134502
+
134461
134503
  //弹tab菜单
134462
134504
  this.PopupMenuByTab=function(rtTab)
134463
134505
  {
@@ -134717,7 +134759,7 @@ function HQChartScriptWorker()
134717
134759
 
134718
134760
 
134719
134761
 
134720
- var HQCHART_VERSION="1.1.13193";
134762
+ var HQCHART_VERSION="1.1.13198";
134721
134763
 
134722
134764
  function PrintHQChartVersion()
134723
134765
  {