hqchart 1.1.13588 → 1.1.13595

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.
@@ -6527,6 +6527,7 @@ var JSCHART_EVENT_ID=
6527
6527
  ON_CLICK_REPORT_CHECKBOX:141, //报价列表checkbox
6528
6528
  ON_CLICK_REPORT_BUTTON:142, //报价列表按钮
6529
6529
  ON_CLICK_REPORT_LINK:143, //报价列表 链接
6530
+ ON_CREATE_REPORT_HEADER_MENU:144, //报价列表 表头菜单
6530
6531
 
6531
6532
 
6532
6533
  ON_CHANGE_INDEX:150, //切换指标
@@ -6703,8 +6704,10 @@ var JSCHART_MENU_ID=
6703
6704
 
6704
6705
 
6705
6706
  CMD_REPORT_CHANGE_BLOCK_ID:60, //报价列表 切换板块ID
6706
-
6707
-
6707
+ CMD_REPORT_COLUMN_SORT_ID:61, //报价列表 表头排序 Arg[列序号, 排序方向]
6708
+ CMD_REPORT_COLUMN_DEL_ID:62, //报价列表 删除列
6709
+ CMD_REPORT_COLUMN_MOVE_ID:63, //报价列表 列移动
6710
+ CMD_REPORT_COLUMN_FILTER_ID:64, //报价列表 筛选
6708
6711
  }
6709
6712
 
6710
6713
 
@@ -60881,6 +60884,16 @@ function ChartArrowMarker()
60881
60884
  this.OnlyMoveXIndex=true;
60882
60885
  this.IsSupportMagnet=true;
60883
60886
 
60887
+ this.Super_SetOption=this.SetOption; //父类函数
60888
+
60889
+ this.SetOption=function(option)
60890
+ {
60891
+ this.Super_SetOption(option);
60892
+
60893
+ if (option.AreaColor) this.AreaColor=option.AreaColor;
60894
+ else this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor, 0.6);
60895
+ }
60896
+
60884
60897
  this.CalculatePoint=function(angle, ptStart, ptEnd, lineWidth)
60885
60898
  {
60886
60899
  var theta=angle; //三角斜边一直线夹角
@@ -60924,9 +60937,12 @@ function ChartArrowMarker()
60924
60937
  this.Canvas.lineTo(outArrow.Bottom.X,outArrow.Bottom.Y);
60925
60938
  this.Canvas.lineTo(insideArrow.Bottom.X,insideArrow.Bottom.Y);
60926
60939
  this.Canvas.lineTo(ptStart.X,ptStart.Y);
60927
- this.Canvas.closePath();
60928
60940
 
60929
- this.Canvas.fillStyle=this.LineColor;
60941
+ this.Canvas.strokeStyle=this.LineColor;
60942
+ this.Canvas.stroke();
60943
+
60944
+ this.Canvas.closePath();
60945
+ this.Canvas.fillStyle=this.AreaColor;
60930
60946
  this.Canvas.fill();
60931
60947
 
60932
60948
  /*
@@ -69717,6 +69733,9 @@ function ChartPriceRange()
69717
69733
 
69718
69734
  this.DrawArrow({X:ToFixedPoint(xCenter), Y:ptStart.Y}, {X:ToFixedPoint(xCenter), Y:ptEnd.Y});
69719
69735
 
69736
+ var bottom=this.Frame.ChartBorder.GetBottomEx();
69737
+ var top=this.Frame.ChartBorder.GetTopEx();
69738
+
69720
69739
  //文字输出
69721
69740
  var startValue=this.Frame.GetYData(ptStart.Y,false);
69722
69741
  var endValue=this.Frame.GetYData(ptEnd.Y,false);
@@ -69732,6 +69751,23 @@ function ChartPriceRange()
69732
69751
  else rtTextBG.Top=ptEnd.Y+4;
69733
69752
  rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;
69734
69753
 
69754
+ if (diffValue>0)
69755
+ {
69756
+ if (rtTextBG.Top<=top)
69757
+ {
69758
+ rtTextBG.Top=top;
69759
+ rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;
69760
+ }
69761
+ }
69762
+ else
69763
+ {
69764
+ if (rtTextBG.Bottom>=bottom)
69765
+ {
69766
+ rtTextBG.Bottom=bottom;
69767
+ rtTextBG.Top=rtTextBG.Bottom-rtTextBG.Height;
69768
+ }
69769
+ }
69770
+
69735
69771
  if (this.Label.EnableBGColor)
69736
69772
  {
69737
69773
  var path=new Path2D();
@@ -69838,6 +69874,7 @@ function ChartDateRange()
69838
69874
 
69839
69875
 
69840
69876
  //文字输出
69877
+ var bottom=this.Frame.ChartBorder.GetBottomEx();
69841
69878
  var startIndex=this.Frame.GetXData(ptStart.X,false);
69842
69879
  var endIndex=this.Frame.GetXData(ptEnd.X,false);
69843
69880
  var barCount=endIndex-startIndex+1;
@@ -69849,6 +69886,12 @@ function ChartDateRange()
69849
69886
  var rtTextBG={ Left:xCenter-textWidth/2, Top:ptEnd.Y+4, Width:textWidth, Height:textHeight+2 };
69850
69887
  rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;
69851
69888
 
69889
+ if (rtTextBG.Bottom>=bottom)
69890
+ {
69891
+ rtTextBG.Bottom=bottom;
69892
+ rtTextBG.Top=rtTextBG.Bottom-rtTextBG.Height;
69893
+ }
69894
+
69852
69895
  if (this.Label.EnableBGColor)
69853
69896
  {
69854
69897
  var path=new Path2D();
@@ -126472,7 +126515,7 @@ function JSReportChartContainer(uielement)
126472
126515
  //更新数据
126473
126516
  this.UpdateFullData=function(data)
126474
126517
  {
126475
- var arySymbol=[];
126518
+ var arySymbol=[];
126476
126519
  if (IFrameSplitOperator.IsNonEmptyArray(data.data))
126477
126520
  {
126478
126521
  //0=证券代码 1=股票名称
@@ -126490,17 +126533,19 @@ function JSReportChartContainer(uielement)
126490
126533
  stock=new HQReportItem();
126491
126534
  stock.OriginalSymbol=symbol;
126492
126535
  this.MapStockData.set(symbol, stock);
126536
+
126493
126537
  }
126494
126538
 
126495
126539
  stock.Symbol=this.GetSymbolNoSuffix(symbol);
126496
126540
  stock.Name=item[1];
126497
126541
  this.ReadStockJsonData(stock, item);
126498
-
126499
126542
  arySymbol.push(symbol);
126500
126543
  }
126501
126544
  }
126502
126545
 
126503
126546
  //设置显示数据
126547
+ this.Data.Data=[];
126548
+ this.SourceData.Data=[];
126504
126549
  if (IFrameSplitOperator.IsNonEmptyArray(arySymbol))
126505
126550
  {
126506
126551
  for(var i=0;i<arySymbol.length;++i)
@@ -128623,10 +128668,73 @@ function JSReportChartContainer(uielement)
128623
128668
  }
128624
128669
  }
128625
128670
 
128671
+ //列排序
128672
+ this.SortColumn=function(index, sortType)
128673
+ {
128674
+ if (index<0) return false;
128675
+ var reportChart=this.GetReportChart();
128676
+ if (!reportChart) return false;
128677
+
128678
+ var column=reportChart.Column[index];
128679
+
128680
+ if (!column) return false;
128681
+ if (column.Sort!=1 && column.Sort!=2) return false;
128682
+
128683
+ var sortInfo={ Field:index, Sort:sortType };
128684
+ if (sortInfo.Sort==0) //不排序还原
128685
+ {
128686
+ this.Data.Data=[];
128687
+ if (IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))
128688
+ this.Data.Data=this.SourceData.Data.slice();
128689
+ }
128690
+ else if (sortInfo.Sort==1 || sortInfo.Sort==2)
128691
+ {
128692
+ if (column.Sort==1) //本地排序
128693
+ {
128694
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_LOCAL_SORT);
128695
+ if (event && event.Callback)
128696
+ {
128697
+ var sendData={ Column:column, SortInfo:sortInfo, SymbolList:this.Data.Data, Result:null };
128698
+ event.Callback (event, sendData, this);
128699
+ if (Array.isArray(sendData.Result)) this.Data.Data=sendData.Result;
128700
+ }
128701
+ else
128702
+ {
128703
+ this.Data.Data.sort((left, right)=> { return this.LocalSort(left, right, column, sortInfo.Sort); });
128704
+ }
128705
+ }
128706
+ else if (column.Sort==2) //远程排序
128707
+ {
128708
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
128709
+
128710
+ this.SortInfo.Field=sortInfo.Field;
128711
+ this.SortInfo.Sort=sortInfo.Sort;
128712
+ this.Data.YOffset=0;
128713
+ this.ResetReportSelectStatus();
128714
+ this.RequestStockSortData(column, sortInfo.Field, sortInfo.Sort); //远程排序
128715
+ return true;
128716
+ }
128717
+ }
128718
+
128719
+ this.Data.YOffset=0;
128720
+ this.ResetReportSelectStatus();
128721
+ this.SortInfo.Field=sortInfo.Field;
128722
+ this.SortInfo.Sort=sortInfo.Sort;
128723
+ this.Draw();
128724
+ this.DelayUpdateStockData();
128725
+ return true;
128726
+ }
128727
+
128626
128728
  //点表头
128627
128729
  this.OnClickHeader=function(clickData, e)
128628
128730
  {
128629
128731
  var header=clickData.Header;
128732
+ if (header.Column && header.Column.EnablePopupHeaderMenu)
128733
+ {
128734
+ this.PopupHeaderMenu(clickData, e);
128735
+ return;
128736
+ }
128737
+
128630
128738
  if (header.Column && (header.Column.Sort==1 || header.Column.Sort==2))
128631
128739
  {
128632
128740
  var index=header.Index;
@@ -128705,6 +128813,52 @@ function JSReportChartContainer(uielement)
128705
128813
  }
128706
128814
  }
128707
128815
 
128816
+ this.PopupHeaderMenu=function(clickData, e)
128817
+ {
128818
+ if (!this.JSPopMenu) return;
128819
+ if (!this.GetEventCallback) return;
128820
+
128821
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_REPORT_HEADER_MENU);
128822
+ if (!event || !event.Callback) return;
128823
+
128824
+ var header=clickData.Header;
128825
+ var column=header.Column;
128826
+ var menuData={ Menu:null, Position:JSPopMenu.POSITION_ID.DROPDOWN_MENU_ID };
128827
+ menuData.ClickCallback=(data)=>{ this.OnClickHeaderMenu(column, data); }
128828
+
128829
+ var sendData={ MenuData:menuData, Column:column, Index:header.Index, PreventDefault:false, e:e };
128830
+ event.Callback(event, sendData, this);
128831
+ if (sendData.PreventDefault==true) return;
128832
+
128833
+ if (!menuData.Menu) return;
128834
+
128835
+ this.PopupMenuByDrapdown(menuData, header.Rect);
128836
+ }
128837
+
128838
+ //下拉菜单
128839
+ this.PopupMenuByDrapdown=function(menuData, rtButton)
128840
+ {
128841
+ if (!this.JSPopMenu) return;
128842
+
128843
+ var pixelRatio=GetDevicePixelRatio();
128844
+ var rtCell={ Left:rtButton.Left/pixelRatio, Right:rtButton.Right/pixelRatio, Bottom:rtButton.Bottom/pixelRatio, Top:rtButton.Top/pixelRatio };
128845
+ rtCell.Width=rtCell.Right-rtCell.Left;
128846
+ rtCell.Height=rtCell.Bottom-rtCell.Top;
128847
+
128848
+ var rtClient=this.UIElement.getBoundingClientRect();
128849
+ var rtScroll=GetScrollPosition();
128850
+
128851
+ var offsetLeft=rtClient.left+rtScroll.Left;
128852
+ var offsetTop=rtClient.top+rtScroll.Top;
128853
+ rtCell.Left+=offsetLeft;
128854
+ rtCell.Right+=offsetLeft;
128855
+ rtCell.Top+=offsetTop;
128856
+ rtCell.Bottom+=offsetTop;
128857
+
128858
+ this.JSPopMenu.CreatePopMenu(menuData);
128859
+ this.JSPopMenu.PopupMenuByDrapdown(rtCell);
128860
+ }
128861
+
128708
128862
  this.GetTabPopMenu=function(tabItem)
128709
128863
  {
128710
128864
  var aryMenu=[ ];
@@ -128820,6 +128974,24 @@ function JSReportChartContainer(uielement)
128820
128974
  this.Draw();
128821
128975
  }
128822
128976
 
128977
+ this.OnClickHeaderMenu=function(menuData, data)
128978
+ {
128979
+ JSConsole.Chart.Log('[JSReportChartContainer::OnClickHeaderMenu] ',menuData, data);
128980
+
128981
+ var cmdID=data.Data.ID;
128982
+ var aryArgs=data.Data.Args;
128983
+
128984
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
128985
+ if (event && event.Callback)
128986
+ {
128987
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data, MenuData:menuData };
128988
+ event.Callback(event,data,this);
128989
+ if (data.PreventDefault) return;
128990
+ }
128991
+
128992
+ this.ExecuteMenuCommand(cmdID,aryArgs);
128993
+ }
128994
+
128823
128995
  this.ExecuteMenuCommand=function(cmdID, aryArgs)
128824
128996
  {
128825
128997
  JSConsole.Chart.Log('[JSReportChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
@@ -128836,6 +129008,22 @@ function JSReportChartContainer(uielement)
128836
129008
  case JSCHART_MENU_ID.CMD_REPORT_CHANGE_BLOCK_ID:
128837
129009
  if (srcParam) this.ChangeSymbol(srcParam);
128838
129010
  break;
129011
+ case JSCHART_MENU_ID.CMD_REPORT_COLUMN_SORT_ID:
129012
+ if (IFrameSplitOperator.IsNumber(param) && IFrameSplitOperator.IsNumber(aryArgs[1]))
129013
+ this.SortColumn(param, aryArgs[1]);
129014
+ break;
129015
+ case JSCHART_MENU_ID.CMD_REPORT_COLUMN_MOVE_ID:
129016
+ if (IFrameSplitOperator.IsNumber(param) && IFrameSplitOperator.IsNumber(aryArgs[1]))
129017
+ {
129018
+ var leftIndex=param;
129019
+ var rightIndex=param+aryArgs[1];
129020
+ this.SwapColumn(leftIndex, rightIndex, {Redraw:true});
129021
+ }
129022
+ break;
129023
+ case JSCHART_MENU_ID.CMD_REPORT_COLUMN_DEL_ID:
129024
+ if (IFrameSplitOperator.IsNumber(param))
129025
+ this.DeleteColumn(param, {Redraw:true});
129026
+ break;
128839
129027
  }
128840
129028
  }
128841
129029
 
@@ -128853,6 +129041,20 @@ function JSReportChartContainer(uielement)
128853
129041
  }
128854
129042
  }
128855
129043
 
129044
+ this.DeleteColumn=function(index, option)
129045
+ {
129046
+ var reportChart=this.GetReportChart();
129047
+ if (!reportChart) return;
129048
+
129049
+ if (!reportChart.DeleteColumn(index)) return;
129050
+
129051
+ if (option && option.Redraw)
129052
+ {
129053
+ this.SetSizeChange(true);
129054
+ this.Draw();
129055
+ }
129056
+ }
129057
+
128856
129058
  //本地排序
128857
129059
  this.LocalSort=function(left, right, column, sortType)
128858
129060
  {
@@ -129707,6 +129909,9 @@ function ChartReport()
129707
129909
  else colItem.IsDrawCallback=false;
129708
129910
  if (item.Icon) colItem.Icon=item.Icon;
129709
129911
 
129912
+ //点击表头弹出菜单
129913
+ if (IFrameSplitOperator.IsBool(item.EnablePopupHeaderMenu)) colItem.EnablePopupHeaderMenu=item.EnablePopupHeaderMenu;
129914
+
129710
129915
  if (item.Sort==1 || item.Sort==2) //1本地排序 2=远程排序
129711
129916
  {
129712
129917
  colItem.SortType=[1,2]; //默认 降序 ,升序
@@ -129814,6 +130019,15 @@ function ChartReport()
129814
130019
  return true;
129815
130020
  }
129816
130021
 
130022
+ this.DeleteColumn=function(index)
130023
+ {
130024
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Column)) return false;
130025
+ if (index<0 || index>=this.Column.length) return false;
130026
+
130027
+ this.Column.splice(index,1);
130028
+ return true;
130029
+ }
130030
+
129817
130031
  this.GetXScrollPos=function()
129818
130032
  {
129819
130033
  return this.Data.XOffset;
@@ -136646,7 +136860,7 @@ function ScrollBarBGChart()
136646
136860
 
136647
136861
 
136648
136862
 
136649
- var HQCHART_VERSION="1.1.13587";
136863
+ var HQCHART_VERSION="1.1.13594";
136650
136864
 
136651
136865
  function PrintHQChartVersion()
136652
136866
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13587";
8
+ var HQCHART_VERSION="1.1.13594";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {