@refinitiv-ui/efx-grid 6.0.122 → 6.0.124
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/core/dist/core.js +33 -25
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/grid/Core.js +33 -25
- package/lib/filter-dialog/lib/filter-dialog.js +8 -1
- package/lib/grid/index.js +1 -1
- package/lib/row-segmenting/es6/RowSegmenting.d.ts +4 -1
- package/lib/row-segmenting/es6/RowSegmenting.js +95 -5
- package/lib/rt-grid/dist/rt-grid.js +37 -21
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/Grid.js +34 -11
- package/lib/rt-grid/es6/RowDefinition.js +3 -10
- package/lib/tr-grid-checkbox/es6/Checkbox.js +3 -1
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +1 -1
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +10 -8
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +19 -2
- package/lib/tr-grid-util/es6/CellPainter.d.ts +1 -1
- package/lib/tr-grid-util/es6/CellPainter.js +35 -41
- package/lib/tr-grid-util/es6/Popup.d.ts +8 -3
- package/lib/tr-grid-util/es6/Popup.js +135 -35
- package/lib/types/es6/ConditionalColoring.d.ts +1 -1
- package/lib/versions.json +6 -6
- package/package.json +1 -1
@@ -621,7 +621,7 @@ Core.prototype._hasPendingRowChange = false;
|
|
621
621
|
* @return {string}
|
622
622
|
*/
|
623
623
|
Core.getVersion = function () {
|
624
|
-
return "5.1.
|
624
|
+
return "5.1.124";
|
625
625
|
};
|
626
626
|
/** {@link ElementWrapper#dispose}
|
627
627
|
* @override
|
@@ -3687,37 +3687,37 @@ Core.prototype.getYScrollVal = function (sectionRef, rowIndex, topOfView) {
|
|
3687
3687
|
section = this.getSection(sectionRef);
|
3688
3688
|
}
|
3689
3689
|
|
3690
|
+
let rowIndexOffset = (section) ? section.getRowOffset() : this._sectionStarts[this._startVScrollbarIndex];
|
3691
|
+
let heightOffset = this._layoutY.getLaneStart(this._startVScrollbarIndex);
|
3692
|
+
|
3690
3693
|
let rowCount = this._layoutY.getLaneCount();
|
3691
3694
|
if (rowIndex <= 0) { rowIndex = 0; }
|
3692
3695
|
else if (rowIndex >= rowCount) { rowIndex = rowCount - 1; }
|
3693
3696
|
|
3697
|
+
if (topOfView) {
|
3698
|
+
return this._layoutY.getLaneStart(rowIndex + rowIndexOffset) - heightOffset;
|
3699
|
+
}
|
3700
|
+
|
3701
|
+
let bufferSize = 2; // for more appealing space
|
3694
3702
|
let viewInfo = this.getVerticalViewInfo();
|
3695
3703
|
let firstFullRow = viewInfo.firstFullRow; // TODO: Make it work in zooming mode
|
3696
|
-
|
3697
|
-
|
3698
|
-
|
3699
|
-
|
3700
|
-
} else {
|
3701
|
-
if(rowIndex < firstFullRow) { // Scroll up
|
3702
|
-
scrollIndex = rowIndex - 2; // Have some spaces at the top for more appealing visual
|
3703
|
-
if(scrollIndex < 0) {
|
3704
|
-
scrollIndex = 0;
|
3705
|
-
}
|
3706
|
-
} else { // Scroll down
|
3707
|
-
let lastFullRow = viewInfo.lastFullRow;
|
3708
|
-
if (rowIndex > lastFullRow) {
|
3709
|
-
let viewIndexSize = lastFullRow - firstFullRow;
|
3710
|
-
scrollIndex = rowIndex - viewIndexSize + 2;
|
3711
|
-
if(scrollIndex < 0) {
|
3712
|
-
scrollIndex = 0;
|
3713
|
-
}
|
3714
|
-
}
|
3704
|
+
if(rowIndex < firstFullRow) { // Scroll up, as the target row is outside of view
|
3705
|
+
let targetIndex = rowIndex - bufferSize; // Have some spaces at the top for more appealing visual
|
3706
|
+
if(targetIndex < 0) {
|
3707
|
+
targetIndex = 0;
|
3715
3708
|
}
|
3709
|
+
|
3710
|
+
return this._layoutY.getLaneStart(targetIndex + rowIndexOffset) - heightOffset;
|
3716
3711
|
}
|
3717
3712
|
|
3718
|
-
let
|
3719
|
-
|
3720
|
-
|
3713
|
+
let lastFullRow = viewInfo.lastFullRow;
|
3714
|
+
if (rowIndex > lastFullRow) { // Scroll down, as the target row is outside of view
|
3715
|
+
let targetScroll = this._layoutY.getLaneStart(rowIndex + rowIndexOffset + bufferSize + 1);
|
3716
|
+
|
3717
|
+
return targetScroll - viewInfo.viewHeight - heightOffset;
|
3718
|
+
}
|
3719
|
+
|
3720
|
+
return null;
|
3721
3721
|
};
|
3722
3722
|
/** Scroll up or down to make specified row visible in the view
|
3723
3723
|
* @public
|
@@ -3742,7 +3742,12 @@ Core.prototype.getVerticalViewInfo = function() {
|
|
3742
3742
|
let viewBottom = viewTop + viewHeight;
|
3743
3743
|
|
3744
3744
|
let topRowIndex = this._layoutY.hitTest(viewTop) - rowIndexOffset;
|
3745
|
-
let bottomRowIndex = this._layoutY.hitTest(viewBottom - 0.1)
|
3745
|
+
let bottomRowIndex = this._layoutY.hitTest(viewBottom - 0.1);
|
3746
|
+
if(bottomRowIndex < 0) { // view is larger than existing row count
|
3747
|
+
bottomRowIndex = this._layoutY.getLaneCount() - 1;
|
3748
|
+
}
|
3749
|
+
bottomRowIndex -= rowIndexOffset;
|
3750
|
+
|
3746
3751
|
let laneTop = this._layoutY.getLaneStart(topRowIndex + rowIndexOffset);
|
3747
3752
|
let laneBottom = this._layoutY.getLaneEnd(bottomRowIndex + rowIndexOffset);
|
3748
3753
|
|
@@ -3750,7 +3755,10 @@ Core.prototype.getVerticalViewInfo = function() {
|
|
3750
3755
|
topRowIndex: topRowIndex,
|
3751
3756
|
firstFullRow: (laneTop < viewTop) ? topRowIndex + 1 : topRowIndex,
|
3752
3757
|
lastFullRow: (laneBottom > viewBottom) ? bottomRowIndex - 1 : bottomRowIndex,
|
3753
|
-
bottomRowIndex: bottomRowIndex
|
3758
|
+
bottomRowIndex: bottomRowIndex,
|
3759
|
+
viewHeight: viewHeight,
|
3760
|
+
viewTop: viewTop,
|
3761
|
+
viewBottom: viewBottom
|
3754
3762
|
};
|
3755
3763
|
};
|
3756
3764
|
/** @public
|
@@ -366,6 +366,7 @@ class FilterDialog extends BasicElement {
|
|
366
366
|
|
367
367
|
const root = this.shadowRoot;
|
368
368
|
|
369
|
+
this.setAttribute("tabindex", "0");
|
369
370
|
this._separator = root.getElementById("separator");
|
370
371
|
this._rootContainer = root.getElementById("root_panel");
|
371
372
|
this._dialogContent = root.getElementById("filterDialogContent");
|
@@ -412,7 +413,11 @@ class FilterDialog extends BasicElement {
|
|
412
413
|
this._filterBtns.addEventListener("click", this._onClickFilter.bind(this));
|
413
414
|
|
414
415
|
this.addEventListener("keydown", function(e){
|
415
|
-
if(e.
|
416
|
+
if(e.ctrlKey || e.altKey || e.metaKey){
|
417
|
+
return;
|
418
|
+
}
|
419
|
+
let code = e.code;
|
420
|
+
if(code === "Escape" || code === "Enter"){
|
416
421
|
this._onCancelBtnClick();
|
417
422
|
}
|
418
423
|
});
|
@@ -499,6 +504,7 @@ class FilterDialog extends BasicElement {
|
|
499
504
|
if(popupElem) {// After all changes, ensure that visibility is reset back
|
500
505
|
popupElem.style.visibility = "";
|
501
506
|
}
|
507
|
+
this.focus();
|
502
508
|
}
|
503
509
|
|
504
510
|
/** Initialize dialog
|
@@ -543,6 +549,7 @@ class FilterDialog extends BasicElement {
|
|
543
549
|
clearTimeout(this._winResizedTimer);
|
544
550
|
this._winResizedTimer = 0;
|
545
551
|
}
|
552
|
+
this.dispatchEvent(new CustomEvent("cancel"));
|
546
553
|
}
|
547
554
|
|
548
555
|
/**
|
package/lib/grid/index.js
CHANGED
@@ -21,7 +21,8 @@ declare namespace RowSegmentingPlugin {
|
|
21
21
|
nonSegmentSeparatorBinding?: ((...params: any[]) => any)|null,
|
22
22
|
sortingLogic?: ((...params: any[]) => any)|null,
|
23
23
|
rowSpanningField?: string|null,
|
24
|
-
segmentIdField?: string|null
|
24
|
+
segmentIdField?: string|null,
|
25
|
+
displayColumn?: (string|number)|null
|
25
26
|
};
|
26
27
|
|
27
28
|
}
|
@@ -48,6 +49,8 @@ declare class RowSegmentingPlugin extends GridPlugin {
|
|
48
49
|
|
49
50
|
public getSegmentParentRowId(rowRef: string|number|null): string;
|
50
51
|
|
52
|
+
public _resolveDisplayColumn(): number;
|
53
|
+
|
51
54
|
public setSegmentSeparator(rowRef: string|number|null, enabled?: boolean|null): boolean;
|
52
55
|
|
53
56
|
public setSegmentClassification(rowRef: string|number|null, fields: string|(string)[]|null): boolean;
|
@@ -19,6 +19,7 @@ import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
|
|
19
19
|
* @property {Function=} sortingLogic=null Logic to be used by sortSegments method
|
20
20
|
* @property {string=} rowSpanningField="ROW_SPANNING" selected field for apply row spanning in row separator
|
21
21
|
* @property {string=} segmentIdField="SEGMENT_ID" selected field for set segment separator row
|
22
|
+
* @property {(string|number)=} displayColumn=null Render tags in the given column. It can be either the column index, column ID, or field.
|
22
23
|
*/
|
23
24
|
|
24
25
|
/** @callback RowSegmentingPlugin~SortingLogic
|
@@ -37,9 +38,11 @@ var RowSegmentingPlugin = function (options) {
|
|
37
38
|
t._onPreSectionDataBinding = t._onPreSectionDataBinding.bind(t);
|
38
39
|
t._updateHeader = t._updateHeader.bind(t);
|
39
40
|
t._onArrowClick = t._onArrowClick.bind(t);
|
41
|
+
t._onColumnIndexChanged = t._onColumnIndexChanged.bind(t);
|
40
42
|
t._rtSortingLogic = t._rtSortingLogic.bind(t);
|
41
43
|
t._refreshSegmentSeparator = t._refreshSegmentSeparator.bind(t);
|
42
44
|
t._separatorRefreshConflator = new Conflator(10, t._refreshSegmentSeparator);
|
45
|
+
t._columnIndexChangedConflator = new Conflator(10, t._onColumnIndexChanged);
|
43
46
|
|
44
47
|
t._hosts = [];
|
45
48
|
this.config({ rowSegmenting: options });
|
@@ -66,6 +69,10 @@ RowSegmentingPlugin.prototype._indentSizes = null;
|
|
66
69
|
* @private
|
67
70
|
*/
|
68
71
|
RowSegmentingPlugin.prototype._arrowSize = 9;
|
72
|
+
/** @type {number|string}
|
73
|
+
* @private
|
74
|
+
*/
|
75
|
+
RowSegmentingPlugin.prototype._displayColumn = null;
|
69
76
|
/** @type {Object}
|
70
77
|
* @private
|
71
78
|
*/
|
@@ -141,6 +148,9 @@ RowSegmentingPlugin.prototype.initialize = function (host, options) {
|
|
141
148
|
ExpanderIcon.loadExpanderStyles();
|
142
149
|
|
143
150
|
this._hosts.push(host);
|
151
|
+
host.listen("columnMoved", this._onColumnIndexChanged);
|
152
|
+
host.listen("columnRemoved", this._onColumnIndexChanged);
|
153
|
+
host.listen("columnAdded", this._onColumnIndexChanged);
|
144
154
|
host.listen("preSectionDataBinding", this._onPreSectionDataBinding);
|
145
155
|
|
146
156
|
this.config(options);
|
@@ -237,10 +247,14 @@ RowSegmentingPlugin.prototype.unload = function (host) {
|
|
237
247
|
if (at < 0) {
|
238
248
|
return;
|
239
249
|
}
|
250
|
+
host.unlisten("columnMoved", this._onColumnIndexChanged);
|
251
|
+
host.unlisten("columnRemoved", this._onColumnIndexChanged);
|
252
|
+
host.unlisten("columnAdded", this._onColumnIndexChanged);
|
240
253
|
host.unlisten("preSectionDataBinding", this._onPreSectionDataBinding);
|
241
254
|
this._hosts.splice(at, 1);
|
242
255
|
if(this._hosts.length <= 0) {
|
243
256
|
this._separatorRefreshConflator.reset();
|
257
|
+
this._columnIndexChangedConflator.reset();
|
244
258
|
}
|
245
259
|
this._dispose();
|
246
260
|
};
|
@@ -278,6 +292,9 @@ RowSegmentingPlugin.prototype.config = function (options) {
|
|
278
292
|
if (option.predefinedColors != null && typeof option.predefinedColors === "object") {
|
279
293
|
this._predefinedColors = option.predefinedColors;
|
280
294
|
}
|
295
|
+
if(option.displayColumn != null) {
|
296
|
+
this._displayColumn = option.displayColumn;
|
297
|
+
}
|
281
298
|
|
282
299
|
this._rowPainter = new RowPainter({
|
283
300
|
clickableCell: false,
|
@@ -349,6 +366,23 @@ RowSegmentingPlugin.prototype.getConfigObject = function (gridOptions) {
|
|
349
366
|
extOptions.segmentIdField = this._segmentIdField;
|
350
367
|
}
|
351
368
|
|
369
|
+
if(this._displayColumn != null) {
|
370
|
+
// WANRING: display column use colId and colIndex for internal, but give field and colIndex for user
|
371
|
+
let curDisIndex = this._resolveDisplayColumn();
|
372
|
+
if(curDisIndex < 0 ) {
|
373
|
+
extOptions.displayColumn = this._displayColumn; // column id
|
374
|
+
} else {
|
375
|
+
let curDisFied = this.getColumnField(curDisIndex);
|
376
|
+
let fields = this.getColumnFields();
|
377
|
+
let currentIndex = fields.indexOf(curDisFied);
|
378
|
+
if(currentIndex === fields.lastIndexOf(curDisFied)) {
|
379
|
+
extOptions.displayColumn = curDisFied; // column field
|
380
|
+
} else { // duplicate col use col index
|
381
|
+
extOptions.displayColumn = curDisIndex; // column index
|
382
|
+
}
|
383
|
+
}
|
384
|
+
}
|
385
|
+
|
352
386
|
// restore runningId for spanningIdField
|
353
387
|
this._runningId = 0;
|
354
388
|
|
@@ -434,16 +468,43 @@ RowSegmentingPlugin.prototype._onPreSectionDataBinding = function (e) {
|
|
434
468
|
);
|
435
469
|
};
|
436
470
|
|
471
|
+
/**
|
472
|
+
* @private
|
473
|
+
*/
|
474
|
+
RowSegmentingPlugin.prototype._onColumnIndexChanged = function () {
|
475
|
+
if(this._columnIndexChangedConflator.conflate()) {
|
476
|
+
return;
|
477
|
+
}
|
478
|
+
if(this._spanning) {
|
479
|
+
this._clearSectionHeaderStyle();
|
480
|
+
}
|
481
|
+
// columnAdded event will fire binding, so it will be double render header
|
482
|
+
this.updateHeaders(); // need to force update header when column index is changed
|
483
|
+
};
|
484
|
+
|
437
485
|
/** @private
|
438
|
-
* @param {Array.<Object>} segments
|
439
486
|
*/
|
440
|
-
RowSegmentingPlugin.prototype.
|
441
|
-
|
487
|
+
RowSegmentingPlugin.prototype._clearSectionHeaderStyle = function () {
|
488
|
+
let host = this._hosts[0];
|
489
|
+
if (!host) {
|
490
|
+
return;
|
491
|
+
}
|
492
|
+
let sections = host.getAllSections("content");
|
493
|
+
let rowPainter = this._rowPainter;
|
494
|
+
for (let i = sections.length; --i >= 0;) {
|
495
|
+
let section = sections[i];
|
496
|
+
|
497
|
+
let fi = section.getFirstIndexInView();
|
498
|
+
let li = section.getLastIndexInView();
|
499
|
+
for (let r = fi; r <= li; r++) {
|
500
|
+
// Currently, removeHeaderStyle removes all stretched cells, no need to use column index. In this case, we're specifying column index 0
|
501
|
+
rowPainter.removeHeaderStyle(section, 0, r);
|
502
|
+
}
|
503
|
+
}
|
442
504
|
};
|
443
505
|
|
444
506
|
/** @public */
|
445
507
|
RowSegmentingPlugin.prototype.updateHeaders = function () {
|
446
|
-
this._timerId = 0;
|
447
508
|
var host = this._hosts[0];
|
448
509
|
if (!host) {
|
449
510
|
return;
|
@@ -492,6 +553,32 @@ RowSegmentingPlugin.prototype.getSegmentParentRowId = function (rowRef) {
|
|
492
553
|
return "";
|
493
554
|
};
|
494
555
|
|
556
|
+
/** @public
|
557
|
+
* @description Resolve display column from column id to column index
|
558
|
+
* @return {number} return column index of display column
|
559
|
+
*/
|
560
|
+
RowSegmentingPlugin.prototype._resolveDisplayColumn = function () {
|
561
|
+
if(this._displayColumn == null) {
|
562
|
+
return 0;
|
563
|
+
}
|
564
|
+
if(this.getColumnCount() === 0) {
|
565
|
+
return -1;
|
566
|
+
}
|
567
|
+
if(typeof this._displayColumn === "number") {
|
568
|
+
let colId = this.getColumnId(this._displayColumn);
|
569
|
+
if(colId) {
|
570
|
+
this._displayColumn = colId;
|
571
|
+
}
|
572
|
+
}
|
573
|
+
let colIndex = this.getColumnIndex(this._displayColumn);
|
574
|
+
if(colIndex < 0) {
|
575
|
+
colIndex = 0;
|
576
|
+
this._displayColumn = this.getColumnId(colIndex);
|
577
|
+
}
|
578
|
+
|
579
|
+
return colIndex;
|
580
|
+
};
|
581
|
+
|
495
582
|
/** @private
|
496
583
|
* @param {Object} settings SectionSettings
|
497
584
|
* @param {number=} firstRowIndex
|
@@ -502,7 +589,10 @@ RowSegmentingPlugin.prototype._updateHeader = function (settings, firstRowIndex,
|
|
502
589
|
return;
|
503
590
|
}
|
504
591
|
|
505
|
-
var headerColumn =
|
592
|
+
var headerColumn = this._resolveDisplayColumn();
|
593
|
+
if(headerColumn < 0) {
|
594
|
+
return;
|
595
|
+
}
|
506
596
|
var dv = settings.getDataSource();
|
507
597
|
var dt = dv.getDataSource();
|
508
598
|
var section = settings.getSection();
|
@@ -14082,9 +14082,10 @@ RowDefinition.prototype.addConstituent = function(ric) {
|
|
14082
14082
|
};
|
14083
14083
|
|
14084
14084
|
/** Used to convert autogenerated row to regular real-time row
|
14085
|
-
* @
|
14085
|
+
* @public
|
14086
|
+
* @ignore
|
14086
14087
|
*/
|
14087
|
-
RowDefinition.prototype.
|
14088
|
+
RowDefinition.prototype.toRealTimeRow = function() {
|
14088
14089
|
if(!this._ric) { // Empty row
|
14089
14090
|
return;
|
14090
14091
|
}
|
@@ -14113,14 +14114,6 @@ RowDefinition.prototype.unlinkChain = function() {
|
|
14113
14114
|
return;
|
14114
14115
|
}
|
14115
14116
|
|
14116
|
-
if(this.isChainExpanded()) {
|
14117
|
-
let rowDefs = this.getDescendants();
|
14118
|
-
let len = rowDefs.length;
|
14119
|
-
for(let i = 0; i < len; i++) {
|
14120
|
-
rowDefs[i]._toRealTimeRow();
|
14121
|
-
}
|
14122
|
-
}
|
14123
|
-
|
14124
14117
|
let staticData = this._cloneStaticRowData();
|
14125
14118
|
this.unsubscribeForUpdates();
|
14126
14119
|
|
@@ -47589,21 +47582,31 @@ Grid.prototype._removeRow = function(rowDef) {
|
|
47589
47582
|
}
|
47590
47583
|
this._dispatch("beforeRowRemoved", {});
|
47591
47584
|
|
47592
|
-
let connector = this._connector;
|
47593
|
-
let dt = this._dt;
|
47594
47585
|
let childRowDefs = rowDef.getDescendants(); // TODO: Support nested child
|
47595
|
-
if(childRowDefs) {
|
47596
|
-
|
47597
|
-
connector.removeRic(childRowDefs[i]);
|
47598
|
-
}
|
47599
|
-
let rowIds = childRowDefs.map(RowDefinition.toRowId);
|
47600
|
-
dt.removeRows(rowIds);
|
47586
|
+
if(childRowDefs) {
|
47587
|
+
this._removeConstituentRows(childRowDefs);
|
47601
47588
|
}
|
47602
|
-
|
47603
|
-
|
47589
|
+
this._connector.removeRic(rowDef);
|
47590
|
+
this._dt.removeRow(rowDef.getRowId()); // TODO: Merge this with the above removeRows() method
|
47604
47591
|
rowDef.dispose(); // WARNING: This does not remove child reference from its parent
|
47605
47592
|
};
|
47606
47593
|
|
47594
|
+
/** @private
|
47595
|
+
* @param {Array.<RowDefinition>} rowDefs
|
47596
|
+
*/
|
47597
|
+
Grid.prototype._removeConstituentRows = function(rowDefs) {
|
47598
|
+
let connector = this._connector;
|
47599
|
+
let rowIds = [];
|
47600
|
+
for(let i = 0; i < rowDefs.length; i++) {
|
47601
|
+
let childRowDef = rowDefs[i];
|
47602
|
+
rowIds.push(childRowDef.getRowId());
|
47603
|
+
connector.removeRic(childRowDef);
|
47604
|
+
childRowDef.dispose();
|
47605
|
+
}
|
47606
|
+
|
47607
|
+
this._dt.removeRows(rowIds);
|
47608
|
+
};
|
47609
|
+
|
47607
47610
|
/** @public
|
47608
47611
|
* @param {Grid~RowReference} rowRef
|
47609
47612
|
* @param {boolean=} hidden if false, show instead of hide
|
@@ -47708,7 +47711,20 @@ Grid.prototype.unlinkChain = function(rowRef) {
|
|
47708
47711
|
}
|
47709
47712
|
|
47710
47713
|
this._unlinking = true;
|
47714
|
+
|
47715
|
+
let childRowDefs = rowDef.getDescendants(); // TODO: Support nested child
|
47716
|
+
if(childRowDefs) {
|
47717
|
+
if(rowDef.isChainExpanded()) {
|
47718
|
+
for(let i = 0; i < childRowDefs.length; i++) {
|
47719
|
+
childRowDefs[i].toRealTimeRow();
|
47720
|
+
}
|
47721
|
+
} else {
|
47722
|
+
this._removeConstituentRows(childRowDefs);
|
47723
|
+
}
|
47724
|
+
}
|
47725
|
+
|
47711
47726
|
rowDef.unlinkChain();
|
47727
|
+
|
47712
47728
|
this._unlinking = false;
|
47713
47729
|
};
|
47714
47730
|
|
@@ -48477,7 +48493,7 @@ Grid.prototype._onDataChanged = function(e) {
|
|
48477
48493
|
let subId = rowData[SUB_ID]; // The constituent will share the same sub id as its parent
|
48478
48494
|
if(subId) {
|
48479
48495
|
let parentDef = this._getRowDefinitionById(subId);
|
48480
|
-
if(parentDef && parentDef.getRic() !== rowData["RIC"]) { // TODO: Check for delayed ric
|
48496
|
+
if(parentDef && parentDef.isChain() && parentDef.getRic() !== rowData["RIC"]) { // TODO: Check for delayed ric
|
48481
48497
|
if(!this._chainMembers) {
|
48482
48498
|
this._chainMembers = {};
|
48483
48499
|
}
|