@refinitiv-ui/efx-grid 6.0.147 → 6.0.149

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.
@@ -82,7 +82,7 @@ declare class DataTable extends DataCache {
82
82
 
83
83
  public setSegmentSeparators(rids: (string)[]|null, enabled?: boolean|null): boolean;
84
84
 
85
- public setSegmentSeparator(rid: string, enabled?: boolean|null): boolean;
85
+ public setSegmentSeparator(rid: string, options?: any): boolean;
86
86
 
87
87
  public unsetAllSegmentSeparators(): boolean;
88
88
 
@@ -1016,64 +1016,65 @@ DataTable.prototype._initSegmentCollection = function() {
1016
1016
  this._segments.addEventListener("subSegmentChanged", this._onSubSegmentChanged);
1017
1017
  }
1018
1018
  };
1019
- /**
1019
+ /** Add or remove all segments from the given row ids
1020
1020
  * @public
1021
1021
  * @param {Array.<string>} rids
1022
1022
  * @param {boolean=} enabled
1023
1023
  * @return {boolean} Return true if there is any change
1024
1024
  */
1025
1025
  DataTable.prototype.setSegmentSeparators = function(rids, enabled) {
1026
- let change = false;
1027
- if (rids) {
1028
- let len = rids.length;
1029
- let segmentChanged = false;
1030
- for (let i = 0; i < len; i++) {
1031
- if(enabled !== false) {
1032
- let rid = rids[i];
1033
- this._initSegmentCollection();
1034
- if(this._autoSegmentFilling) {
1035
- let parentId = this._segments.getParentRowId(rid);
1036
- if(parentId) {
1037
- this._segments.removeSegmentChild(parentId, rid);
1038
- }
1026
+ if (!rids) {
1027
+ return false;
1028
+ }
1029
+ let adding = (enabled !== false);
1030
+ let segmentAdded = 0;
1031
+ let segmentRemoved = 0;
1032
+
1033
+ let len = rids.length;
1034
+ for (let i = 0; i < len; i++) {
1035
+ let rid = rids[i];
1036
+ if(adding) {
1037
+ this._initSegmentCollection();
1038
+ if(this._autoSegmentFilling) {
1039
+ let parentId = this._segments.getParentRowId(rid);
1040
+ if(parentId) {
1041
+ this._segments.removeSegmentChild(parentId, rid);
1039
1042
  }
1040
- segmentChanged = this._segments.addSegment(rid);
1041
- } else if (this._segments) { // remove case
1042
- let segment = this._segments.getSegment(rid);
1043
- if(segment) {
1044
- if(this._segments.removeSegment(rid)) {
1045
- change = true;
1046
- if(!this._segments.getSegmentCount()) {
1047
- this._segments = null;
1048
- }
1043
+ }
1044
+ segmentAdded |= this._segments.addSegment(rid);
1045
+ } else if (this._segments) { // Removing
1046
+ let segment = this._segments.getSegment(rid);
1047
+ if(segment) {
1048
+ if(this._segments.removeSegment(rid)) {
1049
+ segmentRemoved = 1;
1050
+ if(!this._segments.getSegmentCount()) {
1051
+ this._segments = null;
1049
1052
  }
1050
1053
  }
1051
1054
  }
1052
-
1053
- }
1054
- if (enabled !== false && segmentChanged) {
1055
- this._segments.calcSegmentOrder(this._rids);
1056
- change = true;
1057
- }
1058
- if(change) {
1059
- this.dispatchGlobalChange();
1060
1055
  }
1061
1056
  }
1062
- return change;
1063
-
1057
+ if (segmentAdded) {
1058
+ this._segments.calcSegmentOrder(this._rids);
1059
+ }
1060
+ let changed = segmentAdded || segmentRemoved;
1061
+ if(changed && this._needFiring()) {
1062
+ this.dispatchGlobalChange();
1063
+ }
1064
+ return changed ? true : false;
1064
1065
  };
1065
1066
 
1066
1067
  /**
1067
1068
  * @public
1068
1069
  * @param {string} rid
1069
- * @param {boolean=} enabled
1070
+ * @param {*=} options=null Segment options. If the value is false, segment separator will be stripped off from the given rid
1070
1071
  * @return {boolean} Return true if there is any change
1071
1072
  */
1072
- DataTable.prototype.setSegmentSeparator = function(rid, enabled) {
1073
+ DataTable.prototype.setSegmentSeparator = function(rid, options) {
1073
1074
  let change = false;
1074
1075
  let memberCount = 0;
1075
1076
  if(rid && typeof rid === "string") {
1076
- if(enabled !== false) {
1077
+ if(options !== false) {
1077
1078
  this._initSegmentCollection();
1078
1079
  if(this._autoSegmentFilling) {
1079
1080
  let parentId = this._segments.getParentRowId(rid);
@@ -1081,11 +1082,12 @@ DataTable.prototype.setSegmentSeparator = function(rid, enabled) {
1081
1082
  this._segments.removeSegmentChild(parentId, rid);
1082
1083
  }
1083
1084
  }
1084
- if(this._segments.addSegment(rid)) {
1085
+ let children = (options && options["children"]) ? options["children"] : null;
1086
+ if(this._segments.addSegment(rid, children)) {
1085
1087
  this._segments.calcSegmentOrder(this._rids);
1086
1088
  change = true;
1087
1089
  }
1088
- } else if(this._segments) { // mean remove separator
1090
+ } else if(this._segments) { // Remove the separator
1089
1091
  let segment = this._segments.getSegment(rid);
1090
1092
  if(segment) {
1091
1093
  memberCount = segment.getChildCount();
@@ -1280,6 +1282,20 @@ DataTable.prototype.fillSegments = function() {
1280
1282
  }
1281
1283
  return false;
1282
1284
  };
1285
+ /** @private
1286
+ * @param {boolean=} adding This indicates that segment is changed by adding a new child
1287
+ */
1288
+ DataTable.prototype._onSegmentChildChanged = function(adding) {
1289
+ if(this._segments) {
1290
+ this._segments.calcSegmentOrder(this._rids, true);
1291
+ }
1292
+ if(adding !== false) {
1293
+ this._sort(null);
1294
+ }
1295
+ this._dispatchPositionChange(); // Force rerendering, even if there is no position change
1296
+
1297
+ this.requestClassifying();
1298
+ };
1283
1299
  /** @public
1284
1300
  * @param {string} segmentId Row id
1285
1301
  * @param {string} rid Row id
@@ -1290,10 +1306,7 @@ DataTable.prototype.addSegmentChild = function(segmentId, rid, dataId) {
1290
1306
  if(this._segments) {
1291
1307
  let dirty = this._segments.addSegmentChild(segmentId, rid, dataId);
1292
1308
  if(dirty) {
1293
- this._sort(null);
1294
- this._dispatchPositionChange(); // Force rerendering, even if there is no position change
1295
-
1296
- this.requestClassifying();
1309
+ this._onSegmentChildChanged();
1297
1310
  return true;
1298
1311
  }
1299
1312
  }
@@ -1309,17 +1322,15 @@ DataTable.prototype.addSegmentChildren = function(segmentId, rids, dataIds) {
1309
1322
  if(this._segments) {
1310
1323
  let dirty = this._segments.addSegmentChildren(segmentId, rids, dataIds);
1311
1324
  if(dirty) {
1312
- this._sort(null);
1313
- this._dispatchPositionChange(); // Force rerendering, even if there is no position change
1314
-
1315
- this.requestClassifying();
1325
+ this._onSegmentChildChanged();
1316
1326
  return true;
1317
1327
  }
1318
1328
  }
1319
1329
  return false;
1320
1330
  };
1321
1331
 
1322
- /** @public
1332
+ /** Deprecated. Remove all existing children and add new children according to the give array
1333
+ * @public
1323
1334
  * @param {Array.<Object>} segmentArr Segment array that contain "segmentId", "rowIds" to set segment children
1324
1335
  * @return {boolean} Return true if there is any change
1325
1336
  */
@@ -1327,20 +1338,16 @@ DataTable.prototype.setSegmentChildren = function(segmentArr) {
1327
1338
  if(!this._segments) {
1328
1339
  return false;
1329
1340
  }
1330
- this.removeAllSegmentChildren();
1341
+ let dirty = this._segments.removeAllSegmentChildren();
1331
1342
  let len = segmentArr.length;
1332
- let dirty;
1333
1343
  for (let i = 0; i < len; i++) {
1334
1344
  let obj = segmentArr[i];
1335
- if(this._segments.addSegmentChildren(obj.segmentId, obj.rowIds)) {
1345
+ if(this._segments.addSegmentChildren(obj["segmentId"], obj["rowIds"])) {
1336
1346
  dirty = true;
1337
1347
  }
1338
1348
  }
1339
1349
  if(dirty) {
1340
- this._sort(null);
1341
- this._dispatchPositionChange(); // Force rerendering, even if there is no position change
1342
-
1343
- this.requestClassifying();
1350
+ this._onSegmentChildChanged();
1344
1351
  return true;
1345
1352
  }
1346
1353
 
@@ -1355,8 +1362,7 @@ DataTable.prototype.removeSegmentChild = function(segmentId, rid) {
1355
1362
  if(this._segments) {
1356
1363
  let dirty = this._segments.removeSegmentChild(segmentId, rid);
1357
1364
  if(dirty) {
1358
- this.dispatchGlobalChange();
1359
- this.requestClassifying();
1365
+ this._onSegmentChildChanged(false);
1360
1366
  }
1361
1367
  return dirty;
1362
1368
  }
@@ -1371,8 +1377,7 @@ DataTable.prototype.removeSegmentChildren = function(segmentId, rids) {
1371
1377
  if(this._segments) {
1372
1378
  let dirty = this._segments.removeSegmentChildren(segmentId, rids);
1373
1379
  if(dirty) {
1374
- this.dispatchGlobalChange();
1375
- this.requestClassifying();
1380
+ this._onSegmentChildChanged(false);
1376
1381
  }
1377
1382
  return dirty;
1378
1383
  }
@@ -1385,7 +1390,7 @@ DataTable.prototype.removeAllSegmentChildren = function() {
1385
1390
  if(this._segments) {
1386
1391
  let dirty = this._segments.removeAllSegmentChildren(); // This immediately remove all sub segments
1387
1392
  if (dirty) {
1388
- this.dispatchGlobalChange();
1393
+ this._onSegmentChildChanged(false);
1389
1394
  }
1390
1395
  return dirty;
1391
1396
  }
@@ -248,7 +248,7 @@ declare class DataView extends EventDispatcher {
248
248
 
249
249
  public setSegmentSeparators(rowIds: (string)[]|null, enabled?: boolean|null): boolean;
250
250
 
251
- public setSegmentSeparator(rowRef: string|number|null, enabled?: boolean|null): boolean;
251
+ public setSegmentSeparator(rowRef: string|number|null, options?: any): boolean;
252
252
 
253
253
  public unsetAllSegmentSeparators(): boolean;
254
254
 
@@ -2445,13 +2445,13 @@ DataView.prototype.setSegmentSeparators = function(rowIds, enabled) {
2445
2445
  }
2446
2446
  return false;
2447
2447
  };
2448
- /** Set visible row as segment separator (hidden or filtered rows cannot be a segment separator)
2448
+ /** Set visible row as a segment separator (hidden or filtered rows cannot be a segment separator)
2449
2449
  * @public
2450
2450
  * @param {string|number} rowRef Row id or row index
2451
- * @param {boolean=} enabled
2451
+ * @param {*=} options=null Segment options. If the value is false, segment separator will be stripped off from the given rid
2452
2452
  * @return {boolean} Return true if there is any change
2453
2453
  */
2454
- DataView.prototype.setSegmentSeparator = function(rowRef, enabled) {
2454
+ DataView.prototype.setSegmentSeparator = function(rowRef, options) {
2455
2455
  let rowId = "";
2456
2456
  if(typeof rowRef === "number") {
2457
2457
  rowId = this.getRowId(rowRef);
@@ -2460,12 +2460,11 @@ DataView.prototype.setSegmentSeparator = function(rowRef, enabled) {
2460
2460
  }
2461
2461
 
2462
2462
  if(rowId) {
2463
- enabled = enabled !== false;
2464
- if(enabled) {
2463
+ if(options !== false) { // undefined, null, object, or true value
2465
2464
  this.synchronizeRowOrder();
2466
2465
  }
2467
2466
  // TODO: Force expanding of segment before unsetting segment separator
2468
- return this._dt.setSegmentSeparator(rowId, enabled);
2467
+ return this._dt.setSegmentSeparator(rowId, options);
2469
2468
  }
2470
2469
  return false;
2471
2470
  };
@@ -11,6 +11,8 @@ declare class Segment extends EventDispatcher {
11
11
 
12
12
  public getParentId(): string;
13
13
 
14
+ public getParent(): Segment|null;
15
+
14
16
  public getSubSegmentIds(out_ary?: (string)[]|null): (string)[]|null;
15
17
 
16
18
  public addChild(rid: string, dataId?: string|null): boolean;
@@ -19,6 +21,8 @@ declare class Segment extends EventDispatcher {
19
21
 
20
22
  public containsChild(rid: string): boolean;
21
23
 
24
+ public getChildIndex(rid: string): number;
25
+
22
26
  public removeChild(rid: string): boolean;
23
27
 
24
28
  public removeChildren(rids: (string)[]|null): boolean;
@@ -31,6 +35,8 @@ declare class Segment extends EventDispatcher {
31
35
 
32
36
  public getChildCount(): number;
33
37
 
38
+ public markCollapsingStateDirty(): void;
39
+
34
40
  public getClassification(): (string)[]|null;
35
41
 
36
42
  public setClassification(fields: string|(string)[]|null): boolean;
@@ -41,10 +47,16 @@ declare class Segment extends EventDispatcher {
41
47
 
42
48
  public isSubSegment(): boolean;
43
49
 
50
+ public isRootSegment(): boolean;
51
+
44
52
  public getFirstAncestor(): Segment|null;
45
53
 
46
54
  public getAllSubSegments(out_ary?: (Segment)[]|null): (Segment)[]|null;
47
55
 
56
+ public updateTreeStructure(counter: number): number;
57
+
58
+ public calcSubSegmentOrder(counter: number): number;
59
+
48
60
  public getSegmentLevel(): number;
49
61
 
50
62
  public setRowData(rows?: any, clsSource?: any): void;
@@ -65,7 +77,9 @@ declare class Segment extends EventDispatcher {
65
77
 
66
78
  public setOrder(val: number): void;
67
79
 
68
- public log(lines?: (string)[]|null): (string)[];
80
+ public setLastOrder(val: number): number;
81
+
82
+ public log(lines?: (string)[]|null, tabLevel?: number|null): (string)[];
69
83
 
70
84
  }
71
85