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.
@@ -6571,6 +6571,7 @@ var JSCHART_EVENT_ID=
6571
6571
  ON_CLICK_REPORT_CHECKBOX:141, //报价列表checkbox
6572
6572
  ON_CLICK_REPORT_BUTTON:142, //报价列表按钮
6573
6573
  ON_CLICK_REPORT_LINK:143, //报价列表 链接
6574
+ ON_CREATE_REPORT_HEADER_MENU:144, //报价列表 表头菜单
6574
6575
 
6575
6576
 
6576
6577
  ON_CHANGE_INDEX:150, //切换指标
@@ -6747,8 +6748,10 @@ var JSCHART_MENU_ID=
6747
6748
 
6748
6749
 
6749
6750
  CMD_REPORT_CHANGE_BLOCK_ID:60, //报价列表 切换板块ID
6750
-
6751
-
6751
+ CMD_REPORT_COLUMN_SORT_ID:61, //报价列表 表头排序 Arg[列序号, 排序方向]
6752
+ CMD_REPORT_COLUMN_DEL_ID:62, //报价列表 删除列
6753
+ CMD_REPORT_COLUMN_MOVE_ID:63, //报价列表 列移动
6754
+ CMD_REPORT_COLUMN_FILTER_ID:64, //报价列表 筛选
6752
6755
  }
6753
6756
 
6754
6757
 
@@ -60925,6 +60928,16 @@ function ChartArrowMarker()
60925
60928
  this.OnlyMoveXIndex=true;
60926
60929
  this.IsSupportMagnet=true;
60927
60930
 
60931
+ this.Super_SetOption=this.SetOption; //父类函数
60932
+
60933
+ this.SetOption=function(option)
60934
+ {
60935
+ this.Super_SetOption(option);
60936
+
60937
+ if (option.AreaColor) this.AreaColor=option.AreaColor;
60938
+ else this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor, 0.6);
60939
+ }
60940
+
60928
60941
  this.CalculatePoint=function(angle, ptStart, ptEnd, lineWidth)
60929
60942
  {
60930
60943
  var theta=angle; //三角斜边一直线夹角
@@ -60968,9 +60981,12 @@ function ChartArrowMarker()
60968
60981
  this.Canvas.lineTo(outArrow.Bottom.X,outArrow.Bottom.Y);
60969
60982
  this.Canvas.lineTo(insideArrow.Bottom.X,insideArrow.Bottom.Y);
60970
60983
  this.Canvas.lineTo(ptStart.X,ptStart.Y);
60971
- this.Canvas.closePath();
60972
60984
 
60973
- this.Canvas.fillStyle=this.LineColor;
60985
+ this.Canvas.strokeStyle=this.LineColor;
60986
+ this.Canvas.stroke();
60987
+
60988
+ this.Canvas.closePath();
60989
+ this.Canvas.fillStyle=this.AreaColor;
60974
60990
  this.Canvas.fill();
60975
60991
 
60976
60992
  /*
@@ -69761,6 +69777,9 @@ function ChartPriceRange()
69761
69777
 
69762
69778
  this.DrawArrow({X:ToFixedPoint(xCenter), Y:ptStart.Y}, {X:ToFixedPoint(xCenter), Y:ptEnd.Y});
69763
69779
 
69780
+ var bottom=this.Frame.ChartBorder.GetBottomEx();
69781
+ var top=this.Frame.ChartBorder.GetTopEx();
69782
+
69764
69783
  //文字输出
69765
69784
  var startValue=this.Frame.GetYData(ptStart.Y,false);
69766
69785
  var endValue=this.Frame.GetYData(ptEnd.Y,false);
@@ -69776,6 +69795,23 @@ function ChartPriceRange()
69776
69795
  else rtTextBG.Top=ptEnd.Y+4;
69777
69796
  rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;
69778
69797
 
69798
+ if (diffValue>0)
69799
+ {
69800
+ if (rtTextBG.Top<=top)
69801
+ {
69802
+ rtTextBG.Top=top;
69803
+ rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;
69804
+ }
69805
+ }
69806
+ else
69807
+ {
69808
+ if (rtTextBG.Bottom>=bottom)
69809
+ {
69810
+ rtTextBG.Bottom=bottom;
69811
+ rtTextBG.Top=rtTextBG.Bottom-rtTextBG.Height;
69812
+ }
69813
+ }
69814
+
69779
69815
  if (this.Label.EnableBGColor)
69780
69816
  {
69781
69817
  var path=new Path2D();
@@ -69882,6 +69918,7 @@ function ChartDateRange()
69882
69918
 
69883
69919
 
69884
69920
  //文字输出
69921
+ var bottom=this.Frame.ChartBorder.GetBottomEx();
69885
69922
  var startIndex=this.Frame.GetXData(ptStart.X,false);
69886
69923
  var endIndex=this.Frame.GetXData(ptEnd.X,false);
69887
69924
  var barCount=endIndex-startIndex+1;
@@ -69893,6 +69930,12 @@ function ChartDateRange()
69893
69930
  var rtTextBG={ Left:xCenter-textWidth/2, Top:ptEnd.Y+4, Width:textWidth, Height:textHeight+2 };
69894
69931
  rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;
69895
69932
 
69933
+ if (rtTextBG.Bottom>=bottom)
69934
+ {
69935
+ rtTextBG.Bottom=bottom;
69936
+ rtTextBG.Top=rtTextBG.Bottom-rtTextBG.Height;
69937
+ }
69938
+
69896
69939
  if (this.Label.EnableBGColor)
69897
69940
  {
69898
69941
  var path=new Path2D();
@@ -126516,7 +126559,7 @@ function JSReportChartContainer(uielement)
126516
126559
  //更新数据
126517
126560
  this.UpdateFullData=function(data)
126518
126561
  {
126519
- var arySymbol=[];
126562
+ var arySymbol=[];
126520
126563
  if (IFrameSplitOperator.IsNonEmptyArray(data.data))
126521
126564
  {
126522
126565
  //0=证券代码 1=股票名称
@@ -126534,17 +126577,19 @@ function JSReportChartContainer(uielement)
126534
126577
  stock=new HQReportItem();
126535
126578
  stock.OriginalSymbol=symbol;
126536
126579
  this.MapStockData.set(symbol, stock);
126580
+
126537
126581
  }
126538
126582
 
126539
126583
  stock.Symbol=this.GetSymbolNoSuffix(symbol);
126540
126584
  stock.Name=item[1];
126541
126585
  this.ReadStockJsonData(stock, item);
126542
-
126543
126586
  arySymbol.push(symbol);
126544
126587
  }
126545
126588
  }
126546
126589
 
126547
126590
  //设置显示数据
126591
+ this.Data.Data=[];
126592
+ this.SourceData.Data=[];
126548
126593
  if (IFrameSplitOperator.IsNonEmptyArray(arySymbol))
126549
126594
  {
126550
126595
  for(var i=0;i<arySymbol.length;++i)
@@ -128667,10 +128712,73 @@ function JSReportChartContainer(uielement)
128667
128712
  }
128668
128713
  }
128669
128714
 
128715
+ //列排序
128716
+ this.SortColumn=function(index, sortType)
128717
+ {
128718
+ if (index<0) return false;
128719
+ var reportChart=this.GetReportChart();
128720
+ if (!reportChart) return false;
128721
+
128722
+ var column=reportChart.Column[index];
128723
+
128724
+ if (!column) return false;
128725
+ if (column.Sort!=1 && column.Sort!=2) return false;
128726
+
128727
+ var sortInfo={ Field:index, Sort:sortType };
128728
+ if (sortInfo.Sort==0) //不排序还原
128729
+ {
128730
+ this.Data.Data=[];
128731
+ if (IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))
128732
+ this.Data.Data=this.SourceData.Data.slice();
128733
+ }
128734
+ else if (sortInfo.Sort==1 || sortInfo.Sort==2)
128735
+ {
128736
+ if (column.Sort==1) //本地排序
128737
+ {
128738
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_LOCAL_SORT);
128739
+ if (event && event.Callback)
128740
+ {
128741
+ var sendData={ Column:column, SortInfo:sortInfo, SymbolList:this.Data.Data, Result:null };
128742
+ event.Callback (event, sendData, this);
128743
+ if (Array.isArray(sendData.Result)) this.Data.Data=sendData.Result;
128744
+ }
128745
+ else
128746
+ {
128747
+ this.Data.Data.sort((left, right)=> { return this.LocalSort(left, right, column, sortInfo.Sort); });
128748
+ }
128749
+ }
128750
+ else if (column.Sort==2) //远程排序
128751
+ {
128752
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
128753
+
128754
+ this.SortInfo.Field=sortInfo.Field;
128755
+ this.SortInfo.Sort=sortInfo.Sort;
128756
+ this.Data.YOffset=0;
128757
+ this.ResetReportSelectStatus();
128758
+ this.RequestStockSortData(column, sortInfo.Field, sortInfo.Sort); //远程排序
128759
+ return true;
128760
+ }
128761
+ }
128762
+
128763
+ this.Data.YOffset=0;
128764
+ this.ResetReportSelectStatus();
128765
+ this.SortInfo.Field=sortInfo.Field;
128766
+ this.SortInfo.Sort=sortInfo.Sort;
128767
+ this.Draw();
128768
+ this.DelayUpdateStockData();
128769
+ return true;
128770
+ }
128771
+
128670
128772
  //点表头
128671
128773
  this.OnClickHeader=function(clickData, e)
128672
128774
  {
128673
128775
  var header=clickData.Header;
128776
+ if (header.Column && header.Column.EnablePopupHeaderMenu)
128777
+ {
128778
+ this.PopupHeaderMenu(clickData, e);
128779
+ return;
128780
+ }
128781
+
128674
128782
  if (header.Column && (header.Column.Sort==1 || header.Column.Sort==2))
128675
128783
  {
128676
128784
  var index=header.Index;
@@ -128749,6 +128857,52 @@ function JSReportChartContainer(uielement)
128749
128857
  }
128750
128858
  }
128751
128859
 
128860
+ this.PopupHeaderMenu=function(clickData, e)
128861
+ {
128862
+ if (!this.JSPopMenu) return;
128863
+ if (!this.GetEventCallback) return;
128864
+
128865
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_REPORT_HEADER_MENU);
128866
+ if (!event || !event.Callback) return;
128867
+
128868
+ var header=clickData.Header;
128869
+ var column=header.Column;
128870
+ var menuData={ Menu:null, Position:JSPopMenu.POSITION_ID.DROPDOWN_MENU_ID };
128871
+ menuData.ClickCallback=(data)=>{ this.OnClickHeaderMenu(column, data); }
128872
+
128873
+ var sendData={ MenuData:menuData, Column:column, Index:header.Index, PreventDefault:false, e:e };
128874
+ event.Callback(event, sendData, this);
128875
+ if (sendData.PreventDefault==true) return;
128876
+
128877
+ if (!menuData.Menu) return;
128878
+
128879
+ this.PopupMenuByDrapdown(menuData, header.Rect);
128880
+ }
128881
+
128882
+ //下拉菜单
128883
+ this.PopupMenuByDrapdown=function(menuData, rtButton)
128884
+ {
128885
+ if (!this.JSPopMenu) return;
128886
+
128887
+ var pixelRatio=GetDevicePixelRatio();
128888
+ var rtCell={ Left:rtButton.Left/pixelRatio, Right:rtButton.Right/pixelRatio, Bottom:rtButton.Bottom/pixelRatio, Top:rtButton.Top/pixelRatio };
128889
+ rtCell.Width=rtCell.Right-rtCell.Left;
128890
+ rtCell.Height=rtCell.Bottom-rtCell.Top;
128891
+
128892
+ var rtClient=this.UIElement.getBoundingClientRect();
128893
+ var rtScroll=GetScrollPosition();
128894
+
128895
+ var offsetLeft=rtClient.left+rtScroll.Left;
128896
+ var offsetTop=rtClient.top+rtScroll.Top;
128897
+ rtCell.Left+=offsetLeft;
128898
+ rtCell.Right+=offsetLeft;
128899
+ rtCell.Top+=offsetTop;
128900
+ rtCell.Bottom+=offsetTop;
128901
+
128902
+ this.JSPopMenu.CreatePopMenu(menuData);
128903
+ this.JSPopMenu.PopupMenuByDrapdown(rtCell);
128904
+ }
128905
+
128752
128906
  this.GetTabPopMenu=function(tabItem)
128753
128907
  {
128754
128908
  var aryMenu=[ ];
@@ -128864,6 +129018,24 @@ function JSReportChartContainer(uielement)
128864
129018
  this.Draw();
128865
129019
  }
128866
129020
 
129021
+ this.OnClickHeaderMenu=function(menuData, data)
129022
+ {
129023
+ JSConsole.Chart.Log('[JSReportChartContainer::OnClickHeaderMenu] ',menuData, data);
129024
+
129025
+ var cmdID=data.Data.ID;
129026
+ var aryArgs=data.Data.Args;
129027
+
129028
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
129029
+ if (event && event.Callback)
129030
+ {
129031
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data, MenuData:menuData };
129032
+ event.Callback(event,data,this);
129033
+ if (data.PreventDefault) return;
129034
+ }
129035
+
129036
+ this.ExecuteMenuCommand(cmdID,aryArgs);
129037
+ }
129038
+
128867
129039
  this.ExecuteMenuCommand=function(cmdID, aryArgs)
128868
129040
  {
128869
129041
  JSConsole.Chart.Log('[JSReportChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
@@ -128880,6 +129052,22 @@ function JSReportChartContainer(uielement)
128880
129052
  case JSCHART_MENU_ID.CMD_REPORT_CHANGE_BLOCK_ID:
128881
129053
  if (srcParam) this.ChangeSymbol(srcParam);
128882
129054
  break;
129055
+ case JSCHART_MENU_ID.CMD_REPORT_COLUMN_SORT_ID:
129056
+ if (IFrameSplitOperator.IsNumber(param) && IFrameSplitOperator.IsNumber(aryArgs[1]))
129057
+ this.SortColumn(param, aryArgs[1]);
129058
+ break;
129059
+ case JSCHART_MENU_ID.CMD_REPORT_COLUMN_MOVE_ID:
129060
+ if (IFrameSplitOperator.IsNumber(param) && IFrameSplitOperator.IsNumber(aryArgs[1]))
129061
+ {
129062
+ var leftIndex=param;
129063
+ var rightIndex=param+aryArgs[1];
129064
+ this.SwapColumn(leftIndex, rightIndex, {Redraw:true});
129065
+ }
129066
+ break;
129067
+ case JSCHART_MENU_ID.CMD_REPORT_COLUMN_DEL_ID:
129068
+ if (IFrameSplitOperator.IsNumber(param))
129069
+ this.DeleteColumn(param, {Redraw:true});
129070
+ break;
128883
129071
  }
128884
129072
  }
128885
129073
 
@@ -128897,6 +129085,20 @@ function JSReportChartContainer(uielement)
128897
129085
  }
128898
129086
  }
128899
129087
 
129088
+ this.DeleteColumn=function(index, option)
129089
+ {
129090
+ var reportChart=this.GetReportChart();
129091
+ if (!reportChart) return;
129092
+
129093
+ if (!reportChart.DeleteColumn(index)) return;
129094
+
129095
+ if (option && option.Redraw)
129096
+ {
129097
+ this.SetSizeChange(true);
129098
+ this.Draw();
129099
+ }
129100
+ }
129101
+
128900
129102
  //本地排序
128901
129103
  this.LocalSort=function(left, right, column, sortType)
128902
129104
  {
@@ -129751,6 +129953,9 @@ function ChartReport()
129751
129953
  else colItem.IsDrawCallback=false;
129752
129954
  if (item.Icon) colItem.Icon=item.Icon;
129753
129955
 
129956
+ //点击表头弹出菜单
129957
+ if (IFrameSplitOperator.IsBool(item.EnablePopupHeaderMenu)) colItem.EnablePopupHeaderMenu=item.EnablePopupHeaderMenu;
129958
+
129754
129959
  if (item.Sort==1 || item.Sort==2) //1本地排序 2=远程排序
129755
129960
  {
129756
129961
  colItem.SortType=[1,2]; //默认 降序 ,升序
@@ -129858,6 +130063,15 @@ function ChartReport()
129858
130063
  return true;
129859
130064
  }
129860
130065
 
130066
+ this.DeleteColumn=function(index)
130067
+ {
130068
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Column)) return false;
130069
+ if (index<0 || index>=this.Column.length) return false;
130070
+
130071
+ this.Column.splice(index,1);
130072
+ return true;
130073
+ }
130074
+
129861
130075
  this.GetXScrollPos=function()
129862
130076
  {
129863
130077
  return this.Data.XOffset;
@@ -140603,7 +140817,7 @@ function HQChartScriptWorker()
140603
140817
 
140604
140818
 
140605
140819
 
140606
- var HQCHART_VERSION="1.1.13587";
140820
+ var HQCHART_VERSION="1.1.13594";
140607
140821
 
140608
140822
  function PrintHQChartVersion()
140609
140823
  {