@refinitiv-ui/efx-grid 6.0.128 → 6.0.129

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
  }