@refinitiv-ui/efx-grid 6.0.27 → 6.0.28

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.
Files changed (35) hide show
  1. package/lib/core/dist/core.js +247 -29
  2. package/lib/core/dist/core.min.js +1 -1
  3. package/lib/core/es6/data/DataTable.d.ts +1 -1
  4. package/lib/core/es6/data/DataTable.js +3 -2
  5. package/lib/core/es6/data/DataView.d.ts +1 -1
  6. package/lib/core/es6/data/DataView.js +3 -2
  7. package/lib/core/es6/data/Segment.d.ts +1 -1
  8. package/lib/core/es6/data/Segment.js +12 -3
  9. package/lib/core/es6/data/SegmentCollection.d.ts +1 -1
  10. package/lib/core/es6/data/SegmentCollection.js +3 -2
  11. package/lib/core/es6/grid/Core.d.ts +17 -3
  12. package/lib/core/es6/grid/Core.js +226 -20
  13. package/lib/grid/index.js +1 -1
  14. package/lib/row-segmenting/es6/RowSegmenting.js +21 -2
  15. package/lib/rt-grid/dist/rt-grid.js +418 -238
  16. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  17. package/lib/rt-grid/es6/ColumnDefinition.d.ts +2 -2
  18. package/lib/rt-grid/es6/ColumnDefinition.js +71 -70
  19. package/lib/rt-grid/es6/Grid.d.ts +9 -2
  20. package/lib/rt-grid/es6/Grid.js +55 -132
  21. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +3 -3
  22. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +9 -27
  23. package/lib/tr-grid-column-stack/es6/ColumnStack.js +2 -8
  24. package/lib/tr-grid-util/es6/GridPlugin.d.ts +6 -0
  25. package/lib/tr-grid-util/es6/GridPlugin.js +67 -0
  26. package/lib/types/es6/ColumnGrouping.d.ts +3 -3
  27. package/lib/types/es6/Core/data/DataTable.d.ts +1 -1
  28. package/lib/types/es6/Core/data/DataView.d.ts +1 -1
  29. package/lib/types/es6/Core/data/Segment.d.ts +1 -1
  30. package/lib/types/es6/Core/data/SegmentCollection.d.ts +1 -1
  31. package/lib/types/es6/Core/grid/Core.d.ts +17 -3
  32. package/lib/types/es6/RealtimeGrid/ColumnDefinition.d.ts +2 -2
  33. package/lib/types/es6/RealtimeGrid/Grid.d.ts +9 -2
  34. package/lib/versions.json +4 -4
  35. package/package.json +1 -1
@@ -85,6 +85,7 @@ import { ElementWrapper } from "../../core/es6/grid/components/ElementWrapper.js
85
85
  * @property {number=} adcPollingInterval=0 Length of polling interval for refreshing ADC data in milliseconds. The default value (0) means no polling.
86
86
  * @property {boolean=} fieldCaching=false If enabled, field definition will be caching internal mechanism
87
87
  * @property {string=} childDataField=CHILD_VALUES The given field will be used to store children's static data, such as row color assignment.
88
+ * @property {boolean=} topSection=true If disabled, title section will not be rendered
88
89
  */
89
90
 
90
91
  /** @typedef {number|string|RowDefinition} Grid~RowReference
@@ -228,26 +229,6 @@ var compareNumber = function(rowDefA, rowDefB, sortOrder, fieldName) { // edit n
228
229
  return (rowDefA.getData(fieldName) - rowDefB.getData(fieldName)) * sortOrder; // for numeric comparison
229
230
  };
230
231
 
231
- /** @private
232
- * @param {ColumnDefinition} colDef
233
- * @return {string}
234
- */
235
- var _getId = function(colDef) {
236
- if(colDef) {
237
- return colDef.getId();
238
- }
239
- return "";
240
- };
241
- /** @private
242
- * @param {ColumnDefinition} colDef
243
- * @return {string}
244
- */
245
- var _getField = function(colDef) {
246
- if(colDef) {
247
- return colDef.getField();
248
- }
249
- return "";
250
- };
251
232
  /** @private
252
233
  * @param {ColumnDefinition} colDef
253
234
  * @return {string}
@@ -336,6 +317,9 @@ var Grid = function(placeholder, config) {
336
317
  if(config["SortableTitle"]) { // Exception for built-in plugin
337
318
  t._stp = config["SortableTitle"];
338
319
  }
320
+ if(config["topSection"] === false) {
321
+ t._topSection = false;
322
+ }
339
323
  }
340
324
  if(!t._sharedDataSource) {
341
325
  t._dc = new DataCache();
@@ -550,7 +534,10 @@ Grid.prototype._fieldCaching = false;
550
534
  * @private
551
535
  */
552
536
  Grid.prototype._childDataField = "";
553
-
537
+ /** @type {boolean}
538
+ * @private
539
+ */
540
+ Grid.prototype._topSection = true;
554
541
 
555
542
  /** @public
556
543
  */
@@ -665,7 +652,11 @@ Grid.prototype.updateRowData = Grid.prototype._updateRowData;
665
652
  */
666
653
  Grid.prototype._addGridSections = function () {
667
654
  var title = this._grid.addSection("title");
668
- title.setRowCount(1);
655
+ if(this._topSection == false){
656
+ title.setRowCount(0);
657
+ } else {
658
+ title.setRowCount(1);
659
+ }
669
660
  this._grid.addSection("content");
670
661
 
671
662
  var titleSettings = this._grid.getSectionSettings("title");
@@ -1617,10 +1608,13 @@ Grid.prototype.setFields = Grid.prototype.setColumns;
1617
1608
  * @param {Object} e
1618
1609
  */
1619
1610
  Grid.prototype._onColumnAdded = function(e) {
1620
- var colDef = e.context[COL_DEF];
1611
+ var colDef = /** @type{ColumnDefinition} */(e.context[COL_DEF]);
1621
1612
  delete e.context[COL_DEF];
1622
1613
  var idx = e.colIndex;
1623
1614
 
1615
+ var coreColDef = this._grid._getColumnDef(idx);
1616
+ colDef._setCoreColumnDef(coreColDef); // For column id and field
1617
+
1624
1618
  var colData = this._grid.getColumnData(idx);
1625
1619
  if(!colData) { // Save column inside grid
1626
1620
  colData = this._grid.setColumnData(idx, {});
@@ -1847,102 +1841,16 @@ Grid.prototype.moveColumn = function (fromColIndex, toColIndex) {
1847
1841
  * grid.moveColumnById("sourceColumnId", ""); // move to the last position
1848
1842
  */
1849
1843
  Grid.prototype.moveColumnById = function (srcCol, destCol) {
1850
- var colCount = this.getColumnCount();
1851
- var srcIndex = this.getColumnIndex(srcCol);
1852
- if(srcIndex < 0 || srcIndex >= colCount) {
1853
- return false;
1854
- }
1855
- var destIndex = this.getColumnIndex(destCol);
1856
- if(destIndex < 0) {
1857
- destIndex = colCount;
1858
- }
1859
- return this._moveColumnByIndex(srcIndex, destIndex);
1860
- };
1861
- /** Move column without verification for better performance
1862
- * @private
1863
- * @param {number} srcIndex Column index
1864
- * @param {number} destIndex Column index of the destination
1865
- * @return {boolean} Return true if there is any change, and false otherwise
1866
- */
1867
- Grid.prototype._moveColumnByIndex = function (srcIndex, destIndex) {
1868
- if(srcIndex < destIndex) { // Ensure that the source column is put in front of the destination index
1869
- --destIndex;
1870
- }
1871
- if(srcIndex === destIndex) {
1872
- return false;
1873
- }
1874
- return this.moveColumn(srcIndex, destIndex);
1844
+ return this._grid.moveColumnById(srcCol, destCol);
1875
1845
  };
1876
1846
 
1877
1847
  /** @public
1878
1848
  * @param {number|string|Array.<number|string>} colRefs List of column index or column id to be moved
1879
- * @param {number|string} destCol Destination position where the moved columns will be placed BEFORE the specified position. This can be column id or index
1849
+ * @param {(number|string)=} destCol Destination position where the moved columns will be placed BEFORE the specified position. This can be column id or index
1880
1850
  * @return {boolean} Return true if there is any change, and false otherwise
1881
1851
  */
1882
1852
  Grid.prototype.reorderColumns = function (colRefs, destCol) {
1883
- var destId = (typeof destCol === "number") ? this.getColumnId(destCol) : destCol;
1884
-
1885
- if(Array.isArray(colRefs)) {
1886
- var srcLen = colRefs.length;
1887
- if(srcLen > 1) {
1888
- var colIds = this.getColumnIds();
1889
- var colCount = colIds.length;
1890
- var srcIds = [];
1891
- var invalidDest = false;
1892
- var i, srcId, srcIdx;
1893
- for(i = 0; i < srcLen; ++i) {
1894
- var colRef = colRefs[i];
1895
- if(typeof colRef === "number") {
1896
- srcIdx = colRef;
1897
- srcId = colIds[colRef] || "";
1898
- } else {
1899
- srcId = colRef;
1900
- srcIdx = colIds.indexOf(srcId);
1901
- }
1902
- if(srcId && srcIdx >= 0) {
1903
- srcIds.push(srcId);
1904
- if(destId === srcId) {
1905
- invalidDest = true; // Destination must not exist in source columns
1906
- }
1907
- }
1908
- }
1909
-
1910
- var destIdx;
1911
- srcLen = srcIds.length;
1912
- if(invalidDest) { // Find the next valid destination where it is not contained in the source columns
1913
- destIdx = this.getColumnIndex(destId);
1914
- if(destIdx >= 0) {
1915
- while(++destIdx < colCount) {
1916
- destId = colIds[destIdx];
1917
- if(srcIds.indexOf(destId) < 0) {
1918
- break;
1919
- }
1920
- }
1921
- }
1922
- if(destIdx < 0 || destIdx >= colCount) {
1923
- destId = "";
1924
- }
1925
- }
1926
-
1927
- var dirty = 0;
1928
- for(i = srcLen; --i >= 0;) {
1929
- srcId = srcIds[i]; // Only valid source columns are left at this point
1930
- srcIdx = this.getColumnIndex(srcId);
1931
- destIdx = this.getColumnIndex(destId);
1932
- if(destIdx < 0) { // Insert to the back when id is not found
1933
- destIdx = colCount;
1934
- }
1935
- dirty |= this._moveColumnByIndex(srcIdx, destIdx);
1936
- destId = srcId;
1937
- }
1938
- return dirty ? true : false;
1939
- } else {
1940
- return this.moveColumnById(colRefs[0], destId);
1941
- }
1942
- }
1943
-
1944
- // colRefs will be a number or string
1945
- return this.moveColumnById(colRefs, destId);
1853
+ return this._grid.reorderColumns(colRefs, destCol);
1946
1854
  };
1947
1855
 
1948
1856
  /** The hidden column still occupies the same index.
@@ -2981,30 +2889,19 @@ Grid.prototype._getRowId = function(rowRef) {
2981
2889
  * @return {number}
2982
2890
  */
2983
2891
  Grid.prototype.getColumnIndex = function(colRef) {
2984
- if(typeof colRef === "number") {
2985
- return colRef;
2986
- }
2987
-
2988
2892
  if(colRef) {
2989
2893
  var colCount = this.getColumnCount();
2990
- var i, colDef;
2991
2894
  if(colRef instanceof ColumnDefinition) {
2992
- for(i = 0; i < colCount; ++i) {
2993
- colDef = this.getColumnDefinition(i);
2895
+ for(var i = 0; i < colCount; ++i) {
2896
+ var colDef = this.getColumnDefinition(i);
2994
2897
  if(colDef === colRef) {
2995
2898
  return i;
2996
2899
  }
2997
2900
  }
2998
- } else if(typeof colRef === "string") {
2999
- for(i = 0; i < colCount; ++i) {
3000
- colDef = this.getColumnDefinition(i);
3001
- if(_hasFieldOrId(colDef, colRef)) {
3002
- return i; // Return the first found field
3003
- }
3004
- }
2901
+ return -1;
3005
2902
  }
3006
2903
  }
3007
- return -1;
2904
+ return this._grid.getColumnIndex(colRef);
3008
2905
  };
3009
2906
  /** Any invalid column reference will be excluded from the output array
3010
2907
  * @public
@@ -3020,7 +2917,7 @@ Grid.prototype.getColumnIndices = function(colRefs) {
3020
2917
  for(var i = 0; i < len; ++i) {
3021
2918
  var colIndex = this.getColumnIndex(inputAry[i]);
3022
2919
  if(colIndex >= 0 && colIndex < colCount) {
3023
- ary.push(colIndex); // WARNING: We have not check for duplication
2920
+ ary.push(colIndex); // WARNING: We have not checked for duplication
3024
2921
  }
3025
2922
  }
3026
2923
  return ary;
@@ -3032,14 +2929,14 @@ Grid.prototype.getColumnIndices = function(colRefs) {
3032
2929
  * @see {@link Grid#getColumnDefinition}
3033
2930
  */
3034
2931
  Grid.prototype.getColumnId = function(colIndex) {
3035
- return _getId(this.getColumnDefinition(colIndex));
2932
+ return this._grid.getColumnId(colIndex);
3036
2933
  };
3037
2934
  /** Get ids from each column definition.
3038
2935
  * @public
3039
2936
  * @return {!Array.<string>} New array is created
3040
2937
  */
3041
2938
  Grid.prototype.getColumnIds = function() {
3042
- return this.getColumnDefinitions().map(_getId);
2939
+ return this._grid.getColumnIds();
3043
2940
  };
3044
2941
  /** Return field defined in the column definition
3045
2942
  * @public
@@ -3048,14 +2945,14 @@ Grid.prototype.getColumnIds = function() {
3048
2945
  * @see {@link Grid#getColumnDefinition}
3049
2946
  */
3050
2947
  Grid.prototype.getColumnField = function(colIndex) {
3051
- return _getField(this.getColumnDefinition(colIndex));
2948
+ return this._grid.getColumnField(colIndex);
3052
2949
  };
3053
2950
  /** Get fields from each column definition. Note that this does not include any required field or data fields. Duplicates may exist.
3054
2951
  * @public
3055
2952
  * @return {!Array.<string>} New array is created
3056
2953
  */
3057
2954
  Grid.prototype.getColumnFields = function() {
3058
- return this.getColumnDefinitions().map(_getField);
2955
+ return this._grid.getColumnFields();
3059
2956
  };
3060
2957
  /** Get column name from each column definition. Note that this does not include any required field or data fields. Duplicates may exist.
3061
2958
  * @public
@@ -3513,6 +3410,32 @@ Grid.prototype.setClassification = function(rowRef, fields) {
3513
3410
  return false;
3514
3411
  };
3515
3412
 
3413
+ /** Check element in the grid element
3414
+ * @public
3415
+ * @param {Element} elem
3416
+ * @return {boolean}=true if an element from the parameter is inside a grid element
3417
+ */
3418
+ Grid.prototype.contains = function(elem) {
3419
+ if(elem) {
3420
+ // This will impact the contents within the rt-grid element, but not those outside of it, such as the wrapper elements atlas-blotter and ef-grid.
3421
+ return this._topNode.contains(elem);
3422
+ }
3423
+ return false;
3424
+ };
3425
+
3426
+ /** Check grid element is focused
3427
+ * @public
3428
+ * @return {boolean}
3429
+ */
3430
+ Grid.prototype.isFocused = function() {
3431
+ var activeElement = document.activeElement;
3432
+ if(!activeElement || !activeElement.shadowRoot) {
3433
+ // active element is not in the shadow DOM. try using contains method to check
3434
+ return this.contains(activeElement);
3435
+ }
3436
+ // For wrapper scenarios, such as atlas-blotter or efx-grid
3437
+ return activeElement.shadowRoot === this._topNode.parentNode;
3438
+ };
3516
3439
  /** @description Focus grid element without moving window scrollbar
3517
3440
  * @public
3518
3441
  */
@@ -79,11 +79,11 @@ declare class ColumnGroupingPlugin extends GridPlugin {
79
79
 
80
80
  public getValidDestinationIndex(id: string, destCol: number|string|null): number;
81
81
 
82
- public moveGroup(id: string, destCol: number|string|null): void;
82
+ public moveGroup(id: string, destCol?: (number|string)|null): void;
83
83
 
84
- public reorderColumns(colList: (number|string)[]|null, destCol: number|string|null): boolean;
84
+ public reorderColumns(colList: (number|string)[]|null, destCol?: (number|string)|null): boolean;
85
85
 
86
- public moveColumnById(srcCol: number|string|null, destCol?: number|string|null): boolean;
86
+ public moveColumnById(srcCol: number|string|null, destCol?: (number|string)|null): boolean;
87
87
 
88
88
  }
89
89
 
@@ -318,16 +318,7 @@ ColumnGroupingPlugin.prototype.config = function (options) {
318
318
  }
319
319
  var columns = options["columns"];
320
320
  if (columns) {
321
- var len = columns.length;
322
- for (var i = 0; i < len; ++i) {
323
- var colData = this._newColumnData(i);
324
- colData["columnGrouping"] = {
325
- // used for columnRemoved event
326
- id: columns[i].id // TODO: This does not work with runtime change
327
- };
328
- }
329
-
330
- groupDefs = this._migrateLegacyStructure(groupDefs, options["columns"]);
321
+ groupDefs = this._migrateLegacyStructure(groupDefs, columns);
331
322
  }
332
323
  if (groupDefs) {
333
324
  ColumnGroupingPlugin._flattenGroupDefs(groupDefs);
@@ -805,9 +796,8 @@ ColumnGroupingPlugin.prototype._onColumnMoved = function (e) {
805
796
  * @param {Object} e
806
797
  */
807
798
  ColumnGroupingPlugin.prototype._onColumnRemoved = function (e) {
808
- var colData = e.columnData;
809
- if (colData && colData.columnGrouping) {
810
- var colId = colData.columnGrouping.id;
799
+ var colId = e.colId;
800
+ if (colId) {
811
801
  if (this._groupDefs.unsetParent(colId)) {
812
802
  this._requestApplyGrouping();
813
803
  }
@@ -1440,7 +1430,7 @@ ColumnGroupingPlugin.prototype.getValidDestinationIndex = function (id, destCol)
1440
1430
  * Group or column can only be moved within the parent group.
1441
1431
  * If the destination is between other column group, the destination will change to the end of that group instead.
1442
1432
  * @param {string} id group id or column id
1443
- * @param {number|string} destCol destination column index / id
1433
+ * @param {(number|string)=} destCol destination column index / id
1444
1434
  */
1445
1435
  ColumnGroupingPlugin.prototype.moveGroup = function (id, destCol) {
1446
1436
  var groupDef;
@@ -1466,7 +1456,7 @@ ColumnGroupingPlugin.prototype.moveGroup = function (id, destCol) {
1466
1456
  /** Move and reorder the specified columns to position before the destination
1467
1457
  * @public
1468
1458
  * @param {Array.<number|string>} colList Column list to be reordered
1469
- * @param {number|string} destCol destination destination column id or index
1459
+ * @param {(number|string)=} destCol Destination column id or index
1470
1460
  * @return {boolean}
1471
1461
  */
1472
1462
  ColumnGroupingPlugin.prototype.reorderColumns = function (colList, destCol) {
@@ -1474,29 +1464,21 @@ ColumnGroupingPlugin.prototype.reorderColumns = function (colList, destCol) {
1474
1464
  // TODO: create method for toggling autoGrouping flag
1475
1465
  this._autoGrouping = false; // Prevent re-grouping in columnMoved event
1476
1466
 
1477
- var gridApi = this.getGridApi();
1478
- if (gridApi && gridApi.reorderColumns) {
1479
- dirty = gridApi.reorderColumns(colList, destCol); // TODO: Support multi-table feature
1480
- }
1481
-
1467
+ this._reorderColumns(colList, destCol);
1482
1468
  this._autoGrouping = true;
1483
1469
  return dirty;
1484
1470
  };
1485
1471
  /** Move the specified column to position before the destination
1486
1472
  * @public
1487
- * @param {number|string} srcCol source column id or index
1488
- * @param {number|string=} destCol destination column id or index
1473
+ * @param {number|string} srcCol Source column id or index
1474
+ * @param {(number|string)=} destCol Destination column id or index
1489
1475
  * @return {boolean}
1490
1476
  */
1491
1477
  ColumnGroupingPlugin.prototype.moveColumnById = function (srcCol, destCol) {
1492
1478
  var dirty = false;
1493
1479
  this._autoGrouping = false; // Prevent re-grouping in columnMoved event
1494
1480
 
1495
- var gridApi = this.getGridApi();
1496
- if (gridApi && gridApi.moveColumnById) {
1497
- dirty = gridApi.moveColumnById(srcCol, destCol); // TODO: Support multi-table feature
1498
- }
1499
-
1481
+ this._moveColumnById(srcCol, destCol);
1500
1482
  this._autoGrouping = true;
1501
1483
  return dirty;
1502
1484
  };
@@ -1850,10 +1850,7 @@ ColumnStackPlugin.prototype.reorderColumns = function(colList, destCol) {
1850
1850
  var dirty = false;
1851
1851
  this._stacking = false;
1852
1852
 
1853
- var gridApi = this.getGridApi();
1854
- if(gridApi && gridApi.reorderColumns) {
1855
- dirty = gridApi.reorderColumns(colList, destCol); // TODO: Support multi-table feature
1856
- }
1853
+ this._reorderColumns(colList, destCol);
1857
1854
 
1858
1855
  this._stacking = true;
1859
1856
  return dirty;
@@ -1868,10 +1865,7 @@ ColumnStackPlugin.prototype.moveColumnById = function(srcCol, destCol) {
1868
1865
  var dirty = false;
1869
1866
  this._stacking = false;
1870
1867
 
1871
- var gridApi = this.getGridApi();
1872
- if(gridApi && gridApi.moveColumnById) {
1873
- dirty = gridApi.moveColumnById(srcCol, destCol); // TODO: Support multi-table feature
1874
- }
1868
+ this._moveColumnById(srcCol, destCol);
1875
1869
 
1876
1870
  this._stacking = true;
1877
1871
  return dirty;
@@ -34,6 +34,12 @@ declare class GridPlugin extends EventDispatcher {
34
34
 
35
35
  public getColumnId(colIndex: number|string|null): string;
36
36
 
37
+ public getColumnIds(): (string)[];
38
+
39
+ public getColumnField(colIndex: number): string;
40
+
41
+ public getColumnFields(): (string)[];
42
+
37
43
  public getColumnCount(): number;
38
44
 
39
45
  public static requestPlugin(ref: any, pluginRef: any, configObj?: any, compositeGrid?: any, realTimeGrid?: any): Promise<any>|null;
@@ -238,6 +238,7 @@ GridPlugin.prototype.getColumnName = function (colRef) {
238
238
  * @return {number}
239
239
  */
240
240
  GridPlugin.prototype.getColumnIndex = function (colRef) {
241
+ // TODO: Unify the below logics
241
242
  if(typeof colRef === "number") {
242
243
  return colRef;
243
244
  }
@@ -258,6 +259,7 @@ GridPlugin.prototype.getColumnIndex = function (colRef) {
258
259
  * @return {Array.<number>} column indices
259
260
  */
260
261
  GridPlugin.prototype.getColumnIndices = function (colRefs) {
262
+ // TODO: Unify the below logics
261
263
  if(this._compositeGrid) {
262
264
  var allFields = this._compositeGrid.getColumnFields();
263
265
  var columnCount = this._compositeGrid.getColumnCount();
@@ -286,6 +288,7 @@ GridPlugin.prototype.getColumnIndices = function (colRefs) {
286
288
  * @return {string}
287
289
  */
288
290
  GridPlugin.prototype.getColumnId = function (colIndex) {
291
+ // TODO: Unify the below logics
289
292
  if(typeof colIndex === "string") {
290
293
  return colIndex;
291
294
  }
@@ -300,6 +303,34 @@ GridPlugin.prototype.getColumnId = function (colIndex) {
300
303
  return "";
301
304
  };
302
305
  /** @public
306
+ * @return {!Array.<string>} Return all column ids from existing column
307
+ */
308
+ GridPlugin.prototype.getColumnIds = function () {
309
+ if(this._hosts && this._hosts.length) {
310
+ return this._hosts[0].getColumnIds();
311
+ }
312
+ return [];
313
+ };
314
+ /** @public
315
+ * @param {number} colIndex
316
+ * @return {string} Return empty string if the specified column does not exist
317
+ */
318
+ GridPlugin.prototype.getColumnField = function (colIndex) {
319
+ if(this._hosts && this._hosts.length) {
320
+ return this._hosts[0].getColumnField(colIndex);
321
+ }
322
+ return "";
323
+ };
324
+ /** @public
325
+ * @return {!Array.<string>} Return all column fields from existing column
326
+ */
327
+ GridPlugin.prototype.getColumnFields = function () {
328
+ if(this._hosts && this._hosts.length) {
329
+ return this._hosts[0].getColumnFields();
330
+ }
331
+ return [];
332
+ };
333
+ /** @public
303
334
  * @return {number}
304
335
  */
305
336
  GridPlugin.prototype.getColumnCount = function() {
@@ -309,6 +340,42 @@ GridPlugin.prototype.getColumnCount = function() {
309
340
  }
310
341
  return 0;
311
342
  };
343
+ /** @protected
344
+ * @ignore
345
+ * @param {number|string} srcCol Column Id or index
346
+ * @param {(number|string)=} destCol Column Id or index of the destination
347
+ * @return {boolean}
348
+ */
349
+ GridPlugin.prototype._moveColumnById = function (srcCol, destCol) {
350
+ var hosts = this._hosts;
351
+ var len = hosts ? hosts.length : 0;
352
+ if(len) {
353
+ var dirty = 0;
354
+ for(var i = 0; i < len; ++i) {
355
+ dirty |= hosts[i].moveColumnById(srcCol, destCol);
356
+ }
357
+ return dirty ? true : false;
358
+ }
359
+ return false;
360
+ };
361
+ /** @protected
362
+ * @ignore
363
+ * @param {number|string|Array.<number|string>} colRefs List of column index or column id to be moved
364
+ * @param {(number|string)=} destCol Destination position where the moved columns will be placed BEFORE the specified position. This can be column id or index
365
+ * @return {boolean} Return true if there is any change, and false otherwise
366
+ */
367
+ GridPlugin.prototype._reorderColumns = function (colRefs, destCol) {
368
+ var hosts = this._hosts;
369
+ var len = hosts ? hosts.length : 0;
370
+ if(len) {
371
+ var dirty = 0;
372
+ for(var i = 0; i < len; ++i) {
373
+ dirty |= hosts[i].reorderColumns(colRefs, destCol);
374
+ }
375
+ return dirty ? true : false;
376
+ }
377
+ return false;
378
+ };
312
379
 
313
380
  /** @protected
314
381
  * @deprecated
@@ -79,11 +79,11 @@ declare class ColumnGroupingPlugin extends GridPlugin {
79
79
 
80
80
  public getValidDestinationIndex(id: string, destCol: number|string|null): number;
81
81
 
82
- public moveGroup(id: string, destCol: number|string|null): void;
82
+ public moveGroup(id: string, destCol?: (number|string)|null): void;
83
83
 
84
- public reorderColumns(colList: (number|string)[]|null, destCol: number|string|null): boolean;
84
+ public reorderColumns(colList: (number|string)[]|null, destCol?: (number|string)|null): boolean;
85
85
 
86
- public moveColumnById(srcCol: number|string|null, destCol?: number|string|null): boolean;
86
+ public moveColumnById(srcCol: number|string|null, destCol?: (number|string)|null): boolean;
87
87
 
88
88
  }
89
89
 
@@ -98,7 +98,7 @@ declare class DataTable extends DataCache {
98
98
 
99
99
  public addSegmentChild(segmentId: string, rid: string, dataId?: string|null): boolean;
100
100
 
101
- public addSegmentChildren(segmentId: string, rids: (string)[]|null): boolean;
101
+ public addSegmentChildren(segmentId: string, rids: (string)[]|null, dataIds?: (string)[]|null): boolean;
102
102
 
103
103
  public removeSegmentChild(segmentId: string, rid: string): boolean;
104
104
 
@@ -258,7 +258,7 @@ declare class DataView extends EventDispatcher {
258
258
 
259
259
  public addSegmentChild(segmentRef: string|number|null, rowRef: string|number|null, dataId?: string|null): boolean;
260
260
 
261
- public addSegmentChildren(segmentRef: string|number|null, rowRefs: (string|number)[]|null): boolean;
261
+ public addSegmentChildren(segmentRef: string|number|null, rowRefs: (string|number)[]|null, dataIds?: (string)[]|null): boolean;
262
262
 
263
263
  public removeSegmentChild(segmentRef: string|number|null, rowRef: string|number|null): boolean;
264
264
 
@@ -15,7 +15,7 @@ declare class Segment extends EventDispatcher {
15
15
 
16
16
  public addChild(rid: string, dataId?: string|null): boolean;
17
17
 
18
- public addChildren(rids: (string)[]|null): boolean;
18
+ public addChildren(rids: (string)[]|null, dataIds?: (string)[]|null): boolean;
19
19
 
20
20
  public containsChild(rid: string): boolean;
21
21
 
@@ -40,7 +40,7 @@ declare class SegmentCollection extends EventDispatcher {
40
40
 
41
41
  public addSegmentChild(segmentId: string, rid: string, dataId?: string|null): boolean;
42
42
 
43
- public addSegmentChildren(segmentId: string, rids: (string)[]|null): boolean;
43
+ public addSegmentChildren(segmentId: string, rids: (string)[]|null, dataIds?: (string)[]|null): boolean;
44
44
 
45
45
  public containsSegmentChild(segmentId: string, rid: string): boolean;
46
46
 
@@ -133,6 +133,10 @@ declare class Core extends ElementWrapper {
133
133
 
134
134
  public moveColumn(fromCol: number|(number)[]|null, destCol: number): boolean;
135
135
 
136
+ public moveColumnById(srcCol: number|string|null, destCol?: (number|string)|null): boolean;
137
+
138
+ public reorderColumns(colRefs: number|string|(number|string)[]|null, destCol?: (number|string)|null): boolean;
139
+
136
140
  public addRow(opt_num?: number|null): void;
137
141
 
138
142
  public removeRow(opt_num?: number|null): void;
@@ -297,8 +301,6 @@ declare class Core extends ElementWrapper {
297
301
 
298
302
  public getRelativePosition(obj: ElementWrapper|Element|Event|MouseEvent, context?: any): Core.MouseInfo;
299
303
 
300
- public getColumnIndex(str: string): number;
301
-
302
304
  public getVScrollbar(): ElementWrapper;
303
305
 
304
306
  public getHScrollbar(): ElementWrapper;
@@ -393,6 +395,18 @@ declare class Core extends ElementWrapper {
393
395
 
394
396
  public getColumnIds(): (string)[];
395
397
 
398
+ public setColumnField(colIndex: number, field: string): void;
399
+
400
+ public getColumnField(colIndex: number): string;
401
+
402
+ public getColumnFields(): (string)[];
403
+
404
+ public getColumnIndex(colRef: string|number|null): number;
405
+
406
+ public getColumnIndices(colRefs: (number|string)[]|null): (number)[];
407
+
408
+ public getColumnIndexMap(): { [key: string]: number };
409
+
396
410
  }
397
411
 
398
412
  declare function num(opt_type?: string|null): (ILayoutGrid)[];
@@ -409,7 +423,7 @@ declare function section(): number;
409
423
 
410
424
  declare function path(obj: ElementWrapper|Element|Event|MouseEvent, context?: any): Core.MouseInfo;
411
425
 
412
- declare function cellElement(str: string): number;
426
+ declare function cellElement(): ElementWrapper;
413
427
 
414
428
  export default Core;
415
429
  export { Core };
@@ -51,13 +51,13 @@ declare namespace ColumnDefinition {
51
51
 
52
52
  declare class ColumnDefinition {
53
53
 
54
- constructor(columnOption?: ColumnDefinition.Options|string|null, hostGrid?: any);
54
+ constructor(columnOption?: ColumnDefinition.Options|null, hostGrid?: any);
55
55
 
56
56
  public dispose(): void;
57
57
 
58
58
  public _initializeTimeSeriesChild(columnOption?: ColumnDefinition.Options|string|null): void;
59
59
 
60
- public initialize(columnOption?: ColumnDefinition.Options|string|null): void;
60
+ public initialize(columnOption?: ColumnDefinition.Options|null): void;
61
61
 
62
62
  public getId(): string;
63
63