@refinitiv-ui/efx-grid 6.0.66 → 6.0.68
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/core/dist/core.js +27 -5
- 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 +26 -4
- package/lib/core/es6/grid/Core.js +1 -1
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +169 -122
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.js +3 -3
- package/lib/rt-grid/es6/FieldDefinition.js +3 -3
- package/lib/rt-grid/es6/Grid.js +52 -76
- package/lib/rt-grid/es6/SnapshotFiller.d.ts +8 -0
- package/lib/rt-grid/es6/SnapshotFiller.js +84 -35
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +36 -39
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +4 -1
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +33 -5
- package/lib/tr-grid-contextmenu/es6/ContextMenu.d.ts +2 -1
- package/lib/tr-grid-contextmenu/es6/ContextMenu.js +8 -8
- package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +3 -0
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +23 -2
- package/lib/tr-grid-row-selection/es6/RowSelection.js +65 -28
- package/lib/types/es6/ConditionalColoring.d.ts +4 -1
- package/lib/types/es6/ContextMenu.d.ts +2 -1
- package/lib/types/es6/Core/data/DataView.d.ts +2 -0
- package/lib/types/es6/RealtimeGrid/SnapshotFiller.d.ts +8 -0
- package/lib/types/es6/RowFiltering.d.ts +3 -0
- package/lib/versions.json +5 -5
- package/package.json +1 -1
@@ -124,7 +124,6 @@ var ColumnDefinition = function(columnOption, hostGrid) {
|
|
124
124
|
this._classes = [];
|
125
125
|
this._requiredFields = [];
|
126
126
|
this._children = [];
|
127
|
-
this._parent = [];
|
128
127
|
|
129
128
|
if(columnOption) {
|
130
129
|
if(columnOption["parent"]) { // WARNING: This assume time series child, when have a parent
|
@@ -1030,8 +1029,9 @@ ColumnDefinition.prototype._setField = function(field, columnOption) {
|
|
1030
1029
|
// We need to cache time series in field definition for improve performance of checking methond
|
1031
1030
|
FieldDefinition.setFieldProperty(field, "timeSeries", FieldDefinition.isTimeSeries(field) ? true : false);
|
1032
1031
|
|
1033
|
-
|
1034
|
-
|
1032
|
+
var parentColDef = columnOption["parent"];
|
1033
|
+
if(columnOption && parentColDef) {
|
1034
|
+
FieldDefinition.setFieldProperty(field, "timeSeriesParent", parentColDef.getField());
|
1035
1035
|
}
|
1036
1036
|
|
1037
1037
|
this._updateContext("field", field);
|
@@ -280,7 +280,7 @@ FieldDefinition.isRealTimeField = function(field) {
|
|
280
280
|
* @return {boolean}
|
281
281
|
*/
|
282
282
|
FieldDefinition.isTimeSeriesChild = function(field) {
|
283
|
-
return FieldDefinition.getFieldProperty(field, "
|
283
|
+
return FieldDefinition.getFieldProperty(field, "timeSeriesParent") ? true : false;
|
284
284
|
};
|
285
285
|
|
286
286
|
/** @public
|
@@ -308,12 +308,12 @@ FieldDefinition.isTimeSeries = function (field) {
|
|
308
308
|
[\w]+ => any field with string and value
|
309
309
|
[\(] => open bucket (
|
310
310
|
[\w\-\=\,]* => any property name and follow by = EX. SDATE=2011-11-11, PRIOD=123123
|
311
|
-
EDATE
|
311
|
+
(?:EDATE|SDATE ) => non-capturing group match EDATE or SDATE
|
312
312
|
[\w\-\=\,]+ => another propertie param
|
313
313
|
[\)]$ => end with only )
|
314
314
|
i => for match both upper and lower cases
|
315
315
|
*/
|
316
|
-
var timeSeriesRegex = /^TR
|
316
|
+
var timeSeriesRegex = /^TR\.[\w]+\([\w\-\=\,]*(?:EDATE|SDATE)\=+[\w\-\=\,]*[ \w]*\)$/i;
|
317
317
|
return timeSeriesRegex.test(field);
|
318
318
|
};
|
319
319
|
|
package/lib/rt-grid/es6/Grid.js
CHANGED
@@ -1142,7 +1142,7 @@ Grid.prototype.getConfigObject = function (gridOptions) {
|
|
1142
1142
|
}
|
1143
1143
|
|
1144
1144
|
|
1145
|
-
var i, len;
|
1145
|
+
var i, len, prevTimeSeriesField;
|
1146
1146
|
len = this.getColumnCount();
|
1147
1147
|
for (i = 0; i < len; ++i) {
|
1148
1148
|
var column = columns[i];
|
@@ -1152,9 +1152,19 @@ Grid.prototype.getConfigObject = function (gridOptions) {
|
|
1152
1152
|
var colDef = this.getColumnDefinition(i);
|
1153
1153
|
// TODO: Update width and scalability changed by the extensions
|
1154
1154
|
colDef.getConfigObject(column);
|
1155
|
-
|
1155
|
+
var parentField = FieldDefinition.getFieldProperty(colDef.getField(), "timeSeriesParent");
|
1156
|
+
if(parentField && !prevTimeSeriesField) { // Assume first column of time series child to convert to time series parent
|
1157
|
+
prevTimeSeriesField = parentField;
|
1158
|
+
column.field = parentField;
|
1159
|
+
delete column.name; // WARNING: Name of child should be retained
|
1160
|
+
delete column.autoGenerated; // Convert to parent time series field
|
1161
|
+
}
|
1156
1162
|
|
1157
|
-
|
1163
|
+
if(!parentField && prevTimeSeriesField) { // Handled duplicate parent time series field in difference position of column
|
1164
|
+
prevTimeSeriesField = null;
|
1165
|
+
}
|
1166
|
+
}
|
1167
|
+
obj.columns = columns = columns.filter(_byNonAutoGeneratedColumn); // Time series child will be filtered out
|
1158
1168
|
|
1159
1169
|
if(this._topNode.style.overflow === "") {
|
1160
1170
|
obj["scrollbar"] = false;
|
@@ -1409,52 +1419,49 @@ Grid.prototype.insertColumn = function (columnOption, idx) {
|
|
1409
1419
|
this._grid.insertColumn(idx, configObj); // columnAdded is fired
|
1410
1420
|
};
|
1411
1421
|
|
1412
|
-
/**
|
1422
|
+
/**
|
1423
|
+
* @private
|
1413
1424
|
* @param {Object} e snapshort change event object
|
1414
1425
|
*/
|
1415
1426
|
Grid.prototype._updateTimeSeriesFields = function (e) {
|
1416
|
-
var
|
1417
|
-
var
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1427
|
+
var childField;
|
1428
|
+
var snapShotData = e.data;
|
1429
|
+
var childFields = {};
|
1430
|
+
for (var ric in snapShotData) {
|
1431
|
+
// childFields = snapShotData[ric];
|
1432
|
+
for (childField in snapShotData[ric]) {
|
1433
|
+
childFields[childField] = true; // Merge child fields to parent (Don't truth each ric it will be have some empty data)
|
1434
|
+
}
|
1435
|
+
this.setRicData(ric, snapShotData[ric]); // update cell data if exist
|
1421
1436
|
}
|
1422
1437
|
var parentField, field, colIndex, parentColDef, childColIndex;
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
parentField = e.childrenFieldToParent[firstField];
|
1431
|
-
colIndex = this.getColumnIndex(parentField);
|
1432
|
-
this._grid.setColumnVisibility(colIndex);
|
1433
|
-
parentColDef = this._getColumnDefinition(colIndex);
|
1434
|
-
|
1435
|
-
|
1436
|
-
var children = parentColDef.getChildren();
|
1437
|
-
var i, len, childDef, childField;
|
1438
|
-
len = children.length;
|
1439
|
-
if(len > 0){
|
1440
|
-
for (i = 0; i < len; i++) {
|
1441
|
-
childDef = children[i];
|
1442
|
-
childField = childDef.getField();
|
1443
|
-
if(!childFields[childField]) {
|
1444
|
-
this.removeColumn(childField);
|
1445
|
-
}
|
1438
|
+
var parentMap = {}; // map parent time series field and their first child
|
1439
|
+
for (field in childFields) { // Warning: data change can be differ time series child field
|
1440
|
+
parentField = e.childrenFieldToParent[field];
|
1441
|
+
if(!parentMap[parentField]) {
|
1442
|
+
parentMap[parentField] = [field];
|
1443
|
+
} else {
|
1444
|
+
parentMap[parentField].push(field);
|
1446
1445
|
}
|
1447
1446
|
}
|
1448
1447
|
|
1449
|
-
for (
|
1450
|
-
|
1448
|
+
for (parentField in parentMap) { // WARNING: one dataChanged event can be multiple fields
|
1449
|
+
var childrenField = parentMap[parentField];
|
1451
1450
|
colIndex = this.getColumnIndex(parentField);
|
1452
1451
|
parentColDef = this._getColumnDefinition(colIndex);
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1452
|
+
var i, len;
|
1453
|
+
len = childrenField.length;
|
1454
|
+
for (i = 0; i < len; i++) {
|
1455
|
+
childField = childrenField[i];
|
1456
|
+
childColIndex = this.getColumnIndex(childField);
|
1457
|
+
if(childColIndex < 0) { // not found column index in view tried to clone from parent
|
1458
|
+
colIndex = this.getColumnIndex(parentField);
|
1459
|
+
parentColDef = this._getColumnDefinition(colIndex);
|
1460
|
+
this._cloneTimeSeriesColumn(parentColDef, childField, colIndex);
|
1461
|
+
FieldDefinition.addTimeSeriesChild(parentField, childField); // TODO: time series child can be difference of response even if the input is the same, It should be dynamic add/remove fields
|
1462
|
+
}
|
1457
1463
|
}
|
1464
|
+
this.removeColumn(parentField);
|
1458
1465
|
}
|
1459
1466
|
|
1460
1467
|
};
|
@@ -1474,12 +1481,12 @@ Grid.prototype._populateTimeSeriesChildren = function (colDef) {
|
|
1474
1481
|
for (i = 0; i < colDefs.length; i++) {
|
1475
1482
|
colDef = colDefs[i];
|
1476
1483
|
idx = this.getColumnIndex(colDef);
|
1477
|
-
this._grid.setColumnVisibility(idx); // hide parent field
|
1478
1484
|
|
1479
1485
|
if(!colDef) {
|
1480
1486
|
continue;
|
1481
1487
|
}
|
1482
|
-
var
|
1488
|
+
var parentField = colDef.getField();
|
1489
|
+
var childFields = FieldDefinition.getTimeSeriesChildren(parentField);
|
1483
1490
|
if(!childFields) { // not found time series field
|
1484
1491
|
return;
|
1485
1492
|
}
|
@@ -1504,18 +1511,14 @@ Grid.prototype._populateTimeSeriesChildren = function (colDef) {
|
|
1504
1511
|
* @param {number} idx index of insertion column
|
1505
1512
|
*/
|
1506
1513
|
Grid.prototype._cloneTimeSeriesColumn = function (parentColDef, childField, idx) {
|
1507
|
-
var parentConfig, columnOption
|
1514
|
+
var parentConfig, columnOption;
|
1508
1515
|
parentConfig = parentColDef.getConfigObject();
|
1509
|
-
|
1510
|
-
for (key in parentConfig) {
|
1511
|
-
if(key !== "hidden") {
|
1512
|
-
obj[key] = parentConfig[key];
|
1513
|
-
}
|
1514
|
-
}
|
1515
|
-
columnOption = cloneObject(obj);
|
1516
|
+
columnOption = cloneObject(parentConfig);
|
1516
1517
|
columnOption["field"] = childField.replace("TR.", ""); // We need to remove the 'TR' prefix from the field to avoid confusion with time series fields.
|
1517
1518
|
columnOption["name"] = childField.split("_")[1].split("T")[0]; // Currently, response server format utc date ex "2022-11-23T00:00:00"
|
1518
1519
|
columnOption["parent"] = parentColDef;
|
1520
|
+
columnOption["timeSeriesName"] = parentColDef.getName();
|
1521
|
+
columnOption["timeSeriesId"] = parentColDef.getId();
|
1519
1522
|
this.insertColumn(columnOption, idx++);
|
1520
1523
|
|
1521
1524
|
};
|
@@ -1581,10 +1584,6 @@ Grid.prototype.replaceColumn = function (columnOption, colRef) {
|
|
1581
1584
|
}
|
1582
1585
|
|
1583
1586
|
var colDef = this.getColumnDefinition(colIndex);
|
1584
|
-
if(colDef && colDef.getChildren().length > 0) { // Parent time series field doesn't provide hidden property
|
1585
|
-
colConfig["hidden"] = false;
|
1586
|
-
}
|
1587
|
-
|
1588
1587
|
if(colDef && colConfig.id == null) {
|
1589
1588
|
colConfig.id = colDef.getId(); // retain ID
|
1590
1589
|
}
|
@@ -1920,18 +1919,6 @@ Grid.prototype.removeColumn = function(colRef) {
|
|
1920
1919
|
}
|
1921
1920
|
|
1922
1921
|
var colDef = this.getColumnDefinition(colIndex);
|
1923
|
-
var children = colDef.getChildren();
|
1924
|
-
if(children) {
|
1925
|
-
var len = children.length;
|
1926
|
-
if(len > 0) { // remove time series child
|
1927
|
-
var i, childDef;
|
1928
|
-
for (i = 0; i < len; i++) {
|
1929
|
-
childDef = children[i];
|
1930
|
-
this.removeColumn(childDef);
|
1931
|
-
}
|
1932
|
-
colIndex = this.getColumnIndex(colRef); // children in parent will be remove the parent should be get new index
|
1933
|
-
}
|
1934
|
-
}
|
1935
1922
|
|
1936
1923
|
if(!colDef.isRealTimeField()) {
|
1937
1924
|
if(this._dc) {
|
@@ -2064,18 +2051,7 @@ Grid.prototype.hideColumn = function(colRef, hidden) {
|
|
2064
2051
|
if(colIndex < 0) { // not found
|
2065
2052
|
return;
|
2066
2053
|
}
|
2067
|
-
|
2068
|
-
var children = colDef.getChildren();
|
2069
|
-
var len = children.length;
|
2070
|
-
if(len > 0) { // remove time series child, and parent shouldn't unHide
|
2071
|
-
var i, childDef;
|
2072
|
-
for (i = 0; i < len; i++) {
|
2073
|
-
childDef = children[i];
|
2074
|
-
this.hideColumn(childDef, hidden);
|
2075
|
-
}
|
2076
|
-
} else {
|
2077
|
-
this._grid.hideColumn(colIndex, hidden);
|
2078
|
-
}
|
2054
|
+
this._grid.hideColumn(colIndex, hidden);
|
2079
2055
|
|
2080
2056
|
};
|
2081
2057
|
/** Hide multiple columns at once. The hidden columns still occupy the same index.
|
@@ -8,8 +8,16 @@ declare class SnapshotFiller extends EventDispatcher {
|
|
8
8
|
|
9
9
|
constructor();
|
10
10
|
|
11
|
+
public static readonly _mockAdc: any;
|
12
|
+
|
11
13
|
public setRTK(rtk: any): void;
|
12
14
|
|
15
|
+
public static setMockAdc(str: string, value: any): void;
|
16
|
+
|
17
|
+
public static getMockAdc(str: string): any;
|
18
|
+
|
19
|
+
public static clearMockAdc(): void;
|
20
|
+
|
13
21
|
public setADCOptions(adcOptions: Grid.ADCOptions|null): void;
|
14
22
|
|
15
23
|
public addRic(ric: string): void;
|
@@ -50,6 +50,43 @@ SnapshotFiller.prototype.setRTK = function (rtk) {
|
|
50
50
|
this._rtk = rtk;
|
51
51
|
};
|
52
52
|
|
53
|
+
/**
|
54
|
+
* @public
|
55
|
+
* @type {Object}
|
56
|
+
*/
|
57
|
+
SnapshotFiller._mockAdc = null;
|
58
|
+
|
59
|
+
/**
|
60
|
+
* @public
|
61
|
+
* @param {string} str
|
62
|
+
* @param {*} value
|
63
|
+
*/
|
64
|
+
SnapshotFiller.setMockAdc = function(str, value) {
|
65
|
+
if(!SnapshotFiller._mockAdc) {
|
66
|
+
SnapshotFiller._mockAdc = {};
|
67
|
+
}
|
68
|
+
SnapshotFiller._mockAdc[str] = value;
|
69
|
+
};
|
70
|
+
|
71
|
+
/**
|
72
|
+
* @public
|
73
|
+
* @param {string} str
|
74
|
+
* @return {*}
|
75
|
+
*/
|
76
|
+
SnapshotFiller.getMockAdc = function(str) {
|
77
|
+
if(!SnapshotFiller._mockAdc) {
|
78
|
+
return null;
|
79
|
+
}
|
80
|
+
return SnapshotFiller._mockAdc[str];
|
81
|
+
};
|
82
|
+
|
83
|
+
/**
|
84
|
+
* @public
|
85
|
+
*/
|
86
|
+
SnapshotFiller.clearMockAdc = function() {
|
87
|
+
SnapshotFiller._mockAdc = null;
|
88
|
+
}
|
89
|
+
|
53
90
|
/** @public
|
54
91
|
* @param {Grid~ADCOptions} adcOptions ADC requesting level parameter options
|
55
92
|
*/
|
@@ -215,12 +252,19 @@ SnapshotFiller.prototype._onRequest = function () {
|
|
215
252
|
"output": "Col,date|,Row,In|,va,T,NoEmptyTickers" // For customize output server, for more information please visit "https://confluence.refinitiv.com/display/ADC/Data+Cloud+Output+Format"
|
216
253
|
};
|
217
254
|
onSuccess = this._onRTKTimeSeriesSuccess.bind(this, timeSeriesFields);
|
218
|
-
|
255
|
+
var responseMockAdc = SnapshotFiller.getMockAdc(payload.formula);
|
256
|
+
if(responseMockAdc) {
|
257
|
+
setTimeout(function() {
|
258
|
+
onSuccess(responseMockAdc);
|
259
|
+
}, 10); // Mock Async operation
|
260
|
+
} else {
|
261
|
+
this._rtk.Data.Adc
|
219
262
|
.request(payload)
|
220
263
|
.then(onSuccess)
|
221
264
|
.catch(function (err) {
|
222
265
|
console.log(err);
|
223
266
|
});
|
267
|
+
}
|
224
268
|
}
|
225
269
|
|
226
270
|
// Request normal adc field
|
@@ -421,61 +465,66 @@ SnapshotFiller.prototype._onRTKTimeSeriesSuccess = function (fields, serverResul
|
|
421
465
|
if (!Array.isArray(data2D) || !Array.isArray(svHeaders)) {
|
422
466
|
return; // TODO: Return Promise.reject(errMsg);
|
423
467
|
}
|
424
|
-
|
425
|
-
var
|
426
|
-
|
427
|
-
var headerDates = [];
|
428
|
-
var i, j;
|
429
|
-
|
430
|
-
for (i = 2; i < headerLen; i++) { // Start with 2 (Skip instrunment and date header)
|
431
|
-
headerDates.push(svHeaders[i].v);
|
432
|
-
}
|
433
|
-
|
434
|
-
var ric, j, field;
|
435
|
-
var len = data2D.length;
|
436
|
-
var ricMap = {};
|
437
|
-
var childrenFieldToParent = {};
|
438
|
-
|
468
|
+
// Extract header dates
|
469
|
+
var headerDates = svHeaders.slice(2).map(header => header.v);
|
470
|
+
// Create necessary variables
|
439
471
|
var fileNameToTSField = {};
|
440
472
|
var count = 0;
|
441
|
-
|
473
|
+
// Convert map to fieldMap
|
474
|
+
var data2DLength = data2D.length;
|
475
|
+
for (var i = 1; i < data2DLength; i++) {
|
442
476
|
var dataRow = data2D[i];
|
443
477
|
var fieldName = dataRow[1];
|
444
|
-
if(!fileNameToTSField[fieldName]) {
|
478
|
+
if (!fileNameToTSField[fieldName]) {
|
445
479
|
fileNameToTSField[fieldName] = fields[count++];
|
446
|
-
}
|
480
|
+
}
|
447
481
|
}
|
448
|
-
|
449
|
-
|
450
|
-
|
482
|
+
// Process data and populate ricMap and childrenFieldToParent
|
483
|
+
var ricMap = {};
|
484
|
+
var childrenFieldToParent = {};
|
485
|
+
for (var i = 1; i < data2DLength; i++) {
|
451
486
|
var dataRow = data2D[i];
|
452
|
-
ric = dataRow[0];
|
453
|
-
var fieldName = dataRow[1];
|
454
|
-
|
487
|
+
var ric = dataRow[0];
|
488
|
+
var fieldName = dataRow[1];
|
489
|
+
|
490
|
+
if (!ricMap[ric]) {
|
455
491
|
ricMap[ric] = {};
|
456
492
|
}
|
457
493
|
var snapData = ricMap[ric];
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
494
|
+
if (headerDates.length === 1) {
|
495
|
+
// Time series with only 1 column, it will be a normal adc field
|
496
|
+
snapData[fileNameToTSField[fieldName]] = dataRow[2];
|
497
|
+
} else {
|
498
|
+
// Multiple columns, it will be a time series field
|
499
|
+
for (var k = 0; k < headerDates.length; k++) {
|
500
|
+
var field = fileNameToTSField[fieldName].replace("TR.", "") + "_" + headerDates[k];
|
501
|
+
var celLData = dataRow[2 + k];
|
502
|
+
if(celLData !== null) {
|
503
|
+
childrenFieldToParent[field] = fileNameToTSField[fieldName];
|
504
|
+
snapData[field] = celLData;
|
505
|
+
}
|
506
|
+
}
|
462
507
|
}
|
463
508
|
}
|
464
509
|
|
465
|
-
//
|
510
|
+
// Return result only for ric that has updated data
|
466
511
|
var dataMapping = {};
|
467
|
-
for (ric in ricMap) {
|
512
|
+
for (var ric in ricMap) {
|
468
513
|
var obj = ricMap[ric];
|
469
514
|
if (!isEmptyObject(obj)) {
|
470
515
|
dataMapping[ric] = obj;
|
471
516
|
}
|
472
517
|
}
|
473
518
|
|
474
|
-
|
519
|
+
// Dispatch events based on the header length
|
520
|
+
var eventData = {
|
475
521
|
data: dataMapping,
|
476
|
-
|
477
|
-
|
478
|
-
|
522
|
+
};
|
523
|
+
if (headerDates.length > 1) {
|
524
|
+
eventData.timeSeries = true;
|
525
|
+
eventData.childrenFieldToParent = childrenFieldToParent;
|
526
|
+
}
|
527
|
+
this._dispatch("dataChanged", eventData);
|
479
528
|
};
|
480
529
|
|
481
530
|
export { SnapshotFiller };
|
@@ -36,7 +36,6 @@ var ColumnGroupingPlugin = function ColumnGroupingPlugin(options) {
|
|
36
36
|
t._requestApplyAddChildGroup = t._requestApplyAddChildGroup.bind(this);
|
37
37
|
t._onPostSectionRender = t._onPostSectionRender.bind(t);
|
38
38
|
t._onBeforeColumnBoundUpdate = t._onBeforeColumnBoundUpdate.bind(t);
|
39
|
-
t._onPinningChanged = t._onPinningChanged.bind(this);
|
40
39
|
t._groupDefs = new GroupDefinitions();
|
41
40
|
if (options) {
|
42
41
|
t.config({
|
@@ -84,10 +83,6 @@ ColumnGroupingPlugin.prototype._addingEvents = null;
|
|
84
83
|
* @private
|
85
84
|
*/
|
86
85
|
ColumnGroupingPlugin.prototype._legacyColumnGroups = null;
|
87
|
-
/** @type {boolean}
|
88
|
-
* @private
|
89
|
-
*/
|
90
|
-
ColumnGroupingPlugin.prototype._inPinning = false;
|
91
86
|
/** @type {!Object.<string, boolean>}
|
92
87
|
* @description A map of selected groups
|
93
88
|
* @private
|
@@ -211,6 +206,15 @@ ColumnGroupingPlugin._recursivelyFlatten = function (groupDef, groupDefs) {
|
|
211
206
|
}
|
212
207
|
};
|
213
208
|
|
209
|
+
/** Filter time series group out
|
210
|
+
* @private
|
211
|
+
* @param {Object} groupDef
|
212
|
+
* @return {boolean}
|
213
|
+
*/
|
214
|
+
ColumnGroupingPlugin._isNotTimeSeriesGroup = function (groupDef) {
|
215
|
+
return groupDef.timeSeriesGroup ? false : true;
|
216
|
+
};
|
217
|
+
|
214
218
|
/** @public
|
215
219
|
* @return {string}
|
216
220
|
*/
|
@@ -247,7 +251,6 @@ ColumnGroupingPlugin.prototype.initialize = function (host, options) {
|
|
247
251
|
host.listen("columnVisibilityChanged", this._onColumnChanged);
|
248
252
|
host.listen("postSectionRender", this._onPostSectionRender);
|
249
253
|
host.listen("beforeColumnBoundUpdate", this._onBeforeColumnBoundUpdate);
|
250
|
-
host.listen("pinningChanged", this._onPinningChanged);
|
251
254
|
}
|
252
255
|
this.config(options);
|
253
256
|
this._legacyColumnGroups = null;
|
@@ -301,7 +304,6 @@ ColumnGroupingPlugin.prototype.unload = function (host) {
|
|
301
304
|
host.unlisten("columnRemoved", this._onColumnRemoved);
|
302
305
|
host.unlisten("postSectionRender", this._onPostSectionRender);
|
303
306
|
host.unlisten("beforeColumnBoundUpdate", this._onBeforeColumnBoundUpdate);
|
304
|
-
host.unlisten("pinningChanged", this._onPinningChanged);
|
305
307
|
if (!this._hosts.length) {
|
306
308
|
if (this._rerenderTimerId) {
|
307
309
|
clearTimeout(this._rerenderTimerId);
|
@@ -350,6 +352,7 @@ ColumnGroupingPlugin.prototype.getConfigObject = function (gridOptions) {
|
|
350
352
|
|
351
353
|
// TODO: Handle legacyRender method that has been migrated
|
352
354
|
var groupDefs = this.getGroupDefinitions();
|
355
|
+
groupDefs = groupDefs.filter(ColumnGroupingPlugin._isNotTimeSeriesGroup);
|
353
356
|
if (groupDefs.length) {
|
354
357
|
obj.columnGrouping = groupDefs;
|
355
358
|
}
|
@@ -429,12 +432,10 @@ ColumnGroupingPlugin.prototype._migrateLegacyStructure = function (groupDefs, co
|
|
429
432
|
* @param {number=} numRightColumn
|
430
433
|
*/
|
431
434
|
ColumnGroupingPlugin.prototype._freezeColumn = function (frozenColIndex, numRightColumn) {
|
432
|
-
this._inPinning = true;
|
433
435
|
var hosts = this._hosts;
|
434
436
|
for (var i = 0; i < hosts.length; i++) {
|
435
437
|
hosts[i].freezeColumn(frozenColIndex, numRightColumn);
|
436
438
|
}
|
437
|
-
this._inPinning = false;
|
438
439
|
};
|
439
440
|
/** @private
|
440
441
|
*/
|
@@ -893,28 +894,38 @@ ColumnGroupingPlugin.prototype._requestApplyAddChildGroup = function (e) {
|
|
893
894
|
};
|
894
895
|
|
895
896
|
/** @private
|
896
|
-
|
897
|
-
|
897
|
+
* @param {Object} e dispatching of columnAdded event object
|
898
|
+
*/
|
898
899
|
ColumnGroupingPlugin.prototype._applyTimeSeries = function (e) {
|
899
900
|
this._addingTimerId = 0; // clear timer
|
900
901
|
var addingEvents = this._addingEvents;
|
901
902
|
this._addingEvents = [];
|
902
903
|
if (addingEvents.length > 0) {
|
903
904
|
var children = [];
|
904
|
-
var
|
905
|
+
var timeSeriesId, timeSeriesName;
|
906
|
+
var tsgChild = {};
|
905
907
|
for (var i = 0; i < addingEvents.length; i++) {
|
908
|
+
// WARNING: addingEvents column can be difference group
|
906
909
|
var addingEvent = addingEvents[i];
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
910
|
+
timeSeriesName = addingEvent.context.timeSeriesName;
|
911
|
+
timeSeriesId = addingEvent.context.timeSeriesId;
|
912
|
+
var childIndex, childId;
|
913
|
+
if (!tsgChild[timeSeriesId]) {
|
914
|
+
tsgChild[timeSeriesId] = {
|
915
|
+
name: timeSeriesName,
|
916
|
+
children: []
|
917
|
+
};
|
918
|
+
childIndex = addingEvent.colIndex;
|
919
|
+
childId = this.getColumnId(childIndex);
|
920
|
+
tsgChild[timeSeriesId].children.push(childId);
|
921
|
+
} else {
|
922
|
+
childIndex = addingEvent.colIndex;
|
923
|
+
childId = this.getColumnId(childIndex);
|
924
|
+
tsgChild[timeSeriesId].children.push(childId);
|
912
925
|
}
|
913
926
|
}
|
914
|
-
|
915
|
-
var
|
916
|
-
var parentId = tsParentDef.getId();
|
917
|
-
var groupId = "timeSerieGroup_" + parentId;
|
927
|
+
for (timeSeriesId in tsgChild) {
|
928
|
+
var groupId = "timeSerieGroup_" + timeSeriesId;
|
918
929
|
var groupDef = this._groupDefs.getGroup(groupId);
|
919
930
|
if (groupDef) {
|
920
931
|
// add children time series field to parent
|
@@ -925,12 +936,14 @@ ColumnGroupingPlugin.prototype._applyTimeSeries = function (e) {
|
|
925
936
|
// create new group
|
926
937
|
this.addGroup({
|
927
938
|
id: groupId,
|
928
|
-
title:
|
929
|
-
children: children
|
939
|
+
title: tsgChild[timeSeriesId].name,
|
940
|
+
children: tsgChild[timeSeriesId].children,
|
941
|
+
timeSeriesGroup: true // For remove it when getConfigObject
|
930
942
|
});
|
931
943
|
}
|
932
944
|
}
|
933
945
|
}
|
946
|
+
|
934
947
|
this._requestApplyGrouping();
|
935
948
|
};
|
936
949
|
|
@@ -979,22 +992,6 @@ ColumnGroupingPlugin.prototype._onColumnRemoved = function (e) {
|
|
979
992
|
/** @private
|
980
993
|
* @param {Object} e
|
981
994
|
*/
|
982
|
-
ColumnGroupingPlugin.prototype._onPinningChanged = function (e) {
|
983
|
-
if (!this._inPinning) {
|
984
|
-
// Clear current pinning states
|
985
|
-
var groupMap = this._visibleGroupMap;
|
986
|
-
for (var groupId in groupMap) {
|
987
|
-
var groupDef = groupMap[groupId];
|
988
|
-
groupDef.leftPinned = false;
|
989
|
-
groupDef.rightPinned = false;
|
990
|
-
}
|
991
|
-
this._verifyColumnPinning();
|
992
|
-
this._applyPinning();
|
993
|
-
}
|
994
|
-
};
|
995
|
-
/** @private
|
996
|
-
* @param {Object} e
|
997
|
-
*/
|
998
995
|
ColumnGroupingPlugin.prototype._onBeforeColumnBoundUpdate = function (e) {
|
999
996
|
var selectedColumns = e.selectedColumns; // Hidden columns are included
|
1000
997
|
|
@@ -9,7 +9,8 @@ declare namespace ConditionalColoringPlugin {
|
|
9
9
|
|
10
10
|
type Options = {
|
11
11
|
predefinedColors?: any,
|
12
|
-
blinkingDuration?: number|null
|
12
|
+
blinkingDuration?: number|null,
|
13
|
+
insertionBlinking?: boolean|null
|
13
14
|
};
|
14
15
|
|
15
16
|
type ColumnOptions = {
|
@@ -81,6 +82,8 @@ declare class ConditionalColoringPlugin extends GridPlugin {
|
|
81
82
|
|
82
83
|
public setPredefinedColors(predefinedColors: any): void;
|
83
84
|
|
85
|
+
public setInsertionBlinking(blinking: boolean): void;
|
86
|
+
|
84
87
|
public getColumnPainter(colIndex: number): CellPainter|null;
|
85
88
|
|
86
89
|
public applyColor(colIndex: number, cell: any, rowData?: any): void;
|