@refinitiv-ui/efx-grid 6.0.147 → 6.0.148

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