@refinitiv-ui/efx-grid 6.0.128 → 6.0.129

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.
@@ -31,7 +31,7 @@ DataConnector.prototype._fieldChangedConflator = null;
31
31
  * @private
32
32
  */
33
33
  DataConnector.prototype._ricChangedConflator = null;
34
- /** @type {Object.<string, RowDefinition>}
34
+ /** @type {Object.<string, Array.<RowDefinition>>}
35
35
  * @private
36
36
  */
37
37
  DataConnector.prototype._rowDefMap = null;
@@ -524,6 +524,10 @@ Grid.prototype._formulaConflator = null;
524
524
  */
525
525
  Grid.prototype._chainConflator = null;
526
526
  /** @private
527
+ * @type {Object}
528
+ */
529
+ Grid.prototype._constituentMap = null;
530
+ /** @private
527
531
  * @type {number}
528
532
  */
529
533
  Grid.prototype._clientWidth = NaN;
@@ -2694,6 +2698,7 @@ Grid.prototype.removeAllRows = function() {
2694
2698
  this._dcConflator.reset();
2695
2699
  this._formulaConflator.reset();
2696
2700
  this._chainConflator.reset();
2701
+ this._constituentMap = null;
2697
2702
  this._connector.removeAllRics();
2698
2703
 
2699
2704
  // TODO: This logic should also be in the core grid
@@ -3593,15 +3598,15 @@ Grid.prototype._onQuote2PostUpdate = function (e) {
3593
3598
  * @param {Object} e
3594
3599
  */
3595
3600
  Grid.prototype._onQ2DataChanged = function (e) {
3596
- let subId = e["subId"];
3597
- let rowDef = this._getRowDefinitionById(subId);
3601
+ let rowDef = this._getRowDefinitionById(e["subId"]);
3598
3602
  if(!rowDef) {
3599
3603
  return; // WARNING: This should not be happened because row has been removed but the data is still received
3600
3604
  }
3601
3605
 
3606
+ let ric = e["ric"];
3602
3607
  let values = e["values"];
3603
3608
  if (values) {
3604
- let ric = e["ric"];
3609
+ let duplicateRics = null;
3605
3610
  if(rowDef.verifyConstituent(ric)) {
3606
3611
  let parentDef = rowDef;
3607
3612
  let childDef = parentDef.getConstituent(ric);
@@ -3612,15 +3617,28 @@ Grid.prototype._onQ2DataChanged = function (e) {
3612
3617
  if(!childDef) {
3613
3618
  return; // Parent chain is not alive
3614
3619
  }
3620
+ duplicateRics = this._connector.getRowDefByRic(ric);
3615
3621
  this._connector.addRic(childDef); // TODO: JET/RTK should not re-subscribe this
3622
+ if(!this._constituentMap) {
3623
+ this._constituentMap = {};
3624
+ }
3625
+ this._constituentMap[childDef.getRowId()] = childDef;
3616
3626
  this._registerConstituents(childDef);
3617
3627
  }
3618
3628
  }
3619
3629
 
3630
+ if(duplicateRics && duplicateRics.length) {
3631
+ let duplicateRic = duplicateRics[0];
3632
+ duplicateRic.cloneRowData(values, values);
3633
+ }
3634
+
3620
3635
  rowDef.setRowData(values); // Trigger data changes
3621
- } else if(rowDef.isConstituent()) { // Subscription and its parent has been removed by Real-time provider
3622
- rowDef.setParent(null); // Manually remove child reference from its parent
3623
- this._removeRow(rowDef);
3636
+ } else { // The constituent is requested to be removed by the real-time data provider
3637
+ let childDef = rowDef.getConstituent(ric); // WARNING: normal ric and its delayed version must match with the one first given
3638
+ if(childDef) {
3639
+ childDef.setParent(null); // Manually remove child reference from its parent
3640
+ this._removeRow(childDef);
3641
+ }
3624
3642
  }
3625
3643
  };
3626
3644
 
@@ -3631,6 +3649,9 @@ Grid.prototype._registerConstituents = function(rowDef) {
3631
3649
  if(this._chainConflator.conflate(rowDef)) {
3632
3650
  return;
3633
3651
  }
3652
+
3653
+ this._constituentMap = null;
3654
+
3634
3655
  let view = this._dv;
3635
3656
  let dt = view ? view.getDataSource() : null;
3636
3657
  if(!dt) {
@@ -3940,14 +3961,21 @@ Grid.prototype._onDataComposed = function(e) {
3940
3961
  return; // Cannot do data composition if there is no change in data
3941
3962
  }
3942
3963
 
3943
- let rowData = e["rowData"];
3944
- if(!rowData) {
3964
+ if(!e["rowData"]) {
3945
3965
  return; // Row could already be removed or global change event is sent
3946
3966
  }
3947
3967
 
3948
- let rowDef = this._getRowDefinitionById(e["rid"]);
3968
+ let rowId = e["rid"];
3969
+ let rowDef = this._getRowDefinitionById(rowId);
3949
3970
  if(!rowDef) {
3950
- return; // Somehow the given row id is invalid
3971
+ rowDef = this._constituentMap ? this._constituentMap[rowId] : null; // Row def could be in pending for adding to view
3972
+ if(!rowDef) {
3973
+ return; // Somehow the given row id is invalid
3974
+ }
3975
+ if(rowDef.isDisposed()) {
3976
+ this._constituentMap[rowId] = null;
3977
+ return;
3978
+ }
3951
3979
  }
3952
3980
 
3953
3981
  if(this._autoDateConversion) { // auto data conversion
@@ -4521,7 +4549,8 @@ Grid.prototype._onTabNavigation = function(e) {
4521
4549
  */
4522
4550
  Grid.prototype._getEventHandlers = function() {
4523
4551
  return {
4524
- "tabNavigation": this._onTabNavigation
4552
+ "tabNavigation": this._onTabNavigation,
4553
+ "q2DataChanged": this._onQ2DataChanged
4525
4554
  };
4526
4555
  };
4527
4556
 
@@ -2,7 +2,7 @@ import { Ext } from "../../tr-grid-util/es6/Ext.js";
2
2
  import { GridPlugin } from "../../tr-grid-util/es6/GridPlugin.js";
3
3
  import { MouseDownTrait } from "../../tr-grid-util/es6/MouseDownTrait.js";
4
4
  import { EventDispatcher } from "../../tr-grid-util/es6/EventDispatcher.js";
5
- import { isIE, cloneObject, prepareTSVContent } from "../../tr-grid-util/es6/Util.js";
5
+ import { cloneObject, prepareTSVContent } from "../../tr-grid-util/es6/Util.js";
6
6
  import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
7
7
  import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
8
8
 
@@ -16,7 +16,8 @@ declare namespace CellSelectionPlugin {
16
16
  selectionChanged?: ((...params: any[]) => any)|null,
17
17
  copy?: ((...params: any[]) => any)|null,
18
18
  beforeMouseDown?: ((...params: any[]) => any)|null,
19
- selectableSections?: any[]|null
19
+ selectableSections?: any[]|null,
20
+ copyDisabled?: boolean|null
20
21
  };
21
22
 
22
23
  }