@refinitiv-ui/efx-grid 6.0.33 → 6.0.35
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/column-dragging/es6/ColumnDragging.js +50 -40
- package/lib/core/dist/core.js +210 -38
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataTable.d.ts +3 -1
- package/lib/core/es6/data/DataTable.js +27 -9
- package/lib/core/es6/data/DataView.d.ts +2 -0
- package/lib/core/es6/data/DataView.js +12 -1
- package/lib/core/es6/data/Segment.d.ts +2 -0
- package/lib/core/es6/data/Segment.js +16 -0
- package/lib/core/es6/data/SegmentCollection.d.ts +1 -3
- package/lib/core/es6/data/SegmentCollection.js +25 -18
- package/lib/core/es6/grid/Core.d.ts +12 -0
- package/lib/core/es6/grid/Core.js +64 -2
- package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +13 -7
- package/lib/grid/index.js +1 -1
- package/lib/grid/themes/halo/dark/efx-grid.js +1 -1
- package/lib/grid/themes/halo/dark/es5/all-elements.js +1 -1
- package/lib/grid/themes/halo/efx-grid.less +3 -1
- package/lib/grid/themes/halo/light/efx-grid.js +1 -1
- package/lib/grid/themes/halo/light/es5/all-elements.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +766 -293
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.js +13 -8
- package/lib/rt-grid/es6/DataConnector.js +3 -2
- package/lib/rt-grid/es6/Grid.d.ts +3 -1
- package/lib/rt-grid/es6/Grid.js +148 -40
- package/lib/rt-grid/es6/RowDefSorter.d.ts +5 -5
- package/lib/rt-grid/es6/RowDefSorter.js +165 -71
- package/lib/rt-grid/es6/RowDefinition.d.ts +7 -2
- package/lib/rt-grid/es6/RowDefinition.js +48 -10
- package/lib/rt-grid/es6/SnapshotFiller.d.ts +1 -0
- package/lib/rt-grid/es6/SnapshotFiller.js +1 -11
- package/lib/tr-grid-column-selection/es6/ColumnSelection.js +66 -0
- package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +2 -0
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +38 -13
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +12 -5
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +128 -42
- package/lib/tr-grid-heat-map/es6/HeatMap.d.ts +3 -3
- package/lib/tr-grid-heat-map/es6/HeatMap.js +13 -2
- package/lib/tr-grid-row-dragging/es6/RowDragging.d.ts +2 -1
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +153 -17
- package/lib/tr-grid-rowcoloring/es6/RowColoring.js +3 -2
- package/lib/tr-grid-textformatting/es6/TextFormatting.d.ts +20 -20
- package/lib/tr-grid-textformatting/es6/TextFormatting.js +37 -138
- package/lib/tr-grid-util/es6/CellPainter.d.ts +1 -1
- package/lib/tr-grid-util/es6/CellPainter.js +56 -55
- package/lib/tr-grid-util/es6/DragUI.js +7 -3
- package/lib/tr-grid-util/es6/FieldFormatter.js +6 -2
- package/lib/tr-grid-util/es6/NumberFormatter.js +23 -11
- package/lib/tr-grid-util/es6/Util.d.ts +3 -0
- package/lib/tr-grid-util/es6/Util.js +53 -0
- package/lib/tr-grid-util/es6/jet/DataGenerator.js +36 -33
- package/lib/types/es6/ColumnStack.d.ts +2 -0
- package/lib/types/es6/ConditionalColoring.d.ts +12 -5
- package/lib/types/es6/Core/data/DataTable.d.ts +3 -1
- package/lib/types/es6/Core/data/DataView.d.ts +2 -0
- package/lib/types/es6/Core/data/Segment.d.ts +2 -0
- package/lib/types/es6/Core/data/SegmentCollection.d.ts +1 -3
- package/lib/types/es6/Core/grid/Core.d.ts +4 -0
- package/lib/types/es6/Core/grid/plugins/SortableTitlePlugin.d.ts +1 -0
- package/lib/types/es6/HeatMap.d.ts +3 -3
- package/lib/types/es6/RealtimeGrid/Grid.d.ts +3 -1
- package/lib/types/es6/RealtimeGrid/RowDefSorter.d.ts +5 -5
- package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +7 -2
- package/lib/types/es6/RealtimeGrid/SnapshotFiller.d.ts +1 -0
- package/lib/types/es6/RowDragging.d.ts +2 -1
- package/lib/types/es6/TextFormatting.d.ts +20 -20
- package/lib/versions.json +9 -9
- package/package.json +1 -1
@@ -1,70 +1,147 @@
|
|
1
|
+
import { cloneObject } from "../../tr-grid-util/es6/Util.js";
|
2
|
+
|
3
|
+
/** @private
|
4
|
+
* @param {*} a
|
5
|
+
* @param {*} b
|
6
|
+
* @param {number} order
|
7
|
+
* @return {number}
|
8
|
+
*/
|
9
|
+
var _defaultCompare = function(a, b, order) {
|
10
|
+
if(a == null || a !== a) {
|
11
|
+
if(b == null || b !== b) {
|
12
|
+
return 0;
|
13
|
+
}
|
14
|
+
return 1;
|
15
|
+
}
|
16
|
+
if(b == null || b !== b) {
|
17
|
+
return -1;
|
18
|
+
}
|
19
|
+
|
20
|
+
if(a < b) {
|
21
|
+
return -order;
|
22
|
+
}
|
23
|
+
if(b < a) {
|
24
|
+
return order;
|
25
|
+
}
|
26
|
+
return 0;
|
27
|
+
};
|
28
|
+
|
1
29
|
/** @constructor
|
2
30
|
*/
|
3
31
|
var RowDefSorter = function() {
|
4
32
|
this._defaultSorter = this._defaultSorter.bind(this);
|
5
33
|
this._dataSorter = this._dataSorter.bind(this);
|
6
34
|
this._rowDefSorter = this._rowDefSorter.bind(this);
|
35
|
+
this._multiColumnsSorter = this._multiColumnsSorter.bind(this);
|
7
36
|
|
8
|
-
this.
|
37
|
+
this._globalContext = {};
|
38
|
+
this._sortParams = [];
|
39
|
+
this._ctxCaches = [];
|
9
40
|
};
|
10
41
|
|
11
|
-
|
12
|
-
/** @type {string}
|
42
|
+
/** @type {!Object}
|
13
43
|
* @private
|
14
44
|
*/
|
15
|
-
RowDefSorter.prototype.
|
16
|
-
/** @type {!
|
45
|
+
RowDefSorter.prototype._globalContext;
|
46
|
+
/** @type {!Array.<Array>}
|
47
|
+
* @private
|
48
|
+
*/
|
49
|
+
RowDefSorter.prototype._sortParams;
|
50
|
+
/** @type {!Array.<Object>}
|
17
51
|
* @private
|
18
52
|
*/
|
19
|
-
RowDefSorter.prototype.
|
20
|
-
/** @type {
|
53
|
+
RowDefSorter.prototype._ctxCaches;
|
54
|
+
/** @type {Array}
|
21
55
|
* @private
|
22
56
|
*/
|
23
|
-
RowDefSorter.prototype.
|
57
|
+
RowDefSorter.prototype._primaryParams;
|
24
58
|
|
25
59
|
|
26
60
|
/** @public
|
27
61
|
*/
|
28
62
|
RowDefSorter.prototype.dispose = function() {
|
29
|
-
this.
|
30
|
-
this.
|
63
|
+
this._globalContext = {}; // Clear any existing reference
|
64
|
+
this._sortParams.length = 0;
|
65
|
+
this._ctxCaches.length = 0;
|
66
|
+
this._primaryParams = null;
|
31
67
|
};
|
32
68
|
|
33
69
|
/** @public
|
34
|
-
* @param {boolean=} rowSorting=false
|
35
70
|
* @return {Function}
|
36
71
|
*/
|
37
|
-
RowDefSorter.prototype.getSorter = function(
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
72
|
+
RowDefSorter.prototype.getSorter = function() {
|
73
|
+
this._primaryParams = null;
|
74
|
+
var sortCount = this._sortParams.length;
|
75
|
+
if(sortCount === 1) {
|
76
|
+
var params = this._primaryParams = this._sortParams[0];
|
77
|
+
var sortLogic = params[1];
|
78
|
+
if(sortLogic) {
|
79
|
+
var rowSorting = params[3];
|
80
|
+
return rowSorting ? this._rowDefSorter : this._dataSorter;
|
81
|
+
} else {
|
82
|
+
return this._defaultSorter;
|
83
|
+
}
|
84
|
+
} else if(sortCount > 1) {
|
85
|
+
return this._multiColumnsSorter;
|
42
86
|
}
|
43
|
-
};
|
44
|
-
/** @public
|
45
|
-
* @param {Function=} func
|
46
|
-
*/
|
47
|
-
RowDefSorter.prototype.setSortLogic = function(func) {
|
48
|
-
this._sortLogic = (typeof func === "function") ? func : null;
|
49
|
-
};
|
50
87
|
|
88
|
+
return RowDefSorter._noSorting;
|
89
|
+
};
|
51
90
|
|
52
91
|
/** @public
|
53
|
-
* @param {string}
|
92
|
+
* @param {string} key
|
93
|
+
* @param {*} value
|
54
94
|
*/
|
55
|
-
RowDefSorter.prototype.
|
56
|
-
if(
|
57
|
-
|
95
|
+
RowDefSorter.prototype.reset = function() {
|
96
|
+
if(this._sortParams.length) {
|
97
|
+
this._sortParams.length = 0;
|
58
98
|
}
|
59
|
-
this._sortContext["field"] = this._field = field;
|
60
|
-
this._sortContext["formattedField"] = field + "_FORMATTED";
|
61
99
|
};
|
62
100
|
/** @public
|
63
101
|
* @param {string} key
|
64
102
|
* @param {*} value
|
65
103
|
*/
|
66
104
|
RowDefSorter.prototype.setContext = function(key, value) {
|
67
|
-
this.
|
105
|
+
this._globalContext[key] = value;
|
106
|
+
};
|
107
|
+
/** @public
|
108
|
+
* @param {string} field
|
109
|
+
* @param {Function} logic
|
110
|
+
* @param {boolean} rowSorting
|
111
|
+
* @param {string} order
|
112
|
+
* @param {number} colIndex
|
113
|
+
* @param {*} colDef
|
114
|
+
*/
|
115
|
+
RowDefSorter.prototype.addColumnContext = function(field, logic, rowSorting, order, colIndex, colDef) {
|
116
|
+
if(!field) {
|
117
|
+
field = "";
|
118
|
+
}
|
119
|
+
var sortPriority = this._sortParams.length;
|
120
|
+
var ctx = this._ctxCaches[sortPriority];
|
121
|
+
if(!ctx) {
|
122
|
+
ctx = this._ctxCaches[sortPriority] = cloneObject(this._globalContext);
|
123
|
+
}
|
124
|
+
var orderNum = 0;
|
125
|
+
if(order === "a") {
|
126
|
+
orderNum = 1;
|
127
|
+
} else if(order === "d") {
|
128
|
+
orderNum = -1;
|
129
|
+
}
|
130
|
+
|
131
|
+
var params = [
|
132
|
+
field, // 0
|
133
|
+
(typeof logic === "function") ? logic : null, // 1
|
134
|
+
ctx, // 2
|
135
|
+
rowSorting, // 3
|
136
|
+
orderNum // 4
|
137
|
+
];
|
138
|
+
|
139
|
+
ctx["colIndex"] = colIndex;
|
140
|
+
ctx["field"] = field;
|
141
|
+
ctx["formattedField"] = field + "_FORMATTED";
|
142
|
+
ctx["colDef"] = colDef;
|
143
|
+
|
144
|
+
this._sortParams.push(params);
|
68
145
|
};
|
69
146
|
|
70
147
|
/** @private
|
@@ -73,32 +150,7 @@ RowDefSorter.prototype.setContext = function(key, value) {
|
|
73
150
|
* @param {number} order
|
74
151
|
* @return {number}
|
75
152
|
*/
|
76
|
-
RowDefSorter.
|
77
|
-
var orderA = rowDefA.getGroupOrder();
|
78
|
-
var orderB = rowDefB.getGroupOrder();
|
79
|
-
if(orderA !== orderB) {
|
80
|
-
return orderA - orderB; // Regardless of sort order
|
81
|
-
}
|
82
|
-
|
83
|
-
var a = rowDefA.getData(this._field);
|
84
|
-
var b = rowDefB.getData(this._field);
|
85
|
-
|
86
|
-
if(a == null || a !== a) {
|
87
|
-
if(b == null || b !== b) {
|
88
|
-
return 0;
|
89
|
-
}
|
90
|
-
return 1;
|
91
|
-
}
|
92
|
-
if(b == null || b !== b) {
|
93
|
-
return -1;
|
94
|
-
}
|
95
|
-
|
96
|
-
if(a < b) {
|
97
|
-
return -order;
|
98
|
-
}
|
99
|
-
if(b < a) {
|
100
|
-
return order;
|
101
|
-
}
|
153
|
+
RowDefSorter._noSorting = function(rowDefA, rowDefB, order) {
|
102
154
|
return 0;
|
103
155
|
};
|
104
156
|
/** @private
|
@@ -107,16 +159,30 @@ RowDefSorter.prototype._defaultSorter = function(rowDefA, rowDefB, order) {
|
|
107
159
|
* @param {number} order
|
108
160
|
* @return {number}
|
109
161
|
*/
|
162
|
+
RowDefSorter.prototype._defaultSorter = function(rowDefA, rowDefB, order) {
|
163
|
+
var field = this._primaryParams[0];
|
164
|
+
return _defaultCompare(
|
165
|
+
rowDefA.getData(field),
|
166
|
+
rowDefB.getData(field),
|
167
|
+
order
|
168
|
+
);
|
169
|
+
};
|
170
|
+
/** @private
|
171
|
+
* @param {RowDefinition} rowDefA
|
172
|
+
* @param {RowDefinition} rowDefB
|
173
|
+
* @param {number} order
|
174
|
+
* @return {number}
|
175
|
+
*/
|
110
176
|
RowDefSorter.prototype._dataSorter = function(rowDefA, rowDefB, order) {
|
111
|
-
var
|
112
|
-
var
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
177
|
+
var params = this._primaryParams;
|
178
|
+
var field = params[0];
|
179
|
+
var sortLogic = params[1];
|
180
|
+
return sortLogic(
|
181
|
+
rowDefA.getData(field),
|
182
|
+
rowDefB.getData(field),
|
183
|
+
order,
|
184
|
+
params[2]
|
185
|
+
);
|
120
186
|
};
|
121
187
|
/** @private
|
122
188
|
* @param {RowDefinition} rowDefA
|
@@ -125,13 +191,41 @@ RowDefSorter.prototype._dataSorter = function(rowDefA, rowDefB, order) {
|
|
125
191
|
* @return {number}
|
126
192
|
*/
|
127
193
|
RowDefSorter.prototype._rowDefSorter = function(rowDefA, rowDefB, order) {
|
128
|
-
var
|
129
|
-
var
|
130
|
-
|
131
|
-
|
194
|
+
var params = this._primaryParams;
|
195
|
+
var sortLogic = params[1];
|
196
|
+
return sortLogic(rowDefA, rowDefB, order, params[2]);
|
197
|
+
};
|
198
|
+
/** @private
|
199
|
+
* @param {RowDefinition} rowDefA
|
200
|
+
* @param {RowDefinition} rowDefB
|
201
|
+
* @param {number} primaryOrder
|
202
|
+
* @return {number}
|
203
|
+
*/
|
204
|
+
RowDefSorter.prototype._multiColumnsSorter = function(rowDefA, rowDefB, primaryOrder) {
|
205
|
+
var sortParams = this._sortParams;
|
206
|
+
var sortCount = sortParams.length;
|
207
|
+
for(var i = 0; i < sortCount; ++i) {
|
208
|
+
var params = sortParams[i];
|
209
|
+
var field = params[0];
|
210
|
+
var sortLogic = params[1];
|
211
|
+
var ctx = params[2];
|
212
|
+
var rowSorting = params[3];
|
213
|
+
var orderNum = params[4];
|
214
|
+
var ret = 0;
|
215
|
+
if(sortLogic) {
|
216
|
+
if(rowSorting) {
|
217
|
+
ret = sortLogic(rowDefA, rowDefB, orderNum, ctx);
|
218
|
+
} else {
|
219
|
+
ret = sortLogic(rowDefA.getData(field), rowDefB.getData(field), orderNum, ctx);
|
220
|
+
}
|
221
|
+
} else {
|
222
|
+
ret = _defaultCompare(rowDefA.getData(field), rowDefB.getData(field), orderNum);
|
223
|
+
}
|
224
|
+
if(ret) {
|
225
|
+
return ret;
|
226
|
+
}
|
132
227
|
}
|
133
|
-
|
134
|
-
return this._sortLogic(rowDefA, rowDefB, order, this._sortContext);
|
228
|
+
return 0;
|
135
229
|
};
|
136
230
|
|
137
231
|
export default RowDefSorter;
|
@@ -6,6 +6,7 @@ declare namespace RowDefinition {
|
|
6
6
|
|
7
7
|
type Options = {
|
8
8
|
ric?: string|null,
|
9
|
+
permId?: string|null,
|
9
10
|
values?: (any[]|any)|null,
|
10
11
|
fields?: (string)[]|null,
|
11
12
|
asChain?: boolean|null,
|
@@ -36,7 +37,7 @@ declare class RowDefinition {
|
|
36
37
|
|
37
38
|
public initialize(rowOptions?: RowDefinition.Options|null): void;
|
38
39
|
|
39
|
-
public setContent(userInput: string): boolean;
|
40
|
+
public setContent(userInput: string, permId?: string|null): boolean;
|
40
41
|
|
41
42
|
public getRowId(): string;
|
42
43
|
|
@@ -70,6 +71,10 @@ declare class RowDefinition {
|
|
70
71
|
|
71
72
|
public getRic(): string;
|
72
73
|
|
74
|
+
public getPermId(): string;
|
75
|
+
|
76
|
+
public getSymbol(): string;
|
77
|
+
|
73
78
|
public getDisplayText(): string;
|
74
79
|
|
75
80
|
public getLabel(): string|null|null;
|
@@ -138,7 +143,7 @@ declare const ROW_DEF: string;
|
|
138
143
|
|
139
144
|
declare const ROW_TYPES: RowDefinition.RowTypes;
|
140
145
|
|
141
|
-
declare function rowData(userInput: string): boolean;
|
146
|
+
declare function rowData(userInput: string, permId?: string|null): boolean;
|
142
147
|
|
143
148
|
export {RowDefinition, ROW_DEF, ROW_TYPES};
|
144
149
|
export default RowDefinition;
|
@@ -7,6 +7,7 @@ import { DataTable } from "../../core/es6/data/DataTable.js";
|
|
7
7
|
/** @typedef {Object} RowDefinition~Options
|
8
8
|
* @description RowDefinition options
|
9
9
|
* @property {string=} ric="" RIC for real-time fields. Prefixing 0# to the ric is equivalent to specifying asChain property.
|
10
|
+
* @property {string=} permId="" Organization PermId to be used instead of ric for private company.
|
10
11
|
* @property {(Array|Object)=} values=null Values for static data
|
11
12
|
* @property {Array.<string>=} fields=null Field that corresponds to the given static values
|
12
13
|
* @property {boolean=} asChain=false The given ric will be treated as a chain
|
@@ -88,6 +89,10 @@ RowDefinition.prototype._ric = ""; // Contains no 0#
|
|
88
89
|
/** @type {string}
|
89
90
|
* @private
|
90
91
|
*/
|
92
|
+
RowDefinition.prototype._permId = "";
|
93
|
+
/** @type {string}
|
94
|
+
* @private
|
95
|
+
*/
|
91
96
|
RowDefinition.prototype._displayText = "";
|
92
97
|
/** @type {string|null}
|
93
98
|
* @private
|
@@ -213,13 +218,20 @@ RowDefinition.prototype.initialize = function(rowOptions) {
|
|
213
218
|
|
214
219
|
var val = rowOptions["ric"];
|
215
220
|
if(val != null) {
|
216
|
-
this.
|
221
|
+
this._ric = val;
|
222
|
+
}
|
223
|
+
val = rowOptions["permId"];
|
224
|
+
if(val != null) {
|
225
|
+
this._permId = val;
|
226
|
+
}
|
227
|
+
if(this._ric || this._permId){
|
228
|
+
this.setContent(this._ric, this._permId); // this._dataId is modified
|
217
229
|
}
|
230
|
+
|
218
231
|
val = rowOptions["chainRic"];
|
219
232
|
if(val != null) {
|
220
233
|
this._chainRic = val;
|
221
234
|
}
|
222
|
-
|
223
235
|
val = rowOptions["values"];
|
224
236
|
// eslint-disable-next-line no-undefined
|
225
237
|
if(val !== undefined) {
|
@@ -273,10 +285,11 @@ RowDefinition.prototype._initializeAsConstituent = function(rowOptions) {
|
|
273
285
|
}
|
274
286
|
};
|
275
287
|
/** @public
|
276
|
-
* @param {string} userInput
|
288
|
+
* @param {string} userInput RIC
|
289
|
+
* @param {string=} permId=null Organization PermId, which use for getting ADC data for private company
|
277
290
|
* @return {boolean} True if there is any change otherwise false
|
278
291
|
*/
|
279
|
-
RowDefinition.prototype.setContent = function(userInput) {
|
292
|
+
RowDefinition.prototype.setContent = function(userInput, permId) {
|
280
293
|
if(this._autoGenerated) { // AutoGenerated RowDefinition cannot be changed by user input
|
281
294
|
return false;
|
282
295
|
}
|
@@ -287,7 +300,15 @@ RowDefinition.prototype.setContent = function(userInput) {
|
|
287
300
|
userInput += "";
|
288
301
|
}
|
289
302
|
|
290
|
-
|
303
|
+
var dirty = (this._userInput !== userInput);
|
304
|
+
if(this._permId !== permId){
|
305
|
+
this._permId = permId || "";
|
306
|
+
if(!userInput){
|
307
|
+
this._displayText = this._permId;
|
308
|
+
dirty = true;
|
309
|
+
}
|
310
|
+
}
|
311
|
+
if(!dirty) {
|
291
312
|
return false;
|
292
313
|
}
|
293
314
|
|
@@ -314,7 +335,7 @@ RowDefinition.prototype.setContent = function(userInput) {
|
|
314
335
|
this._displayText = this._ric; // No 0#
|
315
336
|
}
|
316
337
|
|
317
|
-
this._dataId = this._rowId + this.
|
338
|
+
this._dataId = this._rowId + this.getSymbol(); // JET/RTK will generate data id to be rowId (given from this rowDef) + ric;
|
318
339
|
|
319
340
|
// This will work for runtime ric modification, but not for first initilization.
|
320
341
|
if(!this.subscribeForUpdates()) {
|
@@ -342,6 +363,11 @@ RowDefinition.prototype.getConfigObject = function(rowOptions) {
|
|
342
363
|
obj["ric"] = val;
|
343
364
|
}
|
344
365
|
|
366
|
+
val = this._permId;
|
367
|
+
if(val) {
|
368
|
+
obj["permId"] = val;
|
369
|
+
}
|
370
|
+
|
345
371
|
val = this._chainRic;
|
346
372
|
if(val) {
|
347
373
|
obj["chainRic"] = val;
|
@@ -587,6 +613,18 @@ RowDefinition.prototype.getRic = function() {
|
|
587
613
|
/** @public
|
588
614
|
* @return {string}
|
589
615
|
*/
|
616
|
+
RowDefinition.prototype.getPermId = function() {
|
617
|
+
return this._permId;
|
618
|
+
};
|
619
|
+
/** @public
|
620
|
+
* @return {string}
|
621
|
+
*/
|
622
|
+
RowDefinition.prototype.getSymbol = function() {
|
623
|
+
return this._ric || this._permId;
|
624
|
+
};
|
625
|
+
/** @public
|
626
|
+
* @return {string}
|
627
|
+
*/
|
590
628
|
RowDefinition.prototype.getDisplayText = function() {
|
591
629
|
if(this._label != null) { // Empty string is allowed
|
592
630
|
return this._label;
|
@@ -652,7 +690,7 @@ RowDefinition.prototype.isAutoGenerated = function() {
|
|
652
690
|
* @return {boolean}
|
653
691
|
*/
|
654
692
|
RowDefinition.prototype.isRealTimeRow = function() {
|
655
|
-
if(!this.
|
693
|
+
if(!this.getRic()) { // Empty row
|
656
694
|
return false;
|
657
695
|
}
|
658
696
|
if(this.isRowHeader()) {
|
@@ -669,7 +707,7 @@ RowDefinition.prototype.isRealTimeRow = function() {
|
|
669
707
|
* @return {boolean} If a subscription is made, return true.
|
670
708
|
*/
|
671
709
|
RowDefinition.prototype.subscribeForUpdates = function() {
|
672
|
-
if(!this.isRealTimeRow()) {
|
710
|
+
if(!this.isRealTimeRow() && !this.getPermId()) {
|
673
711
|
return false;
|
674
712
|
}
|
675
713
|
|
@@ -683,14 +721,14 @@ RowDefinition.prototype.subscribeForUpdates = function() {
|
|
683
721
|
if(this.isChain()) {
|
684
722
|
this._subId = subs["addChain"](this._chainRic || this._ric, this._rowId); // Some chain require 0# symbol to populate its constituents
|
685
723
|
// TODO: Handle Dynamic chain such as .PG.PA
|
686
|
-
} else {
|
724
|
+
} else if(this._ric) {
|
687
725
|
this._subId = subs["addRic"](this._ric, this._rowId);
|
688
726
|
}
|
689
727
|
|
690
728
|
if(prevRowData) {
|
691
729
|
this._dc.setRowData(this._dataId, prevRowData); // TODO: We may need to create a new object instead of prevRowData for data correctness
|
692
730
|
} else {
|
693
|
-
this._dc.setRowData(this._dataId, {"X_RIC_NAME": this.
|
731
|
+
this._dc.setRowData(this._dataId, {"X_RIC_NAME": this.getSymbol(), "ROW_DEF": this}); // Trigger data update immediately
|
694
732
|
}
|
695
733
|
return true;
|
696
734
|
};
|
@@ -2,6 +2,7 @@ import Grid from "./Grid.js";
|
|
2
2
|
import {Ext} from "../../tr-grid-util/es6/Ext.js";
|
3
3
|
import {EventDispatcher} from "../../tr-grid-util/es6/EventDispatcher.js";
|
4
4
|
import {FieldDefinition} from "./FieldDefinition.js";
|
5
|
+
import { isEmptyObject } from "../../tr-grid-util/es6/Util.js";
|
5
6
|
|
6
7
|
declare class SnapshotFiller extends EventDispatcher {
|
7
8
|
|
@@ -3,17 +3,7 @@ import Grid from "./Grid.js";
|
|
3
3
|
import {Ext} from "../../tr-grid-util/es6/Ext.js";
|
4
4
|
import {EventDispatcher} from "../../tr-grid-util/es6/EventDispatcher.js";
|
5
5
|
import {FieldDefinition} from "./FieldDefinition.js";
|
6
|
-
|
7
|
-
/** @private
|
8
|
-
* @param {Object} obj
|
9
|
-
* @return {boolean}
|
10
|
-
*/
|
11
|
-
var isEmptyObject = function (obj) {
|
12
|
-
for (var key in obj) {
|
13
|
-
return false;
|
14
|
-
}
|
15
|
-
return true;
|
16
|
-
};
|
6
|
+
import { isEmptyObject } from "../../tr-grid-util/es6/Util.js";
|
17
7
|
|
18
8
|
/** This class make requesting ADC field easier by encapsulating JET.Data APIs and mapping data to the row
|
19
9
|
* @constructor
|
@@ -38,6 +38,8 @@ var ColumnSelectionPlugin = function ColumnSelectionPlugin(options) {
|
|
38
38
|
t._onReselection = t._onReselection.bind(t);
|
39
39
|
t._onThemeLoaded = t._onThemeLoaded.bind(t);
|
40
40
|
t._onColumnPositionChanged = t._onColumnPositionChanged.bind(t);
|
41
|
+
t._onBeforeBatchOperation = t._onBeforeBatchOperation.bind(t);
|
42
|
+
t._onAfterBatchOperation = t._onAfterBatchOperation.bind(t);
|
41
43
|
t._updateMenuIcon = t._updateMenuIcon.bind(t);
|
42
44
|
t._hosts = [];
|
43
45
|
|
@@ -121,6 +123,12 @@ ColumnSelectionPlugin.prototype._menuPosition = "outside";
|
|
121
123
|
|
122
124
|
ColumnSelectionPlugin.prototype._cgp = null; // Column grouping extension
|
123
125
|
|
126
|
+
/** @type {Array.<string>}
|
127
|
+
* @private
|
128
|
+
*/
|
129
|
+
|
130
|
+
ColumnSelectionPlugin.prototype._prevSelectedCols = {}; // previous selected columns during batch operation
|
131
|
+
|
124
132
|
/** @public
|
125
133
|
* @return {string}
|
126
134
|
*/
|
@@ -156,6 +164,8 @@ ColumnSelectionPlugin.prototype.initialize = function (host, options) {
|
|
156
164
|
host.listen("columnRemoved", this._onColumnRemoved);
|
157
165
|
host.listen("columnAdded", this._onColumnAdded);
|
158
166
|
host.listen("columnPositionChanged", this._onColumnPositionChanged);
|
167
|
+
host.listen("beforeBatchOperation", this._onBeforeBatchOperation);
|
168
|
+
host.listen("afterBatchOperation", this._onAfterBatchOperation);
|
159
169
|
this.config(options);
|
160
170
|
|
161
171
|
if (ColumnSelectionPlugin._stylePromise) {
|
@@ -1098,6 +1108,62 @@ ColumnSelectionPlugin.prototype._onReselection = function (e) {
|
|
1098
1108
|
this._activeGrid.focus();
|
1099
1109
|
};
|
1100
1110
|
/** @private
|
1111
|
+
* @param {Object} e
|
1112
|
+
*/
|
1113
|
+
|
1114
|
+
|
1115
|
+
ColumnSelectionPlugin.prototype._onBeforeBatchOperation = function (e) {
|
1116
|
+
var host = this._activeGrid;
|
1117
|
+
|
1118
|
+
if (this._hasSelection && e["batchType"] === "reset") {
|
1119
|
+
var colCount = this.getColumnCount();
|
1120
|
+
|
1121
|
+
for (var i = 0; i < colCount; ++i) {
|
1122
|
+
if (this.isSelectedColumn(i)) {
|
1123
|
+
var colId = host.getColumnId(i);
|
1124
|
+
var field = host.getColumnField(i);
|
1125
|
+
|
1126
|
+
if (colId) {
|
1127
|
+
this._prevSelectedCols[colId] = field;
|
1128
|
+
} else {
|
1129
|
+
this._prevSelectedCols[field] = "";
|
1130
|
+
}
|
1131
|
+
}
|
1132
|
+
}
|
1133
|
+
|
1134
|
+
this.clearAllSelections(); //clear all to improve performance during add/remove operation
|
1135
|
+
}
|
1136
|
+
};
|
1137
|
+
/** @private
|
1138
|
+
* @param {Object} e
|
1139
|
+
*/
|
1140
|
+
|
1141
|
+
|
1142
|
+
ColumnSelectionPlugin.prototype._onAfterBatchOperation = function (e) {
|
1143
|
+
if (e["batchType"] === "reset") {
|
1144
|
+
var prevSelectedCols = Object.keys(this._prevSelectedCols);
|
1145
|
+
var prevSelectedCount = prevSelectedCols.length;
|
1146
|
+
|
1147
|
+
if (prevSelectedCount) {
|
1148
|
+
this.clearAllSelections();
|
1149
|
+
|
1150
|
+
for (var i = 0; i < prevSelectedCount; i++) {
|
1151
|
+
var colId = prevSelectedCols[i];
|
1152
|
+
var field = this._prevSelectedCols[colId];
|
1153
|
+
var prevSelectedIndex = this.getColumnIndex(colId);
|
1154
|
+
|
1155
|
+
if (prevSelectedIndex < 0) {
|
1156
|
+
prevSelectedIndex = this.getColumnIndex(field);
|
1157
|
+
}
|
1158
|
+
|
1159
|
+
this.setSelectedColumn(prevSelectedIndex, true);
|
1160
|
+
}
|
1161
|
+
|
1162
|
+
this._prevSelectedCols = {};
|
1163
|
+
}
|
1164
|
+
}
|
1165
|
+
};
|
1166
|
+
/** @private
|
1101
1167
|
* @param {KeyboardEvent} e
|
1102
1168
|
* @return {boolean}
|
1103
1169
|
*/
|
@@ -137,6 +137,8 @@ declare class ColumnStackPlugin extends GridPlugin {
|
|
137
137
|
|
138
138
|
public isStackHidden(stackId: string): boolean|null|null;
|
139
139
|
|
140
|
+
public moveStack(stackId: string, destCol?: (number|string)|null): boolean;
|
141
|
+
|
140
142
|
}
|
141
143
|
|
142
144
|
export default ColumnStackPlugin;
|
@@ -1314,16 +1314,7 @@ ColumnStackPlugin.prototype._onColumnRemoved = function (e) {
|
|
1314
1314
|
delete this._stacks[stackOpt.stackId];
|
1315
1315
|
}
|
1316
1316
|
} else {
|
1317
|
-
|
1318
|
-
stackOpt.activeColumn = stackOpt.stackRefs[stackOpt.stackRefs.length - 1];
|
1319
|
-
} else {
|
1320
|
-
stackOpt.activeColumn = stackOpt.stackRefs[0];
|
1321
|
-
}
|
1322
|
-
|
1323
|
-
// TODO: Add a proper way to set visibility to activeColumn when activeColumn is changed
|
1324
|
-
var activeColIndex = this._getColumnIndex(stackOpt.activeColumn);
|
1325
|
-
this._setColumnVisibility(activeColIndex, true);
|
1326
|
-
this._updateUI();
|
1317
|
+
this._updateActiveColumn(stackOpt);
|
1327
1318
|
}
|
1328
1319
|
}
|
1329
1320
|
}
|
@@ -1876,11 +1867,11 @@ ColumnStackPlugin.prototype.unsetParent = ColumnStackPlugin.prototype.removeColu
|
|
1876
1867
|
*/
|
1877
1868
|
ColumnStackPlugin.prototype.reorderColumns = function(colList, destCol) {
|
1878
1869
|
var dirty = false;
|
1879
|
-
this._stacking =
|
1870
|
+
this._stacking = true;
|
1880
1871
|
|
1881
|
-
this._reorderColumns(colList, destCol);
|
1872
|
+
dirty = this._reorderColumns(colList, destCol);
|
1882
1873
|
|
1883
|
-
this._stacking =
|
1874
|
+
this._stacking = false;
|
1884
1875
|
return dirty;
|
1885
1876
|
};
|
1886
1877
|
/** Move the specified column to position before the destination
|
@@ -1922,6 +1913,26 @@ ColumnStackPlugin.prototype._setStackVisibility = function(stackId, visible) {
|
|
1922
1913
|
}
|
1923
1914
|
};
|
1924
1915
|
|
1916
|
+
/** @private
|
1917
|
+
* @description Check for active column in a stack if it needs an update.
|
1918
|
+
* @param {Object} stackOpt
|
1919
|
+
*/
|
1920
|
+
ColumnStackPlugin.prototype._updateActiveColumn = function(stackOpt) {
|
1921
|
+
if(!stackOpt) { return; }
|
1922
|
+
|
1923
|
+
var stackRefs = stackOpt["stackRefs"];
|
1924
|
+
if(!stackRefs || !stackRefs.length) { return; }
|
1925
|
+
|
1926
|
+
if(stackRefs.indexOf(stackOpt.activeColumn) === -1) {
|
1927
|
+
stackOpt.activeColumn = stackOpt["spreading"] ? stackRefs[stackRefs.length - 1] : stackRefs[0];
|
1928
|
+
|
1929
|
+
// TODO: Add a proper way to set visibility to activeColumn when activeColumn is changed
|
1930
|
+
var activeColIndex = this._getColumnIndex(stackOpt.activeColumn);
|
1931
|
+
this._setColumnVisibility(activeColIndex, true);
|
1932
|
+
this._updateUI();
|
1933
|
+
}
|
1934
|
+
};
|
1935
|
+
|
1925
1936
|
/** @public
|
1926
1937
|
* @description Hide specific stack from grid
|
1927
1938
|
* @param {string} stackId
|
@@ -1962,6 +1973,20 @@ ColumnStackPlugin.prototype.isStackHidden = function(stackId) {
|
|
1962
1973
|
|
1963
1974
|
return !isVisible;
|
1964
1975
|
};
|
1976
|
+
/** Move an entire stack to position before the destination
|
1977
|
+
* @public
|
1978
|
+
* @param {string} stackId Stack id to be moved
|
1979
|
+
* @param {(number|string)=} destCol Destination column id or index
|
1980
|
+
* @return {boolean}
|
1981
|
+
*/
|
1982
|
+
ColumnStackPlugin.prototype.moveStack = function(stackId, destCol) {
|
1983
|
+
if(!stackId){
|
1984
|
+
return false;
|
1985
|
+
}
|
1986
|
+
var colList = this.getStackMemberIds(stackId);
|
1987
|
+
var dirty = this.reorderColumns(colList, destCol);
|
1988
|
+
return dirty;
|
1989
|
+
};
|
1965
1990
|
|
1966
1991
|
|
1967
1992
|
|