hqchart 1.1.13492 → 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.
@@ -85,6 +85,22 @@ HQData.NetworkFilter=function(data, callback)
85
85
  case "TradeDetail::RequestData":
86
86
  HQData.TradeDetail_RequestData(data,callback);
87
87
  break;
88
+
89
+ //////////////////////////////////////////////////////
90
+ //报价列表数据
91
+ case "JSReportChartContainer::RequestStockListData":
92
+ HQData.Report_RequestStockListData(data, callback); //码表
93
+ break;
94
+
95
+ case "JSReportChartContainer::RequestMemberListData": //板块成分
96
+ HQData.Report_RequestMemberListDat(data, callback);
97
+ break;
98
+ case "JSDealChartContainer::RequestStockData": //股票数据更新
99
+ HQData.Report_RequestStockData(data, callback);
100
+ break;
101
+ case "JSDealChartContainer::RequestStockSortData": //股票排序数据
102
+ HQData.Report_RequestStockSortData(data, callback);
103
+ break;
88
104
  }
89
105
  }
90
106
 
@@ -495,3 +511,284 @@ HQData.RequestOverlayHistoryMinuteData=function(data, callback)
495
511
  }
496
512
 
497
513
 
514
+ //////////////////////////////////////////////////////////////////////////////////////
515
+ // 报价列表
516
+ //
517
+ //
518
+ /////////////////////////////////////////////////////////////////////////////////////
519
+
520
+ //码表
521
+ HQData.Report_RequestStockListData=function(data, callback)
522
+ {
523
+ data.PreventDefault=true;
524
+
525
+ var hqchartData={ data:[] };
526
+
527
+ if (IFrameSplitOperator.IsNonEmptyArray(SHSZ_STOCK_LIST_TEST_DATA.symbol))
528
+ {
529
+ //0=证券代码 1=股票名称
530
+ for(var i=0;i<SHSZ_STOCK_LIST_TEST_DATA.symbol.length;++i)
531
+ {
532
+ var symbol=SHSZ_STOCK_LIST_TEST_DATA.symbol[i];
533
+ var name=SHSZ_STOCK_LIST_TEST_DATA.name[i];
534
+
535
+ hqchartData.data.push([symbol,name]);
536
+ }
537
+ }
538
+
539
+ console.log("[HQData.Report_RequestStockListData] hqchartData",hqchartData);
540
+ callback(hqchartData);
541
+
542
+ }
543
+
544
+ //板块|行业等成分列表
545
+ HQData.Report_RequestMemberListDat=function(data, callback)
546
+ {
547
+ var symbol=data.Request.Data.symbol; //板块代码
548
+ data.PreventDefault=true;
549
+
550
+ var hqchartData= { symbol:symbol , name:symbol, data:[] , code:0 };
551
+ var testDataCount=SHSZ_STOCK_LIST_TEST_DATA.symbol.length;
552
+ var testIndex=Math.round(Math.random()*(testDataCount-100));
553
+ var count=parseInt(Math.random()*(200)+100); ;
554
+
555
+ for(var i=testIndex, j=0; i<SHSZ_STOCK_LIST_TEST_DATA.symbol.length && j<count; ++i, ++j)
556
+ {
557
+ hqchartData.data.push(SHSZ_STOCK_LIST_TEST_DATA.symbol[i]);
558
+ }
559
+
560
+ callback(hqchartData);
561
+ }
562
+
563
+ HQData.Report_RequestStockData=function(data, callback)
564
+ {
565
+ var stocks=data.Request.Data.stocks; //股票列表
566
+ data.PreventDefault=true;
567
+
568
+ var mapStock=new Map();
569
+ for(var i=0;i<stocks.length;++i)
570
+ {
571
+ var item=stocks[i];
572
+ mapStock.set(item.Symbol,{ Symbol:item.Symbol, Data:null });
573
+ }
574
+
575
+ if (IFrameSplitOperator.IsNonEmptyArray(SHSZ_STOCK_LIST_TEST_DATA.symbol))
576
+ {
577
+ for(var i=0;i<SHSZ_STOCK_LIST_TEST_DATA.symbol.length;++i)
578
+ {
579
+ var symbol=SHSZ_STOCK_LIST_TEST_DATA.symbol[i];
580
+ if (!mapStock.has(symbol)) continue;
581
+ var item=mapStock.get(symbol);
582
+ var name=SHSZ_STOCK_LIST_TEST_DATA.name[i];
583
+ var price=SHSZ_STOCK_LIST_TEST_DATA.close[i];
584
+ var vol=SHSZ_STOCK_LIST_TEST_DATA.vol[i];
585
+ var newItem=
586
+ [
587
+ symbol,
588
+ name,
589
+ SHSZ_STOCK_LIST_TEST_DATA.yclose[i],
590
+ SHSZ_STOCK_LIST_TEST_DATA.open[i],
591
+ SHSZ_STOCK_LIST_TEST_DATA.high[i],
592
+ SHSZ_STOCK_LIST_TEST_DATA.low[i],
593
+ price,
594
+ vol,
595
+ SHSZ_STOCK_LIST_TEST_DATA.amount[i],
596
+ ];
597
+
598
+ //买价 量
599
+ newItem[9]=price+0.05;
600
+ newItem[10]=10;
601
+
602
+ //卖价 量
603
+ newItem[11]=price-0.06;
604
+ newItem[12]=5;
605
+
606
+ //均价
607
+ newItem[13]=price-0.03;
608
+
609
+ //内盘
610
+ newItem[18]=vol/4;
611
+ //外盘
612
+ newItem[19]=vol/5;
613
+
614
+ newItem[14]=vol*1.5; //流通股本
615
+ newItem[15]=vol*1.8; //总股本
616
+
617
+ //换手率
618
+ newItem[23]=(Math.round(Math.random()*60))/100;
619
+
620
+ //名字字段
621
+ var symbolEx={ Text:name };
622
+ if (i%20==5)
623
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue629', Color:'rgb(255,165,0)'}, { Text:'\ue627', Color:'#1c65db'} ] };
624
+ else if (i%20==9)
625
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue629', Color:'rgb(255,165,0)'}] } ;
626
+ else if (i%20==18)
627
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue627', Color:'#1c65db'}] } ;
628
+
629
+ newItem[27]=symbolEx;
630
+
631
+
632
+ //扩展数据 (定制数据)
633
+ var extendData=[];
634
+ newItem[30]=extendData;
635
+
636
+ //行业
637
+ extendData[0]="行业X";
638
+ //地区
639
+ extendData[1]="地区X";
640
+
641
+ //PE|PB
642
+ extendData[2]=(Math.round(Math.random()*60))/100;
643
+ extendData[3]=(Math.round(Math.random()*60))/100;
644
+ extendData[4]=(Math.round(Math.random()*60))/100;
645
+ extendData[5]=(Math.round(Math.random()*60))/100;
646
+
647
+
648
+ //周涨幅
649
+ extendData[6]=(Math.round(Math.random()*60))/100;
650
+ extendData[7]=(Math.round(Math.random()*60))/100;
651
+ extendData[8]=(Math.round(Math.random()*60))/100;
652
+
653
+
654
+ item.Data=newItem;
655
+ }
656
+ }
657
+
658
+ var hqchartData={ data:[], code:0 };
659
+
660
+ for(var mapItem of mapStock)
661
+ {
662
+ var item=mapItem[1];
663
+ if (!item.Data) continue;
664
+
665
+ hqchartData.data.push(item.Data);
666
+ }
667
+
668
+ callback(hqchartData);
669
+ }
670
+
671
+ HQData.Report_RequestStockSortData=function(data, callback)
672
+ {
673
+ var blockID=data.Request.Data.symbol; //板块代码
674
+ var range=data.Request.Data.range; //排序范围
675
+ var column=data.Request.Data.column; //排序列信息
676
+ var sortType=data.Request.Data.sort; //排序方向
677
+ var pageSize=data.Request.Data.pageSize;
678
+ data.PreventDefault=true;
679
+
680
+ var start=range.start;
681
+ var end=range.end;
682
+ if (start>0) start-=pageSize;
683
+ if (start<0) start=0;
684
+ end+=pageSize;
685
+
686
+ var aryData=data.Self.Data.Data.slice(); //所有的股票
687
+ var mapStock=new Map();
688
+ var count=end-start+1;
689
+ for(var i = 0; i < count; i++)
690
+ {
691
+ var index = Math.floor(Math.random()*(aryData.length-1));
692
+ var symbol = aryData[index];
693
+ mapStock.set(symbol, { Symbol:symbol, Index:i+start, Data:null });
694
+ aryData.splice(index, 1);
695
+ }
696
+
697
+ if (IFrameSplitOperator.IsNonEmptyArray(SHSZ_STOCK_LIST_TEST_DATA.symbol))
698
+ {
699
+ for(var i=0;i<SHSZ_STOCK_LIST_TEST_DATA.symbol.length;++i)
700
+ {
701
+ var symbol=SHSZ_STOCK_LIST_TEST_DATA.symbol[i];
702
+ if (!mapStock.has(symbol)) continue;
703
+ var item=mapStock.get(symbol);
704
+ var name=SHSZ_STOCK_LIST_TEST_DATA.name[i];
705
+ var price=SHSZ_STOCK_LIST_TEST_DATA.close[i];
706
+ var vol=SHSZ_STOCK_LIST_TEST_DATA.vol[i];
707
+ var newItem=
708
+ [
709
+ symbol,
710
+ name,
711
+ SHSZ_STOCK_LIST_TEST_DATA.yclose[i],
712
+ SHSZ_STOCK_LIST_TEST_DATA.open[i],
713
+ SHSZ_STOCK_LIST_TEST_DATA.high[i],
714
+ SHSZ_STOCK_LIST_TEST_DATA.low[i],
715
+ price,
716
+ vol,
717
+ SHSZ_STOCK_LIST_TEST_DATA.amount[i],
718
+ ];
719
+
720
+ //买价 量
721
+ newItem[9]=price+0.05;
722
+ newItem[10]=10;
723
+
724
+ //卖价 量
725
+ newItem[11]=price-0.06;
726
+ newItem[12]=5;
727
+
728
+ //均价
729
+ newItem[13]=price-0.03;
730
+
731
+ //内盘
732
+ newItem[18]=vol/4;
733
+ //外盘
734
+ newItem[19]=vol/5;
735
+
736
+ newItem[14]=vol*1.5; //流通股本
737
+ newItem[15]=vol*1.8; //总股本
738
+
739
+ //换手率
740
+ newItem[23]=(Math.round(Math.random()*60))/100;
741
+
742
+ //名字字段
743
+ var symbolEx={ Text:name };
744
+ if (i%20==5)
745
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue629', Color:'rgb(255,165,0)'}, { Text:'\ue627', Color:'#1c65db'} ] };
746
+ else if (i%20==9)
747
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue629', Color:'rgb(255,165,0)'}] } ;
748
+ else if (i%20==18)
749
+ symbolEx.Symbol={ Family:'iconfont', Size:16, Data:[ { Text:'\ue627', Color:'#1c65db'}] } ;
750
+
751
+ newItem[27]=symbolEx;
752
+
753
+
754
+ //扩展数据 (定制数据)
755
+ var extendData=[];
756
+ newItem[30]=extendData;
757
+
758
+ //行业
759
+ extendData[0]="行业X";
760
+ //地区
761
+ extendData[1]="地区X";
762
+
763
+ //PE|PB
764
+ extendData[2]=(Math.round(Math.random()*60))/100;
765
+ extendData[3]=(Math.round(Math.random()*60))/100;
766
+ extendData[4]=(Math.round(Math.random()*60))/100;
767
+ extendData[5]=(Math.round(Math.random()*60))/100;
768
+
769
+
770
+ //周涨幅
771
+ extendData[6]=(Math.round(Math.random()*60))/100;
772
+ extendData[7]=(Math.round(Math.random()*60))/100;
773
+ extendData[8]=(Math.round(Math.random()*60))/100;
774
+
775
+
776
+ item.Data=newItem;
777
+ }
778
+ }
779
+
780
+ var hqchartData={ data:[], index:[], filedindex:column.index, sort:sortType, symbol:blockID };
781
+
782
+ for(var mapItem of mapStock)
783
+ {
784
+ var item=mapItem[1];
785
+ if (!item.Data) continue;
786
+
787
+ hqchartData.data.push(item.Data);
788
+ hqchartData.index.push(item.Index);
789
+ }
790
+
791
+ callback(hqchartData);
792
+ }
793
+
794
+
@@ -6678,6 +6678,9 @@ var JSCHART_MENU_ID=
6678
6678
  CMD_CHANGE_LANGUAGE_ID:37, //语言切换
6679
6679
 
6680
6680
  CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID:38,
6681
+
6682
+
6683
+ CMD_REPORT_CHANGE_BLOCK_ID:60, //报价列表 切换板块ID
6681
6684
  }
6682
6685
 
6683
6686
 
@@ -125088,6 +125091,8 @@ function JSReportChart(divElement)
125088
125091
  this.JSChartContainer=chart;
125089
125092
  this.DivElement.JSChart=this; //div中保存一份
125090
125093
 
125094
+ if (option.EnablePopMenuV2===true) chart.InitalPopMenu();
125095
+
125091
125096
  if (option.Symbol) chart.Symbol=option.Symbol;
125092
125097
  if (option.Name) chart.Name=option.Name;
125093
125098
 
@@ -125370,6 +125375,8 @@ function JSReportChartContainer(uielement)
125370
125375
 
125371
125376
  this.IsDestroy=false; //是否已经销毁了
125372
125377
 
125378
+ this.JSPopMenu; //内置菜单
125379
+
125373
125380
  this.ChartDestory=function() //销毁
125374
125381
  {
125375
125382
  this.IsDestroy=true;
@@ -125387,6 +125394,14 @@ function JSReportChartContainer(uielement)
125387
125394
  }
125388
125395
  }
125389
125396
 
125397
+ this.InitalPopMenu=function() //初始化弹出窗口
125398
+ {
125399
+ if (this.JSPopMenu) return;
125400
+
125401
+ this.JSPopMenu=new JSPopMenu(); //内置菜单
125402
+ this.JSPopMenu.Inital();
125403
+ }
125404
+
125390
125405
  this.AutoScrollPage=function(step)
125391
125406
  {
125392
125407
  this.AutoDragScrollTimer=setTimeout(() =>
@@ -127709,6 +127724,52 @@ function JSReportChartContainer(uielement)
127709
127724
  }
127710
127725
  }
127711
127726
 
127727
+ this.GetTabPopMenu=function(tabItem)
127728
+ {
127729
+ var aryMenu=[ ];
127730
+
127731
+ if (IFrameSplitOperator.IsNonEmptyArray(tabItem.ArySubMenu))
127732
+ {
127733
+ for(var i=0;i<tabItem.ArySubMenu.length;++i)
127734
+ {
127735
+ var item=tabItem.ArySubMenu[i];
127736
+ var menuItem={ Name:item.Title, Data:{ ID:item.CommandID, Args:[item.ID]} };
127737
+
127738
+ aryMenu.push(menuItem);
127739
+ }
127740
+ }
127741
+
127742
+
127743
+ return aryMenu;
127744
+ }
127745
+
127746
+ this.PopupTabMenu=function(menuData, tab, e)
127747
+ {
127748
+ if (!this.JSPopMenu) return;
127749
+
127750
+ var rtTab=tab.Rect;
127751
+ var pixelRatio=GetDevicePixelRatio();
127752
+ var rtCell={ Left:rtTab.Left/pixelRatio, Right:rtTab.Right/pixelRatio, Bottom:rtTab.Bottom/pixelRatio, Top:rtTab.Top/pixelRatio };
127753
+ rtCell.Width=rtCell.Right-rtCell.Left;
127754
+ rtCell.Height=rtCell.Bottom-rtCell.Top;
127755
+
127756
+ var rtClient=this.UIElement.getBoundingClientRect();
127757
+ var rtScroll=GetScrollPosition();
127758
+
127759
+ var offsetLeft=rtClient.left+rtScroll.Left;
127760
+ var offsetTop=rtClient.top+rtScroll.Top;
127761
+ rtCell.Left+=offsetLeft;
127762
+ rtCell.Right+=offsetLeft;
127763
+ rtCell.Top+=offsetTop;
127764
+ rtCell.Bottom+=offsetTop;
127765
+
127766
+ this.JSPopMenu.CreatePopMenu(menuData);
127767
+ this.JSPopMenu.PopupMenuByTab(rtCell);
127768
+
127769
+ if(e.preventDefault) e.preventDefault();
127770
+ if(e.stopPropagation) e.stopPropagation();
127771
+ }
127772
+
127712
127773
  //点击标签
127713
127774
  this.OnClickTab=function(tabData, e)
127714
127775
  {
@@ -127722,36 +127783,80 @@ function JSReportChartContainer(uielement)
127722
127783
 
127723
127784
  if (tabData.Tab.IsMenu)
127724
127785
  {
127786
+ var menuData={ Menu:this.GetTabPopMenu(tabData.Tab), Position:JSPopMenu.POSITION_ID.TAB_MENU_ID };
127787
+ menuData.ClickCallback=(data)=>{ this.OnClickTabPopMenu(tabData, data); }
127788
+
127725
127789
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_REPORT_TABMENU);
127726
127790
  if (event && event.Callback)
127727
127791
  {
127728
- redraw=true;
127729
- var rtItem=tabData.Rect;
127730
- var rtDOM={ Left: rtItem.Left/pixelTatio, Right:rtItem.Right/pixelTatio, Top:rtItem.Top/pixelTatio, Bottom:rtItem.Bottom/pixelTatio };
127731
-
127732
- var sendData={ Data:tabData, IsSide:{X:x, Y:x}, UIElement:uiElement, Rect:rtDOM, e:e , Redraw:redraw };
127792
+ var sendData={ MenuData:menuData, Tab:tabData, PreventDefault:false, e:e };
127733
127793
  event.Callback(event, sendData, this);
127734
- if (IFrameSplitOperator.IsBool(sendData.Redraw)) redraw=sendData.Redraw;
127794
+ if (sendData.PreventDefault==true) return;
127735
127795
  }
127736
127796
 
127737
- this.SetSelectedTab(tabData.Index); //选中tab
127797
+ this.PopupTabMenu(menuData, tabData.Tab, e);
127738
127798
  }
127739
127799
  else
127740
127800
  {
127741
127801
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_REPORT_TAB);
127742
127802
  if (event && event.Callback)
127743
127803
  {
127744
- var sendData={ Data:tabData, IsSide:{X:x, Y:x}, UIElement:uiElement, e:e , Redraw:redraw };
127804
+ var sendData={ Data:tabData, IsSide:{X:x, Y:x}, UIElement:uiElement, e:e , Redraw:redraw, PreventDefault:false };
127745
127805
  event.Callback(event, sendData, this);
127746
127806
  if (IFrameSplitOperator.IsBool(sendData.Redraw)) redraw=sendData.Redraw;
127807
+ if (sendData.PreventDefault==true) return;
127747
127808
  }
127748
127809
 
127749
- this.SetSelectedTab(tabData.Index);
127810
+ if (tabData.Tab.CommandID==JSCHART_MENU_ID.CMD_REPORT_CHANGE_BLOCK_ID)
127811
+ {
127812
+ this.ExecuteMenuCommand(tabData.Tab.CommandID, [tabData.Tab.ID]);
127813
+ this.SetSelectedTab(tabData.Index);
127814
+ }
127750
127815
  }
127751
127816
 
127752
127817
  if (redraw) this.Draw();
127753
127818
  }
127754
127819
 
127820
+ this.OnClickTabPopMenu=function(tabData, data)
127821
+ {
127822
+ JSConsole.Chart.Log('[JSReportChartContainer::OnClickTabPopMenu] ',tabData, data);
127823
+
127824
+ var cmdID=data.Data.ID; //命令ID
127825
+ var aryArgs=data.Data.Args; //参数
127826
+
127827
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
127828
+ if (event && event.Callback)
127829
+ {
127830
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data, TabData:tabData };
127831
+ event.Callback(event,data,this);
127832
+ if (data.PreventDefault) return;
127833
+ }
127834
+
127835
+ this.ExecuteMenuCommand(cmdID,aryArgs);
127836
+
127837
+ this.SetSelectedTab(tabData.Index);
127838
+ this.Draw();
127839
+ }
127840
+
127841
+ this.ExecuteMenuCommand=function(cmdID, aryArgs)
127842
+ {
127843
+ JSConsole.Chart.Log('[JSReportChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
127844
+
127845
+ var param=null, srcParam=null; //原始值
127846
+ if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
127847
+ {
127848
+ srcParam=aryArgs[0];
127849
+ if (IFrameSplitOperator.IsNumber(aryArgs[0])) param=aryArgs[0];
127850
+ }
127851
+
127852
+ switch(cmdID)
127853
+ {
127854
+ case JSCHART_MENU_ID.CMD_REPORT_CHANGE_BLOCK_ID:
127855
+ if (srcParam) this.ChangeSymbol(param);
127856
+ break;
127857
+ }
127858
+ }
127859
+
127755
127860
  this.SwapColumn=function(leftIndex, rightIndex, option)
127756
127861
  {
127757
127862
  var reportChart=this.GetReportChart();
@@ -130827,7 +130932,7 @@ function ChartReportTab()
130827
130932
  this.IsShow=true; //是否显示
130828
130933
 
130829
130934
  //Tab
130830
- this.TabList=[]; //{ Title:标题, ID:, IsMenu: 是否菜单 }
130935
+ this.TabList=[]; //{ Title:标题, ID:, IsMenu: 是否菜单, ArySubMenu:[ { Title:, ID: }] }
130831
130936
  this.SelectedTabIndex=-1;
130832
130937
  this.MoveOnTabIndex=-1;
130833
130938
 
@@ -130896,7 +131001,7 @@ function ChartReportTab()
130896
131001
 
130897
131002
  var tabItem={ Title:item.Title, IsMenu:false, FixedSymbol:[], FixedRowCount:0 };
130898
131003
  if (item.ID) tabItem.ID=item.ID;
130899
- if (item.MenuID) tabItem.MenuID=item.MenuID;
131004
+ if (item.CommandID) tabItem.CommandID=item.CommandID;
130900
131005
  if (IFrameSplitOperator.IsBool(item.IsMenu)) tabItem.IsMenu=item.IsMenu;
130901
131006
  if (IFrameSplitOperator.IsNonEmptyArray(item.FixedSymbol))
130902
131007
  {
@@ -130908,6 +131013,10 @@ function ChartReportTab()
130908
131013
  ++tabItem.FixedRowCount;
130909
131014
  }
130910
131015
  }
131016
+
131017
+ if (IFrameSplitOperator.IsNonEmptyArray(item.ArySubMenu))
131018
+ tabItem.ArySubMenu=item.ArySubMenu.slice();
131019
+
130911
131020
  this.TabList.push(tabItem);
130912
131021
  }
130913
131022
  }
@@ -134417,7 +134526,7 @@ function ScrollBarBGChart()
134417
134526
 
134418
134527
 
134419
134528
 
134420
- var HQCHART_VERSION="1.1.13491";
134529
+ var HQCHART_VERSION="1.1.13496";
134421
134530
 
134422
134531
  function PrintHQChartVersion()
134423
134532
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13491";
8
+ var HQCHART_VERSION="1.1.13496";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {