hqchart 1.1.13590 → 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13590",
3
+ "version": "1.1.13595",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -2602,6 +2602,7 @@ var JSCHART_EVENT_ID=
2602
2602
  ON_CLICK_REPORT_CHECKBOX:141, //报价列表checkbox
2603
2603
  ON_CLICK_REPORT_BUTTON:142, //报价列表按钮
2604
2604
  ON_CLICK_REPORT_LINK:143, //报价列表 链接
2605
+ ON_CREATE_REPORT_HEADER_MENU:144, //报价列表 表头菜单
2605
2606
 
2606
2607
 
2607
2608
  ON_CHANGE_INDEX:150, //切换指标
@@ -2778,8 +2779,10 @@ var JSCHART_MENU_ID=
2778
2779
 
2779
2780
 
2780
2781
  CMD_REPORT_CHANGE_BLOCK_ID:60, //报价列表 切换板块ID
2781
-
2782
-
2782
+ CMD_REPORT_COLUMN_SORT_ID:61, //报价列表 表头排序 Arg[列序号, 排序方向]
2783
+ CMD_REPORT_COLUMN_DEL_ID:62, //报价列表 删除列
2784
+ CMD_REPORT_COLUMN_MOVE_ID:63, //报价列表 列移动
2785
+ CMD_REPORT_COLUMN_FILTER_ID:64, //报价列表 筛选
2783
2786
  }
2784
2787
 
2785
2788
 
@@ -56956,6 +56959,16 @@ function ChartArrowMarker()
56956
56959
  this.OnlyMoveXIndex=true;
56957
56960
  this.IsSupportMagnet=true;
56958
56961
 
56962
+ this.Super_SetOption=this.SetOption; //父类函数
56963
+
56964
+ this.SetOption=function(option)
56965
+ {
56966
+ this.Super_SetOption(option);
56967
+
56968
+ if (option.AreaColor) this.AreaColor=option.AreaColor;
56969
+ else this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor, 0.6);
56970
+ }
56971
+
56959
56972
  this.CalculatePoint=function(angle, ptStart, ptEnd, lineWidth)
56960
56973
  {
56961
56974
  var theta=angle; //三角斜边一直线夹角
@@ -56999,9 +57012,12 @@ function ChartArrowMarker()
56999
57012
  this.Canvas.lineTo(outArrow.Bottom.X,outArrow.Bottom.Y);
57000
57013
  this.Canvas.lineTo(insideArrow.Bottom.X,insideArrow.Bottom.Y);
57001
57014
  this.Canvas.lineTo(ptStart.X,ptStart.Y);
57002
- this.Canvas.closePath();
57003
57015
 
57004
- this.Canvas.fillStyle=this.LineColor;
57016
+ this.Canvas.strokeStyle=this.LineColor;
57017
+ this.Canvas.stroke();
57018
+
57019
+ this.Canvas.closePath();
57020
+ this.Canvas.fillStyle=this.AreaColor;
57005
57021
  this.Canvas.fill();
57006
57022
 
57007
57023
  /*
@@ -65792,6 +65808,9 @@ function ChartPriceRange()
65792
65808
 
65793
65809
  this.DrawArrow({X:ToFixedPoint(xCenter), Y:ptStart.Y}, {X:ToFixedPoint(xCenter), Y:ptEnd.Y});
65794
65810
 
65811
+ var bottom=this.Frame.ChartBorder.GetBottomEx();
65812
+ var top=this.Frame.ChartBorder.GetTopEx();
65813
+
65795
65814
  //文字输出
65796
65815
  var startValue=this.Frame.GetYData(ptStart.Y,false);
65797
65816
  var endValue=this.Frame.GetYData(ptEnd.Y,false);
@@ -65807,6 +65826,23 @@ function ChartPriceRange()
65807
65826
  else rtTextBG.Top=ptEnd.Y+4;
65808
65827
  rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;
65809
65828
 
65829
+ if (diffValue>0)
65830
+ {
65831
+ if (rtTextBG.Top<=top)
65832
+ {
65833
+ rtTextBG.Top=top;
65834
+ rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;
65835
+ }
65836
+ }
65837
+ else
65838
+ {
65839
+ if (rtTextBG.Bottom>=bottom)
65840
+ {
65841
+ rtTextBG.Bottom=bottom;
65842
+ rtTextBG.Top=rtTextBG.Bottom-rtTextBG.Height;
65843
+ }
65844
+ }
65845
+
65810
65846
  if (this.Label.EnableBGColor)
65811
65847
  {
65812
65848
  var path=new Path2D();
@@ -65913,6 +65949,7 @@ function ChartDateRange()
65913
65949
 
65914
65950
 
65915
65951
  //文字输出
65952
+ var bottom=this.Frame.ChartBorder.GetBottomEx();
65916
65953
  var startIndex=this.Frame.GetXData(ptStart.X,false);
65917
65954
  var endIndex=this.Frame.GetXData(ptEnd.X,false);
65918
65955
  var barCount=endIndex-startIndex+1;
@@ -65924,6 +65961,12 @@ function ChartDateRange()
65924
65961
  var rtTextBG={ Left:xCenter-textWidth/2, Top:ptEnd.Y+4, Width:textWidth, Height:textHeight+2 };
65925
65962
  rtTextBG.Bottom=rtTextBG.Top+rtTextBG.Height;
65926
65963
 
65964
+ if (rtTextBG.Bottom>=bottom)
65965
+ {
65966
+ rtTextBG.Bottom=bottom;
65967
+ rtTextBG.Top=rtTextBG.Bottom-rtTextBG.Height;
65968
+ }
65969
+
65927
65970
  if (this.Label.EnableBGColor)
65928
65971
  {
65929
65972
  var path=new Path2D();
@@ -3018,10 +3018,73 @@ function JSReportChartContainer(uielement)
3018
3018
  }
3019
3019
  }
3020
3020
 
3021
+ //列排序
3022
+ this.SortColumn=function(index, sortType)
3023
+ {
3024
+ if (index<0) return false;
3025
+ var reportChart=this.GetReportChart();
3026
+ if (!reportChart) return false;
3027
+
3028
+ var column=reportChart.Column[index];
3029
+
3030
+ if (!column) return false;
3031
+ if (column.Sort!=1 && column.Sort!=2) return false;
3032
+
3033
+ var sortInfo={ Field:index, Sort:sortType };
3034
+ if (sortInfo.Sort==0) //不排序还原
3035
+ {
3036
+ this.Data.Data=[];
3037
+ if (IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))
3038
+ this.Data.Data=this.SourceData.Data.slice();
3039
+ }
3040
+ else if (sortInfo.Sort==1 || sortInfo.Sort==2)
3041
+ {
3042
+ if (column.Sort==1) //本地排序
3043
+ {
3044
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_LOCAL_SORT);
3045
+ if (event && event.Callback)
3046
+ {
3047
+ var sendData={ Column:column, SortInfo:sortInfo, SymbolList:this.Data.Data, Result:null };
3048
+ event.Callback (event, sendData, this);
3049
+ if (Array.isArray(sendData.Result)) this.Data.Data=sendData.Result;
3050
+ }
3051
+ else
3052
+ {
3053
+ this.Data.Data.sort((left, right)=> { return this.LocalSort(left, right, column, sortInfo.Sort); });
3054
+ }
3055
+ }
3056
+ else if (column.Sort==2) //远程排序
3057
+ {
3058
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
3059
+
3060
+ this.SortInfo.Field=sortInfo.Field;
3061
+ this.SortInfo.Sort=sortInfo.Sort;
3062
+ this.Data.YOffset=0;
3063
+ this.ResetReportSelectStatus();
3064
+ this.RequestStockSortData(column, sortInfo.Field, sortInfo.Sort); //远程排序
3065
+ return true;
3066
+ }
3067
+ }
3068
+
3069
+ this.Data.YOffset=0;
3070
+ this.ResetReportSelectStatus();
3071
+ this.SortInfo.Field=sortInfo.Field;
3072
+ this.SortInfo.Sort=sortInfo.Sort;
3073
+ this.Draw();
3074
+ this.DelayUpdateStockData();
3075
+ return true;
3076
+ }
3077
+
3021
3078
  //点表头
3022
3079
  this.OnClickHeader=function(clickData, e)
3023
3080
  {
3024
3081
  var header=clickData.Header;
3082
+ if (header.Column && header.Column.EnablePopupHeaderMenu)
3083
+ {
3084
+ this.PopupHeaderMenu(clickData, e);
3085
+ return;
3086
+ }
3087
+
3025
3088
  if (header.Column && (header.Column.Sort==1 || header.Column.Sort==2))
3026
3089
  {
3027
3090
  var index=header.Index;
@@ -3100,6 +3163,52 @@ function JSReportChartContainer(uielement)
3100
3163
  }
3101
3164
  }
3102
3165
 
3166
+ this.PopupHeaderMenu=function(clickData, e)
3167
+ {
3168
+ if (!this.JSPopMenu) return;
3169
+ if (!this.GetEventCallback) return;
3170
+
3171
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_REPORT_HEADER_MENU);
3172
+ if (!event || !event.Callback) return;
3173
+
3174
+ var header=clickData.Header;
3175
+ var column=header.Column;
3176
+ var menuData={ Menu:null, Position:JSPopMenu.POSITION_ID.DROPDOWN_MENU_ID };
3177
+ menuData.ClickCallback=(data)=>{ this.OnClickHeaderMenu(column, data); }
3178
+
3179
+ var sendData={ MenuData:menuData, Column:column, Index:header.Index, PreventDefault:false, e:e };
3180
+ event.Callback(event, sendData, this);
3181
+ if (sendData.PreventDefault==true) return;
3182
+
3183
+ if (!menuData.Menu) return;
3184
+
3185
+ this.PopupMenuByDrapdown(menuData, header.Rect);
3186
+ }
3187
+
3188
+ //下拉菜单
3189
+ this.PopupMenuByDrapdown=function(menuData, rtButton)
3190
+ {
3191
+ if (!this.JSPopMenu) return;
3192
+
3193
+ var pixelRatio=GetDevicePixelRatio();
3194
+ var rtCell={ Left:rtButton.Left/pixelRatio, Right:rtButton.Right/pixelRatio, Bottom:rtButton.Bottom/pixelRatio, Top:rtButton.Top/pixelRatio };
3195
+ rtCell.Width=rtCell.Right-rtCell.Left;
3196
+ rtCell.Height=rtCell.Bottom-rtCell.Top;
3197
+
3198
+ var rtClient=this.UIElement.getBoundingClientRect();
3199
+ var rtScroll=GetScrollPosition();
3200
+
3201
+ var offsetLeft=rtClient.left+rtScroll.Left;
3202
+ var offsetTop=rtClient.top+rtScroll.Top;
3203
+ rtCell.Left+=offsetLeft;
3204
+ rtCell.Right+=offsetLeft;
3205
+ rtCell.Top+=offsetTop;
3206
+ rtCell.Bottom+=offsetTop;
3207
+
3208
+ this.JSPopMenu.CreatePopMenu(menuData);
3209
+ this.JSPopMenu.PopupMenuByDrapdown(rtCell);
3210
+ }
3211
+
3103
3212
  this.GetTabPopMenu=function(tabItem)
3104
3213
  {
3105
3214
  var aryMenu=[ ];
@@ -3215,6 +3324,24 @@ function JSReportChartContainer(uielement)
3215
3324
  this.Draw();
3216
3325
  }
3217
3326
 
3327
+ this.OnClickHeaderMenu=function(menuData, data)
3328
+ {
3329
+ JSConsole.Chart.Log('[JSReportChartContainer::OnClickHeaderMenu] ',menuData, data);
3330
+
3331
+ var cmdID=data.Data.ID;
3332
+ var aryArgs=data.Data.Args;
3333
+
3334
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
3335
+ if (event && event.Callback)
3336
+ {
3337
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data, MenuData:menuData };
3338
+ event.Callback(event,data,this);
3339
+ if (data.PreventDefault) return;
3340
+ }
3341
+
3342
+ this.ExecuteMenuCommand(cmdID,aryArgs);
3343
+ }
3344
+
3218
3345
  this.ExecuteMenuCommand=function(cmdID, aryArgs)
3219
3346
  {
3220
3347
  JSConsole.Chart.Log('[JSReportChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
@@ -3231,6 +3358,22 @@ function JSReportChartContainer(uielement)
3231
3358
  case JSCHART_MENU_ID.CMD_REPORT_CHANGE_BLOCK_ID:
3232
3359
  if (srcParam) this.ChangeSymbol(srcParam);
3233
3360
  break;
3361
+ case JSCHART_MENU_ID.CMD_REPORT_COLUMN_SORT_ID:
3362
+ if (IFrameSplitOperator.IsNumber(param) && IFrameSplitOperator.IsNumber(aryArgs[1]))
3363
+ this.SortColumn(param, aryArgs[1]);
3364
+ break;
3365
+ case JSCHART_MENU_ID.CMD_REPORT_COLUMN_MOVE_ID:
3366
+ if (IFrameSplitOperator.IsNumber(param) && IFrameSplitOperator.IsNumber(aryArgs[1]))
3367
+ {
3368
+ var leftIndex=param;
3369
+ var rightIndex=param+aryArgs[1];
3370
+ this.SwapColumn(leftIndex, rightIndex, {Redraw:true});
3371
+ }
3372
+ break;
3373
+ case JSCHART_MENU_ID.CMD_REPORT_COLUMN_DEL_ID:
3374
+ if (IFrameSplitOperator.IsNumber(param))
3375
+ this.DeleteColumn(param, {Redraw:true});
3376
+ break;
3234
3377
  }
3235
3378
  }
3236
3379
 
@@ -3248,6 +3391,20 @@ function JSReportChartContainer(uielement)
3248
3391
  }
3249
3392
  }
3250
3393
 
3394
+ this.DeleteColumn=function(index, option)
3395
+ {
3396
+ var reportChart=this.GetReportChart();
3397
+ if (!reportChart) return;
3398
+
3399
+ if (!reportChart.DeleteColumn(index)) return;
3400
+
3401
+ if (option && option.Redraw)
3402
+ {
3403
+ this.SetSizeChange(true);
3404
+ this.Draw();
3405
+ }
3406
+ }
3407
+
3251
3408
  //本地排序
3252
3409
  this.LocalSort=function(left, right, column, sortType)
3253
3410
  {
@@ -4102,6 +4259,9 @@ function ChartReport()
4102
4259
  else colItem.IsDrawCallback=false;
4103
4260
  if (item.Icon) colItem.Icon=item.Icon;
4104
4261
 
4262
+ //点击表头弹出菜单
4263
+ if (IFrameSplitOperator.IsBool(item.EnablePopupHeaderMenu)) colItem.EnablePopupHeaderMenu=item.EnablePopupHeaderMenu;
4264
+
4105
4265
  if (item.Sort==1 || item.Sort==2) //1本地排序 2=远程排序
4106
4266
  {
4107
4267
  colItem.SortType=[1,2]; //默认 降序 ,升序
@@ -4209,6 +4369,15 @@ function ChartReport()
4209
4369
  return true;
4210
4370
  }
4211
4371
 
4372
+ this.DeleteColumn=function(index)
4373
+ {
4374
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Column)) return false;
4375
+ if (index<0 || index>=this.Column.length) return false;
4376
+
4377
+ this.Column.splice(index,1);
4378
+ return true;
4379
+ }
4380
+
4212
4381
  this.GetXScrollPos=function()
4213
4382
  {
4214
4383
  return this.Data.XOffset;
@@ -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();
@@ -128625,10 +128668,73 @@ function JSReportChartContainer(uielement)
128625
128668
  }
128626
128669
  }
128627
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
+
128628
128728
  //点表头
128629
128729
  this.OnClickHeader=function(clickData, e)
128630
128730
  {
128631
128731
  var header=clickData.Header;
128732
+ if (header.Column && header.Column.EnablePopupHeaderMenu)
128733
+ {
128734
+ this.PopupHeaderMenu(clickData, e);
128735
+ return;
128736
+ }
128737
+
128632
128738
  if (header.Column && (header.Column.Sort==1 || header.Column.Sort==2))
128633
128739
  {
128634
128740
  var index=header.Index;
@@ -128707,6 +128813,52 @@ function JSReportChartContainer(uielement)
128707
128813
  }
128708
128814
  }
128709
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
+
128710
128862
  this.GetTabPopMenu=function(tabItem)
128711
128863
  {
128712
128864
  var aryMenu=[ ];
@@ -128822,6 +128974,24 @@ function JSReportChartContainer(uielement)
128822
128974
  this.Draw();
128823
128975
  }
128824
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
+
128825
128995
  this.ExecuteMenuCommand=function(cmdID, aryArgs)
128826
128996
  {
128827
128997
  JSConsole.Chart.Log('[JSReportChartContainer::ExecuteMenuCommand] cmdID=, aryArgs=', cmdID,aryArgs);
@@ -128838,6 +129008,22 @@ function JSReportChartContainer(uielement)
128838
129008
  case JSCHART_MENU_ID.CMD_REPORT_CHANGE_BLOCK_ID:
128839
129009
  if (srcParam) this.ChangeSymbol(srcParam);
128840
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;
128841
129027
  }
128842
129028
  }
128843
129029
 
@@ -128855,6 +129041,20 @@ function JSReportChartContainer(uielement)
128855
129041
  }
128856
129042
  }
128857
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
+
128858
129058
  //本地排序
128859
129059
  this.LocalSort=function(left, right, column, sortType)
128860
129060
  {
@@ -129709,6 +129909,9 @@ function ChartReport()
129709
129909
  else colItem.IsDrawCallback=false;
129710
129910
  if (item.Icon) colItem.Icon=item.Icon;
129711
129911
 
129912
+ //点击表头弹出菜单
129913
+ if (IFrameSplitOperator.IsBool(item.EnablePopupHeaderMenu)) colItem.EnablePopupHeaderMenu=item.EnablePopupHeaderMenu;
129914
+
129712
129915
  if (item.Sort==1 || item.Sort==2) //1本地排序 2=远程排序
129713
129916
  {
129714
129917
  colItem.SortType=[1,2]; //默认 降序 ,升序
@@ -129816,6 +130019,15 @@ function ChartReport()
129816
130019
  return true;
129817
130020
  }
129818
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
+
129819
130031
  this.GetXScrollPos=function()
129820
130032
  {
129821
130033
  return this.Data.XOffset;
@@ -136648,7 +136860,7 @@ function ScrollBarBGChart()
136648
136860
 
136649
136861
 
136650
136862
 
136651
- var HQCHART_VERSION="1.1.13589";
136863
+ var HQCHART_VERSION="1.1.13594";
136652
136864
 
136653
136865
  function PrintHQChartVersion()
136654
136866
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13589";
8
+ var HQCHART_VERSION="1.1.13594";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {