@refinitiv-ui/efx-grid 6.0.92 → 6.0.93
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|