@refinitiv-ui/efx-grid 6.0.22 → 6.0.23
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 +132 -55
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.d.ts +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.js +21 -36
- package/lib/rt-grid/es6/FieldDefinition.d.ts +7 -1
- package/lib/rt-grid/es6/FieldDefinition.js +93 -4
- package/lib/rt-grid/es6/Grid.js +17 -14
- package/lib/rt-grid/es6/SnapshotFiller.js +1 -1
- package/package.json +1 -1
package/lib/grid/index.js
CHANGED
@@ -14186,7 +14186,7 @@ var FieldDefinition = {};
|
|
14186
14186
|
FieldDefinition._defs = {
|
14187
14187
|
"X_RIC_NAME": {
|
14188
14188
|
name: "RIC",
|
14189
|
-
|
14189
|
+
IsRealtimeField: false,
|
14190
14190
|
width: 100,
|
14191
14191
|
binding: xRicNameRenderer,
|
14192
14192
|
sortLogic: xRicNameSorter
|
@@ -14324,7 +14324,13 @@ FieldDefinition._loadingField = {};
|
|
14324
14324
|
* @param {Object} def
|
14325
14325
|
*/
|
14326
14326
|
FieldDefinition.set = function(field, def) {
|
14327
|
-
FieldDefinition._defs[field]
|
14327
|
+
if (!FieldDefinition._defs[field]) {
|
14328
|
+
FieldDefinition._defs[field] = def;
|
14329
|
+
} else {
|
14330
|
+
for (var key in def) {
|
14331
|
+
FieldDefinition._defs[field][key] = def[key];
|
14332
|
+
}
|
14333
|
+
}
|
14328
14334
|
};
|
14329
14335
|
/** @public
|
14330
14336
|
* @function
|
@@ -14381,11 +14387,64 @@ FieldDefinition.setFieldCaching = function (caching) {
|
|
14381
14387
|
FieldDefinition._caching = caching;
|
14382
14388
|
};
|
14383
14389
|
|
14390
|
+
/** @public
|
14391
|
+
* @param {string} field
|
14392
|
+
* @return {boolean}
|
14393
|
+
*/
|
14394
|
+
FieldDefinition.isFormula = function(field) {
|
14395
|
+
return field.charAt(0) === "=";
|
14396
|
+
};
|
14397
|
+
/** @public
|
14398
|
+
* @param {string} field
|
14399
|
+
* @return {boolean}
|
14400
|
+
*/
|
14401
|
+
FieldDefinition.isAdc = function(field) {
|
14402
|
+
return field.indexOf("TR.") === 0;
|
14403
|
+
};
|
14404
|
+
|
14405
|
+
/** @public
|
14406
|
+
* @param {string} field
|
14407
|
+
* @return {boolean}
|
14408
|
+
*/
|
14409
|
+
FieldDefinition.isRealTimeField = function(field) {
|
14410
|
+
if (!field) {
|
14411
|
+
return false;
|
14412
|
+
}
|
14413
|
+
|
14414
|
+
if(FieldDefinition.isAdc(field)) {
|
14415
|
+
return false;
|
14416
|
+
}
|
14417
|
+
|
14418
|
+
if(FieldDefinition.isFormula(field)) {
|
14419
|
+
return false;
|
14420
|
+
}
|
14421
|
+
|
14422
|
+
if(FieldDefinition.getFieldProperty(field, "timeSeriesChild")) {
|
14423
|
+
return false;
|
14424
|
+
}
|
14425
|
+
|
14426
|
+
if(FieldDefinition.isTimeSeries(field)) {
|
14427
|
+
return false;
|
14428
|
+
}
|
14429
|
+
|
14430
|
+
return FieldDefinition.getFieldProperty(field, "IsRealtimeField") !== false;
|
14431
|
+
};
|
14432
|
+
|
14384
14433
|
/** @public
|
14385
14434
|
* @param {string} field
|
14386
14435
|
* @return {boolean}=true if field is time series field
|
14387
14436
|
*/
|
14388
|
-
FieldDefinition.
|
14437
|
+
FieldDefinition.isTimeSeries = function (field) {
|
14438
|
+
if (!field) {
|
14439
|
+
return false;
|
14440
|
+
}
|
14441
|
+
|
14442
|
+
// We can check time series using a cache to avoid duplicating checks in regular expressions.
|
14443
|
+
var timeSeriesField = FieldDefinition.getFieldProperty(field, "timeSeries");
|
14444
|
+
if (timeSeriesField != null) {
|
14445
|
+
return timeSeriesField;
|
14446
|
+
}
|
14447
|
+
|
14389
14448
|
/*
|
14390
14449
|
^TR. => start with TR.
|
14391
14450
|
[\w]+ => any field with string and value
|
@@ -14394,9 +14453,39 @@ FieldDefinition.isTimeSeriesField = function (field) {
|
|
14394
14453
|
EDATE\=+ => EDATE in bucket
|
14395
14454
|
[\w\-\=\,]+ => another propertie param
|
14396
14455
|
[\)]$ => end with only )
|
14456
|
+
i => for match both upper and lower cases
|
14397
14457
|
*/
|
14458
|
+
var timeSeriesRegex = /^TR.[\w]+[\(][\w\-\=\,]*EDATE\=+[\w\-\=\,]+[\)]$/i;
|
14459
|
+
return timeSeriesRegex.test(field);
|
14460
|
+
};
|
14461
|
+
|
14462
|
+
/**
|
14463
|
+
* Set property value into field definition
|
14464
|
+
* @private
|
14465
|
+
* @param {string} field field definition
|
14466
|
+
* @param {string} propertyName
|
14467
|
+
* @param {*} value
|
14468
|
+
*/
|
14469
|
+
FieldDefinition.setFieldProperty = function(field, propertyName, value) {
|
14470
|
+
if(!FieldDefinition._defs[field]) {
|
14471
|
+
FieldDefinition._defs[field] = {};
|
14472
|
+
}
|
14473
|
+
FieldDefinition._defs[field][propertyName] = value;
|
14474
|
+
};
|
14398
14475
|
|
14399
|
-
|
14476
|
+
/**
|
14477
|
+
* Set property value into field definition
|
14478
|
+
* @private
|
14479
|
+
* @param {string} field field definition
|
14480
|
+
* @param {string} propertyName
|
14481
|
+
* @return {*}
|
14482
|
+
*/
|
14483
|
+
FieldDefinition.getFieldProperty = function(field, propertyName) {
|
14484
|
+
var fieldDef = FieldDefinition._defs[field];
|
14485
|
+
if(fieldDef) {
|
14486
|
+
return fieldDef[propertyName];
|
14487
|
+
}
|
14488
|
+
return null;
|
14400
14489
|
};
|
14401
14490
|
|
14402
14491
|
/** to get more info about field via synapse service
|
@@ -14847,10 +14936,6 @@ ColumnDefinition.prototype._eventArg;
|
|
14847
14936
|
/** @type {boolean}
|
14848
14937
|
* @private
|
14849
14938
|
*/
|
14850
|
-
ColumnDefinition.prototype._realTimeField = false;
|
14851
|
-
/** @type {boolean}
|
14852
|
-
* @private
|
14853
|
-
*/
|
14854
14939
|
ColumnDefinition.prototype._autoGenerated = false;
|
14855
14940
|
|
14856
14941
|
/** @type {!Array.<string>}
|
@@ -14897,10 +14982,6 @@ ColumnDefinition.prototype._parent = null;
|
|
14897
14982
|
* @private
|
14898
14983
|
*/
|
14899
14984
|
ColumnDefinition.prototype._children = null;
|
14900
|
-
/** @type {boolean}
|
14901
|
-
* @private
|
14902
|
-
*/
|
14903
|
-
ColumnDefinition.prototype._timeSeriesField = false;
|
14904
14985
|
/** @type {Object}
|
14905
14986
|
* @private
|
14906
14987
|
*/
|
@@ -14987,7 +15068,7 @@ ColumnDefinition.prototype.initialize = function(columnOption) {
|
|
14987
15068
|
}
|
14988
15069
|
}
|
14989
15070
|
|
14990
|
-
this._setField(field, columnOption
|
15071
|
+
this._setField(field, columnOption); // Perform some field manipulation
|
14991
15072
|
|
14992
15073
|
val = columnOption["name"] || columnOption["title"]; // title is migrated from Composite Grid
|
14993
15074
|
if(val != null) { // Name can be empty string
|
@@ -15002,7 +15083,7 @@ ColumnDefinition.prototype.initialize = function(columnOption) {
|
|
15002
15083
|
|
15003
15084
|
val = columnOption["notRealTimeField"];
|
15004
15085
|
if(val != null) {
|
15005
|
-
|
15086
|
+
js_FieldDefinition.setFieldProperty(field, "IsRealtimeField", !val);
|
15006
15087
|
}
|
15007
15088
|
|
15008
15089
|
val = columnOption["tooltip"];
|
@@ -15219,17 +15300,13 @@ ColumnDefinition.prototype.getAllFields = function() {
|
|
15219
15300
|
* @return {boolean}
|
15220
15301
|
*/
|
15221
15302
|
ColumnDefinition.prototype.isRealTimeField = function() {
|
15222
|
-
|
15223
|
-
if(this._field && this._realTimeField && !this._formula) {
|
15224
|
-
return ColumnDefinition.isRealTimeField(this._field);
|
15225
|
-
}
|
15226
|
-
return false;
|
15303
|
+
return js_FieldDefinition.isRealTimeField(this._field);
|
15227
15304
|
};
|
15228
15305
|
/** @public
|
15229
15306
|
* @return {boolean}
|
15230
15307
|
*/
|
15231
|
-
ColumnDefinition.prototype.
|
15232
|
-
return this.
|
15308
|
+
ColumnDefinition.prototype.isTimeSeries = function() {
|
15309
|
+
return js_FieldDefinition.isTimeSeries(this._field);
|
15233
15310
|
};
|
15234
15311
|
/** @public
|
15235
15312
|
* @return {boolean}
|
@@ -15242,27 +15319,21 @@ ColumnDefinition.prototype.isFormulaField = function() {
|
|
15242
15319
|
* @return {boolean}
|
15243
15320
|
*/
|
15244
15321
|
ColumnDefinition.isFormulaField = function(field) {
|
15245
|
-
return
|
15322
|
+
return js_FieldDefinition.isFormula(field);
|
15246
15323
|
};
|
15247
15324
|
/** @public
|
15248
15325
|
* @param {string} field
|
15249
15326
|
* @return {boolean}
|
15250
15327
|
*/
|
15251
15328
|
ColumnDefinition.isAdcField = function(field) {
|
15252
|
-
return
|
15329
|
+
return js_FieldDefinition.isAdc(field);
|
15253
15330
|
};
|
15254
15331
|
/** @public
|
15255
15332
|
* @param {string} field
|
15256
15333
|
* @return {boolean}
|
15257
15334
|
*/
|
15258
15335
|
ColumnDefinition.isRealTimeField = function(field) {
|
15259
|
-
|
15260
|
-
if(!ColumnDefinition.isFormulaField(field)) {
|
15261
|
-
return !ColumnDefinition.isAdcField(field);
|
15262
|
-
}
|
15263
|
-
}
|
15264
|
-
|
15265
|
-
return false;
|
15336
|
+
return js_FieldDefinition.isRealTimeField(field);
|
15266
15337
|
};
|
15267
15338
|
/** @public
|
15268
15339
|
* @function
|
@@ -15387,8 +15458,10 @@ ColumnDefinition.prototype.getConfigObject = function(colOptions) {
|
|
15387
15458
|
obj["name"] = this._name;
|
15388
15459
|
}
|
15389
15460
|
|
15390
|
-
if
|
15391
|
-
|
15461
|
+
// The 'IsRealtimeField' property will only be set if the user sets 'notRealTimeField' in the column options. It will be returned if the user has this option enabled, otherwise it will not be returned
|
15462
|
+
value = js_FieldDefinition.getFieldProperty(this._field, "IsRealtimeField") === false;
|
15463
|
+
if(value) {
|
15464
|
+
obj["notRealTimeField"] = value;
|
15392
15465
|
}
|
15393
15466
|
|
15394
15467
|
if(this._tooltip != null) {
|
@@ -15609,7 +15682,7 @@ ColumnDefinition.prototype.setSorter = function(func) {
|
|
15609
15682
|
*/
|
15610
15683
|
ColumnDefinition.prototype.isRowSorting = function() {
|
15611
15684
|
if(this._rowSorting == null) {
|
15612
|
-
return !this.
|
15685
|
+
return !js_FieldDefinition.getFieldProperty(this._field, "IsRealtimeField");
|
15613
15686
|
}
|
15614
15687
|
return this._rowSorting ? true : false;
|
15615
15688
|
};
|
@@ -15632,9 +15705,9 @@ ColumnDefinition.prototype.setName = function(str) {
|
|
15632
15705
|
|
15633
15706
|
/** @private
|
15634
15707
|
* @param {string|null=} field
|
15635
|
-
* @param {
|
15708
|
+
* @param {ColumnDefinition~Options=} columnOption
|
15636
15709
|
*/
|
15637
|
-
ColumnDefinition.prototype._setField = function(field,
|
15710
|
+
ColumnDefinition.prototype._setField = function(field, columnOption) {
|
15638
15711
|
var defaultField = (field == null); // undefined or null
|
15639
15712
|
if(!field) {
|
15640
15713
|
field = "";
|
@@ -15642,6 +15715,7 @@ ColumnDefinition.prototype._setField = function(field, formulaStr) {
|
|
15642
15715
|
// Trim white spaces -- equivalent to String.trim(), which is not support in IE8
|
15643
15716
|
field = field.replace(/^\s+|\s+$/gm, "");
|
15644
15717
|
|
15718
|
+
var formulaStr = columnOption["formula"];
|
15645
15719
|
if(this._fnEngine) {
|
15646
15720
|
var uppercasedF = field.toUpperCase(); // For comparison only
|
15647
15721
|
var predefinedF = formulaStr || js_PredefinedFormula.get(uppercasedF);
|
@@ -15669,13 +15743,13 @@ ColumnDefinition.prototype._setField = function(field, formulaStr) {
|
|
15669
15743
|
this._field = field;
|
15670
15744
|
this._name = field;
|
15671
15745
|
this._emptyField = false;
|
15672
|
-
this._realTimeField = field ? true : false;
|
15673
15746
|
}
|
15674
15747
|
|
15675
|
-
|
15676
|
-
|
15677
|
-
|
15678
|
-
|
15748
|
+
// We need to cache time series in field definition for improve performance of checking methond
|
15749
|
+
js_FieldDefinition.setFieldProperty(field, "timeSeries", js_FieldDefinition.isTimeSeries(field) ? true : false);
|
15750
|
+
|
15751
|
+
if(columnOption["parent"]) {
|
15752
|
+
js_FieldDefinition.setFieldProperty(field, "timeSeriesChild", true);
|
15679
15753
|
}
|
15680
15754
|
|
15681
15755
|
this._isDefaultName = true;
|
@@ -15984,7 +16058,7 @@ SnapshotFiller.prototype._onRequest = function () {
|
|
15984
16058
|
var fields = [];
|
15985
16059
|
var timeSeriesFields = [];
|
15986
16060
|
for (var field in this._fields) {
|
15987
|
-
if(!FieldDefinition.
|
16061
|
+
if(!FieldDefinition.isTimeSeries(field)) {
|
15988
16062
|
fields.push(field);
|
15989
16063
|
} else {
|
15990
16064
|
timeSeriesFields.push(field);
|
@@ -42255,8 +42329,7 @@ var Grid = function(placeholder, config) {
|
|
42255
42329
|
t._recalculateFormulas = t._recalculateFormulas.bind(t);
|
42256
42330
|
t._updateStreamingData = t._updateStreamingData.bind(t);
|
42257
42331
|
t.updateColumnTitle = t.updateColumnTitle.bind(t);
|
42258
|
-
t.
|
42259
|
-
|
42332
|
+
t._populateTimeSeriesChildren = t._populateTimeSeriesChildren.bind(t);
|
42260
42333
|
|
42261
42334
|
t._onPostSectionDataBinding = t._onPostSectionDataBinding.bind(t);
|
42262
42335
|
t._asyncClearDataUpdates = t._asyncClearDataUpdates.bind(t);
|
@@ -42280,7 +42353,7 @@ var Grid = function(placeholder, config) {
|
|
42280
42353
|
t._formulaConflator = new Conflator(300, t._onFormulaDataChanged);
|
42281
42354
|
t._chainConflator = new Conflator(100, t._addMemberOfChain);
|
42282
42355
|
t._columnTitleConflator = new Conflator(0, t.updateColumnTitle);
|
42283
|
-
t._timeSeriesChildConflator = new Conflator(0, t.
|
42356
|
+
t._timeSeriesChildConflator = new Conflator(0, t._populateTimeSeriesChildren);
|
42284
42357
|
|
42285
42358
|
|
42286
42359
|
t._defaultColumnOptions = {};
|
@@ -43238,7 +43311,7 @@ Grid.prototype._onFieldAdded = function(e) {
|
|
43238
43311
|
|
43239
43312
|
// JET
|
43240
43313
|
if (this._subs) {
|
43241
|
-
var realtimeFields = addedFields.filter(
|
43314
|
+
var realtimeFields = addedFields.filter(js_FieldDefinition.isRealTimeField);
|
43242
43315
|
this._subs["addFields"](realtimeFields);
|
43243
43316
|
}
|
43244
43317
|
|
@@ -43347,7 +43420,7 @@ Grid.prototype._updateTimeSeriesFields = function (e) {
|
|
43347
43420
|
/** @private
|
43348
43421
|
* @param {ColumnDefinition} colDef
|
43349
43422
|
*/
|
43350
|
-
Grid.prototype.
|
43423
|
+
Grid.prototype._populateTimeSeriesChildren = function (colDef) {
|
43351
43424
|
if(this._timeSeriesChildConflator.conflate(colDef) ) {
|
43352
43425
|
return;
|
43353
43426
|
}
|
@@ -43397,7 +43470,7 @@ Grid.prototype._cloneTimeSeriesColumn = function (parentColDef, childField, idx)
|
|
43397
43470
|
}
|
43398
43471
|
}
|
43399
43472
|
columnOption = Object(Util["b" /* cloneObject */])(obj);
|
43400
|
-
columnOption["field"] = childField.replace("TR.", "");
|
43473
|
+
columnOption["field"] = childField.replace("TR.", ""); // We need to remove the 'TR' prefix from the field to avoid confusion with time series fields.
|
43401
43474
|
columnOption["name"] = childField.split("_")[1].split("T")[0]; // Currently, response server format utc date ex "2022-11-23T00:00:00"
|
43402
43475
|
columnOption["parent"] = parentColDef;
|
43403
43476
|
this.insertColumn(columnOption, idx++);
|
@@ -43504,6 +43577,11 @@ Grid.prototype._onFieldLoadedError = function (err) {
|
|
43504
43577
|
* @param {string} referrer
|
43505
43578
|
*/
|
43506
43579
|
Grid.prototype._onFieldLoaded = function (field, referrer) {
|
43580
|
+
// For time series, we need to wait until the field is loadedm, then we can insert a child from the field data.
|
43581
|
+
if(js_FieldDefinition.isTimeSeries(field)) {
|
43582
|
+
var colDef = this.getColumnDefinitionById(referrer); // The 'referrer' is a column ID that was just added
|
43583
|
+
this._populateTimeSeriesChildren(colDef);
|
43584
|
+
}
|
43507
43585
|
this._connector.addFields(field, referrer);
|
43508
43586
|
};
|
43509
43587
|
|
@@ -43533,7 +43611,7 @@ Grid.prototype._shouldLoadFieldInfo = function (field, isRealTime) {
|
|
43533
43611
|
var fieldDef = js_FieldDefinition.get(field);
|
43534
43612
|
if (!fieldDef &&
|
43535
43613
|
field !== 'X_RIC_NAME' && // ignore X_RIC_NAME
|
43536
|
-
(isRealTime ||
|
43614
|
+
(isRealTime || js_FieldDefinition.isAdc(field)) && // realtime field or adc field (Without static field)
|
43537
43615
|
(this._RTK || window["JET"]) // have rtk instance or window jet sub
|
43538
43616
|
) {
|
43539
43617
|
return true;
|
@@ -43637,14 +43715,13 @@ Grid.prototype._onColumnAdded = function(e) {
|
|
43637
43715
|
}
|
43638
43716
|
}
|
43639
43717
|
this._grid.setDataColumnName(idx, ROW_DEF); // This make ColumnDefinition renderer work
|
43640
|
-
|
43641
43718
|
var fields = colDef.getAllFields();
|
43642
43719
|
var referrer = colDef.getId();
|
43643
43720
|
var len = fields.length;
|
43644
43721
|
var field, dataType, prom, isRealTimeField, onLoaded;
|
43645
43722
|
for(i = 0; i < len; i++) {
|
43646
43723
|
field = fields[i];
|
43647
|
-
isRealTimeField =
|
43724
|
+
isRealTimeField = js_FieldDefinition.isRealTimeField(field);
|
43648
43725
|
if(this._shouldLoadFieldInfo(field, isRealTimeField)) {
|
43649
43726
|
if(field === colField) {
|
43650
43727
|
dataType = colDef.getDataType(); // Data-type from user's column options
|
@@ -43660,14 +43737,14 @@ Grid.prototype._onColumnAdded = function(e) {
|
|
43660
43737
|
onLoaded = this._onFieldLoaded.bind(this, field, referrer);
|
43661
43738
|
prom = prom.then(onLoaded).catch(onLoaded);
|
43662
43739
|
} else {
|
43663
|
-
if(colDef.
|
43664
|
-
this.
|
43740
|
+
if(colDef.isTimeSeries()) {
|
43741
|
+
this._populateTimeSeriesChildren(colDef);
|
43665
43742
|
}
|
43666
43743
|
this._connector.addFields(field, referrer);
|
43667
43744
|
}
|
43668
43745
|
} else {
|
43669
|
-
if(colDef.
|
43670
|
-
this.
|
43746
|
+
if(colDef.isTimeSeries()) {
|
43747
|
+
this._populateTimeSeriesChildren(colDef);
|
43671
43748
|
}
|
43672
43749
|
this._connector.addFields(field, referrer);
|
43673
43750
|
}
|
@@ -43949,7 +44026,7 @@ Grid.prototype.addDataFields = function(fieldRef, referrer) {
|
|
43949
44026
|
var i, field, dataType, prom, isRealTimeField, onLoaded;
|
43950
44027
|
for(i = 0; i < len; i++) {
|
43951
44028
|
field = fields[i];
|
43952
|
-
isRealTimeField =
|
44029
|
+
isRealTimeField = js_FieldDefinition.isRealTimeField(field);
|
43953
44030
|
if(this._shouldLoadFieldInfo(field, isRealTimeField)) {
|
43954
44031
|
dataType = ColumnDefinition.getDataType(field);
|
43955
44032
|
prom = js_FieldDefinition.loadFieldInfo(field)
|