hqchart 1.1.13490 → 1.1.13497

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.13490",
3
+ "version": "1.1.13497",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -48760,6 +48760,22 @@ HQData.NetworkFilter=function(data, callback)
48760
48760
  case "TradeDetail::RequestData":
48761
48761
  HQData.TradeDetail_RequestData(data,callback);
48762
48762
  break;
48763
+
48764
+ //////////////////////////////////////////////////////
48765
+ //报价列表数据
48766
+ case "JSReportChartContainer::RequestStockListData":
48767
+ HQData.Report_RequestStockListData(data, callback); //码表
48768
+ break;
48769
+
48770
+ case "JSReportChartContainer::RequestMemberListData": //板块成分
48771
+ HQData.Report_RequestMemberListDat(data, callback);
48772
+ break;
48773
+ case "JSDealChartContainer::RequestStockData": //股票数据更新
48774
+ HQData.Report_RequestStockData(data, callback);
48775
+ break;
48776
+ case "JSDealChartContainer::RequestStockSortData": //股票排序数据
48777
+ HQData.Report_RequestStockSortData(data, callback);
48778
+ break;
48763
48779
  }
48764
48780
  }
48765
48781
 
@@ -49170,3 +49186,284 @@ HQData.RequestOverlayHistoryMinuteData=function(data, callback)
49170
49186
  }
49171
49187
 
49172
49188
 
49189
+ //////////////////////////////////////////////////////////////////////////////////////
49190
+ // 报价列表
49191
+ //
49192
+ //
49193
+ /////////////////////////////////////////////////////////////////////////////////////
49194
+
49195
+ //码表
49196
+ HQData.Report_RequestStockListData=function(data, callback)
49197
+ {
49198
+ data.PreventDefault=true;
49199
+
49200
+ var hqchartData={ data:[] };
49201
+
49202
+ if (IFrameSplitOperator.IsNonEmptyArray(SHSZ_STOCK_LIST_TEST_DATA.symbol))
49203
+ {
49204
+ //0=证券代码 1=股票名称
49205
+ for(var i=0;i<SHSZ_STOCK_LIST_TEST_DATA.symbol.length;++i)
49206
+ {
49207
+ var symbol=SHSZ_STOCK_LIST_TEST_DATA.symbol[i];
49208
+ var name=SHSZ_STOCK_LIST_TEST_DATA.name[i];
49209
+
49210
+ hqchartData.data.push([symbol,name]);
49211
+ }
49212
+ }
49213
+
49214
+ console.log("[HQData.Report_RequestStockListData] hqchartData",hqchartData);
49215
+ callback(hqchartData);
49216
+
49217
+ }
49218
+
49219
+ //板块|行业等成分列表
49220
+ HQData.Report_RequestMemberListDat=function(data, callback)
49221
+ {
49222
+ var symbol=data.Request.Data.symbol; //板块代码
49223
+ data.PreventDefault=true;
49224
+
49225
+ var hqchartData= { symbol:symbol , name:symbol, data:[] , code:0 };
49226
+ var testDataCount=SHSZ_STOCK_LIST_TEST_DATA.symbol.length;
49227
+ var testIndex=Math.round(Math.random()*(testDataCount-100));
49228
+ var count=parseInt(Math.random()*(200)+100); ;
49229
+
49230
+ for(var i=testIndex, j=0; i<SHSZ_STOCK_LIST_TEST_DATA.symbol.length && j<count; ++i, ++j)
49231
+ {
49232
+ hqchartData.data.push(SHSZ_STOCK_LIST_TEST_DATA.symbol[i]);
49233
+ }
49234
+
49235
+ callback(hqchartData);
49236
+ }
49237
+
49238
+ HQData.Report_RequestStockData=function(data, callback)
49239
+ {
49240
+ var stocks=data.Request.Data.stocks; //股票列表
49241
+ data.PreventDefault=true;
49242
+
49243
+ var mapStock=new Map();
49244
+ for(var i=0;i<stocks.length;++i)
49245
+ {
49246
+ var item=stocks[i];
49247
+ mapStock.set(item.Symbol,{ Symbol:item.Symbol, Data:null });
49248
+ }
49249
+
49250
+ if (IFrameSplitOperator.IsNonEmptyArray(SHSZ_STOCK_LIST_TEST_DATA.symbol))
49251
+ {
49252
+ for(var i=0;i<SHSZ_STOCK_LIST_TEST_DATA.symbol.length;++i)
49253
+ {
49254
+ var symbol=SHSZ_STOCK_LIST_TEST_DATA.symbol[i];
49255
+ if (!mapStock.has(symbol)) continue;
49256
+ var item=mapStock.get(symbol);
49257
+ var name=SHSZ_STOCK_LIST_TEST_DATA.name[i];
49258
+ var price=SHSZ_STOCK_LIST_TEST_DATA.close[i];
49259
+ var vol=SHSZ_STOCK_LIST_TEST_DATA.vol[i];
49260
+ var newItem=
49261
+ [
49262
+ symbol,
49263
+ name,
49264
+ SHSZ_STOCK_LIST_TEST_DATA.yclose[i],
49265
+ SHSZ_STOCK_LIST_TEST_DATA.open[i],
49266
+ SHSZ_STOCK_LIST_TEST_DATA.high[i],
49267
+ SHSZ_STOCK_LIST_TEST_DATA.low[i],
49268
+ price,
49269
+ vol,
49270
+ SHSZ_STOCK_LIST_TEST_DATA.amount[i],
49271
+ ];
49272
+
49273
+ //买价 量
49274
+ newItem[9]=price+0.05;
49275
+ newItem[10]=10;
49276
+
49277
+ //卖价 量
49278
+ newItem[11]=price-0.06;
49279
+ newItem[12]=5;
49280
+
49281
+ //均价
49282
+ newItem[13]=price-0.03;
49283
+
49284
+ //内盘
49285
+ newItem[18]=vol/4;
49286
+ //外盘
49287
+ newItem[19]=vol/5;
49288
+
49289
+ newItem[14]=vol*1.5; //流通股本
49290
+ newItem[15]=vol*1.8; //总股本
49291
+
49292
+ //换手率
49293
+ newItem[23]=(Math.round(Math.random()*60))/100;
49294
+
49295
+ //名字字段
49296
+ var symbolEx={ Text:name };
49297
+ if (i%20==5)
49298
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue629', Color:'rgb(255,165,0)'}, { Text:'\ue627', Color:'#1c65db'} ] };
49299
+ else if (i%20==9)
49300
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue629', Color:'rgb(255,165,0)'}] } ;
49301
+ else if (i%20==18)
49302
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue627', Color:'#1c65db'}] } ;
49303
+
49304
+ newItem[27]=symbolEx;
49305
+
49306
+
49307
+ //扩展数据 (定制数据)
49308
+ var extendData=[];
49309
+ newItem[30]=extendData;
49310
+
49311
+ //行业
49312
+ extendData[0]="行业X";
49313
+ //地区
49314
+ extendData[1]="地区X";
49315
+
49316
+ //PE|PB
49317
+ extendData[2]=(Math.round(Math.random()*60))/100;
49318
+ extendData[3]=(Math.round(Math.random()*60))/100;
49319
+ extendData[4]=(Math.round(Math.random()*60))/100;
49320
+ extendData[5]=(Math.round(Math.random()*60))/100;
49321
+
49322
+
49323
+ //周涨幅
49324
+ extendData[6]=(Math.round(Math.random()*60))/100;
49325
+ extendData[7]=(Math.round(Math.random()*60))/100;
49326
+ extendData[8]=(Math.round(Math.random()*60))/100;
49327
+
49328
+
49329
+ item.Data=newItem;
49330
+ }
49331
+ }
49332
+
49333
+ var hqchartData={ data:[], code:0 };
49334
+
49335
+ for(var mapItem of mapStock)
49336
+ {
49337
+ var item=mapItem[1];
49338
+ if (!item.Data) continue;
49339
+
49340
+ hqchartData.data.push(item.Data);
49341
+ }
49342
+
49343
+ callback(hqchartData);
49344
+ }
49345
+
49346
+ HQData.Report_RequestStockSortData=function(data, callback)
49347
+ {
49348
+ var blockID=data.Request.Data.symbol; //板块代码
49349
+ var range=data.Request.Data.range; //排序范围
49350
+ var column=data.Request.Data.column; //排序列信息
49351
+ var sortType=data.Request.Data.sort; //排序方向
49352
+ var pageSize=data.Request.Data.pageSize;
49353
+ data.PreventDefault=true;
49354
+
49355
+ var start=range.start;
49356
+ var end=range.end;
49357
+ if (start>0) start-=pageSize;
49358
+ if (start<0) start=0;
49359
+ end+=pageSize;
49360
+
49361
+ var aryData=data.Self.Data.Data.slice(); //所有的股票
49362
+ var mapStock=new Map();
49363
+ var count=end-start+1;
49364
+ for(var i = 0; i < count; i++)
49365
+ {
49366
+ var index = Math.floor(Math.random()*(aryData.length-1));
49367
+ var symbol = aryData[index];
49368
+ mapStock.set(symbol, { Symbol:symbol, Index:i+start, Data:null });
49369
+ aryData.splice(index, 1);
49370
+ }
49371
+
49372
+ if (IFrameSplitOperator.IsNonEmptyArray(SHSZ_STOCK_LIST_TEST_DATA.symbol))
49373
+ {
49374
+ for(var i=0;i<SHSZ_STOCK_LIST_TEST_DATA.symbol.length;++i)
49375
+ {
49376
+ var symbol=SHSZ_STOCK_LIST_TEST_DATA.symbol[i];
49377
+ if (!mapStock.has(symbol)) continue;
49378
+ var item=mapStock.get(symbol);
49379
+ var name=SHSZ_STOCK_LIST_TEST_DATA.name[i];
49380
+ var price=SHSZ_STOCK_LIST_TEST_DATA.close[i];
49381
+ var vol=SHSZ_STOCK_LIST_TEST_DATA.vol[i];
49382
+ var newItem=
49383
+ [
49384
+ symbol,
49385
+ name,
49386
+ SHSZ_STOCK_LIST_TEST_DATA.yclose[i],
49387
+ SHSZ_STOCK_LIST_TEST_DATA.open[i],
49388
+ SHSZ_STOCK_LIST_TEST_DATA.high[i],
49389
+ SHSZ_STOCK_LIST_TEST_DATA.low[i],
49390
+ price,
49391
+ vol,
49392
+ SHSZ_STOCK_LIST_TEST_DATA.amount[i],
49393
+ ];
49394
+
49395
+ //买价 量
49396
+ newItem[9]=price+0.05;
49397
+ newItem[10]=10;
49398
+
49399
+ //卖价 量
49400
+ newItem[11]=price-0.06;
49401
+ newItem[12]=5;
49402
+
49403
+ //均价
49404
+ newItem[13]=price-0.03;
49405
+
49406
+ //内盘
49407
+ newItem[18]=vol/4;
49408
+ //外盘
49409
+ newItem[19]=vol/5;
49410
+
49411
+ newItem[14]=vol*1.5; //流通股本
49412
+ newItem[15]=vol*1.8; //总股本
49413
+
49414
+ //换手率
49415
+ newItem[23]=(Math.round(Math.random()*60))/100;
49416
+
49417
+ //名字字段
49418
+ var symbolEx={ Text:name };
49419
+ if (i%20==5)
49420
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue629', Color:'rgb(255,165,0)'}, { Text:'\ue627', Color:'#1c65db'} ] };
49421
+ else if (i%20==9)
49422
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue629', Color:'rgb(255,165,0)'}] } ;
49423
+ else if (i%20==18)
49424
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue627', Color:'#1c65db'}] } ;
49425
+
49426
+ newItem[27]=symbolEx;
49427
+
49428
+
49429
+ //扩展数据 (定制数据)
49430
+ var extendData=[];
49431
+ newItem[30]=extendData;
49432
+
49433
+ //行业
49434
+ extendData[0]="行业X";
49435
+ //地区
49436
+ extendData[1]="地区X";
49437
+
49438
+ //PE|PB
49439
+ extendData[2]=(Math.round(Math.random()*60))/100;
49440
+ extendData[3]=(Math.round(Math.random()*60))/100;
49441
+ extendData[4]=(Math.round(Math.random()*60))/100;
49442
+ extendData[5]=(Math.round(Math.random()*60))/100;
49443
+
49444
+
49445
+ //周涨幅
49446
+ extendData[6]=(Math.round(Math.random()*60))/100;
49447
+ extendData[7]=(Math.round(Math.random()*60))/100;
49448
+ extendData[8]=(Math.round(Math.random()*60))/100;
49449
+
49450
+
49451
+ item.Data=newItem;
49452
+ }
49453
+ }
49454
+
49455
+ var hqchartData={ data:[], index:[], filedindex:column.index, sort:sortType, symbol:blockID };
49456
+
49457
+ for(var mapItem of mapStock)
49458
+ {
49459
+ var item=mapItem[1];
49460
+ if (!item.Data) continue;
49461
+
49462
+ hqchartData.data.push(item.Data);
49463
+ hqchartData.index.push(item.Index);
49464
+ }
49465
+
49466
+ callback(hqchartData);
49467
+ }
49468
+
49469
+
@@ -2753,6 +2753,9 @@ var JSCHART_MENU_ID=
2753
2753
  CMD_CHANGE_LANGUAGE_ID:37, //语言切换
2754
2754
 
2755
2755
  CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID:38,
2756
+
2757
+
2758
+ CMD_REPORT_CHANGE_BLOCK_ID:60, //报价列表 切换板块ID
2756
2759
  }
2757
2760
 
2758
2761
 
@@ -61,13 +61,23 @@ function JSReportChart(divElement)
61
61
  this.JSChartContainer=chart;
62
62
  this.DivElement.JSChart=this; //div中保存一份
63
63
 
64
+ if (option.EnablePopMenuV2===true) chart.InitalPopMenu();
65
+
64
66
  if (option.Symbol) chart.Symbol=option.Symbol;
65
67
  if (option.Name) chart.Name=option.Name;
66
68
 
67
69
  var requestOption={ Callback:null };
68
70
  if (chart.Symbol) requestOption.Callback=function(){ chart.RequestMemberListData(); };
69
-
70
- chart.RequestStockListData(requestOption); //下载码表
71
+
72
+ if (option.LoadStockList===false)
73
+ {
74
+ chart.ChartSplashPaint.IsEnableSplash=false;
75
+ chart.Draw();
76
+ }
77
+ else
78
+ {
79
+ chart.RequestStockListData(requestOption); //下载码表
80
+ }
71
81
  }
72
82
 
73
83
  this.CreateJSReportChartContainer=function(option)
@@ -335,6 +345,8 @@ function JSReportChartContainer(uielement)
335
345
 
336
346
  this.IsDestroy=false; //是否已经销毁了
337
347
 
348
+ this.JSPopMenu; //内置菜单
349
+
338
350
  this.ChartDestory=function() //销毁
339
351
  {
340
352
  this.IsDestroy=true;
@@ -352,6 +364,14 @@ function JSReportChartContainer(uielement)
352
364
  }
353
365
  }
354
366
 
367
+ this.InitalPopMenu=function() //初始化弹出窗口
368
+ {
369
+ if (this.JSPopMenu) return;
370
+
371
+ this.JSPopMenu=new JSPopMenu(); //内置菜单
372
+ this.JSPopMenu.Inital();
373
+ }
374
+
355
375
  this.AutoScrollPage=function(step)
356
376
  {
357
377
  this.AutoDragScrollTimer=setTimeout(() =>
@@ -795,7 +815,7 @@ function JSReportChartContainer(uielement)
795
815
  if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
796
816
  }
797
817
 
798
- throw { Name:'JSReportChartContainer::RequestMemberListData', Error:'(板块成分数据)不提供内置测试数据' };
818
+ //throw { Name:'JSReportChartContainer::RequestMemberListData', Error:'(板块成分数据)不提供内置测试数据' };
799
819
  }
800
820
 
801
821
  this.RecvMemberListData=function(recvData)
@@ -860,7 +880,7 @@ function JSReportChartContainer(uielement)
860
880
  if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
861
881
  }
862
882
 
863
- throw { Name:'JSReportChartContainer::RequestStockListData', Error:'(码表数据)不提供内置测试数据' };
883
+ //throw { Name:'JSReportChartContainer::RequestStockListData', Error:'(码表数据)不提供内置测试数据' };
864
884
  }
865
885
 
866
886
  this.RecvStockListData=function(data, option)
@@ -1074,7 +1094,7 @@ function JSReportChartContainer(uielement)
1074
1094
  if (obj.PreventDefault==true) return;
1075
1095
  }
1076
1096
 
1077
- throw { Name:'JSReportChartContainer::RequestStockData', Error:'(报价列表股票数据)不提供内置测试数据' };
1097
+ //throw { Name:'JSReportChartContainer::RequestStockData', Error:'(报价列表股票数据)不提供内置测试数据' };
1078
1098
  }
1079
1099
 
1080
1100
  this.RecvStockData=function(data)
@@ -2674,6 +2694,52 @@ function JSReportChartContainer(uielement)
2674
2694
  }
2675
2695
  }
2676
2696
 
2697
+ this.GetTabPopMenu=function(tabItem)
2698
+ {
2699
+ var aryMenu=[ ];
2700
+
2701
+ if (IFrameSplitOperator.IsNonEmptyArray(tabItem.ArySubMenu))
2702
+ {
2703
+ for(var i=0;i<tabItem.ArySubMenu.length;++i)
2704
+ {
2705
+ var item=tabItem.ArySubMenu[i];
2706
+ var menuItem={ Name:item.Title, Data:{ ID:item.CommandID, Args:[item.ID]} };
2707
+
2708
+ aryMenu.push(menuItem);
2709
+ }
2710
+ }
2711
+
2712
+
2713
+ return aryMenu;
2714
+ }
2715
+
2716
+ this.PopupTabMenu=function(menuData, tab, e)
2717
+ {
2718
+ if (!this.JSPopMenu) return;
2719
+
2720
+ var rtTab=tab.Rect;
2721
+ var pixelRatio=GetDevicePixelRatio();
2722
+ var rtCell={ Left:rtTab.Left/pixelRatio, Right:rtTab.Right/pixelRatio, Bottom:rtTab.Bottom/pixelRatio, Top:rtTab.Top/pixelRatio };
2723
+ rtCell.Width=rtCell.Right-rtCell.Left;
2724
+ rtCell.Height=rtCell.Bottom-rtCell.Top;
2725
+
2726
+ var rtClient=this.UIElement.getBoundingClientRect();
2727
+ var rtScroll=GetScrollPosition();
2728
+
2729
+ var offsetLeft=rtClient.left+rtScroll.Left;
2730
+ var offsetTop=rtClient.top+rtScroll.Top;
2731
+ rtCell.Left+=offsetLeft;
2732
+ rtCell.Right+=offsetLeft;
2733
+ rtCell.Top+=offsetTop;
2734
+ rtCell.Bottom+=offsetTop;
2735
+
2736
+ this.JSPopMenu.CreatePopMenu(menuData);
2737
+ this.JSPopMenu.PopupMenuByTab(rtCell);
2738
+
2739
+ if(e.preventDefault) e.preventDefault();
2740
+ if(e.stopPropagation) e.stopPropagation();
2741
+ }
2742
+
2677
2743
  //点击标签
2678
2744
  this.OnClickTab=function(tabData, e)
2679
2745
  {
@@ -2687,36 +2753,80 @@ function JSReportChartContainer(uielement)
2687
2753
 
2688
2754
  if (tabData.Tab.IsMenu)
2689
2755
  {
2756
+ var menuData={ Menu:this.GetTabPopMenu(tabData.Tab), Position:JSPopMenu.POSITION_ID.TAB_MENU_ID };
2757
+ menuData.ClickCallback=(data)=>{ this.OnClickTabPopMenu(tabData, data); }
2758
+
2690
2759
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_REPORT_TABMENU);
2691
2760
  if (event && event.Callback)
2692
2761
  {
2693
- redraw=true;
2694
- var rtItem=tabData.Rect;
2695
- var rtDOM={ Left: rtItem.Left/pixelTatio, Right:rtItem.Right/pixelTatio, Top:rtItem.Top/pixelTatio, Bottom:rtItem.Bottom/pixelTatio };
2696
-
2697
- var sendData={ Data:tabData, IsSide:{X:x, Y:x}, UIElement:uiElement, Rect:rtDOM, e:e , Redraw:redraw };
2762
+ var sendData={ MenuData:menuData, Tab:tabData, PreventDefault:false, e:e };
2698
2763
  event.Callback(event, sendData, this);
2699
- if (IFrameSplitOperator.IsBool(sendData.Redraw)) redraw=sendData.Redraw;
2764
+ if (sendData.PreventDefault==true) return;
2700
2765
  }
2701
2766
 
2702
- this.SetSelectedTab(tabData.Index); //选中tab
2767
+ this.PopupTabMenu(menuData, tabData.Tab, e);
2703
2768
  }
2704
2769
  else
2705
2770
  {
2706
2771
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_REPORT_TAB);
2707
2772
  if (event && event.Callback)
2708
2773
  {
2709
- var sendData={ Data:tabData, IsSide:{X:x, Y:x}, UIElement:uiElement, e:e , Redraw:redraw };
2774
+ var sendData={ Data:tabData, IsSide:{X:x, Y:x}, UIElement:uiElement, e:e , Redraw:redraw, PreventDefault:false };
2710
2775
  event.Callback(event, sendData, this);
2711
2776
  if (IFrameSplitOperator.IsBool(sendData.Redraw)) redraw=sendData.Redraw;
2777
+ if (sendData.PreventDefault==true) return;
2712
2778
  }
2713
2779
 
2714
- this.SetSelectedTab(tabData.Index);
2780
+ if (tabData.Tab.CommandID==JSCHART_MENU_ID.CMD_REPORT_CHANGE_BLOCK_ID)
2781
+ {
2782
+ this.ExecuteMenuCommand(tabData.Tab.CommandID, [tabData.Tab.ID]);
2783
+ this.SetSelectedTab(tabData.Index);
2784
+ }
2715
2785
  }
2716
2786
 
2717
2787
  if (redraw) this.Draw();
2718
2788
  }
2719
2789
 
2790
+ this.OnClickTabPopMenu=function(tabData, data)
2791
+ {
2792
+ JSConsole.Chart.Log('[JSReportChartContainer::OnClickTabPopMenu] ',tabData, data);
2793
+
2794
+ var cmdID=data.Data.ID; //命令ID
2795
+ var aryArgs=data.Data.Args; //参数
2796
+
2797
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
2798
+ if (event && event.Callback)
2799
+ {
2800
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data, TabData:tabData };
2801
+ event.Callback(event,data,this);
2802
+ if (data.PreventDefault) return;
2803
+ }
2804
+
2805
+ this.ExecuteMenuCommand(cmdID,aryArgs);
2806
+
2807
+ this.SetSelectedTab(tabData.Index);
2808
+ this.Draw();
2809
+ }
2810
+
2811
+ this.ExecuteMenuCommand=function(cmdID, aryArgs)
2812
+ {
2813
+ JSConsole.Chart.Log('[JSReportChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
2814
+
2815
+ var param=null, srcParam=null; //原始值
2816
+ if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
2817
+ {
2818
+ srcParam=aryArgs[0];
2819
+ if (IFrameSplitOperator.IsNumber(aryArgs[0])) param=aryArgs[0];
2820
+ }
2821
+
2822
+ switch(cmdID)
2823
+ {
2824
+ case JSCHART_MENU_ID.CMD_REPORT_CHANGE_BLOCK_ID:
2825
+ if (srcParam) this.ChangeSymbol(param);
2826
+ break;
2827
+ }
2828
+ }
2829
+
2720
2830
  this.SwapColumn=function(leftIndex, rightIndex, option)
2721
2831
  {
2722
2832
  var reportChart=this.GetReportChart();
@@ -2995,7 +3105,7 @@ function JSReportChartContainer(uielement)
2995
3105
  if (obj.PreventDefault==true) return;
2996
3106
  }
2997
3107
 
2998
- throw { Name:'JSReportChartContainer::RequestStockSortData', Error:'(报价列表股票排序数据)不提供内置测试数据' };
3108
+ //throw { Name:'JSReportChartContainer::RequestStockSortData', Error:'(报价列表股票排序数据)不提供内置测试数据' };
2999
3109
  }
3000
3110
 
3001
3111
  this.RecvStockSortData=function(data)
@@ -5792,7 +5902,7 @@ function ChartReportTab()
5792
5902
  this.IsShow=true; //是否显示
5793
5903
 
5794
5904
  //Tab
5795
- this.TabList=[]; //{ Title:标题, ID:, IsMenu: 是否菜单 }
5905
+ this.TabList=[]; //{ Title:标题, ID:, IsMenu: 是否菜单, ArySubMenu:[ { Title:, ID: }] }
5796
5906
  this.SelectedTabIndex=-1;
5797
5907
  this.MoveOnTabIndex=-1;
5798
5908
 
@@ -5861,7 +5971,7 @@ function ChartReportTab()
5861
5971
 
5862
5972
  var tabItem={ Title:item.Title, IsMenu:false, FixedSymbol:[], FixedRowCount:0 };
5863
5973
  if (item.ID) tabItem.ID=item.ID;
5864
- if (item.MenuID) tabItem.MenuID=item.MenuID;
5974
+ if (item.CommandID) tabItem.CommandID=item.CommandID;
5865
5975
  if (IFrameSplitOperator.IsBool(item.IsMenu)) tabItem.IsMenu=item.IsMenu;
5866
5976
  if (IFrameSplitOperator.IsNonEmptyArray(item.FixedSymbol))
5867
5977
  {
@@ -5873,6 +5983,10 @@ function ChartReportTab()
5873
5983
  ++tabItem.FixedRowCount;
5874
5984
  }
5875
5985
  }
5986
+
5987
+ if (IFrameSplitOperator.IsNonEmptyArray(item.ArySubMenu))
5988
+ tabItem.ArySubMenu=item.ArySubMenu.slice();
5989
+
5876
5990
  this.TabList.push(tabItem);
5877
5991
  }
5878
5992
  }