@refinitiv-ui/efx-grid 6.0.14 → 6.0.16

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.
Files changed (35) hide show
  1. package/lib/column-format-dialog/index.d.ts +2 -1
  2. package/lib/column-format-dialog/index.js +2 -1
  3. package/lib/column-selection-dialog/index.d.ts +2 -1
  4. package/lib/column-selection-dialog/index.js +2 -1
  5. package/lib/core/dist/core.js +19 -9
  6. package/lib/core/dist/core.min.js +1 -1
  7. package/lib/core/es6/data/DataTable.js +1 -1
  8. package/lib/core/es6/data/Segment.d.ts +3 -3
  9. package/lib/core/es6/data/Segment.js +14 -6
  10. package/lib/core/es6/data/SegmentCollection.d.ts +1 -1
  11. package/lib/core/es6/data/SegmentCollection.js +3 -1
  12. package/lib/core/es6/grid/Core.js +1 -1
  13. package/lib/filter-dialog/index.d.ts +2 -1
  14. package/lib/filter-dialog/index.js +2 -1
  15. package/lib/grid/index.d.ts +2 -1
  16. package/lib/grid/index.js +3 -2
  17. package/lib/rt-grid/dist/rt-grid.js +740 -84
  18. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  19. package/lib/rt-grid/es6/ColumnDefinition.d.ts +10 -0
  20. package/lib/rt-grid/es6/ColumnDefinition.js +110 -1
  21. package/lib/rt-grid/es6/FieldDefinition.d.ts +6 -0
  22. package/lib/rt-grid/es6/FieldDefinition.js +43 -0
  23. package/lib/rt-grid/es6/Grid.d.ts +2 -0
  24. package/lib/rt-grid/es6/Grid.js +206 -8
  25. package/lib/rt-grid/es6/RowDefinition.d.ts +4 -0
  26. package/lib/rt-grid/es6/RowDefinition.js +57 -0
  27. package/lib/rt-grid/es6/SnapshotFiller.d.ts +1 -0
  28. package/lib/rt-grid/es6/SnapshotFiller.js +125 -17
  29. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +2 -2
  30. package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +30 -29
  31. package/lib/tr-grid-row-filtering/es6/RowFiltering.js +176 -98
  32. package/lib/tr-grid-rowcoloring/es6/RowColoring.d.ts +17 -15
  33. package/lib/tr-grid-rowcoloring/es6/RowColoring.js +89 -159
  34. package/lib/versions.json +4 -4
  35. package/package.json +15 -2
@@ -1,6 +1,7 @@
1
1
  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
+ import {FieldDefinition} from "./FieldDefinition.js";
4
5
 
5
6
  declare class SnapshotFiller extends EventDispatcher {
6
7
 
@@ -2,6 +2,7 @@
2
2
  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
+ import {FieldDefinition} from "./FieldDefinition.js";
5
6
 
6
7
  /** @private
7
8
  * @param {Object} obj
@@ -189,10 +190,19 @@ SnapshotFiller.prototype._onRequest = function () {
189
190
  var instruments = Object.keys(this._rics);
190
191
 
191
192
  var i;
192
- var fields = Object.keys(this._fields);
193
+ var fields = [];
194
+ var timeSeriesFields = [];
195
+ for (var field in this._fields) {
196
+ if(!FieldDefinition.isTimeSeriesField(field)) {
197
+ fields.push(field);
198
+ } else {
199
+ timeSeriesFields.push(field);
200
+ }
201
+ }
193
202
  var fieldLen = fields.length;
203
+ var timeSeriesFieldLen = timeSeriesFields.length;
194
204
 
195
- if (!fieldLen || !instruments.length) { // No ADC field or real-time RIC
205
+ if ( (!fieldLen && !timeSeriesFieldLen ) || !instruments.length) { // No ADC field or real-time RIC
196
206
  return;
197
207
  }
198
208
 
@@ -202,21 +212,47 @@ SnapshotFiller.prototype._onRequest = function () {
202
212
 
203
213
  var onSuccess, payload;
204
214
  if (this._rtk) {
205
- var strFields = fields.join(',');
206
- payload = {
207
- "method": "select",
208
- "formula": strFields,
209
- "identifiers": instruments,
210
- "productId": this._adcOptions.productId,
211
- "output": "Col,In,va,T,NoEmptyTickers" // For customize output server, for more information please visit "https://confluence.refinitiv.com/display/ADC/Data+Cloud+Output+Format"
212
- };
213
- onSuccess = this._onRTKSuccess.bind(this, fields);
214
- this._rtk.Data.Adc
215
- .request(payload)
216
- .then(onSuccess)
217
- .catch(function (err) {
218
- console.log(err);
219
- });
215
+ var strFields;
216
+ // Request time serie fields
217
+ if(timeSeriesFields.length > 0) {
218
+ // request time series field
219
+ var strtTimeSeriesFields = timeSeriesFields.join(',');
220
+ payload = {
221
+ "method": "select",
222
+ "formula": strtTimeSeriesFields,
223
+ "identifiers": instruments,
224
+ "productId": this._adcOptions.productId,
225
+ "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"
226
+ };
227
+ onSuccess = this._onRTKTimeSeriesSuccess.bind(this, timeSeriesFields);
228
+ this._rtk.Data.Adc
229
+ .request(payload)
230
+ .then(onSuccess)
231
+ .catch(function (err) {
232
+ console.log(err);
233
+ });
234
+ }
235
+
236
+ // Request normal adc field
237
+ if(fields.length > 0) {
238
+ strFields = fields.join(',');
239
+ payload = {
240
+ "method": "select",
241
+ "formula": strFields,
242
+ "identifiers": instruments,
243
+ "productId": this._adcOptions.productId,
244
+ "output": "Col,In,va,T,NoEmptyTickers" // For customize output server, for more information please visit "https://confluence.refinitiv.com/display/ADC/Data+Cloud+Output+Format"
245
+ };
246
+ onSuccess = this._onRTKSuccess.bind(this, fields);
247
+ this._rtk.Data.Adc
248
+ .request(payload)
249
+ .then(onSuccess)
250
+ .catch(function (err) {
251
+ console.log(err);
252
+ });
253
+ }
254
+
255
+
220
256
  } else {
221
257
  var reqFields = [];
222
258
  for(i = 0; i < fieldLen; i++) {
@@ -377,5 +413,77 @@ SnapshotFiller.prototype._onRTKSuccess = function (fields, serverResult) {
377
413
  });
378
414
  };
379
415
 
416
+
417
+ /** @private
418
+ * @function
419
+ * @param {Array.<string>} fields
420
+ * @param {string} serverResult
421
+ */
422
+ SnapshotFiller.prototype._onRTKTimeSeriesSuccess = function (fields, serverResult) {
423
+
424
+ // TODO: noti the user for change structure
425
+ this._dispatch("adcDataReceived", serverResult);
426
+ var data2D = serverResult["rows"];
427
+ var svHeaders = serverResult["rows"] && serverResult["rows"][0];
428
+ if (!Array.isArray(data2D) || !Array.isArray(svHeaders)) {
429
+ return; // TODO: Return Promise.reject(errMsg);
430
+ }
431
+
432
+ var headerLen = svHeaders.length;
433
+
434
+ var headerDates = [];
435
+ var i, j;
436
+
437
+ for (i = 2; i < headerLen; i++) { // Start with 2 (Skip instrunment and date header)
438
+ headerDates.push(svHeaders[i].v);
439
+ }
440
+
441
+ var ric, j, field;
442
+ var len = data2D.length;
443
+ var ricMap = {};
444
+ var childrenFieldToParent = {};
445
+
446
+ var fileNameToTSField = {};
447
+ var count = 0;
448
+ for (let i = 1; i < len; i++) {
449
+ var dataRow = data2D[i];
450
+ var fieldName = dataRow[1];
451
+ if(!fileNameToTSField[fieldName]) {
452
+ fileNameToTSField[fieldName] = fields[count++];
453
+ }
454
+ }
455
+
456
+ // TODO: Freeze the data view before setting multiple data
457
+ for (i = 1; i < len; i++) { // to skip column header index, use i = 1
458
+ var dataRow = data2D[i];
459
+ ric = dataRow[0];
460
+ var fieldName = dataRow[1]; // ex. PRICECLOSE
461
+ if(!ricMap[ric]) {
462
+ ricMap[ric] = {};
463
+ }
464
+ var snapData = ricMap[ric];
465
+ for (var k = 0; k < headerDates.length; k++) {
466
+ field = fileNameToTSField[fieldName].replace("TR.", "") + "_" + headerDates[k]; // TODO: make support time series field definition cache
467
+ childrenFieldToParent[field] = fileNameToTSField[fieldName];
468
+ snapData[field] = dataRow[2 + k]; // Start with field value
469
+ }
470
+ }
471
+
472
+ // return result only ric that has update data
473
+ var dataMapping = {};
474
+ for (ric in ricMap) {
475
+ var obj = ricMap[ric];
476
+ if (!isEmptyObject(obj)) {
477
+ dataMapping[ric] = obj;
478
+ }
479
+ }
480
+
481
+ this._dispatch("dataChanged", {
482
+ data: dataMapping,
483
+ timeSeries: true,
484
+ childrenFieldToParent: childrenFieldToParent
485
+ });
486
+ };
487
+
380
488
  export { SnapshotFiller };
381
489
  export default SnapshotFiller;
@@ -500,7 +500,7 @@ ColumnGroupingPlugin.prototype._applyTimeSeries = function (e) {
500
500
  var firstChildColumn;
501
501
  for (i = 0; i < addingEvents.length; i++) {
502
502
  addingEvent = addingEvents[i];
503
- if (addingEvent.context.asChildrenTimeSeries) {
503
+ if (addingEvent.context.parent) {
504
504
  if (!firstChildColumn) {
505
505
  firstChildColumn = addingEvent.context;
506
506
  }
@@ -509,7 +509,7 @@ ColumnGroupingPlugin.prototype._applyTimeSeries = function (e) {
509
509
  children.push(childId);
510
510
  }
511
511
  }
512
- if (firstChildColumn && firstChildColumn.asChildrenTimeSeries) {
512
+ if (firstChildColumn && firstChildColumn.parent) {
513
513
  var tsParentDef = firstChildColumn.parent;
514
514
  if (tsParentDef) {
515
515
  var parentName = tsParentDef.getName();
@@ -12,33 +12,34 @@ declare namespace RowFilteringPlugin {
12
12
 
13
13
  type FilterExpression = {
14
14
  field: string,
15
- expression: RowFilteringPlugin.Expression,
15
+ expression: RowFilteringPlugin.Expression|null,
16
16
  context: any
17
17
  };
18
18
 
19
19
  type ColumnOptions = {
20
- filter?: RowFilteringPlugin.Expression,
20
+ filter?: RowFilteringPlugin.Expression|null,
21
21
  filterState?: any,
22
- filterIcon?: boolean
22
+ filterIcon?: boolean|null
23
23
  };
24
24
 
25
25
  type FilterDialogOptions = {
26
- sortUI?: boolean,
27
- filterUI?: boolean,
28
- fieldDataType?: string,
29
- lang?: string,
30
- rawDataAccessor?: ((...params: any[]) => any),
31
- formattedDataAccessor?: ((...params: any[]) => any),
32
- sortLogic?: ((...params: any[]) => any)
26
+ sortUI?: boolean|null,
27
+ filterUI?: boolean|null,
28
+ fieldDataType?: string|null,
29
+ lang?: string|null,
30
+ rawDataAccessor?: ((...params: any[]) => any)|null,
31
+ formattedDataAccessor?: ((...params: any[]) => any)|null,
32
+ sortLogic?: ((...params: any[]) => any)|null
33
33
  };
34
34
 
35
35
  type Options = {
36
- disabledUI?: boolean,
37
- iconActivation?: string,
38
- click?: ((...params: any[]) => any),
39
- clicked?: ((...params: any[]) => any),
40
- iconCreated?: ((...params: any[]) => any),
41
- filterChanged?: ((...params: any[]) => any)
36
+ disabledUI?: boolean|null,
37
+ iconActivation?: string|null,
38
+ dialogOptions?: RowFilteringPlugin.FilterDialogOptions|null,
39
+ click?: ((...params: any[]) => any)|null,
40
+ clicked?: ((...params: any[]) => any)|null,
41
+ iconCreated?: ((...params: any[]) => any)|null,
42
+ filterChanged?: ((...params: any[]) => any)|null
42
43
  };
43
44
 
44
45
  }
@@ -57,17 +58,17 @@ declare class RowFilteringPlugin extends GridPlugin {
57
58
 
58
59
  public getConfigObject(gridOptions?: any): any;
59
60
 
60
- public disable(opt_disabled?: boolean, opt_id?: string): void;
61
+ public disable(opt_disabled?: boolean|null, opt_id?: string|null): void;
61
62
 
62
- public addFilter(exp: RowFilteringPlugin.Expression, funcName?: string, ctx?: any): string;
63
+ public addFilter(exp: RowFilteringPlugin.Expression|null, funcName?: string|null, ctx?: any): string;
63
64
 
64
- public addGridFilter(exp: RowFilteringPlugin.Expression, ctx?: any): string;
65
+ public addGridFilter(exp: RowFilteringPlugin.Expression|null, ctx?: any): string;
65
66
 
66
- public addColumnFilter(colIndex: number, exp: RowFilteringPlugin.Expression, ctx?: (any|string)): boolean;
67
+ public addColumnFilter(colIndex: number, exp: RowFilteringPlugin.Expression|null, ctx?: (any|string)|null): boolean;
67
68
 
68
- public setColumnFilter(colIndex: number, exp: RowFilteringPlugin.Expression, ctx?: (any|string)): boolean;
69
+ public setColumnFilter(colIndex: number, exp: RowFilteringPlugin.Expression|null, ctx?: (any|string)|null): boolean;
69
70
 
70
- public removeFilter(funcRef: ((...params: any[]) => any)|string): boolean;
71
+ public removeFilter(funcRef: ((...params: any[]) => any)|string|null): boolean;
71
72
 
72
73
  public removeColumnFilters(colIndex: number): boolean;
73
74
 
@@ -77,11 +78,11 @@ declare class RowFilteringPlugin extends GridPlugin {
77
78
 
78
79
  public removeAllFilters(): void;
79
80
 
80
- public setOverridingFilter(func: ((...params: any[]) => any)): void;
81
+ public setOverridingFilter(func: ((...params: any[]) => any)|null): void;
81
82
 
82
- public setPreTransform(func: ((...params: any[]) => any)): void;
83
+ public setPreTransform(func: ((...params: any[]) => any)|null): void;
83
84
 
84
- public setRowTransform(func: ((...params: any[]) => any)): void;
85
+ public setRowTransform(func: ((...params: any[]) => any)|null): void;
85
86
 
86
87
  public getFilters(): (((...params: any[]) => any))[];
87
88
 
@@ -89,7 +90,7 @@ declare class RowFilteringPlugin extends GridPlugin {
89
90
 
90
91
  public getFilterExpressions(): (RowFilteringPlugin.FilterExpression)[]|null;
91
92
 
92
- public setFilterExpressions(filterExps: (RowFilteringPlugin.FilterExpression)[]): void;
93
+ public setFilterExpressions(filterExps: (RowFilteringPlugin.FilterExpression)[]|null): void;
93
94
 
94
95
  public hasColumnFilter(): boolean;
95
96
 
@@ -109,13 +110,13 @@ declare class RowFilteringPlugin extends GridPlugin {
109
110
 
110
111
  public getColumnFilterStates(): any[];
111
112
 
112
- public getUniqueValues(field: string, formatter?: ((...params: any[]) => any), fmtField?: string, rawDataAccessor?: ((...params: any[]) => any), formattedDataAccessor?: ((...params: any[]) => any)): any;
113
+ public getUniqueValues(field: string, formatter?: ((...params: any[]) => any)|null, fmtField?: string|null, rawDataAccessor?: ((...params: any[]) => any)|null, formattedDataAccessor?: ((...params: any[]) => any)|null): any;
113
114
 
114
- public openDialog(colIndex: number, options?: RowFilteringPlugin.FilterDialogOptions): void;
115
+ public openDialog(colIndex: number, runtimeDialogOptions?: RowFilteringPlugin.FilterDialogOptions|null): void;
115
116
 
116
117
  }
117
118
 
118
- declare function field(colIndex: number, exp: RowFilteringPlugin.Expression, ctx?: (any|string)): boolean;
119
+ declare function field(colIndex: number, exp: RowFilteringPlugin.Expression|null, ctx?: (any|string)|null): boolean;
119
120
 
120
121
  export default RowFilteringPlugin;
121
122
  export { RowFilteringPlugin, RowFilteringPlugin as RowFiltering, RowFilteringPlugin as RowFilteringExtension };