@refinitiv-ui/efx-grid 6.0.34 → 6.0.36

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. package/lib/column-dragging/es6/ColumnDragging.js +50 -40
  2. package/lib/core/dist/core.css +1 -1
  3. package/lib/core/dist/core.js +248 -8
  4. package/lib/core/dist/core.min.js +1 -1
  5. package/lib/core/es6/data/DataCache.js +20 -1
  6. package/lib/core/es6/data/DataTable.d.ts +2 -0
  7. package/lib/core/es6/data/DataTable.js +18 -1
  8. package/lib/core/es6/data/DataView.d.ts +2 -0
  9. package/lib/core/es6/data/DataView.js +11 -0
  10. package/lib/core/es6/grid/Core.d.ts +12 -0
  11. package/lib/core/es6/grid/Core.js +88 -3
  12. package/lib/core/es6/grid/ILayoutGrid.js +4 -0
  13. package/lib/core/es6/grid/LayoutGrid.d.ts +4 -0
  14. package/lib/core/es6/grid/LayoutGrid.js +95 -3
  15. package/lib/core/es6/grid/VirtualizedLayoutGrid.js +6 -0
  16. package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +6 -0
  17. package/lib/core/es6/tr-grid-theme.js +1 -1
  18. package/lib/grid/index.js +1 -1
  19. package/lib/grid/themes/halo/dark/efx-grid.js +1 -1
  20. package/lib/grid/themes/halo/dark/es5/all-elements.js +1 -1
  21. package/lib/grid/themes/halo/efx-grid.less +1 -1
  22. package/lib/grid/themes/halo/light/efx-grid.js +1 -1
  23. package/lib/grid/themes/halo/light/es5/all-elements.js +1 -1
  24. package/lib/rt-grid/dist/rt-grid.js +367 -148
  25. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  26. package/lib/rt-grid/es6/Grid.js +37 -31
  27. package/lib/rt-grid/es6/RowDefSorter.d.ts +5 -5
  28. package/lib/rt-grid/es6/RowDefSorter.js +165 -71
  29. package/lib/tr-grid-column-selection/es6/ColumnSelection.js +66 -0
  30. package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +3 -0
  31. package/lib/tr-grid-column-stack/es6/ColumnStack.js +566 -607
  32. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +1 -1
  33. package/lib/tr-grid-range-bar/es6/RangeBar.d.ts +4 -1
  34. package/lib/tr-grid-range-bar/es6/RangeBar.js +99 -39
  35. package/lib/tr-grid-row-dragging/es6/RowDragging.js +14 -3
  36. package/lib/tr-grid-rowcoloring/es6/RowColoring.js +3 -2
  37. package/lib/tr-grid-util/es6/DragUI.js +7 -3
  38. package/lib/tr-grid-util/es6/GroupDefinitions.d.ts +7 -1
  39. package/lib/tr-grid-util/es6/GroupDefinitions.js +39 -3
  40. package/lib/tr-grid-util/es6/jet/DataGenerator.js +36 -33
  41. package/lib/types/es6/ColumnStack.d.ts +2 -0
  42. package/lib/types/es6/Core/data/DataTable.d.ts +3 -1
  43. package/lib/types/es6/Core/data/DataView.d.ts +2 -0
  44. package/lib/types/es6/Core/grid/Core.d.ts +12 -0
  45. package/lib/types/es6/RealtimeGrid/RowDefSorter.d.ts +5 -5
  46. package/lib/versions.json +8 -8
  47. package/package.json +1 -1
@@ -4765,6 +4765,10 @@ ILayoutGrid.prototype.calculateColumnBounds = function (lftIdx, rgtIdx, outPosit
4765
4765
  * @param {number=} topPx Top position of bound
4766
4766
  */
4767
4767
  ILayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx) {};
4768
+ /** @public
4769
+ * @ignore
4770
+ */
4771
+ ILayoutGrid.prototype.updateColumnSeparators = function () {};
4768
4772
 
4769
4773
  /* harmony default export */ const grid_ILayoutGrid = (ILayoutGrid);
4770
4774
 
@@ -8754,7 +8758,14 @@ LayoutGrid.prototype._colSelDirty = false;
8754
8758
  * @private
8755
8759
  */
8756
8760
  LayoutGrid.prototype._hscrollbar = null;
8757
-
8761
+ /** @type {Element}
8762
+ * @private
8763
+ */
8764
+ LayoutGrid.prototype._leftColumnSeparator = null;
8765
+ /** @type {Element}
8766
+ * @private
8767
+ */
8768
+ LayoutGrid.prototype._rightColumnSeparator = null;
8758
8769
 
8759
8770
  /**
8760
8771
  * {@link ElementWrapper#dispose}
@@ -10721,8 +10732,7 @@ LayoutGrid.prototype.selectColumn = function (colIndex, selected) {
10721
10732
 
10722
10733
  var boundLayer = this._boundLayer;
10723
10734
  if(!boundLayer) {
10724
- boundLayer = this._boundLayer = document.createElement("div");
10725
- boundLayer.className = "cover-layer";
10735
+ this._initBoundLayer();
10726
10736
  this._updateLayers();
10727
10737
  }
10728
10738
  }
@@ -10894,6 +10904,92 @@ LayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderAry, topPx)
10894
10904
  }
10895
10905
  };
10896
10906
 
10907
+ /** @public
10908
+ */
10909
+ LayoutGrid.prototype.updateColumnSeparators = function () {
10910
+ var pinnedLeftCount = this._hscrollbar.getPinnedLeftColumnCount();
10911
+ var pinnedRightCount = this._hscrollbar.getPinnedRightColumnCount();
10912
+ if ((pinnedLeftCount || pinnedRightCount) && !this._boundLayer) {
10913
+ this._initBoundLayer();
10914
+ }
10915
+
10916
+ var isScrollbarActive = false;
10917
+ if(this._hscrollbar) {
10918
+ isScrollbarActive = this._hscrollbar.isActive();
10919
+ }
10920
+
10921
+ var boundLayer = this._boundLayer;
10922
+
10923
+ var colSeparator = this._leftColumnSeparator;
10924
+ if (isScrollbarActive && pinnedLeftCount) {
10925
+ if (!colSeparator) {
10926
+ colSeparator = this._leftColumnSeparator = this._createColumnSeparator();
10927
+ }
10928
+ if (!colSeparator.parentNode) {
10929
+ if (boundLayer.children.length) {
10930
+ boundLayer.insertBefore(colSeparator, boundLayer.children[0]);
10931
+ } else {
10932
+ boundLayer.appendChild(colSeparator);
10933
+ }
10934
+ }
10935
+
10936
+ var rightPos = this._trackX.getLaneStart(pinnedLeftCount);
10937
+ colSeparator.style.left = (rightPos - 1) + "px";
10938
+ colSeparator.style.height = this._trackY.getTrackSize() + "px";
10939
+ } else {
10940
+ if (colSeparator && colSeparator.parentNode) {
10941
+ this._boundLayer.removeChild(colSeparator);
10942
+ }
10943
+ }
10944
+
10945
+ colSeparator = this._rightColumnSeparator;
10946
+ if (isScrollbarActive && pinnedRightCount) {
10947
+ if (!colSeparator) {
10948
+ colSeparator = this._rightColumnSeparator = this._createColumnSeparator();
10949
+ }
10950
+
10951
+ if (!colSeparator.parentNode) {
10952
+ if (boundLayer.children.length) {
10953
+ boundLayer.insertBefore(colSeparator, boundLayer.children[0]);
10954
+ } else {
10955
+ boundLayer.appendChild(colSeparator);
10956
+ }
10957
+ }
10958
+ var colCount = this.getColumnCount();
10959
+ var colWidth = this._trackX.getLaneEnd(colCount - 1) - this._trackX.getLaneStart(colCount - pinnedRightCount);
10960
+ var viewSize = this._getViewSize();
10961
+
10962
+ colSeparator.style.left = (viewSize - colWidth - this._rightSpaceSize) + "px";
10963
+ colSeparator.style.height = this._trackY.getTrackSize() + "px";
10964
+ } else {
10965
+ if (colSeparator && colSeparator.parentNode) {
10966
+ this._boundLayer.removeChild(colSeparator);
10967
+ }
10968
+ }
10969
+ };
10970
+
10971
+ /** @private
10972
+ * @return {Element}
10973
+ */
10974
+ LayoutGrid.prototype._createColumnSeparator = function() {
10975
+ var colSeparator = document.createElement("div");
10976
+ colSeparator.classList.add("column-separator");
10977
+ return colSeparator;
10978
+ };
10979
+
10980
+ /** @private
10981
+ * @return {Element}
10982
+ */
10983
+ LayoutGrid.prototype._initBoundLayer = function () {
10984
+ var boundLayer = this._boundLayer;
10985
+ if(!boundLayer) {
10986
+ boundLayer = this._boundLayer = document.createElement("div");
10987
+ boundLayer.className = "cover-layer";
10988
+ this._element.appendChild(boundLayer);
10989
+ }
10990
+ return boundLayer;
10991
+ };
10992
+
10897
10993
  /**
10898
10994
  * @private
10899
10995
  * @param {number} indexX
@@ -12764,7 +12860,8 @@ DataCache_DataCache.prototype._insertRic = function (subId, ric, values) {
12764
12860
  // We cannot cache event arguments because user may want to collect all the updates
12765
12861
  this._onADCForNewRic(subId, ric);
12766
12862
 
12767
- if (!this.getRowData(rid)) { // Ensure that we have subscription id and ric from Quotes2
12863
+ var rowData = this.getRowData(rid);
12864
+ if (!rowData) { // Ensure that we have subscription id and ric from Quotes2
12768
12865
  var tmp = values;
12769
12866
 
12770
12867
  values = {}; // Clone a new object for duplicated ric
@@ -12775,6 +12872,11 @@ DataCache_DataCache.prototype._insertRic = function (subId, ric, values) {
12775
12872
 
12776
12873
  values["SUB_ID"] = subId;
12777
12874
  values["RIC"] = ric;
12875
+ } else {
12876
+ var rowDef = rowData["ROW_DEF"];
12877
+ if(rowDef && rowDef.isChain()){
12878
+ values["SUB_ID"] = subId;
12879
+ }
12778
12880
  }
12779
12881
 
12780
12882
  this.setRowData(rid, values);
@@ -12811,6 +12913,12 @@ DataCache_DataCache.prototype._onQ2SubAdded = function (e) {
12811
12913
  var sub = subs[i];
12812
12914
  var ric = sub["ric"];
12813
12915
 
12916
+ // chain subId fires twice, one with "_ci_" and one without "_ci_"
12917
+ // the subId with "_ci_" should be ignore
12918
+ if(sub["id"].indexOf("_ci_") >= 0){
12919
+ continue;
12920
+ }
12921
+
12814
12922
  this.addSubscription(sub, ric);
12815
12923
 
12816
12924
  if (duplicateSubIds) { // There will be no network request for duplicate subs, and hence we need to update the data from our cache
@@ -12835,6 +12943,13 @@ DataCache_DataCache.prototype._onQ2SubRemoved = function (e) {
12835
12943
 
12836
12944
  for (var i = 0; i < len; ++i) {
12837
12945
  var sub = subs[i];
12946
+
12947
+ // chain subId fires twice, one with "_ci_" and one without "_ci_"
12948
+ // the subId with "_ci_" should be ignore
12949
+ if(sub["id"].indexOf("_ci_") >= 0){
12950
+ continue;
12951
+ }
12952
+
12838
12953
  this.removeSubscription(sub);
12839
12954
  }
12840
12955
  };
@@ -15676,7 +15791,24 @@ DataTable.prototype.setSortingLogic = function(func) {
15676
15791
  * @param {DataTable.SortLogic} func Use null to remove current sorting logic
15677
15792
  */
15678
15793
  DataTable.prototype.setColumnSortingLogic = function(cid, func) {
15679
- this._compMap[cid] = func;
15794
+ if(cid) {
15795
+ this._compMap[cid] = func;
15796
+ }
15797
+ };
15798
+ /** Get sorting logic for the specified field. Default logic is returned, if no logic is specified for the column
15799
+ * @public
15800
+ * @param {string=} cid
15801
+ * @return {DataTable.SortLogic}
15802
+ */
15803
+ DataTable.prototype.getColumnSortingLogic = function(cid) {
15804
+ if(cid) {
15805
+ var logic = this._compMap[cid];
15806
+ if(logic) {
15807
+ return logic;
15808
+ }
15809
+ }
15810
+
15811
+ return this._compMap["_default"] || null;
15680
15812
  };
15681
15813
 
15682
15814
  /** Freeze data table so that no event is fired for data processing until executing {@link DataTable#unfreeze} method
@@ -19423,6 +19555,17 @@ DataView.prototype.setColumnSortingLogic = function(cid, func) {
19423
19555
  this._dt.setColumnSortingLogic(cid, func);
19424
19556
  }
19425
19557
  };
19558
+ /** Get sorting logic for the specified field. Default logic is returned, if no logic is specified for the column
19559
+ * @public
19560
+ * @param {string=} cid
19561
+ * @return {DataTable.SortLogic}
19562
+ */
19563
+ DataView.prototype.getColumnSortingLogic = function(cid) {
19564
+ if(this._dt) {
19565
+ return this._dt.getColumnSortingLogic(cid);
19566
+ }
19567
+ return null;
19568
+ };
19426
19569
  /** Check if this view is in sorting mode
19427
19570
  * @public
19428
19571
  * @return {boolean}
@@ -24945,6 +25088,12 @@ VirtualizedLayoutGrid.prototype.updateColumnBounds = function (posAry, noBorderA
24945
25088
  this._grid.updateColumnBounds(posAry, noBorderAry, topPx);
24946
25089
  this._updateRowBounds();
24947
25090
  };
25091
+ /** @public
25092
+ * @ignore
25093
+ */
25094
+ VirtualizedLayoutGrid.prototype.updateColumnSeparators = function () {
25095
+ this._grid.updateColumnSeparators();
25096
+ };
24948
25097
  /** @private
24949
25098
  */
24950
25099
  VirtualizedLayoutGrid.prototype._initBoundLayer = function () {
@@ -25159,6 +25308,7 @@ VirtualizedLayoutGrid._proto = VirtualizedLayoutGrid.prototype;
25159
25308
 
25160
25309
  // eslint-disable-line
25161
25310
 
25311
+
25162
25312
  // eslint-disable-line
25163
25313
 
25164
25314
 
@@ -25358,7 +25508,9 @@ var Core_Core = function (opt_initializer) {
25358
25508
  "rowRemoved",
25359
25509
  "columnPositionChanged",
25360
25510
  "rowPositionChanged",
25361
- "beforeColumnBoundUpdate"
25511
+ "beforeColumnBoundUpdate",
25512
+ "beforeBatchOperation",
25513
+ "afterBatchOperation"
25362
25514
  );
25363
25515
 
25364
25516
  // For debugging in advanced optimization mode
@@ -25433,6 +25585,15 @@ Core_Core.SectionReference;
25433
25585
  */
25434
25586
  Core_Core.MouseInfo;
25435
25587
 
25588
+ /** @typedef {Object} Core~BatchInfo
25589
+ * @private
25590
+ * @property {string=} reset //set columns
25591
+ * @property {string=} insertion //add cols
25592
+ * @property {string=} removal //remove cols
25593
+ * @property {string=} moving //reorder
25594
+ */
25595
+ Core_Core.BatchInfo;
25596
+
25436
25597
  /** @typedef {Core.MouseInfo|ElementWrapper|Element} Core~CellReference
25437
25598
  * @description A section in core grid can be refered by the following object <br>
25438
25599
  * `{Core.MouseInfo}` : Object with valid x, y coordinates and section index <br>
@@ -25687,6 +25848,10 @@ Core_Core.prototype._rowHeightTimerId = 0;
25687
25848
  * @private
25688
25849
  */
25689
25850
  Core_Core.prototype._groupDefs = null;
25851
+ /** @type {BatchInfo}
25852
+ * @private
25853
+ */
25854
+ Core_Core.prototype._batches = null;
25690
25855
  //#region Public Methods
25691
25856
 
25692
25857
  /**
@@ -25694,7 +25859,7 @@ Core_Core.prototype._groupDefs = null;
25694
25859
  * @return {string}
25695
25860
  */
25696
25861
  Core_Core.getVersion = function () {
25697
- return "5.1.45";
25862
+ return "5.1.50";
25698
25863
  };
25699
25864
  /** {@link ElementWrapper#dispose}
25700
25865
  * @override
@@ -26633,6 +26798,10 @@ Core_Core.prototype.removeColumnAt = function (index) {
26633
26798
 
26634
26799
  if (this._hasListener("columnRemoved")) {
26635
26800
  var e = {};
26801
+ var batches = this._batches;
26802
+ if(batches){
26803
+ e["batches"] = batches;
26804
+ }
26636
26805
  e["atTheMiddle"] = true;
26637
26806
  e["colIndex"] = index;
26638
26807
  e["columns"] = "deprecated";
@@ -26903,6 +27072,7 @@ Core_Core.prototype._moveColumn = function (fromCol, destCol) {
26903
27072
  }
26904
27073
  }
26905
27074
  this._updateColumnBounds();
27075
+ this._updateColumnSeparators();
26906
27076
  return true;
26907
27077
  };
26908
27078
 
@@ -27233,6 +27403,7 @@ Core_Core.prototype.setDefaultRowHeight = function (val, opt_includeTitle) {
27233
27403
  this._syncRowHeights();
27234
27404
  this._rowHeightSync = true;
27235
27405
  this.setRowScrollingStep(this._rowScrollingStep);
27406
+ this._updateColumnSeparators();
27236
27407
  }
27237
27408
  };
27238
27409
 
@@ -28067,6 +28238,7 @@ Core_Core.prototype.freezeColumn = function (frozenColIndex, numRightColumn) {
28067
28238
 
28068
28239
  this._onColumnCountChanged(); // Activate horizontal scrollbar and column virtualization
28069
28240
  this._updateScrollbarWidth(true, true);
28241
+ this._updateColumnSeparators();
28070
28242
  };
28071
28243
 
28072
28244
  /** @private
@@ -29308,6 +29480,21 @@ Core_Core.prototype._updateColumnBounds = function () {
29308
29480
  section.updateColumnBounds(posAry, noBorderAry);
29309
29481
  }
29310
29482
  };
29483
+ /* @private
29484
+ */
29485
+ Core_Core.prototype._updateColumnSeparators = function() {
29486
+ var sectCount = this._settings.length;
29487
+ if(!sectCount) {
29488
+ return;
29489
+ }
29490
+
29491
+ for(var i = 0; i < sectCount; i++) {
29492
+ var section = this._settings[i].getSection();
29493
+ if (section) {
29494
+ section.updateColumnSeparators();
29495
+ }
29496
+ }
29497
+ };
29311
29498
 
29312
29499
  /** @public
29313
29500
  * @param {number} startColIndex INCLUSIVE
@@ -29477,6 +29664,40 @@ Core_Core.prototype.getColumnGroupChildIds = function (groupId) {
29477
29664
  }
29478
29665
  return null;
29479
29666
  };
29667
+
29668
+ /** @public
29669
+ * @param {string} batchType
29670
+ * @return {boolean}
29671
+ * @fires Core#beforeBatchOperation
29672
+ */
29673
+ Core_Core.prototype.startBatch = function (batchType) {
29674
+ if(!batchType){
29675
+ return false;
29676
+ }
29677
+ if(!this._batches){
29678
+ this._batches = {};
29679
+ }
29680
+ this._batches[batchType] = batchType;
29681
+ this._dispatch("beforeBatchOperation", { batches: this._batches, batchType: batchType });
29682
+ return true;
29683
+ };
29684
+ /** @public
29685
+ * @param {string} batchType
29686
+ * @return {boolean}
29687
+ * @fires Core#afterBatchOperation
29688
+ */
29689
+ Core_Core.prototype.stopBatch = function (batchType) {
29690
+ if(!batchType){
29691
+ return false;
29692
+ }
29693
+ this._dispatch("afterBatchOperation", { batches: this._batches, batchType: batchType });
29694
+
29695
+ delete this._batches[batchType];
29696
+ if((0,es6_Util/* isEmptyObject */.Qr)(this._batches)){
29697
+ this._batches = null;
29698
+ }
29699
+ return true;
29700
+ };
29480
29701
  //#endregion Public Methods
29481
29702
 
29482
29703
  //#region Private Methods
@@ -29720,6 +29941,10 @@ Core_Core.prototype._dispatchColumnAddedEvent = function (at, count, atTheMiddle
29720
29941
  if (this._hasListener("columnAdded")) {
29721
29942
  var e = {};
29722
29943
  e["atTheMiddle"] = atTheMiddle;
29944
+ var batches = this._batches;
29945
+ if(batches){
29946
+ e["batches"] = batches;
29947
+ }
29723
29948
  if(count === 1) {
29724
29949
  e["colIndex"] = at;
29725
29950
  e["context"] = ctx;
@@ -29871,6 +30096,10 @@ Core_Core.prototype._removeColumn = function (num) { // TODO: change the logic
29871
30096
 
29872
30097
  if (this._hasListener("columnRemoved")) {
29873
30098
  var e = {};
30099
+ var batches = this._batches;
30100
+ if(batches){
30101
+ e["batches"] = batches;
30102
+ }
29874
30103
  for (var c = colCount; --c >= newCount; ) {
29875
30104
  var colDef = removedCols[c - newCount];
29876
30105
  e["colIndex"] = c;
@@ -30335,6 +30564,8 @@ Core_Core.prototype._onRowCountChanged = function (e) {
30335
30564
  if(!forceUpdate) {
30336
30565
  this._updateVScrollbar(); // Asynchronous
30337
30566
  }
30567
+
30568
+ this._updateColumnSeparators();
30338
30569
  if(prevRowCount < newRowCount) {
30339
30570
  this._dispatch("rowAdded", e);
30340
30571
  } else if(prevRowCount > newRowCount) {
@@ -30392,7 +30623,7 @@ Core_Core.prototype._onRowHeightChanged = function (e) {
30392
30623
  minSectionIndex >= this._startVScrollbarIndex);
30393
30624
  }
30394
30625
  }
30395
-
30626
+ this._updateColumnSeparators();
30396
30627
  this._dispatchRowPositionChanged();
30397
30628
  };
30398
30629
  /** @private
@@ -30457,6 +30688,7 @@ Core_Core.prototype._onColumnCountChanged = function () {
30457
30688
  var pinnedRight = this._countPinnedRightColumns();
30458
30689
 
30459
30690
  this._updateColumnBounds();
30691
+ this._updateColumnSeparators();
30460
30692
 
30461
30693
  if (this._hScrollbarEnabled && pinnedLeft + pinnedRight < this.getColumnCount()) {
30462
30694
  this._hscrollbar.enable();
@@ -30738,6 +30970,7 @@ Core_Core.prototype._syncLayoutToColumns = function (from, to, opt_forceDispatch
30738
30970
  var paneChanged = forceUpdate || (from < this.getHScrollStartIndex()) || (to > this.getFirstPinnedRightIndex());
30739
30971
  this._updateScrollbarWidth(paneChanged, true /* contentChanged */);
30740
30972
  this._updateColumnBounds();
30973
+ this._updateColumnSeparators();
30741
30974
  this._dispatchColumnPositionChanged();
30742
30975
 
30743
30976
  if (dirty || opt_forceDispatching) {
@@ -30833,6 +31066,7 @@ Core_Core.prototype._updateLayout = function () {
30833
31066
  var section = this._settings[s].getSection();
30834
31067
  section.updateLayout(); // Notify section about forced recalculation of the layout
30835
31068
  }
31069
+ this._updateColumnSeparators();
30836
31070
  };
30837
31071
 
30838
31072
  /** @private */
@@ -32395,6 +32629,9 @@ SortableTitlePlugin.prototype._sortDataView = function (opt_action) {
32395
32629
  if (!this._dataSorting) { return; }
32396
32630
 
32397
32631
  var sortCount = this._sortStates.length;
32632
+ if(this._userManagedLogic && sortCount > 1) { // The logic is managed by the user. There is no point in using multi-column sorting
32633
+ sortCount = 1;
32634
+ }
32398
32635
  var orders = null;
32399
32636
  var sortLogics = null;
32400
32637
  var c_ref = null;
@@ -32410,6 +32647,9 @@ SortableTitlePlugin.prototype._sortDataView = function (opt_action) {
32410
32647
  } else {
32411
32648
  c_ref = this.getColumnSortingFields();
32412
32649
  }
32650
+ if(this._userManagedLogic && c_ref.length > 1) {
32651
+ c_ref = c_ref.slice(0, 1);
32652
+ }
32413
32653
  }
32414
32654
 
32415
32655
  // Perform sorting even if there is no sort state