@refinitiv-ui/efx-grid 6.0.139 → 6.0.141
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.
- package/lib/core/dist/core.js +99 -28
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataTable.d.ts +5 -1
- package/lib/core/es6/data/DataTable.js +38 -8
- package/lib/core/es6/data/DataView.d.ts +2 -0
- package/lib/core/es6/data/DataView.js +8 -0
- package/lib/core/es6/data/Segment.d.ts +1 -1
- package/lib/core/es6/data/Segment.js +16 -4
- package/lib/core/es6/data/SegmentCollection.d.ts +2 -0
- package/lib/core/es6/data/SegmentCollection.js +21 -10
- package/lib/core/es6/grid/Core.js +1 -1
- package/lib/core/es6/grid/components/Cell.js +9 -3
- package/lib/core/es6/grid/components/ElementWrapper.d.ts +2 -0
- package/lib/core/es6/grid/components/ElementWrapper.js +6 -2
- package/lib/grid/index.js +1 -1
- package/lib/row-segmenting/es6/RowSegmenting.d.ts +8 -1
- package/lib/row-segmenting/es6/RowSegmenting.js +88 -23
- package/lib/rt-grid/dist/rt-grid.js +607 -566
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/Grid.js +37 -14
- package/lib/rt-grid/es6/RowDefinition.d.ts +1 -1
- package/lib/rt-grid/es6/RowDefinition.js +11 -3
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +1 -1
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +2 -3
- package/lib/tr-grid-util/es6/jet/MockQuotes2.d.ts +2 -0
- package/lib/tr-grid-util/es6/jet/MockQuotes2.js +38 -8
- package/lib/types/es6/ConditionalColoring.d.ts +1 -1
- package/lib/types/es6/Core/data/DataTable.d.ts +5 -1
- package/lib/types/es6/Core/data/DataView.d.ts +2 -0
- package/lib/types/es6/Core/data/Segment.d.ts +1 -1
- package/lib/types/es6/Core/data/SegmentCollection.d.ts +2 -0
- package/lib/types/es6/Core/grid/components/ElementWrapper.d.ts +2 -0
- package/lib/types/es6/RowFiltering.d.ts +2 -1
- package/lib/versions.json +3 -3
- package/package.json +1 -1
@@ -88,6 +88,8 @@ declare class DataTable extends DataCache {
|
|
88
88
|
|
89
89
|
public hasSegmentation(): boolean;
|
90
90
|
|
91
|
+
public hasSegmentClassification(): boolean;
|
92
|
+
|
91
93
|
public isSegmentSeparator(rid: string): boolean;
|
92
94
|
|
93
95
|
public getSegment(rid: string): Segment|null;
|
@@ -132,6 +134,8 @@ declare class DataTable extends DataCache {
|
|
132
134
|
|
133
135
|
public requestClassifying(): void;
|
134
136
|
|
137
|
+
public setSegmentDefaultCollapsing(bool: boolean): boolean;
|
138
|
+
|
135
139
|
public dispatchGlobalChange(suppressEvent?: boolean|null): void;
|
136
140
|
|
137
141
|
public static getSortingDefinitions(): void;
|
@@ -144,7 +148,7 @@ declare function prevFrozen(ary: (any)[][], opt_cidList?: (string)[]|null, opt_r
|
|
144
148
|
|
145
149
|
declare function cid(): null;
|
146
150
|
|
147
|
-
declare function removalList(
|
151
|
+
declare function removalList(bool: boolean): boolean;
|
148
152
|
|
149
153
|
declare function logic(a: number, b: number, order: number, sortingDefs: (any[])[]|null): number;
|
150
154
|
|
@@ -91,6 +91,10 @@ DataTable.prototype._clsSource = null;
|
|
91
91
|
* @type {number}
|
92
92
|
*/
|
93
93
|
DataTable.prototype._classifyingTimer = 0;
|
94
|
+
/** @private
|
95
|
+
* @type {boolean}
|
96
|
+
*/
|
97
|
+
DataTable.prototype._segmentDefaultCollapsing = false;
|
94
98
|
|
95
99
|
|
96
100
|
/** @typedef {Function} DataTable~SortLogic
|
@@ -1003,6 +1007,15 @@ DataTable.prototype.isFrozen = function() {
|
|
1003
1007
|
return this._frozen;
|
1004
1008
|
};
|
1005
1009
|
|
1010
|
+
/** @private
|
1011
|
+
*/
|
1012
|
+
DataTable.prototype._initSegmentCollection = function() {
|
1013
|
+
if (!this._segments) {
|
1014
|
+
this._segments = new SegmentCollection();
|
1015
|
+
this._segments.setDefaultCollapsing(this._segmentDefaultCollapsing);
|
1016
|
+
this._segments.addEventListener("subSegmentChanged", this._onSubSegmentChanged);
|
1017
|
+
}
|
1018
|
+
};
|
1006
1019
|
/**
|
1007
1020
|
* @public
|
1008
1021
|
* @param {Array.<string>} rids
|
@@ -1017,10 +1030,7 @@ DataTable.prototype.setSegmentSeparators = function(rids, enabled) {
|
|
1017
1030
|
for (let i = 0; i < len; i++) {
|
1018
1031
|
if(enabled !== false) {
|
1019
1032
|
let rid = rids[i];
|
1020
|
-
|
1021
|
-
this._segments = new SegmentCollection();
|
1022
|
-
this._segments.addEventListener("subSegmentChanged", this._onSubSegmentChanged);
|
1023
|
-
}
|
1033
|
+
this._initSegmentCollection();
|
1024
1034
|
if(this._autoSegmentFilling) {
|
1025
1035
|
let parentId = this._segments.getParentRowId(rid);
|
1026
1036
|
if(parentId) {
|
@@ -1064,10 +1074,7 @@ DataTable.prototype.setSegmentSeparator = function(rid, enabled) {
|
|
1064
1074
|
let memberCount = 0;
|
1065
1075
|
if(rid && typeof rid === "string") {
|
1066
1076
|
if(enabled !== false) {
|
1067
|
-
|
1068
|
-
this._segments = new SegmentCollection();
|
1069
|
-
this._segments.addEventListener("subSegmentChanged", this._onSubSegmentChanged);
|
1070
|
-
}
|
1077
|
+
this._initSegmentCollection();
|
1071
1078
|
if(this._autoSegmentFilling) {
|
1072
1079
|
let parentId = this._segments.getParentRowId(rid);
|
1073
1080
|
if(parentId) {
|
@@ -1131,6 +1138,13 @@ DataTable.prototype.hasSegmentation = function() {
|
|
1131
1138
|
};
|
1132
1139
|
/**
|
1133
1140
|
* @public
|
1141
|
+
* @return {boolean}
|
1142
|
+
*/
|
1143
|
+
DataTable.prototype.hasSegmentClassification = function() {
|
1144
|
+
return this._segments ? this._segments.hasClassification() : false;
|
1145
|
+
};
|
1146
|
+
/**
|
1147
|
+
* @public
|
1134
1148
|
* @param {string} rid
|
1135
1149
|
* @return {boolean}
|
1136
1150
|
*/
|
@@ -1627,6 +1641,22 @@ DataTable.prototype._onSubSegmentChanged = function(e) {
|
|
1627
1641
|
}
|
1628
1642
|
};
|
1629
1643
|
|
1644
|
+
/**
|
1645
|
+
* @public
|
1646
|
+
* @param {boolean} bool
|
1647
|
+
* @return {boolean}
|
1648
|
+
*/
|
1649
|
+
DataTable.prototype.setSegmentDefaultCollapsing = function(bool) {
|
1650
|
+
if(this._segmentDefaultCollapsing !== bool) {
|
1651
|
+
this._segmentDefaultCollapsing = bool;
|
1652
|
+
if(this._segments) {
|
1653
|
+
this._segments.setDefaultCollapsing(bool);
|
1654
|
+
}
|
1655
|
+
return true;
|
1656
|
+
}
|
1657
|
+
return false;
|
1658
|
+
};
|
1659
|
+
|
1630
1660
|
|
1631
1661
|
/**
|
1632
1662
|
* @public
|
@@ -304,6 +304,8 @@ declare class DataView extends EventDispatcher {
|
|
304
304
|
|
305
305
|
public setSegmentClassification(segmentRef: string|number|null, fields: string|(string)[]|null): boolean;
|
306
306
|
|
307
|
+
public setSegmentDefaultCollapsing(bool: boolean): boolean;
|
308
|
+
|
307
309
|
public getWrapSize(): number;
|
308
310
|
|
309
311
|
public getWrappedViews(): (WrappedView)[]|null;
|
@@ -2746,6 +2746,14 @@ DataView.prototype.enableSeparatorFiltering = function (enabled) {
|
|
2746
2746
|
DataView.prototype.setSegmentClassification = function(segmentRef, fields) {
|
2747
2747
|
return this._dt.setSegmentClassification(this._toRowId(segmentRef), fields);
|
2748
2748
|
};
|
2749
|
+
/**
|
2750
|
+
* @public
|
2751
|
+
* @param {boolean} bool
|
2752
|
+
* @return {boolean}
|
2753
|
+
*/
|
2754
|
+
DataView.prototype.setSegmentDefaultCollapsing = function(bool) {
|
2755
|
+
return this._dt.setSegmentDefaultCollapsing(bool);
|
2756
|
+
};
|
2749
2757
|
|
2750
2758
|
/** @public
|
2751
2759
|
* @ignore
|
@@ -10,6 +10,9 @@ let Segment = function(rid, sharedObj) {
|
|
10
10
|
this._rid = rid;
|
11
11
|
this._children = {};
|
12
12
|
this._shared = sharedObj;
|
13
|
+
if(sharedObj.defaultCollapsing) {
|
14
|
+
this._collapsed = true;
|
15
|
+
}
|
13
16
|
};
|
14
17
|
Ext.inherits(Segment, EventDispatcher);
|
15
18
|
|
@@ -124,9 +127,12 @@ Segment.prototype.dispose = function() {
|
|
124
127
|
this._subSegMap = this._subSegNames = null;
|
125
128
|
}
|
126
129
|
if(this._collapsed) {
|
127
|
-
this.
|
130
|
+
if(this._childCount || this._subSegDef) {
|
131
|
+
this._shared.dirtyCollapsingState = true;
|
132
|
+
}
|
128
133
|
}
|
129
134
|
|
135
|
+
this._childCount = 0;
|
130
136
|
this._shared = null;
|
131
137
|
this._subSegParent = this._subSegDef = this._subSegVal = null;
|
132
138
|
};
|
@@ -627,7 +633,9 @@ Segment.prototype.collapse = function(bool) {
|
|
627
633
|
bool = (bool !== false);
|
628
634
|
if(this._collapsed !== bool) {
|
629
635
|
this._collapsed = bool;
|
630
|
-
this.
|
636
|
+
if(this._childCount || this._subSegDef) {
|
637
|
+
this._shared.dirtyCollapsingState = true;
|
638
|
+
}
|
631
639
|
return true;
|
632
640
|
}
|
633
641
|
return false;
|
@@ -734,10 +742,14 @@ Segment.prototype.setOrder = function(val) {
|
|
734
742
|
*/
|
735
743
|
Segment._tabs = null;
|
736
744
|
/** @public
|
737
|
-
* @param {Array.<string
|
738
|
-
* @return {Array.<string>} lines
|
745
|
+
* @param {Array.<string>=} lines
|
746
|
+
* @return {!Array.<string>} lines
|
739
747
|
*/
|
740
748
|
Segment.prototype.log = function(lines) {
|
749
|
+
if(!lines) {
|
750
|
+
lines = [];
|
751
|
+
}
|
752
|
+
|
741
753
|
let i;
|
742
754
|
let tabs = Segment._tabs;
|
743
755
|
if(!tabs) {
|
@@ -15,7 +15,8 @@ let SegmentCollection = function() {
|
|
15
15
|
|
16
16
|
this._shared = {
|
17
17
|
childToSegment: {}, // child Id to segment Id
|
18
|
-
dirtyCollapsingState: false
|
18
|
+
dirtyCollapsingState: false,
|
19
|
+
defaultCollapsing: false
|
19
20
|
};
|
20
21
|
};
|
21
22
|
Ext.inherits(SegmentCollection, EventDispatcher);
|
@@ -214,19 +215,17 @@ SegmentCollection.prototype.getSegmentIds = function() {
|
|
214
215
|
* @return {boolean} Returns true if there is any change. Otherwise, returns false
|
215
216
|
*/
|
216
217
|
SegmentCollection.prototype.collapseSegments = function(segmentIds, bool) {
|
218
|
+
let dirty = 0;
|
217
219
|
if(this._segmentCount) {
|
218
|
-
let dirty = 0;
|
219
220
|
let len = segmentIds.length;
|
220
221
|
for (let i = 0; i < len; i++) {
|
221
|
-
let
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
if(dirty) {
|
226
|
-
return true;
|
222
|
+
let segment = this._segments[segmentIds[i]];
|
223
|
+
if(segment) {
|
224
|
+
dirty |= segment.collapse(bool);
|
225
|
+
}
|
227
226
|
}
|
228
227
|
}
|
229
|
-
return false;
|
228
|
+
return dirty ? true : false;
|
230
229
|
};
|
231
230
|
|
232
231
|
/** @public
|
@@ -547,7 +546,6 @@ SegmentCollection.prototype.logRowIdMap = function() {
|
|
547
546
|
return lines.join("\n");
|
548
547
|
};
|
549
548
|
|
550
|
-
|
551
549
|
/** @public
|
552
550
|
* @param {string} segmentId
|
553
551
|
* @param {string|Array.<string>} fields
|
@@ -638,6 +636,19 @@ SegmentCollection.prototype._onSubSegmentRemoved = function(e) {
|
|
638
636
|
this.removeSegment(rid);
|
639
637
|
};
|
640
638
|
|
639
|
+
/** @public
|
640
|
+
* @param {boolean} bool
|
641
|
+
* @return {boolean}
|
642
|
+
*/
|
643
|
+
SegmentCollection.prototype.setDefaultCollapsing = function(bool) {
|
644
|
+
let newVal = bool ? true : false;
|
645
|
+
if(this._shared.defaultCollapsing !== newVal) {
|
646
|
+
this._shared.defaultCollapsing = newVal;
|
647
|
+
return true;
|
648
|
+
}
|
649
|
+
return false;
|
650
|
+
};
|
651
|
+
|
641
652
|
|
642
653
|
export default SegmentCollection;
|
643
654
|
export { SegmentCollection };
|
@@ -739,11 +739,17 @@ Cell.prototype.updateTooltip = function() {
|
|
739
739
|
}
|
740
740
|
|
741
741
|
if(customizedTooltip) {
|
742
|
-
|
742
|
+
let curTooltip = this.hasAttribute("tooltip") ? this.getAttribute("tooltip") : this.getAttribute("title");
|
743
|
+
if(curTooltip !== customizedTooltip) {
|
743
744
|
this.setAttribute("title", customizedTooltip);
|
744
745
|
}
|
745
|
-
} else
|
746
|
-
this.
|
746
|
+
} else {
|
747
|
+
if(this.hasAttribute("title")) {
|
748
|
+
this.removeAttribute("title");
|
749
|
+
}
|
750
|
+
if(this.hasAttribute("tooltip")) {
|
751
|
+
this.removeAttribute("tooltip");
|
752
|
+
}
|
747
753
|
}
|
748
754
|
};
|
749
755
|
/** @public
|
@@ -436,12 +436,16 @@ ElementWrapper.prototype.getClass = function () { return this._element.className
|
|
436
436
|
*/
|
437
437
|
ElementWrapper.prototype.setClass = function (str) { this._element.className = str; };
|
438
438
|
|
439
|
-
/**
|
440
|
-
* @public
|
439
|
+
/** @public
|
441
440
|
* @param {string} str
|
442
441
|
* @return {string}
|
443
442
|
*/
|
444
443
|
ElementWrapper.prototype.getAttribute = function (str) { return this._element.getAttribute(str); };
|
444
|
+
/** @public
|
445
|
+
* @param {string} str
|
446
|
+
* @return {boolean}
|
447
|
+
*/
|
448
|
+
ElementWrapper.prototype.hasAttribute = function (str) { return this._element.hasAttribute(str); };
|
445
449
|
/** Sets attribute to DOM element
|
446
450
|
* @public
|
447
451
|
* @param {string} str
|
package/lib/grid/index.js
CHANGED
@@ -22,9 +22,16 @@ declare namespace RowSegmentingPlugin {
|
|
22
22
|
sortingLogic?: ((...params: any[]) => any)|null,
|
23
23
|
rowSpanningField?: string|null,
|
24
24
|
segmentIdField?: string|null,
|
25
|
+
collapsingField?: string|null,
|
26
|
+
defaultCollapsing?: boolean|null,
|
25
27
|
displayColumn?: (string|number)|null
|
26
28
|
};
|
27
29
|
|
30
|
+
type SegmentDefinition = {
|
31
|
+
children?: (string)[]|null,
|
32
|
+
collapsed?: boolean|null
|
33
|
+
};
|
34
|
+
|
28
35
|
}
|
29
36
|
|
30
37
|
declare class RowSegmentingPlugin extends GridPlugin {
|
@@ -51,7 +58,7 @@ declare class RowSegmentingPlugin extends GridPlugin {
|
|
51
58
|
|
52
59
|
public setSegmentSeparators(rowIds: (string)[]|null, enabled?: boolean|null): boolean;
|
53
60
|
|
54
|
-
public setSegmentSeparator(rowRef: string|number|null,
|
61
|
+
public setSegmentSeparator(rowRef: string|number|null, options?: any): boolean;
|
55
62
|
|
56
63
|
public setSegmentClassification(rowRef: string|number|null, fields: string|(string)[]|null): boolean;
|
57
64
|
|
@@ -18,8 +18,10 @@ import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
|
|
18
18
|
* @property {Function=} nonSegmentSeparatorBinding=null Logic that will be executed for all non segment separator row
|
19
19
|
* @property {Function=} sortingLogic=null Logic to be used by sortSegments method
|
20
20
|
* @property {string=} rowSpanningField="ROW_SPANNING" Field to be used for spanning segment header rows based on the field values
|
21
|
-
* @property {string=} segmentIdField="" Field
|
22
|
-
* @property {
|
21
|
+
* @property {string=} segmentIdField="" Field used for initializing segments based on text id
|
22
|
+
* @property {string=} collapsingField="" Field used for indicating that the corresponding segment row is collapsed
|
23
|
+
* @property {boolean=} defaultCollapsing=false If enabled, any newly created segment will be collapsed by default
|
24
|
+
* @property {(string|number)=} displayColumn=null Render tags in the given column. It can be either the column index, column ID, or field
|
23
25
|
*/
|
24
26
|
|
25
27
|
/** @callback RowSegmentingPlugin~SortingLogic
|
@@ -29,6 +31,12 @@ import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
|
|
29
31
|
* @return {number}
|
30
32
|
*/
|
31
33
|
|
34
|
+
/** @typedef {Object} RowSegmentingPlugin~SegmentDefinition
|
35
|
+
* @description An object that can be passed to setSegmentSeparator method
|
36
|
+
* @property {Array.<string>=} children=null Array of child row ids
|
37
|
+
* @property {boolean=} collapsed Initial expanding/colapssing state of the segment
|
38
|
+
*/
|
39
|
+
|
32
40
|
/** @constructor
|
33
41
|
* @param {RowSegmentingPlugin~Options=} options
|
34
42
|
* @extends {GridPlugin}
|
@@ -93,6 +101,10 @@ RowSegmentingPlugin.prototype._rowSpanningField = "ROW_SPANNING";
|
|
93
101
|
* @private
|
94
102
|
*/
|
95
103
|
RowSegmentingPlugin.prototype._segmentIdField = "";
|
104
|
+
/** @type {string}
|
105
|
+
* @private
|
106
|
+
*/
|
107
|
+
RowSegmentingPlugin.prototype._collapsingField = "";
|
96
108
|
/** @type {number}
|
97
109
|
* @private
|
98
110
|
*/
|
@@ -117,6 +129,10 @@ RowSegmentingPlugin._controlClass = "predefined-color-tag";
|
|
117
129
|
* @private
|
118
130
|
*/
|
119
131
|
RowSegmentingPlugin.prototype._collapsingMap = null;
|
132
|
+
/** @type {boolean}
|
133
|
+
* @private
|
134
|
+
*/
|
135
|
+
RowSegmentingPlugin.prototype._defaultCollapsing = false;
|
120
136
|
|
121
137
|
/** @public
|
122
138
|
* @return {string}
|
@@ -154,6 +170,10 @@ RowSegmentingPlugin.prototype.initialize = function (host, options) {
|
|
154
170
|
host.listen("preSectionDataBinding", this._onPreSectionDataBinding);
|
155
171
|
|
156
172
|
this.config(options);
|
173
|
+
let dv = host.getDataSource();
|
174
|
+
if(dv && dv.setSegmentDefaultCollapsing) {
|
175
|
+
dv.setSegmentDefaultCollapsing(this._defaultCollapsing);
|
176
|
+
}
|
157
177
|
|
158
178
|
let enabled = this._colorTag != null ? this._colorTag : ElfUtil.isHaloTheme();
|
159
179
|
RowPainter.disableColorTag(host, enabled === false);
|
@@ -216,10 +236,11 @@ RowSegmentingPlugin.prototype.requestSeparatorRefresh = function () {
|
|
216
236
|
|
217
237
|
let rowIds = dt.getAllRowIds();
|
218
238
|
let rowCount = rowIds.length;
|
219
|
-
let
|
239
|
+
let segmentMap = {};
|
220
240
|
let segmentArr = [];
|
221
241
|
let separatorArr = [];
|
222
|
-
let
|
242
|
+
let collapsingAry = [];
|
243
|
+
let expandingAry = [];
|
223
244
|
for(let i = 0; i < rowCount; i++) {
|
224
245
|
rowId = rowIds[i];
|
225
246
|
rowData = this._rowGetter(dt.getRowData(rowId));
|
@@ -227,25 +248,39 @@ RowSegmentingPlugin.prototype.requestSeparatorRefresh = function () {
|
|
227
248
|
if(segmentId == null) {
|
228
249
|
continue;
|
229
250
|
}
|
230
|
-
|
231
|
-
|
251
|
+
let segmentInfo = segmentMap[segmentId];
|
252
|
+
if(segmentInfo) {
|
253
|
+
segmentInfo.rowIds.push(rowId);
|
254
|
+
} else {
|
255
|
+
segmentInfo = segmentMap[segmentId] = {
|
232
256
|
rowIds: [],
|
233
|
-
segmentId: rowId
|
257
|
+
segmentId: rowId
|
234
258
|
};
|
235
|
-
segmentArr.push(
|
259
|
+
segmentArr.push(segmentInfo);
|
236
260
|
separatorArr.push(rowId);
|
237
|
-
|
238
|
-
|
261
|
+
|
262
|
+
let collapsed = (this._collapsingField) ? rowData[this._collapsingField] : collapsingMap[segmentId];
|
263
|
+
if(collapsed != null) {
|
264
|
+
if(collapsed) {
|
265
|
+
collapsingAry.push(rowId);
|
266
|
+
} else {
|
267
|
+
expandingAry.push(rowId);
|
268
|
+
}
|
239
269
|
}
|
240
|
-
} else {
|
241
|
-
// Add rowId to set segment separator
|
242
|
-
separatorMap[segmentId].rowIds.push(rowId);
|
243
270
|
}
|
244
271
|
this._prevSegmentBySegmentId = true;
|
245
272
|
}
|
246
|
-
|
247
|
-
|
248
|
-
|
273
|
+
if(segmentArr.length) {
|
274
|
+
this.setSegmentSeparators(separatorArr); // TODO: This method can be merged into setSegmentChildren
|
275
|
+
this.setSegmentChildren(segmentArr);
|
276
|
+
}
|
277
|
+
|
278
|
+
if(collapsingAry.length) {
|
279
|
+
this.collapseSegments(collapsingAry, true);
|
280
|
+
}
|
281
|
+
if(expandingAry.length) {
|
282
|
+
this.collapseSegments(expandingAry, false);
|
283
|
+
}
|
249
284
|
};
|
250
285
|
/** @public
|
251
286
|
* @param {Object=} host core grid instance
|
@@ -297,12 +332,21 @@ RowSegmentingPlugin.prototype.config = function (options) {
|
|
297
332
|
if (option.segmentIdField != null) {
|
298
333
|
this._segmentIdField = option.segmentIdField;
|
299
334
|
}
|
335
|
+
if (option.collapsingField != null) {
|
336
|
+
this._collapsingField = option.collapsingField;
|
337
|
+
}
|
300
338
|
if (option.predefinedColors != null && typeof option.predefinedColors === "object") {
|
301
339
|
this._predefinedColors = option.predefinedColors;
|
302
340
|
}
|
303
341
|
if(option.displayColumn != null) {
|
304
342
|
this._displayColumn = option.displayColumn;
|
305
343
|
}
|
344
|
+
if(option.defaultCollapse != null) {
|
345
|
+
this._defaultCollapsing = option.defaultCollapse;
|
346
|
+
}
|
347
|
+
if(option.defaultCollapsing != null) {
|
348
|
+
this._defaultCollapsing = option.defaultCollapsing;
|
349
|
+
}
|
306
350
|
|
307
351
|
this._rowPainter = new RowPainter({
|
308
352
|
clickableCell: false,
|
@@ -371,6 +415,12 @@ RowSegmentingPlugin.prototype.getConfigObject = function (gridOptions) {
|
|
371
415
|
if(this._segmentIdField) {
|
372
416
|
extOptions.segmentIdField = this._segmentIdField;
|
373
417
|
}
|
418
|
+
if(this._collapsingField) {
|
419
|
+
extOptions.collapsingField = this._collapsingField;
|
420
|
+
}
|
421
|
+
if(this._defaultCollapsing) {
|
422
|
+
extOptions.defaultCollapsing = true;
|
423
|
+
}
|
374
424
|
|
375
425
|
if(this._displayColumn != null) {
|
376
426
|
// WANRING: display column use colId and colIndex for internal, but give field and colIndex for user
|
@@ -415,14 +465,18 @@ RowSegmentingPlugin.prototype.getRowConfigObject = function (rowData, rowId) {
|
|
415
465
|
}
|
416
466
|
|
417
467
|
if(this.isSegmentSeparator(rowId)) {
|
418
|
-
if(obj["collapsed"] == null) { // Avoid overriding value from real-time grid
|
419
|
-
obj["collapsed"] = this.isSegmentCollapsed(rowId);
|
420
|
-
}
|
421
|
-
|
422
468
|
if(!obj.values) {
|
423
469
|
obj.values = {};
|
424
470
|
}
|
425
471
|
obj.values[this._segmentIdField] = ++this._runningId;
|
472
|
+
|
473
|
+
let collapsed = this.isSegmentCollapsed(rowId);
|
474
|
+
if(this._collapsingField) {
|
475
|
+
obj.values[this._collapsingField] = collapsed;
|
476
|
+
}
|
477
|
+
if(obj["collapsed"] == null) { // Avoid overriding value from real-time grid
|
478
|
+
obj["collapsed"] = collapsed;
|
479
|
+
}
|
426
480
|
} else {
|
427
481
|
let parentId = this.getSegmentParentRowId(rowId);
|
428
482
|
if(parentId) {
|
@@ -750,13 +804,24 @@ RowSegmentingPlugin.prototype.setSegmentSeparators = function(rowIds, enabled) {
|
|
750
804
|
/** Set specified row as a segment separator
|
751
805
|
* @public
|
752
806
|
* @param {string|number} rowRef Row id or row index
|
753
|
-
* @param {
|
807
|
+
* @param {*=} options The segment will be created and initialized according to the given option. If the value is false, the specified segment is removed.
|
754
808
|
* @return {boolean} Return true if there is any change
|
755
809
|
*/
|
756
|
-
RowSegmentingPlugin.prototype.setSegmentSeparator = function(rowRef,
|
810
|
+
RowSegmentingPlugin.prototype.setSegmentSeparator = function(rowRef, options) {
|
757
811
|
let dv = this._getDataView();
|
758
812
|
if(dv) {
|
759
|
-
|
813
|
+
if(options) {
|
814
|
+
dv.setSegmentSeparator(rowRef, true);
|
815
|
+
|
816
|
+
if(Array.isArray(options.children)) {
|
817
|
+
dv.addSegmentChildren(rowRef, options.children);
|
818
|
+
}
|
819
|
+
if(options.collapsed != null) {
|
820
|
+
dv.collapseSegment(rowRef, options.collapsed);
|
821
|
+
}
|
822
|
+
} else {
|
823
|
+
return dv.setSegmentSeparator(rowRef, options == null);
|
824
|
+
}
|
760
825
|
}
|
761
826
|
return false;
|
762
827
|
};
|