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/lib/umychart.vue.js +73 -59
- package/package.json +1 -1
- package/src/jscommon/umychart.js +47 -4
- package/src/jscommon/umychart.report.js +169 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +217 -5
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +217 -5
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
136863
|
+
var HQCHART_VERSION="1.1.13594";
|
|
136652
136864
|
|
|
136653
136865
|
function PrintHQChartVersion()
|
|
136654
136866
|
{
|