@refinitiv-ui/efx-grid 6.0.44 → 6.0.46
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-selection-dialog/lib/column-selection-dialog.d.ts +3 -1
- package/lib/column-selection-dialog/lib/column-selection-dialog.js +24 -3
- package/lib/column-selection-dialog/themes/base.less +23 -12
- package/lib/column-selection-dialog/themes/elemental/dark/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/elemental/light/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/elemental/light/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/halo/dark/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/halo/dark/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/halo/light/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/halo/light/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/solar/charcoal/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/solar/pearl/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
- package/lib/core/dist/core.js +204 -186
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataView.d.ts +2 -0
- package/lib/core/es6/data/DataView.js +170 -81
- package/lib/core/es6/data/Segment.d.ts +2 -0
- package/lib/core/es6/data/Segment.js +6 -0
- package/lib/core/es6/grid/Core.d.ts +0 -4
- package/lib/core/es6/grid/Core.js +28 -105
- package/lib/grid/index.js +1 -1
- package/lib/index.d.ts +0 -4
- package/lib/index.js +0 -4
- package/lib/tr-grid-printer/es6/GridPrinter.js +5 -5
- package/lib/tr-grid-printer/es6/index.js +1 -1
- package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +5 -0
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +30 -1
- package/lib/tr-grid-util/es6/CoralItems.js +2 -2
- package/lib/tr-grid-util/es6/ElfDate.js +1 -1
- package/lib/tr-grid-util/es6/ElfUtil.js +2 -2
- package/lib/tr-grid-util/es6/ExpanderIcon.js +1 -1
- package/lib/tr-grid-util/es6/GridPlugin.js +1 -1
- package/lib/tr-grid-util/es6/Icon.js +3 -3
- package/lib/tr-grid-util/es6/MultiTableManager.js +3 -3
- package/lib/tr-grid-util/es6/RowPainter.js +6 -2
- package/lib/tr-grid-util/es6/jet/Adc.d.ts +9 -0
- package/lib/tr-grid-util/es6/jet/Adc.js +268 -0
- package/lib/tr-grid-util/es6/jet/MockQuotes2.js +96 -7
- package/lib/tr-grid-util/es6/jet/MockUtil.d.ts +7 -0
- package/lib/tr-grid-util/es6/jet/MockUtil.js +25 -0
- package/lib/tr-grid-util/es6/jet/mockDataAPI.d.ts +2 -3
- package/lib/tr-grid-util/es6/jet/mockDataAPI.js +3 -288
- 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/grid/Core.d.ts +0 -4
- package/lib/types/es6/RowFiltering.d.ts +5 -0
- package/lib/utils/index.d.ts +5 -3
- package/lib/utils/index.js +5 -3
- package/lib/versions.json +3 -5
- package/lib/window-exporter.js +5 -0
- package/package.json +1 -1
@@ -1,30 +1,6 @@
|
|
1
|
+
import { Adc } from "./Adc.js";
|
1
2
|
import { DataGenerator } from "./DataGenerator.js";
|
2
|
-
import {
|
3
|
-
|
4
|
-
/**
|
5
|
-
* @private
|
6
|
-
* @type {object}
|
7
|
-
*/
|
8
|
-
var _invalidFieldDict = {
|
9
|
-
'TR.NonExistField': true,
|
10
|
-
'TR.NotExistField': true,
|
11
|
-
'CF_IGNORE_FIELD': true
|
12
|
-
};
|
13
|
-
|
14
|
-
/** to mock invalid fields.
|
15
|
-
* @public
|
16
|
-
* @param {Array<string>|string} fields ex. TR.NonExistField, CF_IGNORE_FIELD
|
17
|
-
*/
|
18
|
-
function setInvalidFields(fields) {
|
19
|
-
if (fields && typeof fields === 'string') {
|
20
|
-
_invalidFieldDict[fields] = true;
|
21
|
-
} else if (Array.isArray(fields)) {
|
22
|
-
for (var i = 0; i < fields.length; i++) {
|
23
|
-
_invalidFieldDict[fields[i]] = true;
|
24
|
-
}
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
3
|
+
import { invalidFieldDict, setInvalidFields } from "./MockUtil.js";
|
28
4
|
|
29
5
|
var dataGen = new DataGenerator();
|
30
6
|
|
@@ -33,11 +9,6 @@ var dataGen = new DataGenerator();
|
|
33
9
|
*/
|
34
10
|
var DataGrid = {};
|
35
11
|
|
36
|
-
/** @private
|
37
|
-
* @namespace
|
38
|
-
*/
|
39
|
-
var Adc = {};
|
40
|
-
|
41
12
|
/** @private
|
42
13
|
* @function
|
43
14
|
* @param {Object} payload
|
@@ -55,7 +26,7 @@ DataGrid.request = function (payload, mockResponse) {
|
|
55
26
|
|
56
27
|
// _invalidFieldDict is a dictionary of non exist field
|
57
28
|
// so we must remove invalid field to make "mocking api" return result more like a "real api".
|
58
|
-
var invalidDict =
|
29
|
+
var invalidDict = invalidFieldDict;
|
59
30
|
fields = [];
|
60
31
|
for (i = 0; i < payload.fields.length; i++) {
|
61
32
|
f = payload.fields[i];
|
@@ -116,262 +87,6 @@ DataGrid.request = function (payload, mockResponse) {
|
|
116
87
|
}));
|
117
88
|
};
|
118
89
|
|
119
|
-
/** @private
|
120
|
-
* @function
|
121
|
-
* @param {Object} payload
|
122
|
-
* @param {Object=} mockResponse
|
123
|
-
* @return {Promise}
|
124
|
-
*/
|
125
|
-
Adc.request = function (payload, mockResponse) {
|
126
|
-
if (mockResponse) {
|
127
|
-
return Promise.resolve(JSON.stringify(mockResponse));
|
128
|
-
}
|
129
|
-
|
130
|
-
// build row header
|
131
|
-
var rows = [];
|
132
|
-
var i, f, len, row, j;
|
133
|
-
var identifiers, formula, fields, invalidDict;
|
134
|
-
if(payload.output === "Col,date|,Row,In|,va,T,NoEmptyTickers") {
|
135
|
-
|
136
|
-
identifiers = payload.identifiers;
|
137
|
-
formula = payload.formula.trim().split(/(?=,TR.)/);// TODO: check each field with another way, this doesn't work when user use some comma (,) formula
|
138
|
-
fields = [];
|
139
|
-
|
140
|
-
// _invalidFieldDict is a dictionary of non exist field
|
141
|
-
// so we must remove invalid field to make "mocking api" return result more like a "real api".
|
142
|
-
invalidDict = _invalidFieldDict;
|
143
|
-
for (i = 0; i < formula.length; i++) {
|
144
|
-
f = formula[i];
|
145
|
-
if (!invalidDict[f]) {
|
146
|
-
fields.push(f);
|
147
|
-
}
|
148
|
-
}
|
149
|
-
|
150
|
-
var fieldCount = fields.length;
|
151
|
-
// formula = payload.formula.trim().split(",TR"); // TODO: split wit
|
152
|
-
|
153
|
-
rows.push([
|
154
|
-
{
|
155
|
-
"h": true,
|
156
|
-
"i": "instrument",
|
157
|
-
"v": "Instrument"
|
158
|
-
},
|
159
|
-
{
|
160
|
-
"h": true,
|
161
|
-
"i": "date",
|
162
|
-
"v": "Date"
|
163
|
-
}
|
164
|
-
]);
|
165
|
-
|
166
|
-
for (var index = 0; index < fieldCount; index++) {
|
167
|
-
var timeSeriesField = fields[index];
|
168
|
-
|
169
|
-
var regex = /TR.(.*)(?=\()/;
|
170
|
-
var result = timeSeriesField.match(regex);
|
171
|
-
var field = result[0].replace("TR.", "");
|
172
|
-
var phrase = timeSeriesField.toLowerCase();
|
173
|
-
var startDateRegex = /sdate=(.*)[,]/;
|
174
|
-
var endDateRegex = /edate=(.*)[)]/;
|
175
|
-
var startDateMatch = phrase.match(startDateRegex);
|
176
|
-
var endDateMatch = phrase.match(endDateRegex);
|
177
|
-
|
178
|
-
var startDate = startDateMatch ? startDateMatch[1] : DateTime.format(new Date(), "YYYY-MM-DD");
|
179
|
-
var endDate = endDateMatch[1];
|
180
|
-
|
181
|
-
var swapDateTmp;
|
182
|
-
if(startDate > endDate) {
|
183
|
-
swapDateTmp = startDate;
|
184
|
-
startDate = endDate;
|
185
|
-
endDate = swapDateTmp;
|
186
|
-
}
|
187
|
-
|
188
|
-
var msBetweenDate = (+new Date(endDate)) - (+new Date(startDate));
|
189
|
-
|
190
|
-
var msInDay = 1000 * 60 * 60 * 24;
|
191
|
-
var betweenDay = msBetweenDate / msInDay;
|
192
|
-
// var betweenDay = Math.floor(Math.random() * 10); // For random length
|
193
|
-
|
194
|
-
|
195
|
-
for (i = 0; i <= betweenDay; i++) {
|
196
|
-
var date = new Date(new Date(startDate).setDate(new Date(startDate).getDate() + i));
|
197
|
-
var fieldValue = {
|
198
|
-
"h": true,
|
199
|
-
"v": DateTime.format(date, "YYYY-MM-DDT00:00:00")
|
200
|
-
};
|
201
|
-
if(index === 0) { // add header 1 time
|
202
|
-
rows[0].push(fieldValue);
|
203
|
-
}
|
204
|
-
}
|
205
|
-
|
206
|
-
var rics = identifiers;
|
207
|
-
for (i = 0; i < rics.length; i++) {
|
208
|
-
|
209
|
-
var ric = rics[i];
|
210
|
-
var rowValue = [
|
211
|
-
ric,
|
212
|
-
field
|
213
|
-
];
|
214
|
-
for (j = 1; j <= betweenDay + 1; j++) {
|
215
|
-
var generatedValue = DataGenerator.generateRecord(field);
|
216
|
-
rowValue.push(generatedValue[field]);
|
217
|
-
|
218
|
-
}
|
219
|
-
rows.push(rowValue);
|
220
|
-
}
|
221
|
-
// The example rows should be look like
|
222
|
-
/*
|
223
|
-
[
|
224
|
-
[
|
225
|
-
{
|
226
|
-
"h": true,
|
227
|
-
"i": "instrument",
|
228
|
-
"v": "Instrument"
|
229
|
-
},
|
230
|
-
{
|
231
|
-
"h": true,
|
232
|
-
"i": "date",
|
233
|
-
"v": "Date"
|
234
|
-
},
|
235
|
-
{
|
236
|
-
"h": true,
|
237
|
-
"v": "2011-08-11T00:00:00"
|
238
|
-
},
|
239
|
-
{
|
240
|
-
"h": true,
|
241
|
-
"v": "2011-08-12T00:00:00"
|
242
|
-
},
|
243
|
-
{
|
244
|
-
"h": true,
|
245
|
-
"v": "2011-08-15T00:00:00"
|
246
|
-
}
|
247
|
-
],
|
248
|
-
[
|
249
|
-
"IBM",
|
250
|
-
"Price Close", // NOTE: this cannot be detech we join it with space Ex. PriceClose
|
251
|
-
159.25449372,
|
252
|
-
160.6585848,
|
253
|
-
165.23382036
|
254
|
-
],
|
255
|
-
[
|
256
|
-
"GOOGL.O",
|
257
|
-
"Price Close",
|
258
|
-
14.066881653,
|
259
|
-
14.107921423,
|
260
|
-
13.944262828
|
261
|
-
]
|
262
|
-
]
|
263
|
-
*/
|
264
|
-
}
|
265
|
-
|
266
|
-
} else {
|
267
|
-
|
268
|
-
identifiers = payload.identifiers;
|
269
|
-
formula = Adc.splitFields(payload.formula);
|
270
|
-
fields = [];
|
271
|
-
|
272
|
-
// _invalidFieldDict is a dictionary of non exist field
|
273
|
-
// so we must remove invalid field to make "mocking api" return result more like a "real api".
|
274
|
-
invalidDict = _invalidFieldDict;
|
275
|
-
for (i = 0; i < formula.length; i++) {
|
276
|
-
f = formula[i];
|
277
|
-
if (!invalidDict[f]) {
|
278
|
-
fields.push(f);
|
279
|
-
}
|
280
|
-
}
|
281
|
-
|
282
|
-
rows[0] = [{
|
283
|
-
"h": true,
|
284
|
-
"i": "instrument",
|
285
|
-
"v": "Instrument"
|
286
|
-
}];
|
287
|
-
for (i = 0; i < fields.length; i++) {
|
288
|
-
f = fields[i];
|
289
|
-
rows[0].push({
|
290
|
-
"h": true,
|
291
|
-
"r": f.toUpperCase().trim()
|
292
|
-
// "v": "Price Close", // Doesn't use
|
293
|
-
// "p": "I_TRP_PH_PriceClose" // Doesn't use this property
|
294
|
-
});
|
295
|
-
}
|
296
|
-
|
297
|
-
// build data
|
298
|
-
var rowMap = {};
|
299
|
-
|
300
|
-
len = identifiers.length;
|
301
|
-
var rowData = dataGen.generate(fields, len);
|
302
|
-
for (i = 0; i < len; ++i) {
|
303
|
-
var inst = identifiers[i];
|
304
|
-
row = rowMap[inst];
|
305
|
-
if (!row) {
|
306
|
-
row = rowMap[inst] = rowData[i];
|
307
|
-
row.unshift(inst); // prepend instrument on each row
|
308
|
-
}
|
309
|
-
rows.push(row);
|
310
|
-
}
|
311
|
-
|
312
|
-
// There is a chance that rtk will return multiple row data per instrument
|
313
|
-
// so we must create mock up for this case
|
314
|
-
if (rows.length > 0) {
|
315
|
-
var chance = dataGen.randInt(1, 10);
|
316
|
-
if (chance <= 3) { // chance 30%
|
317
|
-
var pos = dataGen.randInt(0, rows.length - 1); // random row pos
|
318
|
-
row = rows[pos];
|
319
|
-
len = row.length;
|
320
|
-
var mockupRow = new Array(len);
|
321
|
-
mockupRow[0] = row[0]; // 1st index is for instrument
|
322
|
-
for (i = 1; i < len; i++) {
|
323
|
-
mockupRow[i] = ''; // real case will return null or empty string
|
324
|
-
}
|
325
|
-
rows.splice(pos + 1, 0, mockupRow);
|
326
|
-
}
|
327
|
-
}
|
328
|
-
}
|
329
|
-
|
330
|
-
|
331
|
-
/*
|
332
|
-
response type is :
|
333
|
-
{
|
334
|
-
cols: number,
|
335
|
-
faults: Array<obj>,
|
336
|
-
rows: Array<obj>,
|
337
|
-
status: string
|
338
|
-
}
|
339
|
-
Currently, we use only the rows property for cache ADC data
|
340
|
-
*/
|
341
|
-
return Promise.resolve(JSON.stringify({
|
342
|
-
rows: rows
|
343
|
-
// TODO : supports faults property
|
344
|
-
}));
|
345
|
-
};
|
346
|
-
|
347
|
-
/**
|
348
|
-
* Splits a string of comma-separated fields into an array of individual field names with optional parentheses and contents.
|
349
|
-
*
|
350
|
-
* @param {string} strFields - The string of comma-separated fields to split.
|
351
|
-
* @returns {Array<string>} - An array of individual field names with optional parentheses and contents.
|
352
|
-
*/
|
353
|
-
Adc.splitFields = function(strFields) {
|
354
|
-
if(!strFields) {
|
355
|
-
return [];
|
356
|
-
}
|
357
|
-
|
358
|
-
// Split the input string using the regular expression
|
359
|
-
// regex is match commas that are not inside parentheses
|
360
|
-
/*
|
361
|
-
, - matches a comma
|
362
|
-
(?![^()]*\) - negative lookahead assertion that matches if the comma is not followed by:
|
363
|
-
[^()]* - any characters that are not opening or closing parentheses
|
364
|
-
\) - a closing parenthesis
|
365
|
-
) - ending delimiter of the regular expression
|
366
|
-
*/
|
367
|
-
var fields = strFields.split(/,(?![^()]*\))/);
|
368
|
-
fields = fields.map(function(field) {
|
369
|
-
return field.trim();
|
370
|
-
});
|
371
|
-
|
372
|
-
return fields;
|
373
|
-
};
|
374
|
-
|
375
90
|
/** @public
|
376
91
|
* @function
|
377
92
|
* @param {string} dataType
|
@@ -274,6 +274,8 @@ declare class DataView extends EventDispatcher {
|
|
274
274
|
|
275
275
|
public sortSegments(compare: ((...params: any[]) => any)|null): void;
|
276
276
|
|
277
|
+
public enableEmptySegmentFiltering(enabled?: boolean|null): void;
|
278
|
+
|
277
279
|
public setSegmentClassification(segmentRef: string|number|null, fields: string|(string)[]|null): boolean;
|
278
280
|
|
279
281
|
public getWrapSize(): number;
|
@@ -405,10 +405,6 @@ declare class Core extends ElementWrapper {
|
|
405
405
|
|
406
406
|
public getColumnGroupChildIds(groupId: string): (string)[]|null;
|
407
407
|
|
408
|
-
public getValidColumnList(colIds: (string)[]|null, columnMap?: any): (string)[];
|
409
|
-
|
410
|
-
public createColumnMap(colIds?: (string)[]|null): any;
|
411
|
-
|
412
408
|
public startBatch(batchType: string): boolean;
|
413
409
|
|
414
410
|
public stopBatch(batchType: string): boolean;
|
@@ -33,6 +33,7 @@ declare namespace RowFilteringPlugin {
|
|
33
33
|
};
|
34
34
|
|
35
35
|
type Options = {
|
36
|
+
emptySegmentFiltering?: boolean|null,
|
36
37
|
disabledUI?: boolean|null,
|
37
38
|
iconActivation?: string|null,
|
38
39
|
dialogOptions?: RowFilteringPlugin.FilterDialogOptions|null,
|
@@ -114,9 +115,13 @@ declare class RowFilteringPlugin extends GridPlugin {
|
|
114
115
|
|
115
116
|
public openDialog(colIndex: number, runtimeDialogOptions?: RowFilteringPlugin.FilterDialogOptions|null): void;
|
116
117
|
|
118
|
+
public enableEmptySegmentFiltering(enabled?: boolean|null): void;
|
119
|
+
|
117
120
|
}
|
118
121
|
|
119
122
|
declare function field(colIndex: number, exp: RowFilteringPlugin.Expression|null, ctx?: (any|string)|null): boolean;
|
120
123
|
|
124
|
+
declare function crf(enabled?: boolean|null): void;
|
125
|
+
|
121
126
|
export default RowFilteringPlugin;
|
122
127
|
export { RowFilteringPlugin, RowFilteringPlugin as RowFiltering, RowFilteringPlugin as RowFilteringExtension };
|
package/lib/utils/index.d.ts
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
|
1
|
+
import { GridPrinter } from "../tr-grid-printer/es6/GridPrinter.js";
|
2
|
+
import { MultiTableManager } from "../tr-grid-util/es6/MultiTableManager.js";
|
3
|
+
import { DataGenerator } from "../tr-grid-util/es6/jet/DataGenerator.js";
|
4
|
+
import { MockRTK } from "../tr-grid-util/es6/jet/MockRTK.js";
|
5
|
+
export { GridPrinter, MultiTableManager, DataGenerator, MockRTK };
|
package/lib/utils/index.js
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
|
1
|
+
import { GridPrinter } from "../tr-grid-printer/es6/GridPrinter.js";
|
2
|
+
import { MultiTableManager } from "../tr-grid-util/es6/MultiTableManager.js";
|
3
|
+
import { DataGenerator } from "../tr-grid-util/es6/jet/DataGenerator.js";
|
4
|
+
import { MockRTK } from "../tr-grid-util/es6/jet/MockRTK.js";
|
5
|
+
export { GridPrinter, MultiTableManager, DataGenerator, MockRTK };
|
package/lib/versions.json
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
{
|
2
|
-
"tr-grid-util": "1.3.111",
|
3
2
|
"@grid/column-dragging": "1.0.14",
|
4
3
|
"@grid/row-segmenting": "1.0.24",
|
5
4
|
"@grid/statistics-row": "1.0.14",
|
@@ -21,17 +20,16 @@
|
|
21
20
|
"tr-grid-in-cell-editing": "1.0.78",
|
22
21
|
"tr-grid-pagination": "1.0.24",
|
23
22
|
"tr-grid-percent-bar": "1.0.22",
|
24
|
-
"tr-grid-printer": "1.0.16",
|
25
23
|
"tr-grid-range-bar": "2.0.4",
|
26
24
|
"tr-grid-row-dragging": "1.0.29",
|
27
|
-
"tr-grid-row-filtering": "1.0.
|
28
|
-
"tr-grid-row-grouping": "1.0.
|
25
|
+
"tr-grid-row-filtering": "1.0.57",
|
26
|
+
"tr-grid-row-grouping": "1.0.81",
|
29
27
|
"tr-grid-row-selection": "1.0.23",
|
30
28
|
"tr-grid-rowcoloring": "1.0.23",
|
31
29
|
"tr-grid-textformatting": "1.0.45",
|
32
30
|
"tr-grid-titlewrap": "1.0.19",
|
33
31
|
"@grid/formatters": "1.0.50",
|
34
|
-
"@grid/column-selection-dialog": "4.0.
|
32
|
+
"@grid/column-selection-dialog": "4.0.49",
|
35
33
|
"@grid/filter-dialog": "4.0.57",
|
36
34
|
"@grid/column-format-dialog": "4.0.44"
|
37
35
|
}
|
package/lib/window-exporter.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import * as allComponents from './index.js';
|
2
|
+
import * as utils from './utils/index.js';
|
2
3
|
import { MockJET } from './tr-grid-util/es6/jet/MockJET.js';
|
3
4
|
import { MockRTK } from './tr-grid-util/es6/jet/MockRTK.js';
|
4
5
|
import { MockQuotes2 } from './tr-grid-util/es6/jet/MockQuotes2.js';
|
@@ -11,3 +12,7 @@ window.MockQuotes2 = MockQuotes2;
|
|
11
12
|
for (const component in allComponents) {
|
12
13
|
window[component] = allComponents[component];
|
13
14
|
}
|
15
|
+
|
16
|
+
for (const util in utils) {
|
17
|
+
window[util] = utils[util];
|
18
|
+
}
|
package/package.json
CHANGED