@refinitiv-ui/efx-grid 6.0.32 → 6.0.34

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.
Files changed (70) hide show
  1. package/lib/core/dist/core.js +197 -46
  2. package/lib/core/dist/core.min.js +1 -1
  3. package/lib/core/es6/data/DataTable.d.ts +1 -1
  4. package/lib/core/es6/data/DataTable.js +9 -8
  5. package/lib/core/es6/data/DataView.js +1 -1
  6. package/lib/core/es6/data/Segment.d.ts +2 -0
  7. package/lib/core/es6/data/Segment.js +16 -0
  8. package/lib/core/es6/data/SegmentCollection.d.ts +1 -3
  9. package/lib/core/es6/data/SegmentCollection.js +25 -18
  10. package/lib/core/es6/grid/Core.d.ts +4 -0
  11. package/lib/core/es6/grid/Core.js +27 -6
  12. package/lib/core/es6/grid/plugins/SortableTitlePlugin.d.ts +1 -0
  13. package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +36 -12
  14. package/lib/grid/index.js +1 -1
  15. package/lib/grid/themes/halo/dark/efx-grid.js +1 -1
  16. package/lib/grid/themes/halo/dark/es5/all-elements.js +1 -1
  17. package/lib/grid/themes/halo/efx-grid.less +2 -0
  18. package/lib/grid/themes/halo/light/efx-grid.js +1 -1
  19. package/lib/grid/themes/halo/light/es5/all-elements.js +1 -1
  20. package/lib/rt-grid/dist/rt-grid.js +945 -331
  21. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  22. package/lib/rt-grid/es6/ColumnDefinition.js +13 -8
  23. package/lib/rt-grid/es6/DataConnector.js +3 -2
  24. package/lib/rt-grid/es6/Grid.d.ts +3 -1
  25. package/lib/rt-grid/es6/Grid.js +130 -28
  26. package/lib/rt-grid/es6/RowDefinition.d.ts +7 -2
  27. package/lib/rt-grid/es6/RowDefinition.js +49 -11
  28. package/lib/rt-grid/es6/SnapshotFiller.d.ts +1 -0
  29. package/lib/rt-grid/es6/SnapshotFiller.js +1 -11
  30. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +4 -0
  31. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +58 -30
  32. package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +2 -0
  33. package/lib/tr-grid-column-stack/es6/ColumnStack.js +56 -22
  34. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +12 -5
  35. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +128 -42
  36. package/lib/tr-grid-heat-map/es6/HeatMap.d.ts +3 -3
  37. package/lib/tr-grid-heat-map/es6/HeatMap.js +13 -2
  38. package/lib/tr-grid-row-dragging/es6/RowDragging.d.ts +2 -1
  39. package/lib/tr-grid-row-dragging/es6/RowDragging.js +142 -17
  40. package/lib/tr-grid-textformatting/es6/TextFormatting.d.ts +20 -20
  41. package/lib/tr-grid-textformatting/es6/TextFormatting.js +37 -138
  42. package/lib/tr-grid-util/es6/CellPainter.d.ts +1 -1
  43. package/lib/tr-grid-util/es6/CellPainter.js +56 -55
  44. package/lib/tr-grid-util/es6/FieldFormatter.js +6 -2
  45. package/lib/tr-grid-util/es6/GroupDefinitions.d.ts +2 -0
  46. package/lib/tr-grid-util/es6/GroupDefinitions.js +15 -0
  47. package/lib/tr-grid-util/es6/NumberFormatter.js +23 -11
  48. package/lib/tr-grid-util/es6/Util.d.ts +6 -0
  49. package/lib/tr-grid-util/es6/Util.js +68 -0
  50. package/lib/tr-grid-util/es6/jet/CollectionDict.d.ts +1 -1
  51. package/lib/tr-grid-util/es6/jet/CollectionDict.js +12 -2
  52. package/lib/tr-grid-util/es6/jet/MockQuotes2.js +170 -47
  53. package/lib/types/es6/ColumnGrouping.d.ts +4 -0
  54. package/lib/types/es6/ColumnSelection.d.ts +2 -0
  55. package/lib/types/es6/ColumnStack.d.ts +2 -0
  56. package/lib/types/es6/ConditionalColoring.d.ts +12 -5
  57. package/lib/types/es6/Core/data/Segment.d.ts +2 -0
  58. package/lib/types/es6/Core/data/SegmentCollection.d.ts +1 -3
  59. package/lib/types/es6/Core/grid/Core.d.ts +4 -0
  60. package/lib/types/es6/Core/grid/plugins/SortableTitlePlugin.d.ts +1 -0
  61. package/lib/types/es6/Core/grid/util/SelectionList.d.ts +6 -2
  62. package/lib/types/es6/HeatMap.d.ts +3 -3
  63. package/lib/types/es6/RealtimeGrid/Grid.d.ts +3 -1
  64. package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +7 -2
  65. package/lib/types/es6/RealtimeGrid/SnapshotFiller.d.ts +1 -0
  66. package/lib/types/es6/RowDragging.d.ts +25 -2
  67. package/lib/types/es6/StatisticsRow.d.ts +25 -25
  68. package/lib/types/es6/TextFormatting.d.ts +20 -20
  69. package/lib/versions.json +7 -7
  70. package/package.json +1 -1
@@ -18,6 +18,7 @@ import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
18
18
  * @property {Function=} drag=null Function handler for drag event
19
19
  * @property {Function=} dragEnd=null Function handler for dragEnd event
20
20
  * @property {Function=} dataMoved=null Function handler for dataMoved event
21
+ * @property {Function=} beforeDataMoved=null Function handler for beforeDataMoved event
21
22
  */
22
23
 
23
24
  /** @event RowDraggingPlugin#drag
@@ -42,8 +43,34 @@ import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
42
43
  * @type {Object}
43
44
  */
44
45
  /** @event RowDraggingPlugin#dataMoved
45
- * @description Fired when rows or data are moved by drag operation.
46
+ * @description Fired when rows or data are moved by the drag operation.
46
47
  * @type {Object}
48
+ * @property {Array.<number>} srcRowIndices row indices of the selected rows
49
+ * @property {Array.<string>} srcRowIds row ids of the selected rows
50
+ * @property {Array.<string>} srcRowTypes row types of the selected rows
51
+ * @property {string} consolidatedSrcRowType "MIXED" type is set if there are two or more row types in the srcRowTypes
52
+ * @property {number} destRowIndex row index of the drop area
53
+ * @property {string} destRowId row id of the drop area. This will be empty string for the end of grid
54
+ * @property {number} destRowType row type of the drop area. This will be empty string for the end of grid
55
+ */
56
+ /** @event RowDraggingPlugin#beforeDataMoved
57
+ * @description Fired after mouseup and before the data/row is about to be moved. You can check the current drag and drop states, cancel operation or apply custom tasks in this event.
58
+ * @type {Object}
59
+ * @property {Array.<number>} srcRowIndices row indices of the selected rows
60
+ * @property {Array.<string>} srcRowIds row ids of the selected rows
61
+ * @property {Array.<string>} srcRowTypes row types of the selected rows
62
+ * @property {string} consolidatedSrcRowType "MIXED" type is set if there are two or more row types in the srcRowTypes
63
+ * @property {number} destRowIndex row index of the drop area
64
+ * @property {string} destRowId row id of the drop area. This will be empty string for the end of grid
65
+ * @property {number} destRowType row type of the drop area. This will be empty string for the end of grid
66
+ * @example
67
+ * beforeDataMoved: function(e) {
68
+ * var srcRowType = e.srcRowTypes[0];
69
+ * var destRowType = e.destRowType;
70
+ * if(srcRowType === "GROUP_MEMBER" && destRowType === "CONTENT") {
71
+ * e.cancel = true; // Prevent a group member row from moving outside of its own group
72
+ * }
73
+ * }
47
74
  */
48
75
 
49
76
 
@@ -55,6 +82,27 @@ var _isInContentSection = function (pos) {
55
82
  return (pos && pos["sectionType"] === "content") ? true : false;
56
83
  };
57
84
 
85
+ /** @private
86
+ * @param {string} rowType
87
+ * @return {boolean}
88
+ */
89
+ var _isNormalRowType = function (rowType) {
90
+ if(rowType) {
91
+ if(rowType === "CONTENT") {
92
+ return true;
93
+ }
94
+ if(rowType === "CHAIN") {
95
+ return true;
96
+ }
97
+ if(rowType === "GROUP_HEADER") {
98
+ return true;
99
+ }
100
+ return false;
101
+ } else {
102
+ return true;
103
+ }
104
+ };
105
+
58
106
  /** @constructor
59
107
  * @param {RowDraggingPlugin.Options=} options
60
108
  * @extends {GridPlugin}
@@ -397,6 +445,7 @@ RowDraggingPlugin.prototype.config = function (options) {
397
445
  this.addListener(extOptions, "drag");
398
446
  this.addListener(extOptions, "dragEnd");
399
447
  this.addListener(extOptions, "dataMoved");
448
+ this.addListener(extOptions, "beforeDataMoved");
400
449
  };
401
450
 
402
451
  /** Get a current state of grid and extension config
@@ -795,7 +844,7 @@ RowDraggingPlugin.prototype._onDragEnd = function (e) {
795
844
  var destGrid = destPos["grid"] || srcGrid;
796
845
  var destRowIndex = destPos["rowIndex"];
797
846
 
798
- var rowSelection = srcGrid.getPlugin('RowSelectionPlugin');
847
+ var rowSelection = srcGrid.getPlugin("RowSelectionPlugin");
799
848
  var srcRowIndices = rowSelection && rowSelection.getSelectedRows();
800
849
  if (!srcRowIndices || !srcRowIndices.length) {
801
850
  // case no row selection or it disabled
@@ -834,10 +883,9 @@ RowDraggingPlugin.prototype._onDragEnd = function (e) {
834
883
  * @return {number}
835
884
  */
836
885
  RowDraggingPlugin.prototype._moveRows = function (srcRowRef, destRowIndex, srcGrid, destGrid, evtArg) {
837
- var destDv = destGrid.getDataSource();
838
-
839
886
  var srcRowIndices = null;
840
887
  var srcDv = srcGrid.getDataSource();
888
+ var destDv = destGrid.getDataSource();
841
889
  if(typeof srcRowRef === "string") {
842
890
  var srcRowIndex = srcDv.getRowIndex(this._startingRid);
843
891
  if(srcRowIndex >= 0) {
@@ -851,27 +899,103 @@ RowDraggingPlugin.prototype._moveRows = function (srcRowRef, destRowIndex, srcGr
851
899
  return 0;
852
900
  }
853
901
 
902
+ // Available row types are ["CONTENT", "CHAIN", "CONSTITUENT", "GROUP_HEADER", "SUBGROUP_HEADER", "GROUP_MEMBER"]
903
+ var i, len;
904
+ var srcCount = srcRowIndices.length;
905
+ var srcRowIds = new Array(srcCount);
906
+ var srcRowTypes = [];
907
+ var conRowType = "";
908
+ var api = this.getGridApi();
909
+ for(i = 0; i < srcCount; ++i) {
910
+ var srcIndex = srcRowIndices[i];
911
+ var rowType = api.getRowType(srcIndex);
912
+ srcRowIds[i] = srcDv.getRowId(srcIndex);
913
+ srcRowTypes[i] = rowType;
914
+ if(conRowType) {
915
+ if(conRowType !== rowType) {
916
+ conRowType = "MIXED";
917
+ }
918
+ } else {
919
+ conRowType = rowType;
920
+ }
921
+ }
922
+ var destRowType = api.getRowType(destRowIndex); // TODO: this has to be get from destGrid
923
+ var destRowId = destDv.getRowId(destRowIndex);
924
+ var parentRowId, childRowIds;
925
+
926
+ if(this.hasListener("beforeDataMoved")) {
927
+ evtArg["srcRowIndices"] = srcRowIndices;
928
+ evtArg["srcRowIds"] = srcRowIds;
929
+ evtArg["srcRowTypes"] = srcRowTypes;
930
+ evtArg["consolidatedSrcRowType"] = conRowType;
931
+ evtArg["destRowIndex"] = destRowIndex;
932
+ evtArg["destRowId"] = destRowId;
933
+ evtArg["destRowType"] = destRowType;
934
+ this._dispatch("beforeDataMoved", evtArg);
935
+ if(evtArg["cancel"]) {
936
+ return 0;
937
+ }
938
+ }
854
939
 
940
+ var rsp = srcGrid.getPlugin("RowSegmentingPlugin");
855
941
  var movedRowIds = null;
856
- var destRowId = destDv.getRowId(destRowIndex);
857
942
  if(srcGrid === destGrid) { // TODO: Support wrap mode
858
- movedRowIds = srcDv.moveRow(srcRowIndices, destRowIndex) || [];
943
+ if(conRowType === "MIXED") {
944
+ movedRowIds = srcDv.moveRow(srcRowIds, destRowId);
945
+ } else if(conRowType === "CONTENT") {
946
+ if(destRowType === "GROUP_HEADER") {
947
+ childRowIds = rsp.getSegmentChildIds(destRowId);
948
+ if(childRowIds) {
949
+ movedRowIds = srcDv.moveRow(srcRowIds, destRowId);
950
+ } else { // Add content row as a new member only if there is no member
951
+ rsp.addSegmentChildren(destRowId, srcRowIds);
952
+ movedRowIds = srcRowIds;
953
+ }
954
+ } else if(_isNormalRowType(destRowType)) {
955
+ movedRowIds = srcDv.moveRow(srcRowIds, destRowId);
956
+ } else if(destRowType === "GROUP_MEMBER") {
957
+ parentRowId = rsp.getSegmentParentRowId(destRowId);
958
+ rsp.addSegmentChildren(parentRowId, srcRowIds);
959
+
960
+ srcDv.moveRow(srcRowIds, destRowId);
961
+ movedRowIds = srcRowIds;
962
+ }
963
+ } else if(conRowType === "CHAIN" || conRowType === "GROUP_HEADER") {
964
+ if(_isNormalRowType(destRowType)) {
965
+ movedRowIds = srcDv.moveRow(srcRowIds, destRowId);
966
+ }
967
+ } else if(conRowType === "GROUP_MEMBER") {
968
+ if(srcCount === 1) {
969
+ parentRowId = rsp.getSegmentParentRowId(srcRowIds[0]);
970
+ childRowIds = rsp.getSegmentChildIds(parentRowId);
971
+ var childCount = childRowIds ? childRowIds.length : 0;
972
+ var endOfSegment = srcDv.getRowIndex(parentRowId) + childCount + 1;
973
+ if(destRowIndex === endOfSegment) {
974
+ movedRowIds = srcDv.moveRow(srcRowIds, destRowId);
975
+ } else if(destRowType === "GROUP_MEMBER") {
976
+ var destParentRowId = rsp.getSegmentParentRowId(destRowId);
977
+ if(parentRowId === destParentRowId) {
978
+ movedRowIds = srcDv.moveRow(srcRowIds, destRowId);
979
+ }
980
+ } else if(_isNormalRowType(destRowType)) { // move member out of existing segment
981
+ rsp.removeSegmentChild(parentRowId, srcRowIds[0]);
982
+
983
+ movedRowIds = srcDv.moveRow(srcRowIds[0], destRowId);
984
+ }
985
+ } else {
986
+ movedRowIds = srcDv.moveRow(srcRowIds, destRowId);
987
+ }
988
+ } // else CONSTITUENT, SUBGROUP_HEADER and other types cannot be moved
859
989
  } else {
990
+ // TODO: Add support moving row based on row types
860
991
  // TODO: Check if we support moving to last row for multi table
861
- // if(!destRowId) {
862
- // return 0;
863
- // }
864
- movedRowIds = [];
992
+ movedRowIds = srcRowIds;
865
993
  evtArg["destGrid"] = destGrid;
866
994
 
867
995
  var originalRows = [];
868
- var i;
869
- var len = srcRowIndices.length;
870
- for(i = 0; i < len; ++i) {
871
- var rowId = srcDv.getRowId(srcRowIndices[i]);
996
+ for(i = 0; i < srcCount; ++i) {
872
997
  var rowData = srcDv.getRowData(rowId);
873
998
  if(rowData) {
874
- movedRowIds.push(rowId);
875
999
  originalRows.push(rowData);
876
1000
  }
877
1001
  }
@@ -891,14 +1015,15 @@ RowDraggingPlugin.prototype._moveRows = function (srcRowRef, destRowIndex, srcGr
891
1015
  }
892
1016
  }
893
1017
 
894
- if(movedRowIds.length) {
1018
+ var moveCount = movedRowIds ? movedRowIds.length : 0;
1019
+ if(moveCount) {
895
1020
  evtArg["originRowId"] = movedRowIds[0];
896
1021
  evtArg["originRowIds"] = movedRowIds;
897
1022
  evtArg["destinationRowId"] = destRowId; // Return empty string for the last row
898
1023
 
899
1024
  this._dispatch("dataMoved", evtArg);
900
1025
  }
901
- return movedRowIds.length;
1026
+ return moveCount;
902
1027
  };
903
1028
  /** @private
904
1029
  * @return {boolean}
@@ -7,30 +7,30 @@ import { DateTime } from '../../tr-grid-util/es6/DateTime.js';
7
7
  declare namespace TextFormattingPlugin {
8
8
 
9
9
  type FormatOptions = {
10
- formatType?: string,
11
- type?: string,
12
- field?: string,
13
- decimalPlaces?: number,
14
- precisionEnabled?: boolean,
15
- plusSign?: boolean,
16
- separator?: boolean,
17
- percentSign?: boolean,
18
- scalingUnit?: string,
19
- multiplyBy100?: boolean,
20
- mutiplyBy100?: boolean,
21
- dateTimeFormat?: string,
22
- useUTCTime?: boolean,
23
- autoTextFormatting?: boolean,
24
- formatLogic?: ((...params: any[]) => any)
10
+ formatType?: string|null,
11
+ type?: string|null,
12
+ field?: string|null,
13
+ decimalPlaces?: number|null,
14
+ precisionEnabled?: boolean|null,
15
+ plusSign?: boolean|null,
16
+ separator?: boolean|null,
17
+ percentSign?: boolean|null,
18
+ scalingUnit?: string|null,
19
+ multiplyBy100?: boolean|null,
20
+ mutiplyBy100?: boolean|null,
21
+ dateTimeFormat?: string|null,
22
+ useUTCTime?: boolean|null,
23
+ autoTextFormatting?: boolean|null,
24
+ formatLogic?: ((...params: any[]) => any)|null
25
25
  };
26
26
 
27
27
  type ColumnOptions = {
28
- formatType?: (string|TextFormattingPlugin.FormatOptions),
29
- autoTextFormatting?: boolean
28
+ formatType?: (string|TextFormattingPlugin.FormatOptions)|null,
29
+ autoTextFormatting?: boolean|null
30
30
  };
31
31
 
32
32
  type GridOptions = {
33
- autoTextFormatting?: boolean
33
+ autoTextFormatting?: boolean|null
34
34
  };
35
35
 
36
36
  type FormatLogicArguments = {
@@ -40,7 +40,7 @@ declare namespace TextFormattingPlugin {
40
40
  formattedText: string,
41
41
  cell: any,
42
42
  rowData: any,
43
- format: ((...params: any[]) => any)
43
+ format: ((...params: any[]) => any)|null
44
44
  };
45
45
 
46
46
  }
@@ -61,7 +61,7 @@ declare class TextFormattingPlugin extends GridPlugin {
61
61
 
62
62
  public getConfigObject(gridOptions?: any): any;
63
63
 
64
- public setColumnFormat(colIndex: number, formatOptions: TextFormattingPlugin.FormatOptions): void;
64
+ public setColumnFormat(colIndex: number, formatOptions: TextFormattingPlugin.FormatOptions|null): void;
65
65
 
66
66
  public getColumnFormatOptions(colIndex: number, options?: any): any;
67
67