@refinitiv-ui/efx-grid 6.0.34 → 6.0.36
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/column-dragging/es6/ColumnDragging.js +50 -40
- package/lib/core/dist/core.css +1 -1
- package/lib/core/dist/core.js +248 -8
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataCache.js +20 -1
- package/lib/core/es6/data/DataTable.d.ts +2 -0
- package/lib/core/es6/data/DataTable.js +18 -1
- package/lib/core/es6/data/DataView.d.ts +2 -0
- package/lib/core/es6/data/DataView.js +11 -0
- package/lib/core/es6/grid/Core.d.ts +12 -0
- package/lib/core/es6/grid/Core.js +88 -3
- package/lib/core/es6/grid/ILayoutGrid.js +4 -0
- package/lib/core/es6/grid/LayoutGrid.d.ts +4 -0
- package/lib/core/es6/grid/LayoutGrid.js +95 -3
- package/lib/core/es6/grid/VirtualizedLayoutGrid.js +6 -0
- package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +6 -0
- package/lib/core/es6/tr-grid-theme.js +1 -1
- package/lib/grid/index.js +1 -1
- package/lib/grid/themes/halo/dark/efx-grid.js +1 -1
- package/lib/grid/themes/halo/dark/es5/all-elements.js +1 -1
- package/lib/grid/themes/halo/efx-grid.less +1 -1
- package/lib/grid/themes/halo/light/efx-grid.js +1 -1
- package/lib/grid/themes/halo/light/es5/all-elements.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +367 -148
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/Grid.js +37 -31
- package/lib/rt-grid/es6/RowDefSorter.d.ts +5 -5
- package/lib/rt-grid/es6/RowDefSorter.js +165 -71
- package/lib/tr-grid-column-selection/es6/ColumnSelection.js +66 -0
- package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +3 -0
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +566 -607
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +1 -1
- package/lib/tr-grid-range-bar/es6/RangeBar.d.ts +4 -1
- package/lib/tr-grid-range-bar/es6/RangeBar.js +99 -39
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +14 -3
- package/lib/tr-grid-rowcoloring/es6/RowColoring.js +3 -2
- package/lib/tr-grid-util/es6/DragUI.js +7 -3
- package/lib/tr-grid-util/es6/GroupDefinitions.d.ts +7 -1
- package/lib/tr-grid-util/es6/GroupDefinitions.js +39 -3
- package/lib/tr-grid-util/es6/jet/DataGenerator.js +36 -33
- package/lib/types/es6/ColumnStack.d.ts +2 -0
- package/lib/types/es6/Core/data/DataTable.d.ts +3 -1
- package/lib/types/es6/Core/data/DataView.d.ts +2 -0
- package/lib/types/es6/Core/grid/Core.d.ts +12 -0
- package/lib/types/es6/RealtimeGrid/RowDefSorter.d.ts +5 -5
- package/lib/versions.json +8 -8
- package/package.json +1 -1
@@ -832,7 +832,8 @@ DataCache.prototype._insertRic = function (subId, ric, values) {
|
|
832
832
|
// We cannot cache event arguments because user may want to collect all the updates
|
833
833
|
this._onADCForNewRic(subId, ric);
|
834
834
|
|
835
|
-
|
835
|
+
var rowData = this.getRowData(rid);
|
836
|
+
if (!rowData) { // Ensure that we have subscription id and ric from Quotes2
|
836
837
|
var tmp = values;
|
837
838
|
|
838
839
|
values = {}; // Clone a new object for duplicated ric
|
@@ -843,6 +844,11 @@ DataCache.prototype._insertRic = function (subId, ric, values) {
|
|
843
844
|
|
844
845
|
values["SUB_ID"] = subId;
|
845
846
|
values["RIC"] = ric;
|
847
|
+
} else {
|
848
|
+
var rowDef = rowData["ROW_DEF"];
|
849
|
+
if(rowDef && rowDef.isChain()){
|
850
|
+
values["SUB_ID"] = subId;
|
851
|
+
}
|
846
852
|
}
|
847
853
|
|
848
854
|
this.setRowData(rid, values);
|
@@ -879,6 +885,12 @@ DataCache.prototype._onQ2SubAdded = function (e) {
|
|
879
885
|
var sub = subs[i];
|
880
886
|
var ric = sub["ric"];
|
881
887
|
|
888
|
+
// chain subId fires twice, one with "_ci_" and one without "_ci_"
|
889
|
+
// the subId with "_ci_" should be ignore
|
890
|
+
if(sub["id"].indexOf("_ci_") >= 0){
|
891
|
+
continue;
|
892
|
+
}
|
893
|
+
|
882
894
|
this.addSubscription(sub, ric);
|
883
895
|
|
884
896
|
if (duplicateSubIds) { // There will be no network request for duplicate subs, and hence we need to update the data from our cache
|
@@ -903,6 +915,13 @@ DataCache.prototype._onQ2SubRemoved = function (e) {
|
|
903
915
|
|
904
916
|
for (var i = 0; i < len; ++i) {
|
905
917
|
var sub = subs[i];
|
918
|
+
|
919
|
+
// chain subId fires twice, one with "_ci_" and one without "_ci_"
|
920
|
+
// the subId with "_ci_" should be ignore
|
921
|
+
if(sub["id"].indexOf("_ci_") >= 0){
|
922
|
+
continue;
|
923
|
+
}
|
924
|
+
|
906
925
|
this.removeSubscription(sub);
|
907
926
|
}
|
908
927
|
};
|
@@ -70,6 +70,8 @@ declare class DataTable extends DataCache {
|
|
70
70
|
|
71
71
|
public setColumnSortingLogic(cid: string, func: DataTable.SortLogic|null): void;
|
72
72
|
|
73
|
+
public getColumnSortingLogic(cid?: string|null): DataTable.SortLogic|null;
|
74
|
+
|
73
75
|
public freeze(bool?: boolean|null): boolean;
|
74
76
|
|
75
77
|
public unfreeze(bool?: boolean|null): boolean;
|
@@ -882,7 +882,24 @@ DataTable.prototype.setSortingLogic = function(func) {
|
|
882
882
|
* @param {DataTable.SortLogic} func Use null to remove current sorting logic
|
883
883
|
*/
|
884
884
|
DataTable.prototype.setColumnSortingLogic = function(cid, func) {
|
885
|
-
|
885
|
+
if(cid) {
|
886
|
+
this._compMap[cid] = func;
|
887
|
+
}
|
888
|
+
};
|
889
|
+
/** Get sorting logic for the specified field. Default logic is returned, if no logic is specified for the column
|
890
|
+
* @public
|
891
|
+
* @param {string=} cid
|
892
|
+
* @return {DataTable.SortLogic}
|
893
|
+
*/
|
894
|
+
DataTable.prototype.getColumnSortingLogic = function(cid) {
|
895
|
+
if(cid) {
|
896
|
+
var logic = this._compMap[cid];
|
897
|
+
if(logic) {
|
898
|
+
return logic;
|
899
|
+
}
|
900
|
+
}
|
901
|
+
|
902
|
+
return this._compMap["_default"] || null;
|
886
903
|
};
|
887
904
|
|
888
905
|
/** Freeze data table so that no event is fired for data processing until executing {@link DataTable#unfreeze} method
|
@@ -80,6 +80,8 @@ declare class DataView extends EventDispatcher {
|
|
80
80
|
|
81
81
|
public setColumnSortingLogic(cid: string, func: DataTable.SortLogic|null): void;
|
82
82
|
|
83
|
+
public getColumnSortingLogic(cid?: string|null): DataTable.SortLogic|null;
|
84
|
+
|
83
85
|
public isSorting(): boolean;
|
84
86
|
|
85
87
|
public hideRow(rId: string|number|null, hidden?: boolean|null): void;
|
@@ -783,6 +783,17 @@ DataView.prototype.setColumnSortingLogic = function(cid, func) {
|
|
783
783
|
this._dt.setColumnSortingLogic(cid, func);
|
784
784
|
}
|
785
785
|
};
|
786
|
+
/** Get sorting logic for the specified field. Default logic is returned, if no logic is specified for the column
|
787
|
+
* @public
|
788
|
+
* @param {string=} cid
|
789
|
+
* @return {DataTable.SortLogic}
|
790
|
+
*/
|
791
|
+
DataView.prototype.getColumnSortingLogic = function(cid) {
|
792
|
+
if(this._dt) {
|
793
|
+
return this._dt.getColumnSortingLogic(cid);
|
794
|
+
}
|
795
|
+
return null;
|
796
|
+
};
|
786
797
|
/** Check if this view is in sorting mode
|
787
798
|
* @public
|
788
799
|
* @return {boolean}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import Ext from "../../../tr-grid-util/es6/Ext.js";
|
2
2
|
import GroupDefinitions from "../../../tr-grid-util/es6/GroupDefinitions.js"; // eslint-disable-line
|
3
|
+
import { isEmptyObject } from "../../../tr-grid-util/es6/Util.js";
|
3
4
|
import ElementWrapper from "./components/ElementWrapper.js";
|
4
5
|
import ILayoutGrid from "./ILayoutGrid.js"; // eslint-disable-line
|
5
6
|
import LayoutGrid from "./LayoutGrid.js";
|
@@ -32,6 +33,13 @@ declare namespace Core {
|
|
32
33
|
dataSource: DataView|null
|
33
34
|
};
|
34
35
|
|
36
|
+
type BatchInfo = {
|
37
|
+
reset?: string|null,
|
38
|
+
insertion?: string|null,
|
39
|
+
removal?: string|null,
|
40
|
+
moving?: string|null
|
41
|
+
};
|
42
|
+
|
35
43
|
type CellReference = Core.MouseInfo|ElementWrapper|Element|null;
|
36
44
|
|
37
45
|
type ColumnOptions = {
|
@@ -395,6 +403,10 @@ declare class Core extends ElementWrapper {
|
|
395
403
|
|
396
404
|
public getColumnGroupChildIds(groupId: string): (string)[]|null;
|
397
405
|
|
406
|
+
public startBatch(batchType: string): boolean;
|
407
|
+
|
408
|
+
public stopBatch(batchType: string): boolean;
|
409
|
+
|
398
410
|
public getColumnId(colIndex: number): string;
|
399
411
|
|
400
412
|
public getColumnIds(): (string)[];
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import Ext from "../../../tr-grid-util/es6/Ext.js";
|
2
2
|
import GroupDefinitions from "../../../tr-grid-util/es6/GroupDefinitions.js"; // eslint-disable-line
|
3
|
+
import { isEmptyObject } from "../../../tr-grid-util/es6/Util.js";
|
3
4
|
import ElementWrapper from "./components/ElementWrapper.js";
|
4
5
|
import ILayoutGrid from "./ILayoutGrid.js"; // eslint-disable-line
|
5
6
|
import LayoutGrid from "./LayoutGrid.js";
|
@@ -200,7 +201,9 @@ var Core = function (opt_initializer) {
|
|
200
201
|
"rowRemoved",
|
201
202
|
"columnPositionChanged",
|
202
203
|
"rowPositionChanged",
|
203
|
-
"beforeColumnBoundUpdate"
|
204
|
+
"beforeColumnBoundUpdate",
|
205
|
+
"beforeBatchOperation",
|
206
|
+
"afterBatchOperation"
|
204
207
|
);
|
205
208
|
|
206
209
|
// For debugging in advanced optimization mode
|
@@ -275,6 +278,15 @@ Core.SectionReference;
|
|
275
278
|
*/
|
276
279
|
Core.MouseInfo;
|
277
280
|
|
281
|
+
/** @typedef {Object} Core~BatchInfo
|
282
|
+
* @private
|
283
|
+
* @property {string=} reset //set columns
|
284
|
+
* @property {string=} insertion //add cols
|
285
|
+
* @property {string=} removal //remove cols
|
286
|
+
* @property {string=} moving //reorder
|
287
|
+
*/
|
288
|
+
Core.BatchInfo;
|
289
|
+
|
278
290
|
/** @typedef {Core.MouseInfo|ElementWrapper|Element} Core~CellReference
|
279
291
|
* @description A section in core grid can be refered by the following object <br>
|
280
292
|
* `{Core.MouseInfo}` : Object with valid x, y coordinates and section index <br>
|
@@ -529,6 +541,10 @@ Core.prototype._rowHeightTimerId = 0;
|
|
529
541
|
* @private
|
530
542
|
*/
|
531
543
|
Core.prototype._groupDefs = null;
|
544
|
+
/** @type {BatchInfo}
|
545
|
+
* @private
|
546
|
+
*/
|
547
|
+
Core.prototype._batches = null;
|
532
548
|
//#region Public Methods
|
533
549
|
|
534
550
|
/**
|
@@ -536,7 +552,7 @@ Core.prototype._groupDefs = null;
|
|
536
552
|
* @return {string}
|
537
553
|
*/
|
538
554
|
Core.getVersion = function () {
|
539
|
-
return "5.1.
|
555
|
+
return "5.1.50";
|
540
556
|
};
|
541
557
|
/** {@link ElementWrapper#dispose}
|
542
558
|
* @override
|
@@ -1475,6 +1491,10 @@ Core.prototype.removeColumnAt = function (index) {
|
|
1475
1491
|
|
1476
1492
|
if (this._hasListener("columnRemoved")) {
|
1477
1493
|
var e = {};
|
1494
|
+
var batches = this._batches;
|
1495
|
+
if(batches){
|
1496
|
+
e["batches"] = batches;
|
1497
|
+
}
|
1478
1498
|
e["atTheMiddle"] = true;
|
1479
1499
|
e["colIndex"] = index;
|
1480
1500
|
e["columns"] = "deprecated";
|
@@ -1745,6 +1765,7 @@ Core.prototype._moveColumn = function (fromCol, destCol) {
|
|
1745
1765
|
}
|
1746
1766
|
}
|
1747
1767
|
this._updateColumnBounds();
|
1768
|
+
this._updateColumnSeparators();
|
1748
1769
|
return true;
|
1749
1770
|
};
|
1750
1771
|
|
@@ -2075,6 +2096,7 @@ Core.prototype.setDefaultRowHeight = function (val, opt_includeTitle) {
|
|
2075
2096
|
this._syncRowHeights();
|
2076
2097
|
this._rowHeightSync = true;
|
2077
2098
|
this.setRowScrollingStep(this._rowScrollingStep);
|
2099
|
+
this._updateColumnSeparators();
|
2078
2100
|
}
|
2079
2101
|
};
|
2080
2102
|
|
@@ -2909,6 +2931,7 @@ Core.prototype.freezeColumn = function (frozenColIndex, numRightColumn) {
|
|
2909
2931
|
|
2910
2932
|
this._onColumnCountChanged(); // Activate horizontal scrollbar and column virtualization
|
2911
2933
|
this._updateScrollbarWidth(true, true);
|
2934
|
+
this._updateColumnSeparators();
|
2912
2935
|
};
|
2913
2936
|
|
2914
2937
|
/** @private
|
@@ -4150,6 +4173,21 @@ Core.prototype._updateColumnBounds = function () {
|
|
4150
4173
|
section.updateColumnBounds(posAry, noBorderAry);
|
4151
4174
|
}
|
4152
4175
|
};
|
4176
|
+
/* @private
|
4177
|
+
*/
|
4178
|
+
Core.prototype._updateColumnSeparators = function() {
|
4179
|
+
var sectCount = this._settings.length;
|
4180
|
+
if(!sectCount) {
|
4181
|
+
return;
|
4182
|
+
}
|
4183
|
+
|
4184
|
+
for(var i = 0; i < sectCount; i++) {
|
4185
|
+
var section = this._settings[i].getSection();
|
4186
|
+
if (section) {
|
4187
|
+
section.updateColumnSeparators();
|
4188
|
+
}
|
4189
|
+
}
|
4190
|
+
};
|
4153
4191
|
|
4154
4192
|
/** @public
|
4155
4193
|
* @param {number} startColIndex INCLUSIVE
|
@@ -4319,6 +4357,40 @@ Core.prototype.getColumnGroupChildIds = function (groupId) {
|
|
4319
4357
|
}
|
4320
4358
|
return null;
|
4321
4359
|
};
|
4360
|
+
|
4361
|
+
/** @public
|
4362
|
+
* @param {string} batchType
|
4363
|
+
* @return {boolean}
|
4364
|
+
* @fires Core#beforeBatchOperation
|
4365
|
+
*/
|
4366
|
+
Core.prototype.startBatch = function (batchType) {
|
4367
|
+
if(!batchType){
|
4368
|
+
return false;
|
4369
|
+
}
|
4370
|
+
if(!this._batches){
|
4371
|
+
this._batches = {};
|
4372
|
+
}
|
4373
|
+
this._batches[batchType] = batchType;
|
4374
|
+
this._dispatch("beforeBatchOperation", { batches: this._batches, batchType: batchType });
|
4375
|
+
return true;
|
4376
|
+
};
|
4377
|
+
/** @public
|
4378
|
+
* @param {string} batchType
|
4379
|
+
* @return {boolean}
|
4380
|
+
* @fires Core#afterBatchOperation
|
4381
|
+
*/
|
4382
|
+
Core.prototype.stopBatch = function (batchType) {
|
4383
|
+
if(!batchType){
|
4384
|
+
return false;
|
4385
|
+
}
|
4386
|
+
this._dispatch("afterBatchOperation", { batches: this._batches, batchType: batchType });
|
4387
|
+
|
4388
|
+
delete this._batches[batchType];
|
4389
|
+
if(isEmptyObject(this._batches)){
|
4390
|
+
this._batches = null;
|
4391
|
+
}
|
4392
|
+
return true;
|
4393
|
+
};
|
4322
4394
|
//#endregion Public Methods
|
4323
4395
|
|
4324
4396
|
//#region Private Methods
|
@@ -4562,6 +4634,10 @@ Core.prototype._dispatchColumnAddedEvent = function (at, count, atTheMiddle, ctx
|
|
4562
4634
|
if (this._hasListener("columnAdded")) {
|
4563
4635
|
var e = {};
|
4564
4636
|
e["atTheMiddle"] = atTheMiddle;
|
4637
|
+
var batches = this._batches;
|
4638
|
+
if(batches){
|
4639
|
+
e["batches"] = batches;
|
4640
|
+
}
|
4565
4641
|
if(count === 1) {
|
4566
4642
|
e["colIndex"] = at;
|
4567
4643
|
e["context"] = ctx;
|
@@ -4713,6 +4789,10 @@ Core.prototype._removeColumn = function (num) { // TODO: change the logic to us
|
|
4713
4789
|
|
4714
4790
|
if (this._hasListener("columnRemoved")) {
|
4715
4791
|
var e = {};
|
4792
|
+
var batches = this._batches;
|
4793
|
+
if(batches){
|
4794
|
+
e["batches"] = batches;
|
4795
|
+
}
|
4716
4796
|
for (var c = colCount; --c >= newCount; ) {
|
4717
4797
|
var colDef = removedCols[c - newCount];
|
4718
4798
|
e["colIndex"] = c;
|
@@ -5177,6 +5257,8 @@ Core.prototype._onRowCountChanged = function (e) {
|
|
5177
5257
|
if(!forceUpdate) {
|
5178
5258
|
this._updateVScrollbar(); // Asynchronous
|
5179
5259
|
}
|
5260
|
+
|
5261
|
+
this._updateColumnSeparators();
|
5180
5262
|
if(prevRowCount < newRowCount) {
|
5181
5263
|
this._dispatch("rowAdded", e);
|
5182
5264
|
} else if(prevRowCount > newRowCount) {
|
@@ -5234,7 +5316,7 @@ Core.prototype._onRowHeightChanged = function (e) {
|
|
5234
5316
|
minSectionIndex >= this._startVScrollbarIndex);
|
5235
5317
|
}
|
5236
5318
|
}
|
5237
|
-
|
5319
|
+
this._updateColumnSeparators();
|
5238
5320
|
this._dispatchRowPositionChanged();
|
5239
5321
|
};
|
5240
5322
|
/** @private
|
@@ -5299,6 +5381,7 @@ Core.prototype._onColumnCountChanged = function () {
|
|
5299
5381
|
var pinnedRight = this._countPinnedRightColumns();
|
5300
5382
|
|
5301
5383
|
this._updateColumnBounds();
|
5384
|
+
this._updateColumnSeparators();
|
5302
5385
|
|
5303
5386
|
if (this._hScrollbarEnabled && pinnedLeft + pinnedRight < this.getColumnCount()) {
|
5304
5387
|
this._hscrollbar.enable();
|
@@ -5580,6 +5663,7 @@ Core.prototype._syncLayoutToColumns = function (from, to, opt_forceDispatching)
|
|
5580
5663
|
var paneChanged = forceUpdate || (from < this.getHScrollStartIndex()) || (to > this.getFirstPinnedRightIndex());
|
5581
5664
|
this._updateScrollbarWidth(paneChanged, true /* contentChanged */);
|
5582
5665
|
this._updateColumnBounds();
|
5666
|
+
this._updateColumnSeparators();
|
5583
5667
|
this._dispatchColumnPositionChanged();
|
5584
5668
|
|
5585
5669
|
if (dirty || opt_forceDispatching) {
|
@@ -5675,6 +5759,7 @@ Core.prototype._updateLayout = function () {
|
|
5675
5759
|
var section = this._settings[s].getSection();
|
5676
5760
|
section.updateLayout(); // Notify section about forced recalculation of the layout
|
5677
5761
|
}
|
5762
|
+
this._updateColumnSeparators();
|
5678
5763
|
};
|
5679
5764
|
|
5680
5765
|
/** @private */
|
@@ -697,6 +697,10 @@ ILayoutGrid.prototype.calculateColumnBounds = function (lftIdx, rgtIdx, outPosit
|
|
697
697
|
* @param {number=} topPx Top position of bound
|
698
698
|
*/
|
699
699
|
ILayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx) {};
|
700
|
+
/** @public
|
701
|
+
* @ignore
|
702
|
+
*/
|
703
|
+
ILayoutGrid.prototype.updateColumnSeparators = function () {};
|
700
704
|
|
701
705
|
export default ILayoutGrid;
|
702
706
|
export { ILayoutGrid };
|
@@ -26,7 +26,11 @@ declare class LayoutGrid extends ElementWrapper {
|
|
26
26
|
|
27
27
|
public setCellBounds(colIndex: number, rowIndex: number, width: number, height: number): void;
|
28
28
|
|
29
|
+
public updateColumnSeparators(): void;
|
30
|
+
|
29
31
|
}
|
30
32
|
|
33
|
+
declare function rgtPx(): void;
|
34
|
+
|
31
35
|
export default LayoutGrid;
|
32
36
|
export { LayoutGrid };
|
@@ -269,7 +269,14 @@ LayoutGrid.prototype._colSelDirty = false;
|
|
269
269
|
* @private
|
270
270
|
*/
|
271
271
|
LayoutGrid.prototype._hscrollbar = null;
|
272
|
-
|
272
|
+
/** @type {Element}
|
273
|
+
* @private
|
274
|
+
*/
|
275
|
+
LayoutGrid.prototype._leftColumnSeparator = null;
|
276
|
+
/** @type {Element}
|
277
|
+
* @private
|
278
|
+
*/
|
279
|
+
LayoutGrid.prototype._rightColumnSeparator = null;
|
273
280
|
|
274
281
|
/**
|
275
282
|
* {@link ElementWrapper#dispose}
|
@@ -2236,8 +2243,7 @@ LayoutGrid.prototype.selectColumn = function (colIndex, selected) {
|
|
2236
2243
|
|
2237
2244
|
var boundLayer = this._boundLayer;
|
2238
2245
|
if(!boundLayer) {
|
2239
|
-
|
2240
|
-
boundLayer.className = "cover-layer";
|
2246
|
+
this._initBoundLayer();
|
2241
2247
|
this._updateLayers();
|
2242
2248
|
}
|
2243
2249
|
}
|
@@ -2409,6 +2415,92 @@ LayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx)
|
|
2409
2415
|
}
|
2410
2416
|
};
|
2411
2417
|
|
2418
|
+
/** @public
|
2419
|
+
*/
|
2420
|
+
LayoutGrid.prototype.updateColumnSeparators = function () {
|
2421
|
+
var pinnedLeftCount = this._hscrollbar.getPinnedLeftColumnCount();
|
2422
|
+
var pinnedRightCount = this._hscrollbar.getPinnedRightColumnCount();
|
2423
|
+
if ((pinnedLeftCount || pinnedRightCount) && !this._boundLayer) {
|
2424
|
+
this._initBoundLayer();
|
2425
|
+
}
|
2426
|
+
|
2427
|
+
var isScrollbarActive = false;
|
2428
|
+
if(this._hscrollbar) {
|
2429
|
+
isScrollbarActive = this._hscrollbar.isActive();
|
2430
|
+
}
|
2431
|
+
|
2432
|
+
var boundLayer = this._boundLayer;
|
2433
|
+
|
2434
|
+
var colSeparator = this._leftColumnSeparator;
|
2435
|
+
if (isScrollbarActive && pinnedLeftCount) {
|
2436
|
+
if (!colSeparator) {
|
2437
|
+
colSeparator = this._leftColumnSeparator = this._createColumnSeparator();
|
2438
|
+
}
|
2439
|
+
if (!colSeparator.parentNode) {
|
2440
|
+
if (boundLayer.children.length) {
|
2441
|
+
boundLayer.insertBefore(colSeparator, boundLayer.children[0]);
|
2442
|
+
} else {
|
2443
|
+
boundLayer.appendChild(colSeparator);
|
2444
|
+
}
|
2445
|
+
}
|
2446
|
+
|
2447
|
+
var rightPos = this._trackX.getLaneStart(pinnedLeftCount);
|
2448
|
+
colSeparator.style.left = (rightPos - 1) + "px";
|
2449
|
+
colSeparator.style.height = this._trackY.getTrackSize() + "px";
|
2450
|
+
} else {
|
2451
|
+
if (colSeparator && colSeparator.parentNode) {
|
2452
|
+
this._boundLayer.removeChild(colSeparator);
|
2453
|
+
}
|
2454
|
+
}
|
2455
|
+
|
2456
|
+
colSeparator = this._rightColumnSeparator;
|
2457
|
+
if (isScrollbarActive && pinnedRightCount) {
|
2458
|
+
if (!colSeparator) {
|
2459
|
+
colSeparator = this._rightColumnSeparator = this._createColumnSeparator();
|
2460
|
+
}
|
2461
|
+
|
2462
|
+
if (!colSeparator.parentNode) {
|
2463
|
+
if (boundLayer.children.length) {
|
2464
|
+
boundLayer.insertBefore(colSeparator, boundLayer.children[0]);
|
2465
|
+
} else {
|
2466
|
+
boundLayer.appendChild(colSeparator);
|
2467
|
+
}
|
2468
|
+
}
|
2469
|
+
var colCount = this.getColumnCount();
|
2470
|
+
var colWidth = this._trackX.getLaneEnd(colCount - 1) - this._trackX.getLaneStart(colCount - pinnedRightCount);
|
2471
|
+
var viewSize = this._getViewSize();
|
2472
|
+
|
2473
|
+
colSeparator.style.left = (viewSize - colWidth - this._rightSpaceSize) + "px";
|
2474
|
+
colSeparator.style.height = this._trackY.getTrackSize() + "px";
|
2475
|
+
} else {
|
2476
|
+
if (colSeparator && colSeparator.parentNode) {
|
2477
|
+
this._boundLayer.removeChild(colSeparator);
|
2478
|
+
}
|
2479
|
+
}
|
2480
|
+
};
|
2481
|
+
|
2482
|
+
/** @private
|
2483
|
+
* @return {Element}
|
2484
|
+
*/
|
2485
|
+
LayoutGrid.prototype._createColumnSeparator = function() {
|
2486
|
+
var colSeparator = document.createElement("div");
|
2487
|
+
colSeparator.classList.add("column-separator");
|
2488
|
+
return colSeparator;
|
2489
|
+
};
|
2490
|
+
|
2491
|
+
/** @private
|
2492
|
+
* @return {Element}
|
2493
|
+
*/
|
2494
|
+
LayoutGrid.prototype._initBoundLayer = function () {
|
2495
|
+
var boundLayer = this._boundLayer;
|
2496
|
+
if(!boundLayer) {
|
2497
|
+
boundLayer = this._boundLayer = document.createElement("div");
|
2498
|
+
boundLayer.className = "cover-layer";
|
2499
|
+
this._element.appendChild(boundLayer);
|
2500
|
+
}
|
2501
|
+
return boundLayer;
|
2502
|
+
};
|
2503
|
+
|
2412
2504
|
/**
|
2413
2505
|
* @private
|
2414
2506
|
* @param {number} indexX
|
@@ -1102,6 +1102,12 @@ VirtualizedLayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderA
|
|
1102
1102
|
this._grid.updateColumnBounds(posAry, noBorderAry, topPx);
|
1103
1103
|
this._updateRowBounds();
|
1104
1104
|
};
|
1105
|
+
/** @public
|
1106
|
+
* @ignore
|
1107
|
+
*/
|
1108
|
+
VirtualizedLayoutGrid.prototype.updateColumnSeparators = function () {
|
1109
|
+
this._grid.updateColumnSeparators();
|
1110
|
+
};
|
1105
1111
|
/** @private
|
1106
1112
|
*/
|
1107
1113
|
VirtualizedLayoutGrid.prototype._initBoundLayer = function () {
|
@@ -1541,6 +1541,9 @@ SortableTitlePlugin.prototype._sortDataView = function (opt_action) {
|
|
1541
1541
|
if (!this._dataSorting) { return; }
|
1542
1542
|
|
1543
1543
|
var sortCount = this._sortStates.length;
|
1544
|
+
if(this._userManagedLogic && sortCount > 1) { // The logic is managed by the user. There is no point in using multi-column sorting
|
1545
|
+
sortCount = 1;
|
1546
|
+
}
|
1544
1547
|
var orders = null;
|
1545
1548
|
var sortLogics = null;
|
1546
1549
|
var c_ref = null;
|
@@ -1556,6 +1559,9 @@ SortableTitlePlugin.prototype._sortDataView = function (opt_action) {
|
|
1556
1559
|
} else {
|
1557
1560
|
c_ref = this.getColumnSortingFields();
|
1558
1561
|
}
|
1562
|
+
if(this._userManagedLogic && c_ref.length > 1) {
|
1563
|
+
c_ref = c_ref.slice(0, 1);
|
1564
|
+
}
|
1559
1565
|
}
|
1560
1566
|
|
1561
1567
|
// Perform sorting even if there is no sort state
|