@refinitiv-ui/efx-grid 6.0.92 → 6.0.93
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/filter-dialog/lib/filter-dialog.js +1 -0
- package/lib/grid/index.js +1 -1
- package/lib/tr-grid-checkbox/es6/Checkbox.js +268 -268
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +1 -2
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +36 -36
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +279 -279
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +227 -207
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +11 -11
- package/lib/tr-grid-row-dragging/es6/RowDragging.d.ts +1 -2
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +120 -121
- package/lib/tr-grid-util/es6/CellPainter.js +2 -13
- package/lib/tr-grid-util/es6/DateTime.js +2 -2
- package/lib/tr-grid-util/es6/Delay.d.ts +3 -3
- package/lib/tr-grid-util/es6/Delay.js +13 -2
- package/lib/tr-grid-util/es6/FilterBuilder.js +1 -2
- package/lib/tr-grid-util/es6/GridPlugin.js +0 -1
- package/lib/tr-grid-util/es6/MultiTableManager.js +4 -13
- package/lib/tr-grid-util/es6/NumberFormatter.js +1 -1
- package/lib/tr-grid-util/es6/TextHighlighter.js +3 -3
- package/lib/types/es6/RowDragging.d.ts +1 -2
- package/lib/versions.json +10 -10
- package/package.json +1 -1
@@ -70,9 +70,9 @@ import { preventDefault } from "../../tr-grid-util/es6/EventDispatcher.js";
|
|
70
70
|
* @param {*} refB
|
71
71
|
* @return {number}
|
72
72
|
*/
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
let _indexSorter = function(indexMap, refA, refB) {
|
74
|
+
let numA = indexMap[refA];
|
75
|
+
let numB = indexMap[refB];
|
76
76
|
if(numA === numB) {
|
77
77
|
return 0;
|
78
78
|
}
|
@@ -90,7 +90,7 @@ var _indexSorter = function(indexMap, refA, refB) {
|
|
90
90
|
* @param {*} refA
|
91
91
|
* @return {boolean}
|
92
92
|
*/
|
93
|
-
|
93
|
+
let _byValidIndex = function(indexMap, refA) {
|
94
94
|
return indexMap[refA] >= 0;
|
95
95
|
};
|
96
96
|
|
@@ -99,11 +99,11 @@ var _byValidIndex = function(indexMap, refA) {
|
|
99
99
|
* @param {Object} stackOpt
|
100
100
|
* @return {boolean} Return true if there is any change
|
101
101
|
*/
|
102
|
-
|
102
|
+
let _resolveActiveColumn = function(stackOpt) {
|
103
103
|
if(stackOpt) {
|
104
|
-
|
104
|
+
let children = stackOpt.children;
|
105
105
|
if(children && children.length) {
|
106
|
-
|
106
|
+
let activeColumn = stackOpt.activeColumn;
|
107
107
|
if(!activeColumn || children.indexOf(activeColumn) < 0) {
|
108
108
|
stackOpt.activeColumn = stackOpt.spreading ? children[children.length - 1] : children[0];
|
109
109
|
return true;
|
@@ -116,7 +116,7 @@ var _resolveActiveColumn = function(stackOpt) {
|
|
116
116
|
/** @constructor
|
117
117
|
* @extends {GridPlugin}
|
118
118
|
*/
|
119
|
-
|
119
|
+
let ColumnStackPlugin = function () {
|
120
120
|
this._onPreSectionRender = this._onPreSectionRender.bind(this);
|
121
121
|
this._onColumnRemoved = this._onColumnRemoved.bind(this);
|
122
122
|
this._onColumnMoved = this._onColumnMoved.bind(this);
|
@@ -182,7 +182,7 @@ ColumnStackPlugin._runningId = 0;
|
|
182
182
|
* @return {string}
|
183
183
|
*/
|
184
184
|
ColumnStackPlugin.prototype._generateStackId = function() {
|
185
|
-
|
185
|
+
let sid = "Stack" + ColumnStackPlugin._runningId++;
|
186
186
|
while(this._groupDefs.getGroup(sid)) {
|
187
187
|
sid = "Stack" + ColumnStackPlugin._runningId++;
|
188
188
|
}
|
@@ -211,7 +211,7 @@ ColumnStackPlugin.prototype.initialize = function (host, options) {
|
|
211
211
|
|
212
212
|
if(options) {
|
213
213
|
if(options["icons"]) {
|
214
|
-
|
214
|
+
let icons = options["icons"]["columnStack"];
|
215
215
|
if(icons) {
|
216
216
|
this._stackIconName = icons["stack"];
|
217
217
|
this._expandIconName = icons["expand"];
|
@@ -219,15 +219,15 @@ ColumnStackPlugin.prototype.initialize = function (host, options) {
|
|
219
219
|
}
|
220
220
|
}
|
221
221
|
|
222
|
-
|
222
|
+
let opt = options["columnStack"];
|
223
223
|
if(opt && this._hosts.length === 1) {
|
224
|
-
|
224
|
+
let menuElement = opt["menuElement"];
|
225
225
|
if(menuElement && typeof menuElement === "object" && menuElement.nodeType === 1) {
|
226
226
|
menuElement.addEventListener("item-trigger", this._onMenuItemClicked);
|
227
227
|
this._menuElement = menuElement;
|
228
228
|
}
|
229
229
|
|
230
|
-
|
230
|
+
let menuItemClicked = opt["menuItemClicked"];
|
231
231
|
if(typeof menuItemClicked === "function") {
|
232
232
|
this._menuItemClicked = menuItemClicked;
|
233
233
|
}
|
@@ -253,7 +253,7 @@ ColumnStackPlugin.prototype.initialize = function (host, options) {
|
|
253
253
|
* @param {Object} host core grid object
|
254
254
|
*/
|
255
255
|
ColumnStackPlugin.prototype.unload = function (host) {
|
256
|
-
|
256
|
+
let at = this._hosts.indexOf(host);
|
257
257
|
if(at < 0) { return; }
|
258
258
|
this._hosts.splice(at, 1);
|
259
259
|
|
@@ -311,7 +311,7 @@ ColumnStackPlugin._styles = prettifyCss([
|
|
311
311
|
* @param {Object} grid core grid object
|
312
312
|
*/
|
313
313
|
ColumnStackPlugin._applyThemeColor = function(grid) {
|
314
|
-
if
|
314
|
+
if(!grid._columnStackingStyles) {
|
315
315
|
grid._columnStackingStyles = true;
|
316
316
|
injectCss(ColumnStackPlugin._styles, grid.getElement());
|
317
317
|
}
|
@@ -323,19 +323,19 @@ ColumnStackPlugin._applyThemeColor = function(grid) {
|
|
323
323
|
ColumnStackPlugin.prototype.config = function (options) {
|
324
324
|
if(!options) { return; }
|
325
325
|
|
326
|
-
|
326
|
+
let columns = options["columns"];
|
327
327
|
if(!columns) {
|
328
328
|
columns = [];
|
329
329
|
}
|
330
330
|
|
331
|
-
|
332
|
-
|
331
|
+
let i;
|
332
|
+
let colCount = columns.length;
|
333
333
|
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
334
|
+
let columnStack = options.columnStack;
|
335
|
+
let stackId = "";
|
336
|
+
let stacks = {};
|
337
|
+
let hasStack = false;
|
338
|
+
let stackConfig = null;
|
339
339
|
if(columnStack) {
|
340
340
|
this.addListener(columnStack, "clicked");
|
341
341
|
this._usingField = false;
|
@@ -351,9 +351,9 @@ ColumnStackPlugin.prototype.config = function (options) {
|
|
351
351
|
collapsed: columnStack.collapsed !== false,
|
352
352
|
fields: columnStack.fields
|
353
353
|
};
|
354
|
-
} else if
|
354
|
+
} else if(columnStack.stacks && columnStack.stacks.length) {
|
355
355
|
hasStack = true;
|
356
|
-
|
356
|
+
let stackLen = columnStack.stacks.length;
|
357
357
|
for(i = 0; i < stackLen; i++){
|
358
358
|
stackConfig = columnStack.stacks[i];
|
359
359
|
stackId = stackConfig.id || this._generateStackId();
|
@@ -370,16 +370,16 @@ ColumnStackPlugin.prototype.config = function (options) {
|
|
370
370
|
|
371
371
|
if(!hasStack) {
|
372
372
|
for(i = 0; i < colCount; ++i) {
|
373
|
-
|
374
|
-
|
373
|
+
let column = columns[i];
|
374
|
+
let stackOpt = column["stackId"] || column["stack"];
|
375
375
|
if(!stackOpt) {
|
376
376
|
continue;
|
377
377
|
}
|
378
378
|
|
379
379
|
stackId = "";
|
380
|
-
|
381
|
-
|
382
|
-
|
380
|
+
let spreading = false;
|
381
|
+
let collapsed = true;
|
382
|
+
let activeColumn = "";
|
383
383
|
if(typeof stackOpt === "string") {
|
384
384
|
stackId = stackOpt;
|
385
385
|
} else if(typeof stackOpt === "object") {
|
@@ -423,10 +423,10 @@ ColumnStackPlugin.prototype.config = function (options) {
|
|
423
423
|
* @return {!Object}
|
424
424
|
*/
|
425
425
|
ColumnStackPlugin.prototype.getConfigObject = function (gridOptions) {
|
426
|
-
|
426
|
+
let obj = gridOptions || {};
|
427
427
|
|
428
428
|
// TODO: Handle the case where pendingStacks has not been applied
|
429
|
-
|
429
|
+
let stackOptions = this.getStacks();
|
430
430
|
|
431
431
|
if(stackOptions.length) {
|
432
432
|
obj.columnStack = {};
|
@@ -466,10 +466,10 @@ ColumnStackPlugin.prototype._toColumnId = function(colRef) {
|
|
466
466
|
ColumnStackPlugin.prototype._applyUserConfigs = function(stacks) {
|
467
467
|
if(stacks) {
|
468
468
|
this.removeAllStacks(false); // No UI update
|
469
|
-
for(
|
470
|
-
|
471
|
-
|
472
|
-
|
469
|
+
for(let stackId in stacks) {
|
470
|
+
let stack = stacks[stackId];
|
471
|
+
let children = stack.children;
|
472
|
+
let fields = stack.fields;
|
473
473
|
if(fields) { // Convert all fields and indices to column Ids
|
474
474
|
this._usingField = true;
|
475
475
|
children = fields; // override children with fields
|
@@ -487,7 +487,7 @@ ColumnStackPlugin.prototype._applyUserConfigs = function(stacks) {
|
|
487
487
|
*/
|
488
488
|
ColumnStackPlugin.prototype._getColumnStackOptions = function(colIndex) {
|
489
489
|
if(colIndex >= 0 && colIndex < this.getColumnCount()) {
|
490
|
-
|
490
|
+
let colId = this.getColumnId(colIndex);
|
491
491
|
return this._groupDefs.getParentGroup(colId) || null;
|
492
492
|
}
|
493
493
|
return null;
|
@@ -496,7 +496,7 @@ ColumnStackPlugin.prototype._getColumnStackOptions = function(colIndex) {
|
|
496
496
|
* @return {!Array.<number>} Sorted column indices
|
497
497
|
*/
|
498
498
|
ColumnStackPlugin.prototype._getSelectedColumns = function() {
|
499
|
-
|
499
|
+
let csp = this._getPlugin("ColumnSelectionPlugin");
|
500
500
|
return (csp && csp.isEnabled()) ? csp.getSelectedColumns() : [];
|
501
501
|
};
|
502
502
|
/** Hide the specified column to prevent it from flashing when it is added as a member of the stack
|
@@ -510,8 +510,8 @@ ColumnStackPlugin.prototype._hideStackedColumns = function(stack, colRefs, activ
|
|
510
510
|
return; // In spreading mode, columns in an expanded stack don't need to be hidden
|
511
511
|
}
|
512
512
|
// WARNING: activeIndex may not be valid
|
513
|
-
|
514
|
-
|
513
|
+
let activeIndex = (typeof activeRef === "number") ? activeRef : this.getColumnIndex(stack.activeColumn);
|
514
|
+
let colIndices = null;
|
515
515
|
if(typeof colRefs === "number") {
|
516
516
|
colIndices = [colRefs];
|
517
517
|
} else if(colIndices == null) {
|
@@ -519,9 +519,9 @@ ColumnStackPlugin.prototype._hideStackedColumns = function(stack, colRefs, activ
|
|
519
519
|
} else {
|
520
520
|
colIndices = colRefs;
|
521
521
|
}
|
522
|
-
|
523
|
-
for(
|
524
|
-
|
522
|
+
let validCount = colIndices.length;
|
523
|
+
for(let i = 0; i < validCount; ++i) {
|
524
|
+
let colIndex = colIndices[i];
|
525
525
|
if(colIndex !== activeIndex) {
|
526
526
|
this._setColumnVisibility(colIndex, false); // Hide a column
|
527
527
|
}
|
@@ -533,8 +533,8 @@ ColumnStackPlugin.prototype._hideStackedColumns = function(stack, colRefs, activ
|
|
533
533
|
*/
|
534
534
|
ColumnStackPlugin.prototype._setColumnVisibility = function(colIndex, shown) {
|
535
535
|
if(colIndex >= 0) {
|
536
|
-
|
537
|
-
for(
|
536
|
+
let dirty = false;
|
537
|
+
for(let g = this._hosts.length; --g >= 0;) {
|
538
538
|
dirty |= this._hosts[g].setColumnVisibility(colIndex, shown, 2);
|
539
539
|
}
|
540
540
|
|
@@ -548,7 +548,7 @@ ColumnStackPlugin.prototype._requestFilterRefresh = function() {
|
|
548
548
|
if(this._filterConflator.conflate()) {
|
549
549
|
return;
|
550
550
|
}
|
551
|
-
|
551
|
+
let rfp = this._getPlugin("RowFilteringPlugin");
|
552
552
|
if(rfp && rfp["refresh"]) {
|
553
553
|
rfp["refresh"]();
|
554
554
|
}
|
@@ -557,7 +557,7 @@ ColumnStackPlugin.prototype._requestFilterRefresh = function() {
|
|
557
557
|
* @param {Array} colRefs Array of column index, id, or field
|
558
558
|
*/
|
559
559
|
ColumnStackPlugin.prototype._moveStackedColumns = function (colRefs) {
|
560
|
-
|
560
|
+
let colIndices = this.getColumnIndices(colRefs);
|
561
561
|
if(colIndices.length > 1) {
|
562
562
|
this.reorderColumns(colIndices, colIndices[0]);
|
563
563
|
}
|
@@ -575,19 +575,19 @@ ColumnStackPlugin.prototype._isIconAvailable = function() {
|
|
575
575
|
* @param {Object} stackOpt
|
576
576
|
*/
|
577
577
|
ColumnStackPlugin.prototype._updateIcon = function(colIndex, stackOpt) {
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
for(
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
578
|
+
let spreading = (stackOpt) ? stackOpt.spreading : false;
|
579
|
+
let gridCount = this._hosts.length;
|
580
|
+
|
581
|
+
for(let g = 0; g < gridCount; ++g) {
|
582
|
+
let host = this._hosts[g];
|
583
|
+
let tSect = host.getSection("title");
|
584
|
+
let rowCount = tSect.getRowCount();
|
585
|
+
let cell = tSect.getCell(colIndex, rowCount - 1, true);
|
586
586
|
if(!cell) { continue; }
|
587
587
|
|
588
|
-
|
588
|
+
let stackIcon = cell._stackIcon;
|
589
589
|
if(stackOpt) {
|
590
|
-
|
590
|
+
let activeStackedColumn = this.isActiveStackedColumn(colIndex);
|
591
591
|
if(!stackIcon && activeStackedColumn) {
|
592
592
|
if(spreading) {
|
593
593
|
cell.addClass("grouping");
|
@@ -647,15 +647,15 @@ ColumnStackPlugin.prototype._updateUI = function() {
|
|
647
647
|
}
|
648
648
|
|
649
649
|
this._updating = true;
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
for(
|
650
|
+
let colCount = this.getColumnCount();
|
651
|
+
let gridCount = this._hosts.length;
|
652
|
+
let stackOpt, spreading;
|
653
|
+
for(let c = 0; c < colCount; ++c) {
|
654
654
|
stackOpt = this._getColumnStackOptions(c);
|
655
655
|
spreading = (stackOpt) ? stackOpt.spreading : false;
|
656
656
|
spreading = spreading === true;
|
657
|
-
for(
|
658
|
-
|
657
|
+
for(let g = 0; g < gridCount; ++g) {
|
658
|
+
let host = this._hosts[g];
|
659
659
|
host.enableColumnClass(c, "grouped", spreading);
|
660
660
|
}
|
661
661
|
|
@@ -681,20 +681,20 @@ ColumnStackPlugin.prototype._forceUpdateUI = function() {
|
|
681
681
|
* @param {boolean} collapsed
|
682
682
|
*/
|
683
683
|
ColumnStackPlugin.prototype._collapseMember = function(colIndex, collapsed) {
|
684
|
-
|
684
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
685
685
|
if(!stackOpt) {
|
686
686
|
return;
|
687
687
|
}
|
688
688
|
|
689
|
-
for
|
690
|
-
|
689
|
+
for(let i = this._hosts.length; --i >= 0;) {
|
690
|
+
let host = this._hosts[i];
|
691
691
|
host.enableColumnClass(colIndex, "collapsed", collapsed);
|
692
692
|
|
693
693
|
if(this.isActiveStackedColumn(colIndex)) {
|
694
694
|
host.setColumnVisibility(colIndex, true, 2);
|
695
|
-
|
696
|
-
|
697
|
-
|
695
|
+
let tSect = host.getSection("title");
|
696
|
+
let rowCount = tSect.getRowCount();
|
697
|
+
let cell = tSect.getCell(colIndex, rowCount - 1, true);
|
698
698
|
if(collapsed) {
|
699
699
|
if(stackOpt.collapsed !== collapsed || !stackOpt._origWidth) { // Prevent from getting width while column is collapsed
|
700
700
|
stackOpt._origWidth = this._getColumnWidth(host, colIndex);
|
@@ -738,8 +738,8 @@ ColumnStackPlugin.prototype._collapseMember = function(colIndex, collapsed) {
|
|
738
738
|
*/
|
739
739
|
ColumnStackPlugin.prototype._getColumnWidth = function(host, colIndex) {
|
740
740
|
if(host) {
|
741
|
-
|
742
|
-
|
741
|
+
let min = host.getMinimumColumnWidth(colIndex);
|
742
|
+
let size = host.getColumnCustomLaneSize(colIndex);
|
743
743
|
return (size < min) ? min : size; // Column width cannot be smaller than min
|
744
744
|
}
|
745
745
|
return NaN;
|
@@ -749,7 +749,7 @@ ColumnStackPlugin.prototype._getColumnWidth = function(host, colIndex) {
|
|
749
749
|
* @return {Array.<number>} Null if there is no column data
|
750
750
|
*/
|
751
751
|
ColumnStackPlugin.prototype.getMemberIndices = function(colIndex) {
|
752
|
-
|
752
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
753
753
|
if(stackOpt) {
|
754
754
|
return this.getColumnIndices(stackOpt.children);
|
755
755
|
}
|
@@ -761,7 +761,7 @@ ColumnStackPlugin.prototype.getMemberIndices = function(colIndex) {
|
|
761
761
|
* @return {Array.<number>} Null if it is non-grouped column
|
762
762
|
*/
|
763
763
|
ColumnStackPlugin.prototype.collapseGroup = function(colIndex, collapsed) {
|
764
|
-
|
764
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
765
765
|
if(!stackOpt) {
|
766
766
|
return null;
|
767
767
|
}
|
@@ -771,9 +771,9 @@ ColumnStackPlugin.prototype.collapseGroup = function(colIndex, collapsed) {
|
|
771
771
|
|
772
772
|
collapsed = collapsed !== false;
|
773
773
|
if(stackOpt.collapsed !== collapsed) {
|
774
|
-
|
774
|
+
let groupMembers = this.getColumnIndices(stackOpt.children);
|
775
775
|
if(groupMembers) {
|
776
|
-
for(
|
776
|
+
for(let j = groupMembers.length; --j >= 0;) {
|
777
777
|
this._collapseMember(groupMembers[j], collapsed);
|
778
778
|
}
|
779
779
|
stackOpt.collapsed = collapsed;
|
@@ -799,8 +799,8 @@ ColumnStackPlugin.prototype.isColumnStackable = function(colIndices) {
|
|
799
799
|
if(!colIndices) {
|
800
800
|
return false;
|
801
801
|
}
|
802
|
-
|
803
|
-
for(
|
802
|
+
let len = colIndices.length;
|
803
|
+
for(let i = 0; i < len; ++i) {
|
804
804
|
if(this._getColumnStackOptions(colIndices[i])) {
|
805
805
|
return false;
|
806
806
|
}
|
@@ -816,8 +816,8 @@ ColumnStackPlugin.prototype.isColumnStacked = function(colIndices) {
|
|
816
816
|
if(!colIndices) {
|
817
817
|
colIndices = this._getSelectedColumns();
|
818
818
|
}
|
819
|
-
|
820
|
-
for(
|
819
|
+
let len = colIndices.length;
|
820
|
+
for(let i = 0; i < len; ++i) {
|
821
821
|
if(this._getColumnStackOptions(colIndices[i])) {
|
822
822
|
return true;
|
823
823
|
}
|
@@ -831,7 +831,7 @@ ColumnStackPlugin.prototype.isColumnStacked = function(colIndices) {
|
|
831
831
|
* @see {@link ColumnStackPlugin#isColumnActive}
|
832
832
|
*/
|
833
833
|
ColumnStackPlugin.prototype.isInactiveStackedColumn = function(colIndex) {
|
834
|
-
|
834
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
835
835
|
if(stackOpt) {
|
836
836
|
return !this._isActiveStackedColumn(colIndex, stackOpt);
|
837
837
|
}
|
@@ -865,7 +865,7 @@ ColumnStackPlugin.prototype._isActiveStackedColumn = function(colIndex, stackOpt
|
|
865
865
|
* @return {boolean}
|
866
866
|
*/
|
867
867
|
ColumnStackPlugin.prototype.isStackingMode = function(colIndex) {
|
868
|
-
|
868
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
869
869
|
if(stackOpt) {
|
870
870
|
return stackOpt.spreading !== true;
|
871
871
|
}
|
@@ -876,7 +876,7 @@ ColumnStackPlugin.prototype.isStackingMode = function(colIndex) {
|
|
876
876
|
* @return {boolean}
|
877
877
|
*/
|
878
878
|
ColumnStackPlugin.prototype.isCollapsingMode = function(colIndex) {
|
879
|
-
|
879
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
880
880
|
if(stackOpt) {
|
881
881
|
return stackOpt.spreading === true;
|
882
882
|
}
|
@@ -902,7 +902,7 @@ ColumnStackPlugin.prototype.isInCollection = ColumnStackPlugin.prototype.isColum
|
|
902
902
|
* @return {boolean}
|
903
903
|
*/
|
904
904
|
ColumnStackPlugin.prototype.isColumnCollapsed = function(colIndex) {
|
905
|
-
|
905
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
906
906
|
if(stackOpt) {
|
907
907
|
return (stackOpt.spreading === true) && (stackOpt.collapsed === true);
|
908
908
|
}
|
@@ -913,7 +913,7 @@ ColumnStackPlugin.prototype.isColumnCollapsed = function(colIndex) {
|
|
913
913
|
* @return {boolean}
|
914
914
|
*/
|
915
915
|
ColumnStackPlugin.prototype.isColumnActive = function(colIndex) {
|
916
|
-
|
916
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
917
917
|
if(stackOpt) {
|
918
918
|
if(stackOpt.spreading) {
|
919
919
|
if(!stackOpt.collapsed) {
|
@@ -933,9 +933,9 @@ ColumnStackPlugin.prototype.isColumnActive = function(colIndex) {
|
|
933
933
|
* @return {string}
|
934
934
|
*/
|
935
935
|
ColumnStackPlugin.prototype.getStackId = function(colRef) {
|
936
|
-
|
936
|
+
let colIndex = (typeof colRef === "number") ? colRef : this.getColumnIndex(colRef);
|
937
937
|
if(colIndex >= 0) {
|
938
|
-
|
938
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
939
939
|
if(stackOpt) {
|
940
940
|
return stackOpt.id || "";
|
941
941
|
}
|
@@ -949,8 +949,8 @@ ColumnStackPlugin.prototype.getStackId = function(colRef) {
|
|
949
949
|
* @return {boolean} Return true if there is any change.
|
950
950
|
*/
|
951
951
|
ColumnStackPlugin.prototype.stackColumns = function(colRefs, stackId, options) {
|
952
|
-
|
953
|
-
|
952
|
+
let updateRequired = false;
|
953
|
+
let sid = stackId;
|
954
954
|
if(sid) {
|
955
955
|
if(this._removeStack(sid)) {
|
956
956
|
// TODO: pinning state are removed and may need to be kept
|
@@ -964,7 +964,7 @@ ColumnStackPlugin.prototype.stackColumns = function(colRefs, stackId, options) {
|
|
964
964
|
colRefs = this._getSelectedColumns();
|
965
965
|
}
|
966
966
|
|
967
|
-
|
967
|
+
let refCount = colRefs ? colRefs.length : 0;
|
968
968
|
if(refCount < 2) {
|
969
969
|
if(updateRequired) {
|
970
970
|
this._updateUI();
|
@@ -976,11 +976,11 @@ ColumnStackPlugin.prototype.stackColumns = function(colRefs, stackId, options) {
|
|
976
976
|
options = {};
|
977
977
|
}
|
978
978
|
// Clone user data
|
979
|
-
|
980
|
-
|
981
|
-
|
979
|
+
let isSpreading = options.spreading === true;
|
980
|
+
let isCollapsed = options.collapsed !== false;
|
981
|
+
let activeColumn = options.activeColumn || ""; // field or id
|
982
982
|
// WARNING: fields property in user option is ignored
|
983
|
-
|
983
|
+
let stack = {};
|
984
984
|
stack.id = sid;
|
985
985
|
stack.name = options.name || "";
|
986
986
|
stack.spreading = isSpreading;
|
@@ -989,7 +989,7 @@ ColumnStackPlugin.prototype.stackColumns = function(colRefs, stackId, options) {
|
|
989
989
|
|
990
990
|
// If grid is not initialized, add setting to pending stacks
|
991
991
|
if(!this._initializedGrid) {
|
992
|
-
|
992
|
+
let pendingStacks = this._pendingStacks;
|
993
993
|
if(!pendingStacks) {
|
994
994
|
pendingStacks = this._pendingStacks = {};
|
995
995
|
}
|
@@ -998,7 +998,7 @@ ColumnStackPlugin.prototype.stackColumns = function(colRefs, stackId, options) {
|
|
998
998
|
return false;
|
999
999
|
}
|
1000
1000
|
|
1001
|
-
|
1001
|
+
let colIndices = this.getColumnIndices(colRefs); // WARNING: Invalid columns are filtered out
|
1002
1002
|
|
1003
1003
|
// Prevent columns already in a stack from moving out to another stack
|
1004
1004
|
if(!this.isColumnStackable(colIndices)) {
|
@@ -1009,10 +1009,10 @@ ColumnStackPlugin.prototype.stackColumns = function(colRefs, stackId, options) {
|
|
1009
1009
|
}
|
1010
1010
|
|
1011
1011
|
// WARNING: Invalid columns are filtered out
|
1012
|
-
|
1012
|
+
let children = colIndices.map(this._toColumnId); // All fields and indices from colRefs will be converted to column Ids
|
1013
1013
|
stack.children = children; // Note: children property now contains only valid column ids
|
1014
1014
|
|
1015
|
-
|
1015
|
+
let activeIndex = -1;
|
1016
1016
|
if(activeColumn && typeof activeColumn === "string") {
|
1017
1017
|
activeIndex = this.getColumnIndex(activeColumn);
|
1018
1018
|
stack.activeColumn = activeColumn = this.getColumnId(activeIndex); // Convert field or invalid column id to a valid id
|
@@ -1031,13 +1031,13 @@ ColumnStackPlugin.prototype.stackColumns = function(colRefs, stackId, options) {
|
|
1031
1031
|
this.reorderColumns(colIndices, colIndices[0]);
|
1032
1032
|
|
1033
1033
|
// Update column selection
|
1034
|
-
|
1034
|
+
let validCount = colIndices.length;
|
1035
1035
|
if(!isSpreading) {
|
1036
|
-
|
1036
|
+
let csp = this._getPlugin("ColumnSelectionPlugin");
|
1037
1037
|
if(csp && csp.isEnabled()){
|
1038
|
-
|
1039
|
-
for(
|
1040
|
-
|
1038
|
+
let stackSelection = false;
|
1039
|
+
for(let i = 0; i < validCount; ++i){
|
1040
|
+
let colIndex = colIndices[i];
|
1041
1041
|
if(colIndex === activeIndex){
|
1042
1042
|
continue;
|
1043
1043
|
}
|
@@ -1070,32 +1070,32 @@ ColumnStackPlugin.prototype._verifyColumnPinning = function(stack) {
|
|
1070
1070
|
stack.leftPinned = false;
|
1071
1071
|
stack.rightPinned = false;
|
1072
1072
|
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1073
|
+
let host = this._hosts[0];
|
1074
|
+
let leftPinnedIndex = host.getFrozenColumnCount() - 1;
|
1075
|
+
let rightPinnedIndex = host.getFirstPinnedRightIndex();
|
1076
|
+
let colCount = this.getColumnCount();
|
1077
1077
|
|
1078
|
-
if
|
1078
|
+
if(leftPinnedIndex < 0 && rightPinnedIndex === colCount) {
|
1079
1079
|
return;
|
1080
1080
|
}
|
1081
1081
|
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
for
|
1086
|
-
|
1087
|
-
if
|
1088
|
-
if
|
1082
|
+
let colIndices = this.getColumnIndices(stack.children);
|
1083
|
+
let min = colIndices[0];
|
1084
|
+
let max = colIndices[0];
|
1085
|
+
for(let i = 1; i < colIndices.length; i++) {
|
1086
|
+
let colIndex = colIndices[i];
|
1087
|
+
if(colIndex > max) { max = colIndex; }
|
1088
|
+
if(colIndex < min) { min = colIndex; }
|
1089
1089
|
}
|
1090
1090
|
|
1091
|
-
if
|
1091
|
+
if(min <= leftPinnedIndex) {
|
1092
1092
|
stack.leftPinned = true;
|
1093
|
-
if
|
1093
|
+
if(max > leftPinnedIndex) {
|
1094
1094
|
this._freezeColumn(max, colCount - rightPinnedIndex);
|
1095
1095
|
}
|
1096
|
-
} else if
|
1096
|
+
} else if(max >= rightPinnedIndex) {
|
1097
1097
|
stack.rightPinned = true;
|
1098
|
-
if
|
1098
|
+
if(min < rightPinnedIndex) {
|
1099
1099
|
this._freezeColumn(leftPinnedIndex, colCount - min);
|
1100
1100
|
}
|
1101
1101
|
}
|
@@ -1106,8 +1106,8 @@ ColumnStackPlugin.prototype._verifyColumnPinning = function(stack) {
|
|
1106
1106
|
* @param {number=} numRightColumn
|
1107
1107
|
*/
|
1108
1108
|
ColumnStackPlugin.prototype._freezeColumn = function(frozenColIndex, numRightColumn) {
|
1109
|
-
|
1110
|
-
for
|
1109
|
+
let hosts = this._hosts;
|
1110
|
+
for(let i = 0; i < hosts.length; i++) {
|
1111
1111
|
hosts[i].freezeColumn(frozenColIndex, numRightColumn);
|
1112
1112
|
}
|
1113
1113
|
};
|
@@ -1121,7 +1121,7 @@ ColumnStackPlugin.prototype._freezeColumn = function(frozenColIndex, numRightCol
|
|
1121
1121
|
ColumnStackPlugin.prototype.setStack = function(colRefs, activeColRef) {
|
1122
1122
|
this.removeAllStacks();
|
1123
1123
|
|
1124
|
-
|
1124
|
+
let stackOptions = {};
|
1125
1125
|
if(activeColRef) {
|
1126
1126
|
stackOptions.activeColumn = activeColRef;
|
1127
1127
|
}
|
@@ -1137,9 +1137,9 @@ ColumnStackPlugin.prototype.setStack = function(colRefs, activeColRef) {
|
|
1137
1137
|
ColumnStackPlugin.prototype.setStacks = function(stacks) {
|
1138
1138
|
this.removeAllStacks();
|
1139
1139
|
|
1140
|
-
|
1141
|
-
for(
|
1142
|
-
|
1140
|
+
let stackCount = stacks ? stacks.length : 0;
|
1141
|
+
for(let i = 0; i < stackCount; ++i) {
|
1142
|
+
let stack = stacks[i];
|
1143
1143
|
if(stack) {
|
1144
1144
|
if(stack.children) {
|
1145
1145
|
this.stackColumns(stack.children, stack.id, stack);
|
@@ -1152,35 +1152,35 @@ ColumnStackPlugin.prototype.setStacks = function(stacks) {
|
|
1152
1152
|
* @return {!Array.<ColumnStackPlugin~StackDefinition>} Array of stack definition objects
|
1153
1153
|
*/
|
1154
1154
|
ColumnStackPlugin.prototype.getStacks = function() {
|
1155
|
-
|
1156
|
-
|
1155
|
+
let stacks = this._groupDefs.getGroupMap();
|
1156
|
+
let stackOptions = [];
|
1157
1157
|
|
1158
|
-
for
|
1159
|
-
|
1160
|
-
|
1158
|
+
for(let stackKey in stacks) {
|
1159
|
+
let stackOption = stacks[stackKey];
|
1160
|
+
let stackId = stackOption.id;
|
1161
1161
|
|
1162
|
-
|
1162
|
+
let stackConfigObj = {
|
1163
1163
|
id: stackId
|
1164
1164
|
};
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1165
|
+
let name = stackOption.name;
|
1166
|
+
let collapsed = stackOption.collapsed;
|
1167
|
+
let spreading = stackOption.spreading;
|
1168
1168
|
|
1169
|
-
if
|
1169
|
+
if(name) {
|
1170
1170
|
stackConfigObj.name = name;
|
1171
1171
|
}
|
1172
|
-
if
|
1172
|
+
if(collapsed !== true) {
|
1173
1173
|
stackConfigObj.collapsed = collapsed;
|
1174
1174
|
}
|
1175
|
-
if
|
1175
|
+
if(spreading !== false) {
|
1176
1176
|
stackConfigObj.spreading = spreading;
|
1177
1177
|
}
|
1178
1178
|
|
1179
|
-
if
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
for(
|
1179
|
+
if(this._usingField) {
|
1180
|
+
let colIndices = this.getStackMemberIndices(stackId);
|
1181
|
+
let memberCount = colIndices.length;
|
1182
|
+
let fields = new Array(memberCount);
|
1183
|
+
for(let i = 0; i < memberCount; ++i) {
|
1184
1184
|
fields[i] = this.getColumnField(colIndices[i]);
|
1185
1185
|
}
|
1186
1186
|
stackConfigObj.fields = fields;
|
@@ -1205,11 +1205,11 @@ ColumnStackPlugin.prototype.unstackColumns = function(colIndices) {
|
|
1205
1205
|
colIndices = this._getSelectedColumns();
|
1206
1206
|
}
|
1207
1207
|
|
1208
|
-
|
1209
|
-
|
1210
|
-
for(
|
1211
|
-
|
1212
|
-
|
1208
|
+
let dirty = false;
|
1209
|
+
let len = colIndices.length;
|
1210
|
+
for(let i = 0; i < len; ++i) {
|
1211
|
+
let colIndex = colIndices[i];
|
1212
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
1213
1213
|
if(stackOpt) {
|
1214
1214
|
dirty = true;
|
1215
1215
|
this._removeStack(stackOpt.id);
|
@@ -1226,15 +1226,15 @@ ColumnStackPlugin.prototype.unstackColumns = function(colIndices) {
|
|
1226
1226
|
* @return {boolean} Returns true if there is any change
|
1227
1227
|
*/
|
1228
1228
|
ColumnStackPlugin.prototype._removeStack = function(stackId) {
|
1229
|
-
|
1229
|
+
let stack = this._groupDefs.getGroup(stackId);
|
1230
1230
|
if(!stack) {
|
1231
1231
|
return false;
|
1232
1232
|
}
|
1233
1233
|
|
1234
|
-
|
1235
|
-
|
1236
|
-
for(
|
1237
|
-
|
1234
|
+
let colIndices = this.getColumnIndices(stack.children);
|
1235
|
+
let len = colIndices.length;
|
1236
|
+
for(let i = 0; i < len; ++i) {
|
1237
|
+
let colIndex = colIndices[i]; // colIndex is guaranteed to be positive (verified)
|
1238
1238
|
if(stack.spreading && stack.collapsed) {
|
1239
1239
|
this._collapseMember(colIndex, false);
|
1240
1240
|
}
|
@@ -1260,10 +1260,10 @@ ColumnStackPlugin.prototype.removeStack = function(stackId) {
|
|
1260
1260
|
* @return {boolean} true if at least one stacking removed
|
1261
1261
|
*/
|
1262
1262
|
ColumnStackPlugin.prototype.removeAllStacks = function(enableUpdateUI) {
|
1263
|
-
|
1264
|
-
|
1263
|
+
let groupIds = this._groupDefs.getGroupIds();
|
1264
|
+
let groupCount = groupIds.length;
|
1265
1265
|
if(groupCount) {
|
1266
|
-
for(
|
1266
|
+
for(let i = 0; i < groupCount; ++i) {
|
1267
1267
|
this._removeStack(groupIds[i]);
|
1268
1268
|
}
|
1269
1269
|
this._groupDefs.removeAllGroups(); // TODO: May not necessary
|
@@ -1280,22 +1280,22 @@ ColumnStackPlugin.prototype.removeAllStacks = function(enableUpdateUI) {
|
|
1280
1280
|
* @return {boolean}
|
1281
1281
|
*/
|
1282
1282
|
ColumnStackPlugin.prototype.setActiveColumn = function(activeColumn) {
|
1283
|
-
|
1283
|
+
let colIndex = this.getColumnIndex(activeColumn);
|
1284
1284
|
if(colIndex < 0) {
|
1285
1285
|
return false;
|
1286
1286
|
}
|
1287
|
-
|
1287
|
+
let colCount = this.getColumnCount();
|
1288
1288
|
if(colIndex >= colCount) {
|
1289
1289
|
return false;
|
1290
1290
|
}
|
1291
1291
|
|
1292
|
-
|
1293
|
-
|
1292
|
+
let colId = this.getColumnId(colIndex);
|
1293
|
+
let stack = this._groupDefs.getParentGroup(colId);
|
1294
1294
|
if(!stack) {
|
1295
1295
|
return false;
|
1296
1296
|
}
|
1297
|
-
|
1298
|
-
|
1297
|
+
let chdr = stack.children;
|
1298
|
+
let memberIndex = chdr.indexOf(colId);
|
1299
1299
|
if(memberIndex < 0) {
|
1300
1300
|
return false;
|
1301
1301
|
}
|
@@ -1309,13 +1309,13 @@ ColumnStackPlugin.prototype.setActiveColumn = function(activeColumn) {
|
|
1309
1309
|
* @see {@link ColumnStackPlugin#setActiveColumn}
|
1310
1310
|
*/
|
1311
1311
|
ColumnStackPlugin.prototype.swapColumn = function(colRef, swappingIndex) {
|
1312
|
-
|
1312
|
+
let colIndex = (typeof colRef === "number") ? colRef : this.getColumnIndex(colRef);
|
1313
1313
|
|
1314
|
-
|
1314
|
+
let stackOpt = this._getColumnStackOptions(colIndex);
|
1315
1315
|
if(!stackOpt) {
|
1316
1316
|
return false; // Invalid column index
|
1317
1317
|
}
|
1318
|
-
|
1318
|
+
let children = stackOpt.children;
|
1319
1319
|
if(!children) {
|
1320
1320
|
return false; // Invalid column type
|
1321
1321
|
}
|
@@ -1335,8 +1335,8 @@ ColumnStackPlugin.prototype._setActiveColumn = function(stack, newActiveColumn)
|
|
1335
1335
|
return false; // The given index is already active stacked column
|
1336
1336
|
}
|
1337
1337
|
|
1338
|
-
|
1339
|
-
|
1338
|
+
let prevActiveColumnIndex = this.getColumnIndex(stack.activeColumn);
|
1339
|
+
let newActiveColumnIndex = this.getColumnIndex(newActiveColumn);
|
1340
1340
|
stack.activeColumn = newActiveColumn; // Change active column
|
1341
1341
|
|
1342
1342
|
this._setColumnVisibility(newActiveColumnIndex, true);
|
@@ -1345,7 +1345,7 @@ ColumnStackPlugin.prototype._setActiveColumn = function(stack, newActiveColumn)
|
|
1345
1345
|
this._updateIcon(prevActiveColumnIndex, stack);
|
1346
1346
|
this._updateIcon(newActiveColumnIndex, stack);
|
1347
1347
|
|
1348
|
-
|
1348
|
+
let csp = this._getPlugin("ColumnSelectionPlugin");
|
1349
1349
|
if(csp && csp.isEnabled()) {
|
1350
1350
|
csp.selectSingleColumn(newActiveColumnIndex);
|
1351
1351
|
if(csp.dispatchSelectionChanged) {
|
@@ -1359,7 +1359,7 @@ ColumnStackPlugin.prototype._setActiveColumn = function(stack, newActiveColumn)
|
|
1359
1359
|
* @param {Object} e
|
1360
1360
|
*/
|
1361
1361
|
ColumnStackPlugin.prototype._onPreSectionRender = function (e) {
|
1362
|
-
if
|
1362
|
+
if(e["sectionType"] !== "title") {
|
1363
1363
|
return;
|
1364
1364
|
}
|
1365
1365
|
this._forceUpdateUI();
|
@@ -1372,14 +1372,14 @@ ColumnStackPlugin.prototype._onColumnRemoved = function (e) {
|
|
1372
1372
|
return;
|
1373
1373
|
}
|
1374
1374
|
|
1375
|
-
|
1376
|
-
|
1375
|
+
let colId = e.colId;
|
1376
|
+
let stackOpt = this._groupDefs.getParentGroup(colId);
|
1377
1377
|
|
1378
1378
|
if(!stackOpt) {
|
1379
1379
|
return;
|
1380
1380
|
}
|
1381
1381
|
// update members
|
1382
|
-
|
1382
|
+
let children = stackOpt.children;
|
1383
1383
|
if(children.length <= 2) {
|
1384
1384
|
this._removeStack(stackOpt.id);
|
1385
1385
|
this._updateUI();
|
@@ -1399,18 +1399,18 @@ ColumnStackPlugin.prototype._onColumnMoved = function (e) {
|
|
1399
1399
|
return; // during the reordering or resetting, there is no need to recalculate stacks
|
1400
1400
|
}
|
1401
1401
|
|
1402
|
-
|
1403
|
-
|
1404
|
-
|
1402
|
+
let toIndex = e.toColIndex;
|
1403
|
+
let colId = this.getColumnId(toIndex);
|
1404
|
+
let stackOpt = this._groupDefs.getParentGroup(colId);
|
1405
1405
|
if(!stackOpt) {
|
1406
1406
|
return;
|
1407
1407
|
}
|
1408
1408
|
|
1409
|
-
|
1410
|
-
|
1409
|
+
let leftStackOpt = this._getColumnStackOptions(toIndex - 1);
|
1410
|
+
let rightStackOpt = this._getColumnStackOptions(toIndex + 1);
|
1411
1411
|
|
1412
|
-
|
1413
|
-
|
1412
|
+
let stackChange = true;
|
1413
|
+
let dirty = false;
|
1414
1414
|
if(stackOpt) {
|
1415
1415
|
// The move was within the same stack
|
1416
1416
|
if(stackOpt === leftStackOpt || stackOpt === rightStackOpt) {
|
@@ -1446,8 +1446,8 @@ ColumnStackPlugin.prototype._onColumnAdded = function (e) {
|
|
1446
1446
|
return;
|
1447
1447
|
}
|
1448
1448
|
|
1449
|
-
|
1450
|
-
|
1449
|
+
let colIndex = e.colIndex;
|
1450
|
+
let stackOpt = this._isWithinStack(colIndex);
|
1451
1451
|
if(stackOpt) {
|
1452
1452
|
if(this._addRefToStack(stackOpt, colIndex)) {
|
1453
1453
|
this._updateUI();
|
@@ -1468,7 +1468,7 @@ ColumnStackPlugin.prototype._onBeforeBatchOperation = function (e) {
|
|
1468
1468
|
* @param {Object} e
|
1469
1469
|
*/
|
1470
1470
|
ColumnStackPlugin.prototype._onAfterBatchOperation = function (e) {
|
1471
|
-
|
1471
|
+
let groups, groupCount, i, group;
|
1472
1472
|
if(e.batchType === "reset") {
|
1473
1473
|
this._inResetting = false;
|
1474
1474
|
|
@@ -1500,9 +1500,9 @@ ColumnStackPlugin.prototype._onAfterBatchOperation = function (e) {
|
|
1500
1500
|
* @return {Object} stackOption
|
1501
1501
|
*/
|
1502
1502
|
ColumnStackPlugin.prototype._isWithinStack = function (colIndex) {
|
1503
|
-
|
1503
|
+
let leftStackOpt = this._getColumnStackOptions(colIndex - 1);
|
1504
1504
|
if(leftStackOpt) {
|
1505
|
-
|
1505
|
+
let rightStackOpt = this._getColumnStackOptions(colIndex + 1);
|
1506
1506
|
if(leftStackOpt === rightStackOpt) {
|
1507
1507
|
return leftStackOpt;
|
1508
1508
|
}
|
@@ -1516,14 +1516,14 @@ ColumnStackPlugin.prototype._isWithinStack = function (colIndex) {
|
|
1516
1516
|
* @return {boolean}
|
1517
1517
|
*/
|
1518
1518
|
ColumnStackPlugin.prototype._addRefToStack = function (stackOption, colIndex) {
|
1519
|
-
|
1519
|
+
let colId = this._toColumnId(colIndex);
|
1520
1520
|
|
1521
1521
|
this._hideStackedColumns(stackOption, colIndex);
|
1522
1522
|
|
1523
1523
|
// Find a position to be placed in the stack
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1524
|
+
let rightColRef = this._toColumnId(colIndex + 1);
|
1525
|
+
let children = stackOption.children;
|
1526
|
+
let pos = children.indexOf(rightColRef); // WARNING This does not work for field
|
1527
1527
|
return this._groupDefs.addGroupChild(stackOption.id, colId, pos);
|
1528
1528
|
};
|
1529
1529
|
/** Remove unique ref of the specified index from the stack
|
@@ -1538,7 +1538,7 @@ ColumnStackPlugin.prototype._removeRefFromStack = function (stackOption, colId,
|
|
1538
1538
|
return false;
|
1539
1539
|
}
|
1540
1540
|
|
1541
|
-
|
1541
|
+
let isCollapsed = stackOption.spreading && stackOption.collapsed;
|
1542
1542
|
if(isCollapsed) {
|
1543
1543
|
this._collapseMember(colIndex, false);
|
1544
1544
|
} else {
|
@@ -1554,16 +1554,16 @@ ColumnStackPlugin.prototype._removeRefFromStack = function (stackOption, colId,
|
|
1554
1554
|
* @param {boolean=} validate Remove invalid members and stack
|
1555
1555
|
*/
|
1556
1556
|
ColumnStackPlugin.prototype._repositionMembers = function (stackOption, validate) {
|
1557
|
-
|
1558
|
-
|
1559
|
-
|
1560
|
-
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1564
|
-
for(
|
1565
|
-
|
1566
|
-
|
1557
|
+
let children = stackOption.children;
|
1558
|
+
let refCount = children ? children.length : 0;
|
1559
|
+
|
1560
|
+
let indexMap = {};
|
1561
|
+
let prevIndex = -1;
|
1562
|
+
let dirty = false;
|
1563
|
+
let hasInvalid = false;
|
1564
|
+
for(let i = 0; i < refCount; i++) {
|
1565
|
+
let colRef = children[i];
|
1566
|
+
let colIndex = this.getColumnIndex(colRef);
|
1567
1567
|
indexMap[colRef] = colIndex;
|
1568
1568
|
if(colIndex >= 0) {
|
1569
1569
|
if(colIndex < prevIndex) {
|
@@ -1601,32 +1601,32 @@ ColumnStackPlugin.prototype._repositionMembers = function (stackOption, validate
|
|
1601
1601
|
* @param {Object} e
|
1602
1602
|
*/
|
1603
1603
|
ColumnStackPlugin.prototype._onStackButtonClicked = function(e) {
|
1604
|
-
|
1604
|
+
let elem = e.currentTarget;
|
1605
1605
|
if(e.button) { // right click or middle click
|
1606
1606
|
return;
|
1607
1607
|
}
|
1608
1608
|
|
1609
|
-
|
1610
|
-
|
1611
|
-
|
1612
|
-
|
1609
|
+
let grid = this.getRelativeGrid(e);
|
1610
|
+
let pos = grid.getRelativePosition(e);
|
1611
|
+
let colIndex = pos["colIndex"];
|
1612
|
+
let colData = this._getColumnStackOptions(colIndex);
|
1613
1613
|
if(!colData) { return; }
|
1614
1614
|
|
1615
1615
|
e.stopPropagation();
|
1616
1616
|
|
1617
|
-
|
1618
|
-
|
1617
|
+
let children = colData.children;
|
1618
|
+
let colIndices = this.getColumnIndices(children);
|
1619
1619
|
if(colData.spreading) {
|
1620
|
-
|
1620
|
+
let collapsed = !colData.collapsed;
|
1621
1621
|
this.collapseGroup(colIndex, collapsed);
|
1622
1622
|
pos["menuData"] = null;
|
1623
1623
|
pos["activeIndex"] = -1;
|
1624
1624
|
pos["collapsed"] = collapsed;
|
1625
1625
|
} else {
|
1626
|
-
|
1627
|
-
|
1628
|
-
|
1629
|
-
for(
|
1626
|
+
let activeIndex = children.indexOf(colData.activeColumn);
|
1627
|
+
let len = children.length;
|
1628
|
+
let menuData = new Array(len);
|
1629
|
+
for(let i = len; --i >= 0;) {
|
1630
1630
|
menuData[i] = {
|
1631
1631
|
value: i,
|
1632
1632
|
selected: i === activeIndex,
|
@@ -1649,8 +1649,8 @@ ColumnStackPlugin.prototype._onStackButtonClicked = function(e) {
|
|
1649
1649
|
|
1650
1650
|
if(this._menuElement && !colData.spreading) {
|
1651
1651
|
// Populate stack member
|
1652
|
-
|
1653
|
-
|
1652
|
+
let button = pos.event.srcElement;
|
1653
|
+
let el = this._menuElement;
|
1654
1654
|
el.data = pos["menuData"];
|
1655
1655
|
el.positionTarget = button;
|
1656
1656
|
el.opened = true;
|
@@ -1662,9 +1662,9 @@ ColumnStackPlugin.prototype._onStackButtonClicked = function(e) {
|
|
1662
1662
|
*/
|
1663
1663
|
ColumnStackPlugin.prototype._onMenuItemClicked = function(e) {
|
1664
1664
|
if(e.detail) {
|
1665
|
-
|
1666
|
-
|
1667
|
-
|
1665
|
+
let selectedIndex = parseInt(e.detail.value, 0);
|
1666
|
+
let menuData = this._menuElement.data[selectedIndex];
|
1667
|
+
let colId = menuData.colId;
|
1668
1668
|
this.setActiveColumn(colId);
|
1669
1669
|
}
|
1670
1670
|
this._menuElement.opened = false;
|
@@ -1689,7 +1689,7 @@ ColumnStackPlugin.prototype.getStackMemberIndices = function(stackId) {
|
|
1689
1689
|
*/
|
1690
1690
|
ColumnStackPlugin.prototype.getStackMemberIds = function(stackId) { // WARNING: This does not filter out invalid members
|
1691
1691
|
if(stackId) {
|
1692
|
-
|
1692
|
+
let stack = this._groupDefs.getGroup(stackId);
|
1693
1693
|
if(stack){
|
1694
1694
|
return stack.children;
|
1695
1695
|
}
|
@@ -1706,9 +1706,9 @@ ColumnStackPlugin.prototype.getColumnIdsByIndex = function(colIndices) {
|
|
1706
1706
|
if(!Array.isArray(colIndices)){
|
1707
1707
|
colIndices = [colIndices];
|
1708
1708
|
}
|
1709
|
-
|
1710
|
-
|
1711
|
-
for(
|
1709
|
+
let colIds = [];
|
1710
|
+
let colId;
|
1711
|
+
for(let i = 0; i < colIndices.length; ++i) {
|
1712
1712
|
colId = this.getColumnId(colIndices[i]);
|
1713
1713
|
colIds.push(colId);
|
1714
1714
|
}
|
@@ -1724,9 +1724,9 @@ ColumnStackPlugin.prototype.getColumnIndicesByColumnIds = function(colIds) {
|
|
1724
1724
|
if(!Array.isArray(colIds)){
|
1725
1725
|
colIds = [colIds];
|
1726
1726
|
}
|
1727
|
-
|
1728
|
-
|
1729
|
-
for(
|
1727
|
+
let colIndices = [];
|
1728
|
+
let colIndex;
|
1729
|
+
for(let i = 0; i < colIds.length; ++i) {
|
1730
1730
|
colIndex = this.getColumnIndex(colIds[i]);
|
1731
1731
|
colIndices.push(colIndex);
|
1732
1732
|
}
|
@@ -1742,12 +1742,12 @@ ColumnStackPlugin.prototype.getColumnIdsByFields = function(fields) {
|
|
1742
1742
|
if(!fields) {
|
1743
1743
|
return [];
|
1744
1744
|
}
|
1745
|
-
|
1746
|
-
|
1747
|
-
|
1748
|
-
for(
|
1749
|
-
|
1750
|
-
|
1745
|
+
let ary = Array.isArray(fields) ? fields : [fields];
|
1746
|
+
let count = fields.length;
|
1747
|
+
let outAry = new Array(count);
|
1748
|
+
for(let i = 0; i < count; ++i) {
|
1749
|
+
let ref = ary[i];
|
1750
|
+
let colIndex = -1;
|
1751
1751
|
if(typeof ref === "number") {
|
1752
1752
|
colIndex = ref;
|
1753
1753
|
} else if(ref) {
|
@@ -1766,10 +1766,10 @@ ColumnStackPlugin.prototype.getColumnIdsByFields = function(fields) {
|
|
1766
1766
|
* @param {string} stackId
|
1767
1767
|
*/
|
1768
1768
|
ColumnStackPlugin.prototype.addColumnToStack = function(colRef, stackId) {
|
1769
|
-
|
1769
|
+
let colId = this._toColumnId(colRef);
|
1770
1770
|
|
1771
|
-
|
1772
|
-
|
1771
|
+
let stack = this._groupDefs.getGroup(stackId);
|
1772
|
+
let isColumnStackable = !this._groupDefs.getParentGroup(colId);
|
1773
1773
|
|
1774
1774
|
// if column not stackable or destination stack not exist, do nothing
|
1775
1775
|
if(!isColumnStackable || !stack){
|
@@ -1782,17 +1782,17 @@ ColumnStackPlugin.prototype.addColumnToStack = function(colRef, stackId) {
|
|
1782
1782
|
this._groupDefs.addGroupChild(stackId, colId);
|
1783
1783
|
|
1784
1784
|
// To avoid state interference from Core Grid, keep the pin state before moving the columns
|
1785
|
-
|
1786
|
-
|
1787
|
-
|
1788
|
-
|
1785
|
+
let host = this._hosts[0];
|
1786
|
+
let leftPinnedIndex = host.getFrozenColumnCount() - 1;
|
1787
|
+
let rightPinnedCount = host.getPinnedRightColumnCount();
|
1788
|
+
let colIndex = this.getColumnIndex(colId);
|
1789
1789
|
|
1790
1790
|
// Pack stacked columns together
|
1791
1791
|
this._moveStackedColumns(stack.children);
|
1792
1792
|
|
1793
1793
|
// If an unpinned column is added to a pinned stack, the pinning position should be updated
|
1794
1794
|
if(stack.leftPinned || stack.rightPinned) {
|
1795
|
-
|
1795
|
+
let colCount = this.getColumnCount();
|
1796
1796
|
if(stack.leftPinned && colIndex > leftPinnedIndex) {
|
1797
1797
|
leftPinnedIndex++;
|
1798
1798
|
this._freezeColumn(leftPinnedIndex, rightPinnedCount);
|
@@ -1810,20 +1810,20 @@ ColumnStackPlugin.prototype.addColumnToStack = function(colRef, stackId) {
|
|
1810
1810
|
* @param {number|string} colRef column field or column index
|
1811
1811
|
*/
|
1812
1812
|
ColumnStackPlugin.prototype.removeColumnFromStack = function(colRef) {
|
1813
|
-
|
1813
|
+
let colIndex = (typeof colRef === "string") ? this.getColumnIndex(colRef) : colRef;
|
1814
1814
|
if(colIndex < 0) {
|
1815
1815
|
return;
|
1816
1816
|
}
|
1817
1817
|
|
1818
|
-
|
1819
|
-
|
1818
|
+
let colId = this.getColumnId(colIndex);
|
1819
|
+
let stack = this._groupDefs.getParentGroup(colId);
|
1820
1820
|
|
1821
1821
|
if(!stack) {
|
1822
1822
|
return;
|
1823
1823
|
}
|
1824
1824
|
|
1825
|
-
|
1826
|
-
|
1825
|
+
let children = stack.children;
|
1826
|
+
let memberCount = children.length;
|
1827
1827
|
if(memberCount <= 2) {
|
1828
1828
|
if(memberCount === 2) {
|
1829
1829
|
if(colId === children[0]) { // If the first column is removed from the stack, move it to the end of stack
|
@@ -1835,7 +1835,7 @@ ColumnStackPlugin.prototype.removeColumnFromStack = function(colRef) {
|
|
1835
1835
|
return;
|
1836
1836
|
}
|
1837
1837
|
|
1838
|
-
|
1838
|
+
let colIndices = this.getColumnIndices(children);
|
1839
1839
|
this._removeRefFromStack(stack, colId, colIndex);
|
1840
1840
|
|
1841
1841
|
this.moveColumnById(colIndex, colIndices[memberCount - 1] + 1); // This assumes that the column order is already in correct position
|
@@ -1849,23 +1849,23 @@ ColumnStackPlugin.prototype.removeColumnFromStack = function(colRef) {
|
|
1849
1849
|
* @param {string} stackId
|
1850
1850
|
*/
|
1851
1851
|
ColumnStackPlugin.prototype.reorderStackColumns = function(colRefs, stackId) {
|
1852
|
-
|
1852
|
+
let stack = this._groupDefs.getGroup(stackId);
|
1853
1853
|
if(!stack) {
|
1854
1854
|
return;
|
1855
1855
|
}
|
1856
1856
|
if(!colRefs || !colRefs.length) {
|
1857
1857
|
return; // Nothing to be reordered
|
1858
1858
|
}
|
1859
|
-
|
1859
|
+
let colIndices = this.getColumnIndices(colRefs); // Slow
|
1860
1860
|
if(!colIndices.length) {
|
1861
1861
|
return; // Given input has no valid column
|
1862
1862
|
}
|
1863
1863
|
|
1864
|
-
|
1865
|
-
|
1866
|
-
|
1867
|
-
for(
|
1868
|
-
|
1864
|
+
let curMemberIndices = this.getStackMemberIndices(stackId); // Slow
|
1865
|
+
let memberCount = curMemberIndices.length;
|
1866
|
+
let indexMap = {};
|
1867
|
+
for(let i = 0; i < memberCount; ++i) {
|
1868
|
+
let colIndex = curMemberIndices[i];
|
1869
1869
|
indexMap[colIndex] = colIndices.indexOf(colIndex);
|
1870
1870
|
}
|
1871
1871
|
|
@@ -1897,7 +1897,7 @@ ColumnStackPlugin.prototype.getStackName = function(stackId) {
|
|
1897
1897
|
* @return {string} active column id
|
1898
1898
|
*/
|
1899
1899
|
ColumnStackPlugin.prototype.getActiveColumnId = function(stackId) {
|
1900
|
-
|
1900
|
+
let stack = this._groupDefs.getGroup(stackId);
|
1901
1901
|
if(stack){
|
1902
1902
|
return stack.activeColumn || "";
|
1903
1903
|
}
|
@@ -1918,7 +1918,7 @@ ColumnStackPlugin.prototype.getActiveColumnField = function(stackId) {
|
|
1918
1918
|
* @return {number} active column index
|
1919
1919
|
*/
|
1920
1920
|
ColumnStackPlugin.prototype.getActiveColumnIndex = function(stackId) {
|
1921
|
-
|
1921
|
+
let stack = this._groupDefs.getGroup(stackId);
|
1922
1922
|
if(stack){
|
1923
1923
|
return this.getColumnIndex(stack.activeColumn);
|
1924
1924
|
}
|
@@ -1974,7 +1974,7 @@ ColumnStackPlugin.prototype.moveColumnById = function(srcCol, destCol) {
|
|
1974
1974
|
ColumnStackPlugin.prototype._updateActiveColumn = function(stackOpt) {
|
1975
1975
|
if(_resolveActiveColumn(stackOpt)) {
|
1976
1976
|
// TODO: Add a proper way to set visibility to activeColumn when activeColumn is changed
|
1977
|
-
|
1977
|
+
let activeColIndex = this.getColumnIndex(stackOpt.activeColumn);
|
1978
1978
|
if(activeColIndex >= 0) {
|
1979
1979
|
this._setColumnVisibility(activeColIndex, true);
|
1980
1980
|
this._updateUI();
|
@@ -1991,7 +1991,7 @@ ColumnStackPlugin.prototype.hideStack = function(stackId, hidden) {
|
|
1991
1991
|
if(!stackId){
|
1992
1992
|
return;
|
1993
1993
|
}
|
1994
|
-
|
1994
|
+
let stackOption = this._groupDefs.getGroup(stackId);
|
1995
1995
|
if(!stackOption){
|
1996
1996
|
return;
|
1997
1997
|
}
|
@@ -1999,9 +1999,9 @@ ColumnStackPlugin.prototype.hideStack = function(stackId, hidden) {
|
|
1999
1999
|
if(hidden == null){
|
2000
2000
|
hidden = true;
|
2001
2001
|
}
|
2002
|
-
|
2003
|
-
for(
|
2004
|
-
for(
|
2002
|
+
let children = stackOption.children;
|
2003
|
+
for(let i = 0; i < children.length; i++){
|
2004
|
+
for(let g = this._hosts.length; --g >= 0;) {
|
2005
2005
|
this._hosts[g].hideColumn(this.getColumnIndex(children[i]), hidden);
|
2006
2006
|
}
|
2007
2007
|
}
|
@@ -2024,15 +2024,15 @@ ColumnStackPlugin.prototype.showStack = function(stackId) {
|
|
2024
2024
|
* @return {boolean|null}
|
2025
2025
|
*/
|
2026
2026
|
ColumnStackPlugin.prototype.isStackHidden = function(stackId) {
|
2027
|
-
|
2028
|
-
|
2027
|
+
let stackOption = this._groupDefs.getGroup(stackId);
|
2028
|
+
let host = this._host || this._hosts[0];
|
2029
2029
|
|
2030
2030
|
if(!stackOption || !host){
|
2031
2031
|
return null;
|
2032
2032
|
}
|
2033
2033
|
|
2034
|
-
|
2035
|
-
|
2034
|
+
let activeColIndex = this.getColumnIndex(stackOption.activeColumn);
|
2035
|
+
let isVisible = host.isColumnVisible(activeColIndex);
|
2036
2036
|
|
2037
2037
|
return !isVisible;
|
2038
2038
|
};
|
@@ -2046,8 +2046,8 @@ ColumnStackPlugin.prototype.moveStack = function(stackId, destCol) {
|
|
2046
2046
|
if(!stackId){
|
2047
2047
|
return false;
|
2048
2048
|
}
|
2049
|
-
|
2050
|
-
|
2049
|
+
let colList = this.getStackMemberIds(stackId);
|
2050
|
+
let dirty = this.reorderColumns(colList, destCol);
|
2051
2051
|
return dirty;
|
2052
2052
|
};
|
2053
2053
|
|
@@ -2060,19 +2060,19 @@ ColumnStackPlugin.prototype.pinStack = function(stackId, side) {
|
|
2060
2060
|
return;
|
2061
2061
|
}
|
2062
2062
|
|
2063
|
-
|
2063
|
+
let stack = this._groupDefs.getGroup(stackId);
|
2064
2064
|
if(!stack) {
|
2065
2065
|
return;
|
2066
2066
|
}
|
2067
2067
|
|
2068
|
-
|
2069
|
-
|
2070
|
-
|
2071
|
-
|
2072
|
-
|
2073
|
-
|
2068
|
+
let host = this._hosts[0];
|
2069
|
+
let leftPinnedIndex = host.getFrozenColumnCount() - 1;
|
2070
|
+
let rightPinnedCount = host.getPinnedRightColumnCount();
|
2071
|
+
let colCount = this.getColumnCount();
|
2072
|
+
let colList = this.getStackMemberIds(stackId);
|
2073
|
+
let len = colList.length;
|
2074
2074
|
|
2075
|
-
|
2075
|
+
let dest;
|
2076
2076
|
if(side === "right") {
|
2077
2077
|
if(stack.rightPinned) {
|
2078
2078
|
return;
|
@@ -2110,7 +2110,7 @@ ColumnStackPlugin.prototype.unpinStack = function(stackId, dest) {
|
|
2110
2110
|
return;
|
2111
2111
|
}
|
2112
2112
|
|
2113
|
-
|
2113
|
+
let stack = this._groupDefs.getGroup(stackId);
|
2114
2114
|
if(!stack) {
|
2115
2115
|
return;
|
2116
2116
|
}
|
@@ -2119,17 +2119,17 @@ ColumnStackPlugin.prototype.unpinStack = function(stackId, dest) {
|
|
2119
2119
|
return;
|
2120
2120
|
}
|
2121
2121
|
|
2122
|
-
|
2123
|
-
|
2124
|
-
|
2125
|
-
|
2126
|
-
|
2127
|
-
|
2128
|
-
|
2122
|
+
let host = this._hosts[0];
|
2123
|
+
let leftPinnedCount = host.getFrozenColumnCount();
|
2124
|
+
let rightPinnedCount = host.getPinnedRightColumnCount();
|
2125
|
+
let colCount = this.getColumnCount();
|
2126
|
+
let firstRightPinnedIndex = colCount - rightPinnedCount;
|
2127
|
+
let colList = this.getStackMemberIds(stackId);
|
2128
|
+
let len = colList.length;
|
2129
2129
|
|
2130
|
-
|
2130
|
+
let destId = null;
|
2131
2131
|
if(dest != null) {
|
2132
|
-
|
2132
|
+
let destIdx = this.getColumnIndex(dest);
|
2133
2133
|
destId = this.getColumnId(destIdx);
|
2134
2134
|
}
|
2135
2135
|
|