@refinitiv-ui/efx-grid 6.0.67 → 6.0.69
Sign up to get free protection for your applications and to get access to all the features.
- 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-column-selection/es6/ColumnSelection.js +52 -0
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +13 -4
- package/lib/tr-grid-row-selection/es6/RowSelection.js +65 -28
- package/lib/types/es6/RealtimeGrid/SnapshotFiller.d.ts +8 -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
|
|
@@ -1392,6 +1392,58 @@ ColumnSelectionPlugin.prototype.dispatchSelectionChanged = function () {
|
|
1392
1392
|
"grid": this._activeGrid
|
1393
1393
|
});
|
1394
1394
|
};
|
1395
|
+
/** @public
|
1396
|
+
* @description Select a specified column by a simulated mouse click input. This is for testing purpose.
|
1397
|
+
* @ignore
|
1398
|
+
* @param {number} colIndex
|
1399
|
+
* @param {Object=} mouseEvt
|
1400
|
+
*/
|
1401
|
+
|
1402
|
+
|
1403
|
+
ColumnSelectionPlugin.prototype.selectByMouse = function (colIndex, mouseEvt) {
|
1404
|
+
if (!mouseEvt) {
|
1405
|
+
mouseEvt = {};
|
1406
|
+
}
|
1407
|
+
|
1408
|
+
if (colIndex >= 0) {
|
1409
|
+
var grid = this._activeGrid || this._hosts[0];
|
1410
|
+
var cell = grid ? grid.getCell("title", colIndex, 0) : null;
|
1411
|
+
mouseEvt.target = cell ? cell.getElement() : null;
|
1412
|
+
}
|
1413
|
+
|
1414
|
+
this._onClick(mouseEvt);
|
1415
|
+
};
|
1416
|
+
/** @public
|
1417
|
+
* @description Select a specified column by a keyboard input. This is for testing purpose.
|
1418
|
+
* @ignore
|
1419
|
+
* @param {number|string} keyCode Use "left" , "right" or "tab"
|
1420
|
+
* @param {Object=} keyboardEvt
|
1421
|
+
*/
|
1422
|
+
|
1423
|
+
|
1424
|
+
ColumnSelectionPlugin.prototype.selectByKey = function (keyCode, keyboardEvt) {
|
1425
|
+
if (!keyboardEvt) {
|
1426
|
+
keyboardEvt = {};
|
1427
|
+
}
|
1428
|
+
|
1429
|
+
if (keyCode) {
|
1430
|
+
if (keyCode === "left") {
|
1431
|
+
keyboardEvt.keyCode = 37;
|
1432
|
+
} else if (keyCode === "right") {
|
1433
|
+
keyboardEvt.keyCode = 39;
|
1434
|
+
} else if (keyCode === "tab") {
|
1435
|
+
keyboardEvt.keyCode = 9;
|
1436
|
+
} else if (typeof keyCode === "number") {
|
1437
|
+
keyboardEvt.keyCode = keyCode;
|
1438
|
+
}
|
1439
|
+
}
|
1440
|
+
|
1441
|
+
keyboardEvt.preventDefault = function () {};
|
1442
|
+
|
1443
|
+
keyboardEvt.stopPropagation = function () {};
|
1444
|
+
|
1445
|
+
this._onKeyDown(keyboardEvt);
|
1446
|
+
};
|
1395
1447
|
|
1396
1448
|
export default ColumnSelectionPlugin;
|
1397
1449
|
export { ColumnSelectionPlugin, ColumnSelectionPlugin as ColumnSelection, ColumnSelectionPlugin as ColumnSelectionExtension };
|
@@ -299,14 +299,23 @@ ConditionalColoringPlugin.prototype.config = function (options) {
|
|
299
299
|
ConditionalColoringPlugin.prototype.getConfigObject = function (gridOptions) {
|
300
300
|
var obj = gridOptions || {};
|
301
301
|
|
302
|
+
var extOptions = obj["conditionalColoring"];
|
303
|
+
if(!extOptions) {
|
304
|
+
extOptions = obj["conditionalColoring"] = {};
|
305
|
+
}
|
306
|
+
|
302
307
|
if(this._predefinedColors != null) {
|
303
|
-
var extOptions = obj["conditionalColoring"];
|
304
|
-
if(!extOptions) {
|
305
|
-
extOptions = obj["conditionalColoring"] = {};
|
306
|
-
}
|
307
308
|
extOptions["predefinedColors"] = this._predefinedColors;
|
308
309
|
}
|
309
310
|
|
311
|
+
if(this._blinkingDuration !== 250) {
|
312
|
+
extOptions["blinkingDuration"] = this._blinkingDuration;
|
313
|
+
}
|
314
|
+
|
315
|
+
if(this._insertionBlinking !== false) {
|
316
|
+
extOptions["insertionBlinking"] = this._insertionBlinking;
|
317
|
+
}
|
318
|
+
|
310
319
|
var columns = obj.columns;
|
311
320
|
if (!columns) {
|
312
321
|
columns = obj.columns = [];
|