@refinitiv-ui/efx-grid 6.0.87 → 6.0.88
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/column-dragging/es6/ColumnDragging.js +55 -0
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +779 -702
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.js +68 -68
- package/lib/rt-grid/es6/DataConnector.js +26 -26
- package/lib/rt-grid/es6/FieldDefinition.js +27 -27
- package/lib/rt-grid/es6/Grid.js +385 -376
- package/lib/rt-grid/es6/PredefinedFormula.js +1 -1
- package/lib/rt-grid/es6/ReferenceCounter.js +15 -15
- package/lib/rt-grid/es6/RowDefSorter.js +26 -26
- package/lib/rt-grid/es6/RowDefinition.d.ts +5 -2
- package/lib/rt-grid/es6/RowDefinition.js +103 -74
- package/lib/rt-grid/es6/SnapshotFiller.js +77 -77
- package/lib/rt-grid/es6/StyleLoader.js +1 -1
- package/lib/tr-grid-percent-bar/es6/PercentBar.d.ts +18 -18
- package/lib/tr-grid-percent-bar/es6/PercentBar.js +4 -0
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +28 -16
- package/lib/tr-grid-util/es6/DragUI.js +2 -1
- package/lib/types/es6/PercentBar.d.ts +18 -18
- package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +5 -2
- package/lib/versions.json +5 -5
- package/package.json +1 -1
package/lib/rt-grid/es6/Grid.js
CHANGED
@@ -179,13 +179,13 @@ import { ElementWrapper } from "../../core/es6/grid/components/ElementWrapper.js
|
|
179
179
|
* @private
|
180
180
|
* @const
|
181
181
|
*/
|
182
|
-
|
182
|
+
const SUB_ID = "SUB_ID";
|
183
183
|
|
184
184
|
/** @private
|
185
185
|
* @param {RowDefinition} rowDef
|
186
186
|
* @return {Object}
|
187
187
|
*/
|
188
|
-
|
188
|
+
let toRowData = function(rowDef) {
|
189
189
|
return rowDef ? rowDef.getRowData() : null;
|
190
190
|
};
|
191
191
|
|
@@ -193,7 +193,7 @@ var toRowData = function(rowDef) {
|
|
193
193
|
* @const
|
194
194
|
* @type {Object.<string, number>}
|
195
195
|
*/
|
196
|
-
|
196
|
+
let _unclonableFields = {
|
197
197
|
"ROW_DEF": 1,
|
198
198
|
"SUB_ID": 1
|
199
199
|
};
|
@@ -201,10 +201,10 @@ var _unclonableFields = {
|
|
201
201
|
* @param {RowDefinition} fromRowDef
|
202
202
|
* @param {RowDefinition} toRowDef
|
203
203
|
*/
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
for(
|
204
|
+
let cloneRowData = function(fromRowDef, toRowDef) {
|
205
|
+
let from = toRowData(fromRowDef);
|
206
|
+
let to = toRowData(toRowDef);
|
207
|
+
for(let key in from) {
|
208
208
|
if(!_unclonableFields[key]) {
|
209
209
|
to[key] = from[key];
|
210
210
|
}
|
@@ -215,7 +215,7 @@ var cloneRowData = function(fromRowDef, toRowDef) {
|
|
215
215
|
* @param {RowDefinition} rowDef
|
216
216
|
* @return {boolean}
|
217
217
|
*/
|
218
|
-
|
218
|
+
let excludeAutoGenerated = function (rowDef) {
|
219
219
|
return !rowDef.isAutoGenerated();
|
220
220
|
};
|
221
221
|
|
@@ -223,7 +223,7 @@ var excludeAutoGenerated = function (rowDef) {
|
|
223
223
|
* @param {Object} colConfig column config
|
224
224
|
* @return {boolean}
|
225
225
|
*/
|
226
|
-
|
226
|
+
let _byNonAutoGeneratedColumn = function (colConfig) {
|
227
227
|
return !colConfig.autoGenerated;
|
228
228
|
};
|
229
229
|
/** @private
|
@@ -233,7 +233,7 @@ var _byNonAutoGeneratedColumn = function (colConfig) {
|
|
233
233
|
* @param {string} fieldName
|
234
234
|
* @return {number} The outcome of the value comparison
|
235
235
|
*/
|
236
|
-
|
236
|
+
let compareNumber = function(rowDefA, rowDefB, sortOrder, fieldName) { // edit name
|
237
237
|
return (rowDefA.getData(fieldName) - rowDefB.getData(fieldName)) * sortOrder; // for numeric comparison
|
238
238
|
};
|
239
239
|
|
@@ -244,14 +244,14 @@ var compareNumber = function(rowDefA, rowDefB, sortOrder, fieldName) { // edit n
|
|
244
244
|
* @param {string} sortOrder
|
245
245
|
* @return {number} The outcome of the value comparison
|
246
246
|
*/
|
247
|
-
|
248
|
-
|
247
|
+
let _sortChildrenOfChain = function (rowDefA, rowDefB, sortOrder) {
|
248
|
+
let parentA = rowDefA.getParent();
|
249
249
|
|
250
250
|
if (!parentA) {
|
251
251
|
return 0;
|
252
252
|
}
|
253
253
|
|
254
|
-
|
254
|
+
let parentB = rowDefB.getParent();
|
255
255
|
|
256
256
|
if (!parentB) {
|
257
257
|
return 0;
|
@@ -261,13 +261,13 @@ var _sortChildrenOfChain = function (rowDefA, rowDefB, sortOrder) {
|
|
261
261
|
return 0;
|
262
262
|
}
|
263
263
|
|
264
|
-
|
264
|
+
let a = rowDefA.getData('CHILD_ORDER');
|
265
265
|
|
266
266
|
if (a == null) {
|
267
267
|
return 0;
|
268
268
|
}
|
269
269
|
|
270
|
-
|
270
|
+
let b = rowDefB.getData('CHILD_ORDER');
|
271
271
|
|
272
272
|
if (b == null) {
|
273
273
|
return 0;
|
@@ -280,7 +280,7 @@ var _sortChildrenOfChain = function (rowDefA, rowDefB, sortOrder) {
|
|
280
280
|
* @param {ColumnDefinition} colDef
|
281
281
|
* @return {string}
|
282
282
|
*/
|
283
|
-
|
283
|
+
let _getName = function(colDef) {
|
284
284
|
if(colDef) {
|
285
285
|
return colDef.getName();
|
286
286
|
}
|
@@ -291,7 +291,7 @@ var _getName = function(colDef) {
|
|
291
291
|
* @param {string} str
|
292
292
|
* @return {boolean}
|
293
293
|
*/
|
294
|
-
|
294
|
+
let _hasFieldOrId = function(colDef, str) {
|
295
295
|
return (colDef.getField() === str) || (colDef.getId() === str);
|
296
296
|
};
|
297
297
|
|
@@ -301,7 +301,7 @@ var _hasFieldOrId = function(colDef, str) {
|
|
301
301
|
* @param {Object} obj2
|
302
302
|
* @returns {boolean} If the id property of two objects is equal, the return will be true, otherwise it will be false.
|
303
303
|
*/
|
304
|
-
|
304
|
+
let _hasMatchingId = function(obj1, obj2) {
|
305
305
|
if(!obj1 || !obj2 || !obj1.id || !obj2.id) { // Handle nullable, if the object or id have null, it's means difference value
|
306
306
|
return false;
|
307
307
|
}
|
@@ -313,8 +313,8 @@ var _hasMatchingId = function(obj1, obj2) {
|
|
313
313
|
* @param {(Element|null)=} placeholder
|
314
314
|
* @param {Grid~GridOptions=} config
|
315
315
|
*/
|
316
|
-
|
317
|
-
|
316
|
+
let Grid = function(placeholder, config) {
|
317
|
+
let t = this; // This is to primarily reduce file size
|
318
318
|
|
319
319
|
t._onDataChanged = t._onDataChanged.bind(t);
|
320
320
|
t._onQuote2PostUpdate = t._onQuote2PostUpdate.bind(t);
|
@@ -372,7 +372,7 @@ var Grid = function(placeholder, config) {
|
|
372
372
|
t._dt = t._dv.getDataTable();
|
373
373
|
t._mainGrid = config["grid"];
|
374
374
|
|
375
|
-
|
375
|
+
let core = t._mainGrid.getCoreGrid();
|
376
376
|
t._stp = core.getPlugin("SortableTitlePlugin");
|
377
377
|
}
|
378
378
|
if(config["SortableTitle"]) { // Exception for built-in plugin
|
@@ -667,7 +667,7 @@ Grid.prototype.initSubscription = function() {
|
|
667
667
|
return;
|
668
668
|
}
|
669
669
|
|
670
|
-
|
670
|
+
let jet, q, s;
|
671
671
|
jet = window["JET"]; // Assume that JET is already exist.
|
672
672
|
if (this._RTK) {
|
673
673
|
q = this._RTK.Quotes;
|
@@ -691,10 +691,10 @@ Grid.prototype.initSubscription = function() {
|
|
691
691
|
|
692
692
|
// TODO: Subscriptions should be registered per row.
|
693
693
|
// However, chain subscription cannot be integrated with DataConnector in this current implementation.
|
694
|
-
|
695
|
-
|
696
|
-
for(
|
697
|
-
|
694
|
+
let rowDefs = this._getAllRowDefinitions();
|
695
|
+
let len = rowDefs.length;
|
696
|
+
for(let i = 0; i < len; ++i) {
|
697
|
+
let rowDef = rowDefs[i];
|
698
698
|
if(rowDef) {
|
699
699
|
rowDef.subscribeForUpdates();
|
700
700
|
}
|
@@ -713,7 +713,7 @@ Grid.prototype.updateLayout = function() {
|
|
713
713
|
*/
|
714
714
|
Grid.prototype._updateRowData = function(rowIndex) {
|
715
715
|
if(rowIndex >= 0) {
|
716
|
-
|
716
|
+
let rowId = this._dv.getRowId(rowIndex);
|
717
717
|
if(rowId) {
|
718
718
|
this._dt.setRowData(rowId, {});
|
719
719
|
}
|
@@ -730,7 +730,7 @@ Grid.prototype.updateRowData = Grid.prototype._updateRowData;
|
|
730
730
|
/** @private
|
731
731
|
*/
|
732
732
|
Grid.prototype._addGridSections = function () {
|
733
|
-
|
733
|
+
let title = this._grid.addSection("title");
|
734
734
|
if(this._topSection == false){
|
735
735
|
title.setRowCount(0);
|
736
736
|
} else {
|
@@ -738,10 +738,10 @@ Grid.prototype._addGridSections = function () {
|
|
738
738
|
}
|
739
739
|
this._grid.addSection("content");
|
740
740
|
|
741
|
-
|
741
|
+
let titleSettings = this._grid.getSectionSettings("title");
|
742
742
|
titleSettings.disableDataBinding();
|
743
743
|
|
744
|
-
|
744
|
+
let contentSettings = this._grid.getSectionSettings("content");
|
745
745
|
contentSettings.setAutoSyncRowCount(true);
|
746
746
|
contentSettings.setParent(titleSettings);
|
747
747
|
};
|
@@ -750,13 +750,13 @@ Grid.prototype._addGridSections = function () {
|
|
750
750
|
* @return {*} Return Section instance
|
751
751
|
*/
|
752
752
|
Grid.prototype.addHeaderSection = function (sectionName) {
|
753
|
-
|
753
|
+
let titleSects = this._grid.getAllSections("title");
|
754
754
|
|
755
|
-
|
755
|
+
let headerSect = this._grid.addSectionAt(titleSects.length, "title", sectionName);
|
756
756
|
if(headerSect) {
|
757
757
|
headerSect.setRowCount(1);
|
758
758
|
|
759
|
-
|
759
|
+
let headerSettings = this._grid.getSectionSettings(headerSect);
|
760
760
|
headerSettings.disableDataBinding();
|
761
761
|
}
|
762
762
|
|
@@ -767,11 +767,11 @@ Grid.prototype.addHeaderSection = function (sectionName) {
|
|
767
767
|
* @return {*} Return Section instance
|
768
768
|
*/
|
769
769
|
Grid.prototype.addFooterSection = function (sectionName) {
|
770
|
-
|
770
|
+
let footerSect = this._grid.addSection("footer", sectionName);
|
771
771
|
if(footerSect) {
|
772
772
|
footerSect.setRowCount(1);
|
773
773
|
|
774
|
-
|
774
|
+
let footerSettings = this._grid.getSectionSettings(footerSect);
|
775
775
|
footerSettings.disableDataBinding();
|
776
776
|
}
|
777
777
|
|
@@ -790,7 +790,7 @@ Grid.prototype.setParent = function (elem) {
|
|
790
790
|
*/
|
791
791
|
Grid.prototype.insertBefore = function (elem) {
|
792
792
|
if(elem) {
|
793
|
-
|
793
|
+
let pn = elem.parentNode;
|
794
794
|
if(pn) {
|
795
795
|
pn.insertBefore(this._topNode, elem);
|
796
796
|
this.updateLayout();
|
@@ -826,15 +826,15 @@ Grid.prototype.getCoreGrid = function () {
|
|
826
826
|
Grid.prototype.initialize = function(gridOption) {
|
827
827
|
if (!gridOption) { return; }
|
828
828
|
// TODO: clear all data before re-initialization
|
829
|
-
|
829
|
+
let t = this; // For minimizing file size
|
830
830
|
t._initializing = true;
|
831
|
-
|
831
|
+
let grid = t._grid; // core grid
|
832
832
|
grid.resetInternalState();
|
833
833
|
gridOption = grid.normalizeConfig(gridOption);
|
834
834
|
|
835
|
-
|
835
|
+
let exts = gridOption["plugins"] || gridOption["extensions"];
|
836
836
|
|
837
|
-
|
837
|
+
let cols = /** @type{Array} */(gridOption["fields"] || gridOption["columns"]);
|
838
838
|
if (gridOption["defaultColumnOptions"]) {
|
839
839
|
t._defaultColumnOptions = gridOption["defaultColumnOptions"];
|
840
840
|
t._defaultColumnSetup(t._defaultColumnOptions, cols);
|
@@ -884,23 +884,23 @@ Grid.prototype.initialize = function(gridOption) {
|
|
884
884
|
t._fnEngine.addEventListener("dataRequired", t._onFormulaDataRequired);
|
885
885
|
}
|
886
886
|
|
887
|
-
|
887
|
+
let borders = gridOption["borders"];
|
888
888
|
if (borders != null) {
|
889
889
|
grid.toggleBorders(borders);
|
890
890
|
}
|
891
|
-
|
891
|
+
let gridlines = gridOption["gridlines"];
|
892
892
|
if (gridlines != null) {
|
893
893
|
grid.toggleGridlines(gridlines);
|
894
894
|
}
|
895
|
-
|
895
|
+
let vLines = gridOption["verticalLines"];
|
896
896
|
if (vLines != null) {
|
897
897
|
grid.toggleVerticalLines(vLines);
|
898
898
|
}
|
899
|
-
|
899
|
+
let cvLines = gridOption["contentVerticalLines"];
|
900
900
|
if (cvLines != null) {
|
901
901
|
grid.toggleContentVerticalLines(cvLines);
|
902
902
|
}
|
903
|
-
|
903
|
+
let hLines = gridOption["horizontalLines"];
|
904
904
|
if (hLines != null) {
|
905
905
|
grid.toggleHorizontalLines(hLines);
|
906
906
|
}
|
@@ -909,28 +909,28 @@ Grid.prototype.initialize = function(gridOption) {
|
|
909
909
|
t._dv.setPageSize(+gridOption["pageSize"]);
|
910
910
|
}
|
911
911
|
|
912
|
-
|
912
|
+
let rowHeight = +gridOption["rowHeight"];
|
913
913
|
if(rowHeight) { // Non empty or zero
|
914
914
|
grid.setDefaultRowHeight(rowHeight);
|
915
915
|
}
|
916
|
-
|
916
|
+
let hRowHeight = +gridOption["headerRowHeight"];
|
917
917
|
if(hRowHeight) { // Non empty or zero
|
918
918
|
grid.getSection("title").setDefaultRowHeight(hRowHeight);
|
919
919
|
}
|
920
920
|
|
921
|
-
|
921
|
+
let val = gridOption["autoLayoutUpdate"];
|
922
922
|
if(!t._autoLayoutTimer && val) {
|
923
923
|
if(val !== "0" && val !== "false") { // HACK: Temporarily support incorrect data type
|
924
924
|
t._autoLayoutTimer = setInterval(t._onAutoLayoutUpdate.bind(t), 2000);
|
925
925
|
}
|
926
926
|
}
|
927
927
|
|
928
|
-
|
928
|
+
let bool = gridOption["rowHighlighting"];
|
929
929
|
if(bool != null) {
|
930
930
|
grid.enableRowHighlighting(!!bool);
|
931
931
|
}
|
932
932
|
|
933
|
-
|
933
|
+
let rowExpansionBinding = gridOption["rowExpansionBinding"];
|
934
934
|
if(typeof rowExpansionBinding === "function") {
|
935
935
|
grid.listen("rowExpansionBinding", t._onRowExpansionBinding); // TODO: Support multi-table feature
|
936
936
|
t.listen("rowExpansionBinding", rowExpansionBinding);
|
@@ -957,7 +957,7 @@ Grid.prototype.initialize = function(gridOption) {
|
|
957
957
|
if(gridOption["scrollbarParent"] != null) {
|
958
958
|
t._setScrollbarParent(gridOption["scrollbarParent"]);
|
959
959
|
}
|
960
|
-
|
960
|
+
let pollingInterval = gridOption["adcPollingInterval"];
|
961
961
|
if(pollingInterval != null) {
|
962
962
|
t._pollingInterval = pollingInterval ? +pollingInterval : 0;
|
963
963
|
}
|
@@ -965,7 +965,7 @@ Grid.prototype.initialize = function(gridOption) {
|
|
965
965
|
// Column operations
|
966
966
|
t.setColumns(cols);
|
967
967
|
|
968
|
-
|
968
|
+
let rowVir = true;
|
969
969
|
if (gridOption["rowVirtualRendering"] != null) {
|
970
970
|
rowVir = gridOption["rowVirtualRendering"];
|
971
971
|
}
|
@@ -974,7 +974,7 @@ Grid.prototype.initialize = function(gridOption) {
|
|
974
974
|
}
|
975
975
|
grid.enableRowVirtualization(!!rowVir);
|
976
976
|
|
977
|
-
|
977
|
+
let colVir = false;
|
978
978
|
if (gridOption["columnVirtualRendering"] != null) {
|
979
979
|
colVir = gridOption["columnVirtualRendering"];
|
980
980
|
}
|
@@ -983,7 +983,7 @@ Grid.prototype.initialize = function(gridOption) {
|
|
983
983
|
}
|
984
984
|
grid.enableColumnVirtualization(!!colVir);
|
985
985
|
|
986
|
-
|
986
|
+
let scrollbar = gridOption["scrollbar"] != null ? gridOption["scrollbar"] : true;
|
987
987
|
if (scrollbar) {
|
988
988
|
t._topNode.style.overflow = "hidden"; // TODO: Move this to CSS Class
|
989
989
|
} else {
|
@@ -991,16 +991,16 @@ Grid.prototype.initialize = function(gridOption) {
|
|
991
991
|
t._topNode.style.overflow = "";
|
992
992
|
}
|
993
993
|
|
994
|
-
|
994
|
+
let topFreezingCount = gridOption["topFreezingCount"];
|
995
995
|
if (typeof topFreezingCount === "number") {
|
996
996
|
topFreezingCount = (topFreezingCount > 0) ? topFreezingCount : 0;
|
997
|
-
|
997
|
+
let sectionIndex = topFreezingCount - 1;
|
998
998
|
grid.freezeSection(sectionIndex);
|
999
999
|
} else if (topFreezingCount === false) {
|
1000
1000
|
grid.freezeSection(null);
|
1001
1001
|
}
|
1002
1002
|
|
1003
|
-
|
1003
|
+
let bottomFreezingCount = gridOption["bottomFreezingCount"];
|
1004
1004
|
if (typeof bottomFreezingCount === "number") {
|
1005
1005
|
bottomFreezingCount = (bottomFreezingCount > 0) ? bottomFreezingCount : 0;
|
1006
1006
|
grid.freezeFooter(bottomFreezingCount);
|
@@ -1011,11 +1011,11 @@ Grid.prototype.initialize = function(gridOption) {
|
|
1011
1011
|
// Plugins
|
1012
1012
|
gridOption[ROW_DEF] = true; // Enable ROW_DEF mode
|
1013
1013
|
if (Array.isArray(exts)) {
|
1014
|
-
for (
|
1015
|
-
|
1016
|
-
|
1014
|
+
for (let i = 0; i < exts.length; ++i) {
|
1015
|
+
let ext = exts[i];
|
1016
|
+
let extInstance = null;
|
1017
1017
|
if (ext) {
|
1018
|
-
|
1018
|
+
let extName = ext["name"];
|
1019
1019
|
if(extName) {
|
1020
1020
|
extInstance = grid.loadPlugin(extName, ext); // pass plugin object as an argument for initialization
|
1021
1021
|
} else {
|
@@ -1023,7 +1023,7 @@ Grid.prototype.initialize = function(gridOption) {
|
|
1023
1023
|
}
|
1024
1024
|
}
|
1025
1025
|
if (extInstance && extInstance["setGridWrapper"]) {
|
1026
|
-
|
1026
|
+
let hasApi = (typeof extInstance["getGridApi"] === "function") ? extInstance["getGridApi"]() : false;
|
1027
1027
|
if(!hasApi) {
|
1028
1028
|
extInstance["setGridWrapper"]("realTimeGrid", t);
|
1029
1029
|
}
|
@@ -1032,7 +1032,7 @@ Grid.prototype.initialize = function(gridOption) {
|
|
1032
1032
|
t._initializing = false;
|
1033
1033
|
}
|
1034
1034
|
|
1035
|
-
|
1035
|
+
let lang = gridOption["lang"];
|
1036
1036
|
if(lang != null) {
|
1037
1037
|
t._lang = lang;
|
1038
1038
|
t._dateTimeUtil.setLocale(lang);
|
@@ -1042,18 +1042,18 @@ Grid.prototype.initialize = function(gridOption) {
|
|
1042
1042
|
if(gridOption["childDataField"] != null) {
|
1043
1043
|
this._childDataField = RowDefinition._childDataField = gridOption["childDataField"];
|
1044
1044
|
}
|
1045
|
-
|
1045
|
+
let rows = gridOption["rows"];
|
1046
1046
|
if(!rows) {
|
1047
1047
|
rows = gridOption["rics"] || null; // Make "rics" an alias to "rows"
|
1048
1048
|
}
|
1049
|
-
|
1049
|
+
let bodies = /** @type{Array} */(gridOption["bodies"]);
|
1050
1050
|
if(!bodies) {
|
1051
1051
|
bodies = [];
|
1052
1052
|
if(gridOption["body"]) {
|
1053
1053
|
bodies.push(gridOption["body"]);
|
1054
1054
|
}
|
1055
1055
|
if(rows) {
|
1056
|
-
for(
|
1056
|
+
for(let m = 0; m < rows.length; m++) {
|
1057
1057
|
if(typeof rows[m] === "string") {
|
1058
1058
|
rows[m] = { "ric": rows[m] };
|
1059
1059
|
}
|
@@ -1063,13 +1063,13 @@ Grid.prototype.initialize = function(gridOption) {
|
|
1063
1063
|
}
|
1064
1064
|
|
1065
1065
|
// Merge rows with static data rows
|
1066
|
-
|
1066
|
+
let staticRows = gridOption["staticDataRows"] || gridOption["dataModel"];
|
1067
1067
|
if(rows && staticRows) {
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
for(
|
1068
|
+
let ary = staticRows["data"] ? staticRows["data"] : staticRows;
|
1069
|
+
let fields = staticRows["fields"] || t.getColumnFields();
|
1070
|
+
let values, data;
|
1071
|
+
let len = rows.length;
|
1072
|
+
for(let n = 0; n < len; n++) {
|
1073
1073
|
if(rows[n]["values"]) { // merge row's values, values can be object or array
|
1074
1074
|
values = arrayToObject(rows[n]["values"], fields);
|
1075
1075
|
data = arrayToObject(ary[n], fields);
|
@@ -1086,7 +1086,7 @@ Grid.prototype.initialize = function(gridOption) {
|
|
1086
1086
|
}
|
1087
1087
|
}
|
1088
1088
|
|
1089
|
-
for(
|
1089
|
+
for(let j = 0; j < bodies.length; ++j) {
|
1090
1090
|
t.insertRows(bodies[j]["rows"]);
|
1091
1091
|
// break; // TODO: The first version supports only 1 grid
|
1092
1092
|
}
|
@@ -1097,7 +1097,7 @@ Grid.prototype.initialize = function(gridOption) {
|
|
1097
1097
|
grid.setBottomPaddingSection(gridOption.contentBottomPadding);
|
1098
1098
|
}
|
1099
1099
|
|
1100
|
-
|
1100
|
+
let contentRightPadding = gridOption.contentRightPadding;
|
1101
1101
|
if(contentRightPadding) {
|
1102
1102
|
if (typeof contentRightPadding !== "number") {
|
1103
1103
|
contentRightPadding = 6;
|
@@ -1108,13 +1108,13 @@ Grid.prototype.initialize = function(gridOption) {
|
|
1108
1108
|
|
1109
1109
|
// Let everything init first
|
1110
1110
|
// then set conflationRate to grid for better perfomance on rapidly updating
|
1111
|
-
|
1111
|
+
let dataConflationRate = gridOption['dataConflationRate'];
|
1112
1112
|
if (dataConflationRate != null) {
|
1113
1113
|
grid.setDataConflationRate(dataConflationRate);
|
1114
1114
|
}
|
1115
1115
|
|
1116
1116
|
// Tell all plugins that the initialization phase has ended
|
1117
|
-
|
1117
|
+
let extObjects = grid.getPluginList().map(grid.getPlugin.bind(grid));
|
1118
1118
|
t._processExtension(extObjects, "afterInit");
|
1119
1119
|
};
|
1120
1120
|
|
@@ -1123,14 +1123,14 @@ Grid.prototype.initialize = function(gridOption) {
|
|
1123
1123
|
* @return {!Object}
|
1124
1124
|
*/
|
1125
1125
|
Grid.prototype.getConfigObject = function (gridOptions) {
|
1126
|
-
|
1126
|
+
let obj = gridOptions || {};
|
1127
1127
|
|
1128
|
-
|
1128
|
+
let columns = obj.columns;
|
1129
1129
|
if(!columns) {
|
1130
1130
|
columns = obj.columns = [];
|
1131
1131
|
}
|
1132
1132
|
|
1133
|
-
|
1133
|
+
let grid = this._grid;
|
1134
1134
|
if(grid.getConfigObject) {
|
1135
1135
|
grid.getConfigObject(obj);
|
1136
1136
|
}
|
@@ -1157,17 +1157,17 @@ Grid.prototype.getConfigObject = function (gridOptions) {
|
|
1157
1157
|
}
|
1158
1158
|
|
1159
1159
|
|
1160
|
-
|
1160
|
+
let i, len, prevTimeSeriesField;
|
1161
1161
|
len = this.getColumnCount();
|
1162
1162
|
for (i = 0; i < len; ++i) {
|
1163
|
-
|
1163
|
+
let column = columns[i];
|
1164
1164
|
if(!column) {
|
1165
1165
|
column = columns[i] = {};
|
1166
1166
|
}
|
1167
|
-
|
1167
|
+
let colDef = this.getColumnDefinition(i);
|
1168
1168
|
// TODO: Update width and scalability changed by the extensions
|
1169
1169
|
colDef.getConfigObject(column);
|
1170
|
-
|
1170
|
+
let parentField = FieldDefinition.getFieldProperty(colDef.getField(), "timeSeriesParent");
|
1171
1171
|
if(parentField && !prevTimeSeriesField) { // Assume first column of time series child to convert to time series parent
|
1172
1172
|
prevTimeSeriesField = parentField;
|
1173
1173
|
column.field = parentField;
|
@@ -1185,7 +1185,7 @@ Grid.prototype.getConfigObject = function (gridOptions) {
|
|
1185
1185
|
obj["scrollbar"] = false;
|
1186
1186
|
}
|
1187
1187
|
|
1188
|
-
|
1188
|
+
let val = this._dv.getPageSize();
|
1189
1189
|
if(val > 0) {
|
1190
1190
|
obj["pageSize"] = val;
|
1191
1191
|
}
|
@@ -1238,9 +1238,9 @@ Grid.prototype.getConfigObject = function (gridOptions) {
|
|
1238
1238
|
}
|
1239
1239
|
|
1240
1240
|
// get all rows config
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1241
|
+
let rowDefs = this.getAllRowDefinitions();
|
1242
|
+
let rows = obj["rows"] = [];
|
1243
|
+
let rowDef, rowConfig;
|
1244
1244
|
len = rowDefs.length;
|
1245
1245
|
for (i = 0; i < len; i++) {
|
1246
1246
|
rowDef = rowDefs[i];
|
@@ -1249,9 +1249,9 @@ Grid.prototype.getConfigObject = function (gridOptions) {
|
|
1249
1249
|
}
|
1250
1250
|
|
1251
1251
|
// get row config from extensions
|
1252
|
-
|
1253
|
-
|
1254
|
-
for(
|
1252
|
+
let extensions = grid.getPlugins();
|
1253
|
+
let pluginInstance, row;
|
1254
|
+
for(let key in extensions) {
|
1255
1255
|
pluginInstance = extensions[key];
|
1256
1256
|
if(typeof pluginInstance["getRowConfigObject"] === "function") {
|
1257
1257
|
len = rows.length;
|
@@ -1303,11 +1303,11 @@ Grid.prototype.setLocale = function(lang) {
|
|
1303
1303
|
* @param {Array.<Object>} userColumns
|
1304
1304
|
*/
|
1305
1305
|
Grid.prototype._defaultColumnSetup = function (defaultCol, userColumns) {
|
1306
|
-
|
1307
|
-
for (
|
1308
|
-
|
1306
|
+
let c = userColumns.length;
|
1307
|
+
for (let i = 0; i < c; i++) {
|
1308
|
+
let column = userColumns[i];
|
1309
1309
|
if (typeof column === 'object') {
|
1310
|
-
for (
|
1310
|
+
for (let key in defaultCol) {
|
1311
1311
|
if (column[key] == null) {
|
1312
1312
|
column[key] = defaultCol[key];
|
1313
1313
|
}
|
@@ -1325,7 +1325,7 @@ Grid.prototype._defaultColumnSetup = function (defaultCol, userColumns) {
|
|
1325
1325
|
*/
|
1326
1326
|
Grid.prototype._processExtension = function (exts, field, params) {
|
1327
1327
|
if(Array.isArray(exts)) {
|
1328
|
-
for (
|
1328
|
+
for (let i = 0; i < exts.length; i++) {
|
1329
1329
|
if (exts[i][field]) {
|
1330
1330
|
exts[i][field].apply(exts[i], params);
|
1331
1331
|
}
|
@@ -1337,15 +1337,15 @@ Grid.prototype._processExtension = function (exts, field, params) {
|
|
1337
1337
|
* @param {Object} e
|
1338
1338
|
*/
|
1339
1339
|
Grid.prototype._onRicAdded = function(e) {
|
1340
|
-
|
1340
|
+
let addedRics = e.addedRics;
|
1341
1341
|
this._snapshot.addFields(e.fields);
|
1342
|
-
|
1343
|
-
for (
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
for (
|
1348
|
-
|
1342
|
+
let len = addedRics.length;
|
1343
|
+
for (let i = 0; i < len; ++i) {
|
1344
|
+
let ric = addedRics[i];
|
1345
|
+
let rowDefs = this._connector.getRowDefByRic(ric);
|
1346
|
+
let jLen = rowDefs ? rowDefs.length : 0;
|
1347
|
+
for (let j = 0; j < jLen; ++j) {
|
1348
|
+
let rowDef = rowDefs[j];
|
1349
1349
|
if (rowDef.getSymbol() === ric) {
|
1350
1350
|
this._snapshot.addRic(ric); // ADC
|
1351
1351
|
}
|
@@ -1366,18 +1366,18 @@ Grid.prototype._onRicRemoved = function(e) {
|
|
1366
1366
|
* @param {Object} e
|
1367
1367
|
*/
|
1368
1368
|
Grid.prototype._onFieldAdded = function(e) {
|
1369
|
-
|
1370
|
-
|
1369
|
+
let rowDefs = e.rowDefs;
|
1370
|
+
let addedFields = e.addedFields;
|
1371
1371
|
|
1372
1372
|
// ADC
|
1373
|
-
for (
|
1373
|
+
for (let i in rowDefs) {
|
1374
1374
|
this._snapshot.addRic(rowDefs[i].getSymbol());
|
1375
1375
|
}
|
1376
1376
|
this._snapshot.addFields(addedFields);
|
1377
1377
|
|
1378
1378
|
// JET
|
1379
1379
|
if (this._subs) {
|
1380
|
-
|
1380
|
+
let realtimeFields = addedFields.filter(FieldDefinition.isRealTimeField);
|
1381
1381
|
if(realtimeFields.length > 0) {
|
1382
1382
|
this._subs["addFields"](realtimeFields);
|
1383
1383
|
}
|
@@ -1389,7 +1389,7 @@ Grid.prototype._onFieldAdded = function(e) {
|
|
1389
1389
|
* @param {Object} e
|
1390
1390
|
*/
|
1391
1391
|
Grid.prototype._onFieldRemoved = function(e) {
|
1392
|
-
|
1392
|
+
let removedFields = e.removedFields;
|
1393
1393
|
|
1394
1394
|
// TODO: ADC fields have an interval load. Currently, we only keep the field but do not delete it.
|
1395
1395
|
// JET
|
@@ -1405,19 +1405,19 @@ Grid.prototype._onFieldRemoved = function(e) {
|
|
1405
1405
|
* @param {number=} idx
|
1406
1406
|
*/
|
1407
1407
|
Grid.prototype.insertColumn = function (columnOption, idx) {
|
1408
|
-
|
1408
|
+
let colCount = this.getColumnCount();
|
1409
1409
|
if(idx == null || idx > colCount) {
|
1410
1410
|
idx = colCount;
|
1411
1411
|
}
|
1412
1412
|
|
1413
1413
|
// no need to merge defaultColumn during initialize process
|
1414
1414
|
// because columnOption already mutate by initialize function
|
1415
|
-
|
1415
|
+
let configObj = (this._initializing) ? {} : cloneObject(this._defaultColumnOptions);
|
1416
1416
|
|
1417
1417
|
if (typeof columnOption === "string") {
|
1418
1418
|
configObj["field"] = columnOption;
|
1419
1419
|
} else { // columnOption is assumed to be an object
|
1420
|
-
for (
|
1420
|
+
for (let key in columnOption) {
|
1421
1421
|
configObj[key] = columnOption[key];
|
1422
1422
|
}
|
1423
1423
|
}
|
@@ -1426,7 +1426,7 @@ Grid.prototype.insertColumn = function (columnOption, idx) {
|
|
1426
1426
|
configObj["formulaEngine"] = this._fnEngine; // Adding extra option
|
1427
1427
|
}
|
1428
1428
|
|
1429
|
-
|
1429
|
+
let colDef = new ColumnDefinition(configObj, this);
|
1430
1430
|
configObj[COL_DEF] = colDef;
|
1431
1431
|
|
1432
1432
|
// WARNING: width is processed twice by tr-grid and rt-grid
|
@@ -1439,18 +1439,18 @@ Grid.prototype.insertColumn = function (columnOption, idx) {
|
|
1439
1439
|
* @param {Object} e snapshort change event object
|
1440
1440
|
*/
|
1441
1441
|
Grid.prototype._updateTimeSeriesFields = function (e) {
|
1442
|
-
|
1443
|
-
|
1444
|
-
|
1445
|
-
for (
|
1442
|
+
let childField;
|
1443
|
+
let snapShotData = e.data;
|
1444
|
+
let childFields = {};
|
1445
|
+
for (let ric in snapShotData) {
|
1446
1446
|
// childFields = snapShotData[ric];
|
1447
1447
|
for (childField in snapShotData[ric]) {
|
1448
1448
|
childFields[childField] = true; // Merge child fields to parent (Don't truth each ric it will be have some empty data)
|
1449
1449
|
}
|
1450
1450
|
this.setRicData(ric, snapShotData[ric]); // update cell data if exist
|
1451
1451
|
}
|
1452
|
-
|
1453
|
-
|
1452
|
+
let parentField, field, colIndex, parentColDef, childColIndex;
|
1453
|
+
let parentMap = {}; // map parent time series field and their first child
|
1454
1454
|
for (field in childFields) { // Warning: data change can be differ time series child field
|
1455
1455
|
parentField = e.childrenFieldToParent[field];
|
1456
1456
|
if(!parentMap[parentField]) {
|
@@ -1461,10 +1461,10 @@ Grid.prototype._updateTimeSeriesFields = function (e) {
|
|
1461
1461
|
}
|
1462
1462
|
|
1463
1463
|
for (parentField in parentMap) { // WARNING: one dataChanged event can be multiple fields
|
1464
|
-
|
1464
|
+
let childrenField = parentMap[parentField];
|
1465
1465
|
colIndex = this.getColumnIndex(parentField);
|
1466
1466
|
parentColDef = this._getColumnDefinition(colIndex);
|
1467
|
-
|
1467
|
+
let i, len;
|
1468
1468
|
len = childrenField.length;
|
1469
1469
|
for (i = 0; i < len; i++) {
|
1470
1470
|
childField = childrenField[i];
|
@@ -1490,8 +1490,8 @@ Grid.prototype._populateTimeSeriesChildren = function (colDef) {
|
|
1490
1490
|
return;
|
1491
1491
|
}
|
1492
1492
|
|
1493
|
-
|
1494
|
-
|
1493
|
+
let colDefs = this._timeSeriesChildConflator.popAllData();
|
1494
|
+
let i, j, len, childField, idx;
|
1495
1495
|
|
1496
1496
|
for (i = 0; i < colDefs.length; i++) {
|
1497
1497
|
colDef = colDefs[i];
|
@@ -1500,8 +1500,8 @@ Grid.prototype._populateTimeSeriesChildren = function (colDef) {
|
|
1500
1500
|
if(!colDef) {
|
1501
1501
|
continue;
|
1502
1502
|
}
|
1503
|
-
|
1504
|
-
|
1503
|
+
let parentField = colDef.getField();
|
1504
|
+
let childFields = FieldDefinition.getTimeSeriesChildren(parentField);
|
1505
1505
|
if(!childFields) { // not found time series field
|
1506
1506
|
return;
|
1507
1507
|
}
|
@@ -1526,7 +1526,7 @@ Grid.prototype._populateTimeSeriesChildren = function (colDef) {
|
|
1526
1526
|
* @param {number} idx index of insertion column
|
1527
1527
|
*/
|
1528
1528
|
Grid.prototype._cloneTimeSeriesColumn = function (parentColDef, childField, idx) {
|
1529
|
-
|
1529
|
+
let parentConfig, columnOption;
|
1530
1530
|
parentConfig = parentColDef.getConfigObject();
|
1531
1531
|
columnOption = cloneObject(parentConfig);
|
1532
1532
|
columnOption["field"] = childField.replace("TR.", ""); // We need to remove the 'TR' prefix from the field to avoid confusion with time series fields.
|
@@ -1543,15 +1543,15 @@ Grid.prototype._cloneTimeSeriesColumn = function (parentColDef, childField, idx)
|
|
1543
1543
|
* @param {Grid~ColumnReference} colRef
|
1544
1544
|
*/
|
1545
1545
|
Grid.prototype.replaceColumn = function (columnOption, colRef) {
|
1546
|
-
|
1546
|
+
let colIndex = this.getColumnIndex(colRef);
|
1547
1547
|
if(colIndex < 0) {
|
1548
1548
|
return;
|
1549
1549
|
}
|
1550
|
-
|
1551
|
-
|
1552
|
-
|
1550
|
+
let colConfig = {};
|
1551
|
+
let core = this._grid;
|
1552
|
+
let columnDef = core._getColumnDef(colIndex);
|
1553
1553
|
|
1554
|
-
|
1554
|
+
let value = core.getColumnScalability(colIndex);
|
1555
1555
|
colConfig["scalable"] = value;
|
1556
1556
|
|
1557
1557
|
value = core.getColumnCustomLaneSize(colIndex);
|
@@ -1585,7 +1585,7 @@ Grid.prototype.replaceColumn = function (columnOption, colRef) {
|
|
1585
1585
|
if(typeof columnOption === "string") {
|
1586
1586
|
colConfig["field"] = columnOption;
|
1587
1587
|
} else { // type object from user
|
1588
|
-
for (
|
1588
|
+
for (let key in columnOption) {
|
1589
1589
|
colConfig[key] = columnOption[key];
|
1590
1590
|
}
|
1591
1591
|
}
|
@@ -1598,7 +1598,7 @@ Grid.prototype.replaceColumn = function (columnOption, colRef) {
|
|
1598
1598
|
colConfig["width"] = 1;
|
1599
1599
|
}
|
1600
1600
|
|
1601
|
-
|
1601
|
+
let colDef = this.getColumnDefinition(colIndex);
|
1602
1602
|
if(colDef && colConfig.id == null) {
|
1603
1603
|
colConfig.id = colDef.getId(); // retain ID
|
1604
1604
|
}
|
@@ -1616,7 +1616,7 @@ Grid.prototype.replaceColumn = function (columnOption, colRef) {
|
|
1616
1616
|
*/
|
1617
1617
|
Grid.prototype._onFieldLoadedSuccess = function (field, colDef, response) {
|
1618
1618
|
if (response && response.id) {
|
1619
|
-
|
1619
|
+
let fieldDef = response;
|
1620
1620
|
if (colDef && colDef.getField() === field) {
|
1621
1621
|
if (colDef.isDefaultName() && fieldDef.name) {
|
1622
1622
|
colDef.setName(fieldDef.name);
|
@@ -1642,7 +1642,7 @@ Grid.prototype._onFieldLoadedError = function (err) {
|
|
1642
1642
|
Grid.prototype._onFieldLoaded = function (field, referrer) {
|
1643
1643
|
// For time series, we need to wait until the field is loadedm, then we can insert a child from the field data.
|
1644
1644
|
if(FieldDefinition.isTimeSeries(field)) {
|
1645
|
-
|
1645
|
+
let colDef = this.getColumnDefinitionById(referrer); // The 'referrer' is a column ID that was just added
|
1646
1646
|
this._populateTimeSeriesChildren(colDef);
|
1647
1647
|
}
|
1648
1648
|
this._connector.addFields(field, referrer);
|
@@ -1679,14 +1679,14 @@ Grid.prototype.getFieldInfo = function(field) {
|
|
1679
1679
|
* @param {string} field
|
1680
1680
|
* @return {Promise}
|
1681
1681
|
* @example
|
1682
|
-
*
|
1682
|
+
* let gridConfig = {
|
1683
1683
|
* synapse: { // define synapse configuration
|
1684
1684
|
* apiKey: "xxx",
|
1685
1685
|
* contextApp: "xxx",
|
1686
1686
|
* auth: "xxx" (optional)
|
1687
1687
|
* }
|
1688
1688
|
* };
|
1689
|
-
*
|
1689
|
+
* let promise = grid.loadFieldInfo("CF_LAST");
|
1690
1690
|
*/
|
1691
1691
|
Grid.prototype.loadFieldInfo = function(field) {
|
1692
1692
|
return FieldDefinition.loadFieldInfo(field);
|
@@ -1699,7 +1699,7 @@ Grid.prototype.loadFieldInfo = function(field) {
|
|
1699
1699
|
*/
|
1700
1700
|
Grid.prototype._shouldLoadFieldInfo = function (field) {
|
1701
1701
|
|
1702
|
-
|
1702
|
+
let val = this._RTK || window["JET"]; // Fastest checking can be performed by checking the first condition.
|
1703
1703
|
if(!val) {
|
1704
1704
|
return false;
|
1705
1705
|
}
|
@@ -1726,17 +1726,17 @@ Grid.prototype._shouldLoadFieldInfo = function (field) {
|
|
1726
1726
|
* @param {Array.<Object>} columns Array of column options
|
1727
1727
|
*/
|
1728
1728
|
Grid.prototype.setColumns = function(columns) {
|
1729
|
-
|
1730
|
-
|
1729
|
+
let grid = this._grid;
|
1730
|
+
let colCount = (columns) ? columns.length : 0;
|
1731
1731
|
|
1732
1732
|
grid.startBatch("reset");
|
1733
1733
|
this.removeAllColumns();
|
1734
1734
|
if(colCount > 0) {
|
1735
|
-
|
1735
|
+
let prevState = false;
|
1736
1736
|
if(colCount > 1) {
|
1737
1737
|
prevState = grid.freezeLayout(true); // Insert multiple columns can be a huge time consuming
|
1738
1738
|
}
|
1739
|
-
for(
|
1739
|
+
for(let i = 0; i < colCount; ++i) {
|
1740
1740
|
this.insertColumn(columns[i], i);
|
1741
1741
|
}
|
1742
1742
|
if(colCount > 1) {
|
@@ -1753,20 +1753,20 @@ Grid.prototype.setColumns = function(columns) {
|
|
1753
1753
|
* @param {boolean=} byId=false, if enable it, this method will only check for differences in the 'id' property
|
1754
1754
|
*/
|
1755
1755
|
Grid.prototype.restoreColumns = function(columns, byId) {
|
1756
|
-
|
1756
|
+
let grid = this._grid;
|
1757
1757
|
grid.startBatch("reset");
|
1758
|
-
|
1759
|
-
|
1758
|
+
let configObj = this.getConfigObject();
|
1759
|
+
let previousColumns = configObj.columns;
|
1760
1760
|
|
1761
|
-
|
1762
|
-
|
1761
|
+
let preColLen = previousColumns.length;
|
1762
|
+
let newColLen = columns.length;
|
1763
1763
|
|
1764
|
-
|
1765
|
-
|
1766
|
-
|
1767
|
-
|
1764
|
+
let compareLogic = byId ? _hasMatchingId : deepEqual;
|
1765
|
+
let removingFields = [];
|
1766
|
+
let keepingColumns = [];
|
1767
|
+
let columnOrdering = [];
|
1768
1768
|
|
1769
|
-
|
1769
|
+
let i, j, found;
|
1770
1770
|
// Slow, time complexity BigO(n ^ 2)
|
1771
1771
|
for (i = 0; i < preColLen; i++) {
|
1772
1772
|
found = false;
|
@@ -1784,8 +1784,8 @@ Grid.prototype.restoreColumns = function(columns, byId) {
|
|
1784
1784
|
|
1785
1785
|
this.removeColumns(removingFields);
|
1786
1786
|
|
1787
|
-
|
1788
|
-
|
1787
|
+
let keepingLen = keepingColumns.length;
|
1788
|
+
let prevState = false;
|
1789
1789
|
if(newColLen > 1) {
|
1790
1790
|
prevState = this._grid.freezeLayout(true); // Insert multiple columns can be a huge time consuming
|
1791
1791
|
}
|
@@ -1794,7 +1794,7 @@ Grid.prototype.restoreColumns = function(columns, byId) {
|
|
1794
1794
|
for (j = 0; j < keepingLen; j++) { // loop only keeping column
|
1795
1795
|
if(compareLogic(columns[i], keepingColumns[j])) {
|
1796
1796
|
found = true;
|
1797
|
-
|
1797
|
+
let colIndex = this.getColumnIndex(columns[i].id || columns[i].field); // We cannot use 'i' (colIndex) in this case, as it will sort the columns. Instead, we need to obtain a new column index from the field.
|
1798
1798
|
columnOrdering.push(this.getColumnId(colIndex));
|
1799
1799
|
break;
|
1800
1800
|
}
|
@@ -1825,27 +1825,27 @@ Grid.prototype.setFields = Grid.prototype.setColumns;
|
|
1825
1825
|
* @param {Object} e
|
1826
1826
|
*/
|
1827
1827
|
Grid.prototype._onColumnAdded = function(e) {
|
1828
|
-
|
1828
|
+
let colDef = /** @type{ColumnDefinition} */(e.context[COL_DEF]);
|
1829
1829
|
delete e.context[COL_DEF];
|
1830
|
-
|
1830
|
+
let idx = e.colIndex;
|
1831
1831
|
|
1832
|
-
|
1832
|
+
let coreColDef = this._grid._getColumnDef(idx);
|
1833
1833
|
colDef._setCoreColumnDef(coreColDef); // For column id and field
|
1834
1834
|
|
1835
|
-
|
1835
|
+
let colData = this._grid.getColumnData(idx);
|
1836
1836
|
if(!colData) { // Save column inside grid
|
1837
1837
|
colData = this._grid.setColumnData(idx, {});
|
1838
1838
|
}
|
1839
1839
|
colData[COL_DEF] = colDef;
|
1840
|
-
|
1840
|
+
let userModel = colDef.getUserModel();
|
1841
1841
|
// binding
|
1842
1842
|
this._grid.setColumnDataBindingHandler(idx, colDef.getRenderer());
|
1843
1843
|
// width and scalable
|
1844
|
-
|
1844
|
+
let value = userModel["width"];
|
1845
1845
|
// eslint-disable-next-line no-undefined
|
1846
1846
|
if(value !== undefined) {
|
1847
1847
|
value = +value;
|
1848
|
-
|
1848
|
+
let scalable;
|
1849
1849
|
if(userModel["scalable"] != null) {
|
1850
1850
|
scalable = userModel["scalable"] ? true : false;
|
1851
1851
|
} else {
|
@@ -1881,16 +1881,16 @@ Grid.prototype._onColumnAdded = function(e) {
|
|
1881
1881
|
}
|
1882
1882
|
|
1883
1883
|
// className
|
1884
|
-
|
1884
|
+
let i, classes = colDef.getClasses();
|
1885
1885
|
for(i = 0; i < classes.length; i++) {
|
1886
1886
|
this._grid.enableColumnClass(idx, classes[i]);
|
1887
1887
|
}
|
1888
|
-
|
1888
|
+
let colField = colDef.getField();
|
1889
1889
|
this._grid.setDataColumnName(idx, ROW_DEF); // This make ColumnDefinition renderer work
|
1890
|
-
|
1891
|
-
|
1892
|
-
|
1893
|
-
|
1890
|
+
let fields = colDef.getAllFields();
|
1891
|
+
let referrer = colDef.getId();
|
1892
|
+
let len = fields.length;
|
1893
|
+
let field, dataType, prom, onLoaded;
|
1894
1894
|
for(i = 0; i < len; i++) {
|
1895
1895
|
field = fields[i];
|
1896
1896
|
if(this._shouldLoadFieldInfo(field)) {
|
@@ -1928,12 +1928,12 @@ Grid.prototype._onColumnAdded = function(e) {
|
|
1928
1928
|
* @see {@link Grid#removeAllColumns}
|
1929
1929
|
*/
|
1930
1930
|
Grid.prototype.removeColumn = function(colRef) {
|
1931
|
-
|
1931
|
+
let colIndex = this.getColumnIndex(colRef);
|
1932
1932
|
if(colIndex < 0) {
|
1933
1933
|
return;
|
1934
1934
|
}
|
1935
1935
|
|
1936
|
-
|
1936
|
+
let colDef = this.getColumnDefinition(colIndex);
|
1937
1937
|
|
1938
1938
|
if(!colDef.isRealTimeField()) {
|
1939
1939
|
if(this._dc) {
|
@@ -1954,8 +1954,8 @@ Grid.prototype.removeColumn = function(colRef) {
|
|
1954
1954
|
* @see {@link Grid#removeAllColumns}
|
1955
1955
|
*/
|
1956
1956
|
Grid.prototype.removeColumns = function(colRefs) {
|
1957
|
-
|
1958
|
-
|
1957
|
+
let indices = this.getColumnIndices(colRefs);
|
1958
|
+
let len = indices.length;
|
1959
1959
|
if(len <= 1) {
|
1960
1960
|
if(len === 1) {
|
1961
1961
|
this.removeColumn(indices[0]);
|
@@ -1964,12 +1964,12 @@ Grid.prototype.removeColumns = function(colRefs) {
|
|
1964
1964
|
}
|
1965
1965
|
indices.sort(Grid._descendingOrder); // Removal must be done from the back
|
1966
1966
|
|
1967
|
-
|
1968
|
-
|
1967
|
+
let staticFields = []; // For clearing any data stored in our cache
|
1968
|
+
let prevState = this._grid.freezeLayout(); // To prevent multiple UI updates
|
1969
1969
|
|
1970
|
-
for(
|
1971
|
-
|
1972
|
-
|
1970
|
+
for(let i = 0; i < len; ++i) {
|
1971
|
+
let colIndex = indices[i];
|
1972
|
+
let colDef = this.getColumnDefinition(colIndex);
|
1973
1973
|
if(!colDef.isRealTimeField()) {
|
1974
1974
|
staticFields.push(colDef.getField());
|
1975
1975
|
}
|
@@ -1991,7 +1991,7 @@ Grid.prototype.removeColumns = function(colRefs) {
|
|
1991
1991
|
* @see {@link Grid#removeColumns}
|
1992
1992
|
*/
|
1993
1993
|
Grid.prototype.removeAllColumns = function() {
|
1994
|
-
|
1994
|
+
let colCount = this.getColumnCount();
|
1995
1995
|
if(colCount <= 0) {
|
1996
1996
|
return;
|
1997
1997
|
}
|
@@ -1999,10 +1999,10 @@ Grid.prototype.removeAllColumns = function() {
|
|
1999
1999
|
if(!this._sharedSorter) {
|
2000
2000
|
this.clearSort();
|
2001
2001
|
}
|
2002
|
-
for(
|
2002
|
+
for(let i = colCount; --i >= 0;) {
|
2003
2003
|
// WARNING: This may affect plugins event listeners
|
2004
2004
|
this._grid.setColumnDataBindingHandler(i, null);
|
2005
|
-
|
2005
|
+
let colDef = this.getColumnDefinition(i);
|
2006
2006
|
colDef.dispose();
|
2007
2007
|
}
|
2008
2008
|
// TODO: Remove fields that are related to the column (e.g. fields for coloring)
|
@@ -2062,7 +2062,7 @@ Grid.prototype.reorderColumns = function (colRefs, destCol) {
|
|
2062
2062
|
* @see {@link Grid#showAllColumns}
|
2063
2063
|
*/
|
2064
2064
|
Grid.prototype.hideColumn = function(colRef, hidden) {
|
2065
|
-
|
2065
|
+
let colIndex = this.getColumnIndex(colRef);
|
2066
2066
|
if(colIndex < 0) { // not found
|
2067
2067
|
return;
|
2068
2068
|
}
|
@@ -2107,9 +2107,9 @@ Grid.prototype.addDataFields = function(fieldRef, referrer) {
|
|
2107
2107
|
return false;
|
2108
2108
|
}
|
2109
2109
|
|
2110
|
-
|
2111
|
-
|
2112
|
-
|
2110
|
+
let fields = Array.isArray(fieldRef) ? fieldRef : [fieldRef];
|
2111
|
+
let len = fields.length;
|
2112
|
+
let i, field, dataType, prom, onLoaded;
|
2113
2113
|
for(i = 0; i < len; i++) {
|
2114
2114
|
field = fields[i];
|
2115
2115
|
if(this._shouldLoadFieldInfo(field)) {
|
@@ -2166,7 +2166,7 @@ Grid.prototype.sortColumn = function(colRef, opt_order) {
|
|
2166
2166
|
return;
|
2167
2167
|
}
|
2168
2168
|
|
2169
|
-
|
2169
|
+
let colIndex = this.getColumnIndex(colRef);
|
2170
2170
|
if(colIndex < 0) {
|
2171
2171
|
this._stp.sortColumn(this.getSortedColumnIndex(), "n"); // reset current sorting
|
2172
2172
|
} else {
|
@@ -2178,7 +2178,7 @@ Grid.prototype.sortColumn = function(colRef, opt_order) {
|
|
2178
2178
|
* @param {string} str
|
2179
2179
|
*/
|
2180
2180
|
Grid.prototype.setColumnName = function(colIndex, str) {
|
2181
|
-
|
2181
|
+
let colDef = this.getColumnDefinition(colIndex);
|
2182
2182
|
if(colDef) {
|
2183
2183
|
colDef.setName(str);
|
2184
2184
|
this.updateColumnTitle();
|
@@ -2189,7 +2189,7 @@ Grid.prototype.setColumnName = function(colIndex, str) {
|
|
2189
2189
|
* @param {Function=} func
|
2190
2190
|
*/
|
2191
2191
|
Grid.prototype.setColumnRenderer = function(colRef, func) {
|
2192
|
-
|
2192
|
+
let colIndex = this.getColumnIndex(colRef);
|
2193
2193
|
this.setColumnFormatter(colIndex, func);
|
2194
2194
|
};
|
2195
2195
|
|
@@ -2199,10 +2199,10 @@ Grid.prototype.setColumnRenderer = function(colRef, func) {
|
|
2199
2199
|
* @param {Function=} func If not specified the renderer which corresponded id from mapping will be picked up
|
2200
2200
|
*/
|
2201
2201
|
Grid.prototype.activateColumnRenderer = function(colRef, id, func) {
|
2202
|
-
|
2202
|
+
let colIndex = this.getColumnIndex(colRef);
|
2203
2203
|
if (colIndex == null) { return; }
|
2204
2204
|
|
2205
|
-
|
2205
|
+
let colDef = this.getColumnDefinition(colIndex);
|
2206
2206
|
if(!colDef) { return; }
|
2207
2207
|
|
2208
2208
|
colDef.activateRenderer(id, func);
|
@@ -2219,12 +2219,12 @@ Grid.prototype.activateColumnRenderer = function(colRef, id, func) {
|
|
2219
2219
|
Grid.prototype.setColumnFormatter = function (colIndex, formatter) {
|
2220
2220
|
if (colIndex == null) { return; }
|
2221
2221
|
|
2222
|
-
|
2222
|
+
let colDef = this.getColumnDefinition(colIndex);
|
2223
2223
|
if(!colDef) {
|
2224
2224
|
return;
|
2225
2225
|
}
|
2226
2226
|
|
2227
|
-
|
2227
|
+
let func = null;
|
2228
2228
|
if (formatter) {
|
2229
2229
|
if(typeof formatter === "object") {
|
2230
2230
|
if(typeof formatter.init === "function") { // Initialize predefined formatter
|
@@ -2241,8 +2241,8 @@ Grid.prototype.setColumnFormatter = function (colIndex, formatter) {
|
|
2241
2241
|
}
|
2242
2242
|
|
2243
2243
|
if(func !== colDef.getRenderer()) {
|
2244
|
-
|
2245
|
-
|
2244
|
+
let section = this._grid.getSection("content");
|
2245
|
+
let col = /** @type {Column} */section.getColumn(colIndex);
|
2246
2246
|
if (col) {
|
2247
2247
|
col.clearContent();
|
2248
2248
|
}
|
@@ -2261,12 +2261,12 @@ Grid.prototype.setColumnFormatter = function (colIndex, formatter) {
|
|
2261
2261
|
* @param {ColumnDefinition~SortLogic=} func
|
2262
2262
|
*/
|
2263
2263
|
Grid.prototype.setColumnSorter = function(colRef, func) {
|
2264
|
-
|
2265
|
-
|
2264
|
+
let colIndex = this.getColumnIndex(colRef);
|
2265
|
+
let colDef = this.getColumnDefinition(colIndex);
|
2266
2266
|
if(colDef) {
|
2267
2267
|
colDef.setSorter(func);
|
2268
2268
|
|
2269
|
-
|
2269
|
+
let sortedColumn = this.getSortedColumnIndex(); // TODO: Support multi-column sorting
|
2270
2270
|
if(sortedColumn === colIndex) {
|
2271
2271
|
this._stp.refresh();
|
2272
2272
|
}
|
@@ -2279,8 +2279,8 @@ Grid.prototype.setColumnSorter = function(colRef, func) {
|
|
2279
2279
|
* @param {RowDefinition} rowDef
|
2280
2280
|
*/
|
2281
2281
|
Grid.prototype._initDuplicateRicData = function(rowDef) {
|
2282
|
-
|
2283
|
-
|
2282
|
+
let ric = rowDef.getSymbol();
|
2283
|
+
let rowDefs = this._connector.getRowDefByRic(ric);
|
2284
2284
|
if(rowDefs && rowDefs.length) {
|
2285
2285
|
cloneRowData(rowDefs[0], rowDef);
|
2286
2286
|
}
|
@@ -2290,7 +2290,7 @@ Grid.prototype._initDuplicateRicData = function(rowDef) {
|
|
2290
2290
|
* @param {Grid~RowReference=} rowRef Reference (i.e. row index, row id, or row definition) of the insert position
|
2291
2291
|
* @returns {RowDefinition}
|
2292
2292
|
* @example
|
2293
|
-
*
|
2293
|
+
* let grid = new rt.Grid(grid_div, options);
|
2294
2294
|
* grid.insertRow({"ric": "RIC"}, 0); // A new row is added at the top
|
2295
2295
|
*/
|
2296
2296
|
Grid.prototype.insertRow = function(rowOption, rowRef) {
|
@@ -2307,7 +2307,7 @@ Grid.prototype.insertRow = function(rowOption, rowRef) {
|
|
2307
2307
|
}
|
2308
2308
|
}
|
2309
2309
|
}
|
2310
|
-
|
2310
|
+
let rowDef = new RowDefinition(rowOption);
|
2311
2311
|
rowDef.setDataSource(this._dc); // This could also subscribe chain index/ric to JET/RTK
|
2312
2312
|
this._initDuplicateRicData(rowDef);
|
2313
2313
|
|
@@ -2323,7 +2323,7 @@ Grid.prototype.insertRow = function(rowOption, rowRef) {
|
|
2323
2323
|
* @param {Grid~RowReference=} rowRef Reference (i.e. row index, row id, or row definition) of the insert position
|
2324
2324
|
* @param {Array.<string>=} opt_fields
|
2325
2325
|
* @example
|
2326
|
-
*
|
2326
|
+
* let grid = new rt.Grid(grid_div, options);
|
2327
2327
|
* grid.insertRows([
|
2328
2328
|
* {ric: "RIC"},
|
2329
2329
|
* {values: {"field1": 0, "field2": 1}},
|
@@ -2340,12 +2340,12 @@ Grid.prototype.insertRows = function(rowOptions, rowRef, opt_fields) {
|
|
2340
2340
|
return;
|
2341
2341
|
}
|
2342
2342
|
|
2343
|
-
|
2344
|
-
|
2345
|
-
|
2346
|
-
|
2347
|
-
for(
|
2348
|
-
|
2343
|
+
let prevState = this._dt.freeze(); // Avoid sorting for each inserted row
|
2344
|
+
let fields = opt_fields || this.getColumnFields();
|
2345
|
+
let rowId = this._getRowId(rowRef);
|
2346
|
+
let len = rowOptions.length;
|
2347
|
+
for(let r = 0; r < len; ++r) {
|
2348
|
+
let rowOption = rowOptions[r];
|
2349
2349
|
if(rowOption) {
|
2350
2350
|
if(typeof rowOption === "string") {
|
2351
2351
|
rowOption = { "ric": rowOption };
|
@@ -2363,7 +2363,7 @@ Grid.prototype.insertRows = function(rowOptions, rowRef, opt_fields) {
|
|
2363
2363
|
* @see {@link Grid#logDV}
|
2364
2364
|
* @see {@link Grid#logDT}
|
2365
2365
|
* @example
|
2366
|
-
*
|
2366
|
+
* let grid = new rt.Grid(grid_div, options);
|
2367
2367
|
* grid.addStaticDataRows([
|
2368
2368
|
* [10, "a", true],
|
2369
2369
|
* [20, "b", false],
|
@@ -2384,7 +2384,7 @@ Grid.prototype.addStaticDataRows = function(dataRows, fields) {
|
|
2384
2384
|
}
|
2385
2385
|
|
2386
2386
|
if(!Array.isArray(dataRows)) {
|
2387
|
-
|
2387
|
+
let userObj = dataRows;
|
2388
2388
|
dataRows = null;
|
2389
2389
|
if(userObj) {
|
2390
2390
|
if(userObj.fields && !fields) {
|
@@ -2448,13 +2448,15 @@ Grid.prototype.updateDataSet = function(records, rowIdentifier) {
|
|
2448
2448
|
}
|
2449
2449
|
|
2450
2450
|
// Map new data index
|
2451
|
-
|
2452
|
-
|
2453
|
-
|
2454
|
-
|
2455
|
-
|
2456
|
-
|
2451
|
+
let recordCount = records.length;
|
2452
|
+
let fieldSorting = "ROW_ORDER"; // TODO: Should be config by options
|
2453
|
+
let oldDataMap = {};
|
2454
|
+
let rowDef, id, record, i;
|
2455
|
+
let rowDefs = this.getAllRowDefinitions(); // Include the filter/hidden rows
|
2456
|
+
let rowDefCount = rowDefs.length;
|
2457
|
+
let prevState = false;
|
2457
2458
|
if(rowIdentifier) {
|
2459
|
+
prevState = this._dt.freeze();
|
2458
2460
|
for (i = 0; i < rowDefCount; i++) {
|
2459
2461
|
rowDef = rowDefs[i];
|
2460
2462
|
if(rowDef) {
|
@@ -2467,8 +2469,8 @@ Grid.prototype.updateDataSet = function(records, rowIdentifier) {
|
|
2467
2469
|
}
|
2468
2470
|
}
|
2469
2471
|
|
2470
|
-
|
2471
|
-
|
2472
|
+
let idMap = {};
|
2473
|
+
let newDataMap = {};
|
2472
2474
|
for (i = recordCount - 1; i >= 0; i--) {
|
2473
2475
|
record = records[i];
|
2474
2476
|
id = record[rowIdentifier];
|
@@ -2486,13 +2488,17 @@ Grid.prototype.updateDataSet = function(records, rowIdentifier) {
|
|
2486
2488
|
}
|
2487
2489
|
}
|
2488
2490
|
// Check Remove previous data
|
2489
|
-
for (
|
2491
|
+
for (let rowIdentifierName in oldDataMap) {
|
2490
2492
|
if (oldDataMap[rowIdentifierName] && !newDataMap[rowIdentifierName]) {
|
2491
2493
|
this.removeRow(oldDataMap[rowIdentifierName]); // Slow
|
2492
2494
|
}
|
2493
2495
|
}
|
2494
2496
|
this._dt.sortOnce(ROW_DEF, "a", compareNumber, fieldSorting);
|
2497
|
+
this._dt.freeze(prevState);
|
2495
2498
|
} else {
|
2499
|
+
if(recordCount - rowDefCount > 1 || rowDefCount - recordCount > 1) {
|
2500
|
+
prevState = this._dt.freeze();
|
2501
|
+
}
|
2496
2502
|
for (i = 0; i < rowDefCount; i++) {
|
2497
2503
|
record = records[i];
|
2498
2504
|
if(record) {
|
@@ -2511,6 +2517,9 @@ Grid.prototype.updateDataSet = function(records, rowIdentifier) {
|
|
2511
2517
|
rowDef.setRowData(record);
|
2512
2518
|
}
|
2513
2519
|
}
|
2520
|
+
if(recordCount - rowDefCount > 1 || rowDefCount - recordCount > 1) {
|
2521
|
+
this._dt.freeze(prevState);
|
2522
|
+
}
|
2514
2523
|
}
|
2515
2524
|
};
|
2516
2525
|
/** @private
|
@@ -2530,7 +2539,7 @@ Grid.prototype.removeRow = function(rowRef) {
|
|
2530
2539
|
if(this._mainGrid) {
|
2531
2540
|
return this._mainGrid.removeRow(this._getRowId(rowRef));
|
2532
2541
|
}
|
2533
|
-
|
2542
|
+
let rowDef = this._getRowDefinitionByRef(rowRef);
|
2534
2543
|
if(rowDef) {
|
2535
2544
|
if(!rowDef.isAutoGenerated()) { // Users cannot remove auto-generated row by themselves
|
2536
2545
|
this._removeRow(rowDef);
|
@@ -2546,7 +2555,7 @@ Grid.prototype.removeRow = function(rowRef) {
|
|
2546
2555
|
* @see {@link Grid#removeAllRows}
|
2547
2556
|
*/
|
2548
2557
|
Grid.prototype.removeRows = function(rowRefs) {
|
2549
|
-
|
2558
|
+
let rowDef;
|
2550
2559
|
if(!Array.isArray(rowRefs)) {
|
2551
2560
|
rowDef = this.removeRow(rowRefs);
|
2552
2561
|
return rowDef ? [rowDef] : [];
|
@@ -2555,9 +2564,9 @@ Grid.prototype.removeRows = function(rowRefs) {
|
|
2555
2564
|
return this._mainGrid.removeRows(rowRefs.map(this._getRowId));
|
2556
2565
|
}
|
2557
2566
|
|
2558
|
-
|
2559
|
-
|
2560
|
-
|
2567
|
+
let i;
|
2568
|
+
let rowDefs = [];
|
2569
|
+
let len = rowRefs.length;
|
2561
2570
|
|
2562
2571
|
// Verify user input
|
2563
2572
|
for(i = 0; i < len; ++i) {
|
@@ -2570,7 +2579,7 @@ Grid.prototype.removeRows = function(rowRefs) {
|
|
2570
2579
|
}
|
2571
2580
|
len = rowDefs.length;
|
2572
2581
|
|
2573
|
-
|
2582
|
+
let prevState = false;
|
2574
2583
|
if(len > 1) {
|
2575
2584
|
prevState = this._dt.freeze(); // Prevent multiple changes that trigger sorting and filtering
|
2576
2585
|
}
|
@@ -2595,7 +2604,7 @@ Grid.prototype.removeAllRows = function() {
|
|
2595
2604
|
if(!this._dt.getRowCount()) {
|
2596
2605
|
return;
|
2597
2606
|
}
|
2598
|
-
|
2607
|
+
let rowDefs = this._getAllRowDefinitions();
|
2599
2608
|
|
2600
2609
|
if(!this._sharedDataSource) {
|
2601
2610
|
this._dc.clearAllData();
|
@@ -2623,14 +2632,14 @@ Grid.prototype._removeRow = function(rowDef) {
|
|
2623
2632
|
}
|
2624
2633
|
this._dispatch("beforeRowRemoved", {});
|
2625
2634
|
|
2626
|
-
|
2627
|
-
|
2628
|
-
|
2635
|
+
let connector = this._connector;
|
2636
|
+
let dt = this._dt;
|
2637
|
+
let childRowDefs = rowDef.getDescendants(); // TODO: Support nested child
|
2629
2638
|
if(childRowDefs) { // Remove all children first
|
2630
|
-
for(
|
2639
|
+
for(let i = 0; i < childRowDefs.length; i++) {
|
2631
2640
|
connector.removeRic(childRowDefs[i]);
|
2632
2641
|
}
|
2633
|
-
|
2642
|
+
let rowIds = childRowDefs.map(RowDefinition.toRowId);
|
2634
2643
|
dt.removeRows(rowIds);
|
2635
2644
|
}
|
2636
2645
|
connector.removeRic(rowDef);
|
@@ -2643,8 +2652,8 @@ Grid.prototype._removeRow = function(rowDef) {
|
|
2643
2652
|
* @param {boolean=} hidden if false, show instead of hide
|
2644
2653
|
*/
|
2645
2654
|
Grid.prototype.hideRow = function(rowRef, hidden) {
|
2646
|
-
|
2647
|
-
|
2655
|
+
let rid = this._getRowId(rowRef);
|
2656
|
+
let grid = this._mainGrid || this._grid;
|
2648
2657
|
grid.hideRow(rid, hidden);
|
2649
2658
|
};
|
2650
2659
|
|
@@ -2657,8 +2666,8 @@ Grid.prototype.hideRows = function (rowRefs, hidden) {
|
|
2657
2666
|
if (!Array.isArray(rowRefs)) {
|
2658
2667
|
rowRefs = [rowRefs];
|
2659
2668
|
}
|
2660
|
-
|
2661
|
-
|
2669
|
+
let rids = rowRefs.map(this._getRowId);
|
2670
|
+
let grid = this._mainGrid || this._grid;
|
2662
2671
|
grid.hideRows(rids, hidden);
|
2663
2672
|
};
|
2664
2673
|
/**
|
@@ -2696,19 +2705,19 @@ Grid.prototype.setRic = function(rowRef, str, options) {
|
|
2696
2705
|
this._mainGrid.setRic(this._toRowId(rowRef), str, options);
|
2697
2706
|
return;
|
2698
2707
|
}
|
2699
|
-
|
2708
|
+
let rowDef = this._getRowDefinitionByRef(rowRef);
|
2700
2709
|
if(rowDef) {
|
2701
2710
|
options = options || {};
|
2702
2711
|
options["ric"] = str;
|
2703
|
-
|
2704
|
-
|
2712
|
+
let extractedOptions = RowDefinition.extractRowOptions(options);
|
2713
|
+
let oldRic = rowDef.getSymbol();
|
2705
2714
|
if(rowDef.setContent(str, extractedOptions)) { // The given string may not be a RIC
|
2706
2715
|
this._connector.removeRic(rowDef, oldRic);
|
2707
2716
|
this._initDuplicateRicData(rowDef);
|
2708
2717
|
this._connector.addRic(rowDef);
|
2709
2718
|
}
|
2710
2719
|
|
2711
|
-
|
2720
|
+
let values = options["values"];
|
2712
2721
|
if(values != null) {
|
2713
2722
|
rowDef.setStaticRowData(values, options["fields"]);
|
2714
2723
|
}
|
@@ -2724,7 +2733,7 @@ Grid.prototype.setRic = function(rowRef, str, options) {
|
|
2724
2733
|
* @param {Grid~RowReference} rowRef
|
2725
2734
|
*/
|
2726
2735
|
Grid.prototype.unlinkChain = function(rowRef) {
|
2727
|
-
|
2736
|
+
let rowDef = this._getRowDefinitionByRef(rowRef);
|
2728
2737
|
if(!rowDef) {
|
2729
2738
|
return;
|
2730
2739
|
}
|
@@ -2763,7 +2772,7 @@ Grid.prototype._onRowExpansionBinding = function(e) {
|
|
2763
2772
|
}
|
2764
2773
|
|
2765
2774
|
if(e["originalRowId"]) {
|
2766
|
-
|
2775
|
+
let rowIndex = this._dv.getRowIndex(e["originalRowId"]);
|
2767
2776
|
e["originalRowDef"] = this._getRowDefinitionByIndex(rowIndex);
|
2768
2777
|
e["originalRowData"] = e["originalRowDef"].getRowData();
|
2769
2778
|
} else {
|
@@ -2817,7 +2826,7 @@ Grid.prototype.getColumnCount = function() {
|
|
2817
2826
|
* @return {string}
|
2818
2827
|
*/
|
2819
2828
|
Grid.prototype.getColumnDataType = function(colIndex) {
|
2820
|
-
|
2829
|
+
let colDef = this.getColumnDefinition(colIndex);
|
2821
2830
|
if (colDef) {
|
2822
2831
|
return colDef.getDataType();
|
2823
2832
|
}
|
@@ -2828,7 +2837,7 @@ Grid.prototype.getColumnDataType = function(colIndex) {
|
|
2828
2837
|
* @return {ColumnDefinition}
|
2829
2838
|
*/
|
2830
2839
|
Grid.prototype.getColumnDefinition = function(colIndex) {
|
2831
|
-
|
2840
|
+
let colData = this._grid.getColumnData(colIndex);
|
2832
2841
|
if(colData) {
|
2833
2842
|
return /** @type{ColumnDefinition} */(colData[COL_DEF]) || null;
|
2834
2843
|
}
|
@@ -2838,9 +2847,9 @@ Grid.prototype.getColumnDefinition = function(colIndex) {
|
|
2838
2847
|
* @return {!Array.<ColumnDefinition>}
|
2839
2848
|
*/
|
2840
2849
|
Grid.prototype.getColumnDefinitions = function() {
|
2841
|
-
|
2842
|
-
|
2843
|
-
for(
|
2850
|
+
let colCount = this.getColumnCount();
|
2851
|
+
let colDefs = new Array(colCount);
|
2852
|
+
for(let i = 0; i < colCount; i++) {
|
2844
2853
|
colDefs[i] = this.getColumnDefinition(i);
|
2845
2854
|
}
|
2846
2855
|
return colDefs;
|
@@ -2862,10 +2871,10 @@ Grid.prototype.getColumnDefinitionById = function(colId) {
|
|
2862
2871
|
* @return {ColumnDefinition}
|
2863
2872
|
*/
|
2864
2873
|
Grid.prototype.getColumnDefinitionsById = function(colIds) {
|
2865
|
-
|
2874
|
+
let colCount = Array.isArray(colIds) ? colIds.length : 0;
|
2866
2875
|
if(colCount > 0) {
|
2867
|
-
|
2868
|
-
|
2876
|
+
let i, colId;
|
2877
|
+
let colDefs = new Array(colCount);
|
2869
2878
|
for(i = 0; i < colCount; i++) {
|
2870
2879
|
colId = colIds[i];
|
2871
2880
|
colDefs[i] = this.getColumnDefinitionById(colId);
|
@@ -2885,9 +2894,9 @@ Grid.prototype._getColumnDefinition = function(colRef) {
|
|
2885
2894
|
} else if(typeof colRef === "number") {
|
2886
2895
|
return this.getColumnDefinition(colRef);
|
2887
2896
|
} else if(typeof colRef === "string") {
|
2888
|
-
|
2889
|
-
for(
|
2890
|
-
|
2897
|
+
let colCount = this.getColumnCount();
|
2898
|
+
for(let i = 0; i < colCount; ++i) {
|
2899
|
+
let colDef = this.getColumnDefinition(i);
|
2891
2900
|
if(_hasFieldOrId(colDef, colRef)) {
|
2892
2901
|
return colDef; // Return the first found column
|
2893
2902
|
}
|
@@ -2900,7 +2909,7 @@ Grid.prototype._getColumnDefinition = function(colRef) {
|
|
2900
2909
|
* @return {string}
|
2901
2910
|
*/
|
2902
2911
|
Grid.prototype.getRowType = function(rowRef) {
|
2903
|
-
|
2912
|
+
let rowDef = this.getRowDefinition(rowRef);
|
2904
2913
|
return rowDef ? rowDef.getType() : "";
|
2905
2914
|
};
|
2906
2915
|
/** Get RowDefinition object by either number or row id
|
@@ -2992,15 +3001,15 @@ Grid.prototype.getMultipleRowData = function(obj) {
|
|
2992
3001
|
if(typeof obj === "number") {
|
2993
3002
|
return [this.getRowData(obj)];
|
2994
3003
|
}
|
2995
|
-
|
3004
|
+
let rowDefs = null;
|
2996
3005
|
if(Array.isArray(obj)) {
|
2997
|
-
|
2998
|
-
|
2999
|
-
|
3006
|
+
let rowRefs = obj;
|
3007
|
+
let rowCount = rowRefs.length;
|
3008
|
+
let rows = new Array(rowCount);
|
3000
3009
|
rowDefs = this.getRowDefinitions();
|
3001
3010
|
|
3002
|
-
for(
|
3003
|
-
|
3011
|
+
for(let r = 0; r < rowCount; ++r) {
|
3012
|
+
let rowRef = rowRefs[r];
|
3004
3013
|
if(typeof rowRef === "number") {
|
3005
3014
|
rows[r] = toRowData(rowDefs[rowRef]);
|
3006
3015
|
} else if(rowRef && rowRef.getRowData) {
|
@@ -3023,10 +3032,10 @@ Grid.prototype.getMultipleRowData = function(obj) {
|
|
3023
3032
|
* @param {Object} values {"FIELD1": value1, "FIELD2": value2, ...} Use null to remove current row data (not row in the view).
|
3024
3033
|
*/
|
3025
3034
|
Grid.prototype.setRicData = function(ric, values) {
|
3026
|
-
|
3027
|
-
|
3028
|
-
for (
|
3029
|
-
|
3035
|
+
let rowDefs = this._connector.getRowDefByRic(ric);
|
3036
|
+
let rowCount = rowDefs ? rowDefs.length : 0;
|
3037
|
+
for (let i = 0; i < rowCount; ++i) {
|
3038
|
+
let rowDef = rowDefs[i];
|
3030
3039
|
if (rowDef && rowDef.getSymbol() === ric) {
|
3031
3040
|
rowDef.setRowData(values); // TODO: Need conflator to improve performance
|
3032
3041
|
}
|
@@ -3038,7 +3047,7 @@ Grid.prototype.setRicData = function(ric, values) {
|
|
3038
3047
|
* @param {Object} values {"FIELD1": value1, "FIELD2": value2, ...} Use null to remove current row data (not row in the view).
|
3039
3048
|
*/
|
3040
3049
|
Grid.prototype.setRowData = function(rowRef, values) {
|
3041
|
-
|
3050
|
+
let rowDef = this._getRowDefinitionByRef(rowRef);
|
3042
3051
|
if(rowDef) {
|
3043
3052
|
rowDef.setRowData(values);
|
3044
3053
|
}
|
@@ -3050,7 +3059,7 @@ Grid.prototype.setRowData = function(rowRef, values) {
|
|
3050
3059
|
* @param {Object} values
|
3051
3060
|
*/
|
3052
3061
|
Grid.prototype.setStaticRowData = function(rowRef, values) {
|
3053
|
-
|
3062
|
+
let rowDef = this._getRowDefinitionByRef(rowRef);
|
3054
3063
|
if(rowDef) {
|
3055
3064
|
rowDef.setStaticRowData(values);
|
3056
3065
|
}
|
@@ -3063,7 +3072,7 @@ Grid.prototype.setStaticRowData = function(rowRef, values) {
|
|
3063
3072
|
* @param {*} value
|
3064
3073
|
*/
|
3065
3074
|
Grid.prototype.setStaticData = function(rowRef, field, value) {
|
3066
|
-
|
3075
|
+
let rowDef = this._getRowDefinitionByRef(rowRef);
|
3067
3076
|
if(rowDef) {
|
3068
3077
|
rowDef.setStaticData(field, value);
|
3069
3078
|
}
|
@@ -3091,9 +3100,9 @@ Grid.prototype._getRowId = function(rowRef) {
|
|
3091
3100
|
Grid.prototype.getColumnIndex = function(colRef) {
|
3092
3101
|
if(colRef) {
|
3093
3102
|
if(colRef instanceof ColumnDefinition) {
|
3094
|
-
|
3095
|
-
for(
|
3096
|
-
|
3103
|
+
let colCount = this.getColumnCount();
|
3104
|
+
for(let i = 0; i < colCount; ++i) {
|
3105
|
+
let colDef = this.getColumnDefinition(i);
|
3097
3106
|
if(colDef === colRef) {
|
3098
3107
|
return i;
|
3099
3108
|
}
|
@@ -3109,13 +3118,13 @@ Grid.prototype.getColumnIndex = function(colRef) {
|
|
3109
3118
|
* @return {!Array.<number>}
|
3110
3119
|
*/
|
3111
3120
|
Grid.prototype.getColumnIndices = function(colRefs) {
|
3112
|
-
|
3113
|
-
|
3114
|
-
|
3115
|
-
|
3121
|
+
let ary = [];
|
3122
|
+
let colCount = this.getColumnCount();
|
3123
|
+
let inputAry = Array.isArray(colRefs) ? colRefs : [colRefs];
|
3124
|
+
let len = inputAry.length;
|
3116
3125
|
// Verify user input
|
3117
|
-
for(
|
3118
|
-
|
3126
|
+
for(let i = 0; i < len; ++i) {
|
3127
|
+
let colIndex = this.getColumnIndex(inputAry[i]);
|
3119
3128
|
if(colIndex >= 0 && colIndex < colCount) {
|
3120
3129
|
ary.push(colIndex); // WARNING: We have not checked for duplication
|
3121
3130
|
}
|
@@ -3190,11 +3199,11 @@ Grid.prototype.freezeColumn = function(colIndex, pinnedRightColumns) {
|
|
3190
3199
|
*/
|
3191
3200
|
Grid.prototype.pinColumn = function(colRef, side) {
|
3192
3201
|
if(Array.isArray(colRef)) {
|
3193
|
-
|
3194
|
-
|
3202
|
+
let ary = colRef;
|
3203
|
+
let len = ary.length;
|
3195
3204
|
|
3196
|
-
|
3197
|
-
for(
|
3205
|
+
let dirty = 0;
|
3206
|
+
for(let i = 0; i < len; ++i) {
|
3198
3207
|
dirty |= this._pinColumn(ary[i], side);
|
3199
3208
|
}
|
3200
3209
|
return dirty ? true : false;
|
@@ -3207,18 +3216,18 @@ Grid.prototype.pinColumn = function(colRef, side) {
|
|
3207
3216
|
* @return {boolean}
|
3208
3217
|
*/
|
3209
3218
|
Grid.prototype._pinColumn = function(colRef, side) {
|
3210
|
-
|
3211
|
-
|
3219
|
+
let colIndex = this.getColumnIndex(colRef);
|
3220
|
+
let colCount = this.getColumnCount();
|
3212
3221
|
if(colIndex < 0 || colIndex > colCount) {
|
3213
3222
|
return false;
|
3214
3223
|
}
|
3215
3224
|
|
3216
|
-
|
3217
|
-
|
3218
|
-
|
3225
|
+
let leftPinnedCount = this._grid.getPinnedLeftColumnCount();
|
3226
|
+
let rightPinnedCount = this._grid.getPinnedRightColumnCount();
|
3227
|
+
let stationaryIdx = this._grid.getStationaryColumnIndex();
|
3219
3228
|
|
3220
3229
|
if(side && side.toLowerCase() === "right") {
|
3221
|
-
|
3230
|
+
let rightPinnedIndex = this._grid.getFirstPinnedRightIndex();
|
3222
3231
|
if(colIndex >= rightPinnedIndex) {
|
3223
3232
|
return false; // The column is already pinned area
|
3224
3233
|
}
|
@@ -3257,11 +3266,11 @@ Grid.prototype._pinColumn = function(colRef, side) {
|
|
3257
3266
|
*/
|
3258
3267
|
Grid.prototype.unpinColumn = function(colRef, dest) {
|
3259
3268
|
if(Array.isArray(colRef)) {
|
3260
|
-
|
3261
|
-
|
3269
|
+
let ary = colRef;
|
3270
|
+
let len = ary.length;
|
3262
3271
|
|
3263
|
-
|
3264
|
-
for(
|
3272
|
+
let dirty = 0;
|
3273
|
+
for(let i = len; --i >= 0;) { // WARNING: unpinning is done in reversed order
|
3265
3274
|
dirty |= this._unpinColumn(ary[i], dest);
|
3266
3275
|
}
|
3267
3276
|
return dirty ? true : false;
|
@@ -3274,29 +3283,29 @@ Grid.prototype.unpinColumn = function(colRef, dest) {
|
|
3274
3283
|
* @return {boolean}
|
3275
3284
|
*/
|
3276
3285
|
Grid.prototype._unpinColumn = function(colRef, dest) {
|
3277
|
-
|
3286
|
+
let colIndex = this.getColumnIndex(colRef);
|
3278
3287
|
if(colIndex < 0) {
|
3279
3288
|
return false;
|
3280
3289
|
}
|
3281
3290
|
|
3282
|
-
|
3283
|
-
|
3284
|
-
|
3285
|
-
|
3291
|
+
let leftPinnedCount = this._grid.getPinnedLeftColumnCount();
|
3292
|
+
let rightPinnedCount = this._grid.getPinnedRightColumnCount();
|
3293
|
+
let colCount = this.getColumnCount();
|
3294
|
+
let firstRightPinnedIndex = colCount - rightPinnedCount;
|
3286
3295
|
|
3287
3296
|
if(colIndex >= leftPinnedCount && colIndex < firstRightPinnedIndex) {
|
3288
3297
|
return false;
|
3289
3298
|
}
|
3290
3299
|
|
3291
|
-
|
3292
|
-
|
3300
|
+
let srcId = null;
|
3301
|
+
let destId = null;
|
3293
3302
|
if(dest != null) {
|
3294
|
-
|
3303
|
+
let destIdx = this.getColumnIndex(dest);
|
3295
3304
|
destId = this.getColumnId(destIdx);
|
3296
3305
|
srcId = this.getColumnId(colIndex);
|
3297
3306
|
}
|
3298
3307
|
|
3299
|
-
|
3308
|
+
let stationaryIdx = this._grid.getStationaryColumnIndex();
|
3300
3309
|
|
3301
3310
|
if(colIndex < leftPinnedCount) {
|
3302
3311
|
if(colIndex > stationaryIdx) {
|
@@ -3325,8 +3334,8 @@ Grid.prototype._unpinColumn = function(colRef, dest) {
|
|
3325
3334
|
* @return {boolean}
|
3326
3335
|
*/
|
3327
3336
|
Grid.prototype.unpinAllColumns = function() {
|
3328
|
-
|
3329
|
-
|
3337
|
+
let leftPinnedCount = this._grid.getPinnedLeftColumnCount();
|
3338
|
+
let rightPinnedCount = this._grid.getPinnedRightColumnCount();
|
3330
3339
|
if(!leftPinnedCount && !rightPinnedCount) {
|
3331
3340
|
return false;
|
3332
3341
|
}
|
@@ -3342,8 +3351,8 @@ Grid.prototype._onColumnHeaderBinding = function(e) {
|
|
3342
3351
|
return; // WARNING: Assume that only the first title section is owned by the grid. Anything else is assumed to be generated by plugins
|
3343
3352
|
}
|
3344
3353
|
|
3345
|
-
|
3346
|
-
|
3354
|
+
let c = e["fromColIndex"];
|
3355
|
+
let toC = e["toColIndex"];
|
3347
3356
|
while(c < toC) {
|
3348
3357
|
this._renderColumnHeader(c++, e);
|
3349
3358
|
}
|
@@ -3353,22 +3362,22 @@ Grid.prototype._onColumnHeaderBinding = function(e) {
|
|
3353
3362
|
* @param {Object} arg
|
3354
3363
|
*/
|
3355
3364
|
Grid.prototype._renderColumnHeader = function(colIndex, arg) {
|
3356
|
-
|
3365
|
+
let colDef = this.getColumnDefinition(colIndex);
|
3357
3366
|
if(!colDef) {
|
3358
3367
|
return;
|
3359
3368
|
}
|
3360
|
-
|
3361
|
-
|
3362
|
-
|
3369
|
+
let customRenderer = colDef.getHeaderRenderer();
|
3370
|
+
let tSection = arg.section;
|
3371
|
+
let rowCount = tSection.getRowCount();
|
3363
3372
|
arg["colIndex"] = colIndex;
|
3364
3373
|
arg["columnDef"] = colDef;
|
3365
3374
|
|
3366
|
-
|
3367
|
-
|
3368
|
-
|
3375
|
+
let colName = colDef.getName();
|
3376
|
+
let colTooltip = colDef.getTooltip();
|
3377
|
+
let headerAlignment = colDef.getHeaderAlignment();
|
3369
3378
|
|
3370
|
-
for(
|
3371
|
-
|
3379
|
+
for(let r = 0; r < rowCount; ++r) {
|
3380
|
+
let tCell = tSection.getCell(colIndex, r, false);
|
3372
3381
|
// Default behaviors
|
3373
3382
|
tCell.setContent(colName);
|
3374
3383
|
tCell.setTooltip(colTooltip);
|
@@ -3387,7 +3396,7 @@ Grid.prototype.updateColumnTitle = function() {
|
|
3387
3396
|
if(this._columnTitleConflator.conflate()) {
|
3388
3397
|
return;
|
3389
3398
|
}
|
3390
|
-
|
3399
|
+
let tss = this._grid.getSectionSettings("title"); // WARNING: Assume that only the first title section is owned by the grid
|
3391
3400
|
if(tss) {
|
3392
3401
|
tss.rerender();
|
3393
3402
|
}
|
@@ -3433,17 +3442,17 @@ Grid.prototype._onQuote2PostUpdate = function (e) {
|
|
3433
3442
|
* @param {!Object} e
|
3434
3443
|
*/
|
3435
3444
|
Grid.prototype._onDataChanged = function(e) {
|
3436
|
-
|
3445
|
+
let rowData = e["rowData"]; // Use rowData to retrieve corresponding subscription object
|
3437
3446
|
if (!rowData) {
|
3438
3447
|
return; // This must be a global change
|
3439
3448
|
}
|
3440
|
-
|
3449
|
+
let rowDef = rowData[ROW_DEF];
|
3441
3450
|
|
3442
3451
|
if(rowDef) {
|
3443
|
-
|
3452
|
+
let rowId = rowDef.getRowId();
|
3444
3453
|
if(rowId) {
|
3445
3454
|
// e["rid"] could be from JET/RTK (rowId + ric) or static data update (rowId)
|
3446
|
-
|
3455
|
+
let curRowData = this._dc.getRowData(e["rid"]);
|
3447
3456
|
if (curRowData) {
|
3448
3457
|
if(rowDef.addUpdate(e)) { // This is the only place that update array can grow. It is used for blinking data.
|
3449
3458
|
this._dt._hasNewUpdates = true; // Mark data table for cleaning it up later
|
@@ -3458,9 +3467,9 @@ Grid.prototype._onDataChanged = function(e) {
|
|
3458
3467
|
}
|
3459
3468
|
|
3460
3469
|
// The new data update has no row definition, meaning that we have found a new constituent from a chain.
|
3461
|
-
|
3470
|
+
let subId = rowData[SUB_ID]; // The constituent will share the same sub id as its parent
|
3462
3471
|
if(subId) {
|
3463
|
-
|
3472
|
+
let parentDef = this._getRowDefinitionById(subId);
|
3464
3473
|
if(parentDef && parentDef.getRic() !== rowData["RIC"]) { // TODO: Check for delayed ric
|
3465
3474
|
if(!this._chainMembers) {
|
3466
3475
|
this._chainMembers = {};
|
@@ -3480,21 +3489,21 @@ Grid.prototype._addMemberOfChain = function(rowData) {
|
|
3480
3489
|
return;
|
3481
3490
|
}
|
3482
3491
|
|
3483
|
-
|
3484
|
-
|
3485
|
-
|
3492
|
+
let rows = this._chainConflator.popAllData(); // This must have no duplication
|
3493
|
+
let len = rows ? rows.length : 0;
|
3494
|
+
let i;
|
3486
3495
|
|
3487
|
-
|
3496
|
+
let prevState = false;
|
3488
3497
|
if(len > 1) {
|
3489
3498
|
prevState = this._dt.freeze(); // Avoid sorting for each insertion
|
3490
3499
|
}
|
3491
|
-
|
3500
|
+
let childDefs = [];
|
3492
3501
|
for(i = 0; i < len; ++i) {
|
3493
3502
|
rowData = /** @type{!Object} */(rows[i]);
|
3494
|
-
|
3495
|
-
|
3503
|
+
let subId = rowData[SUB_ID];
|
3504
|
+
let parentDef = this._getRowDefinitionById(subId);
|
3496
3505
|
if(parentDef) {
|
3497
|
-
|
3506
|
+
let childDef = parentDef.addConstituent(/** @type{string} */(rowData["RIC"]), this._dt);
|
3498
3507
|
if(childDef) {
|
3499
3508
|
childDefs.push(childDef);
|
3500
3509
|
} // else { // childDef has already been added
|
@@ -3502,7 +3511,7 @@ Grid.prototype._addMemberOfChain = function(rowData) {
|
|
3502
3511
|
}
|
3503
3512
|
this._chainMembers = null; // Clear all waiting chain members
|
3504
3513
|
|
3505
|
-
|
3514
|
+
let childCount = childDefs.length;
|
3506
3515
|
if(childCount) {
|
3507
3516
|
for(i = childCount; --i >= 0;) {
|
3508
3517
|
this._connector.addRic(childDefs[i]); // TODO: JET/RTK should not re-subscribe this
|
@@ -3530,19 +3539,19 @@ Grid.prototype._updateStreamingData = function() {
|
|
3530
3539
|
* @param {Object} e
|
3531
3540
|
*/
|
3532
3541
|
Grid.prototype._onPreDataSorting = function (e) {
|
3533
|
-
|
3542
|
+
let objs = this._stp.getSortedColumns();
|
3534
3543
|
|
3535
3544
|
this._sorter.reset();
|
3536
3545
|
if(Array.isArray(objs)) {
|
3537
|
-
|
3538
|
-
for(
|
3539
|
-
|
3540
|
-
|
3541
|
-
|
3542
|
-
|
3543
|
-
|
3544
|
-
|
3545
|
-
|
3546
|
+
let sortCount = objs.length;
|
3547
|
+
for(let i = 0; i < sortCount; ++i) {
|
3548
|
+
let obj = objs[i];
|
3549
|
+
let field = obj["field"] || "";
|
3550
|
+
let colIndex = obj["colIndex"];
|
3551
|
+
let colDef = (colIndex >= 0) ? this.getColumnDefinition(colIndex) : null;
|
3552
|
+
|
3553
|
+
let rowSorting = false;
|
3554
|
+
let sortLogic = null;
|
3546
3555
|
if(colDef) {
|
3547
3556
|
field = colDef.getField(); // WARNING: Field and logic could be out of sync
|
3548
3557
|
rowSorting = colDef.isRowSorting();
|
@@ -3588,10 +3597,10 @@ Grid.prototype._clearDataUpdates = function() {
|
|
3588
3597
|
if(!this._dt || !this._dt._hasNewUpdates) {
|
3589
3598
|
return;
|
3590
3599
|
}
|
3591
|
-
|
3592
|
-
for(
|
3593
|
-
|
3594
|
-
|
3600
|
+
let rowIds = this._dt.getAllRowIds(true); // Use shallow copy for speed
|
3601
|
+
for(let i = rowIds.length; --i >= 0;) {
|
3602
|
+
let rowData = this._dt.getRowData(rowIds[i]);
|
3603
|
+
let rowDef = rowData[ROW_DEF];
|
3595
3604
|
rowDef.resetUpdates();
|
3596
3605
|
}
|
3597
3606
|
};
|
@@ -3639,7 +3648,7 @@ Grid.prototype.getPageCount = function() {
|
|
3639
3648
|
* @param {Grid~RowReference} rowRef
|
3640
3649
|
*/
|
3641
3650
|
Grid.prototype.toggleChain = function(rowRef) {
|
3642
|
-
|
3651
|
+
let rowDef = this._getRowDefinitionByRef(rowRef);
|
3643
3652
|
if(rowDef) {
|
3644
3653
|
rowDef.toggleChain();
|
3645
3654
|
}
|
@@ -3651,7 +3660,7 @@ Grid.prototype.toggleChain = function(rowRef) {
|
|
3651
3660
|
* @return {boolean}
|
3652
3661
|
*/
|
3653
3662
|
Grid.prototype.setClassification = function(rowRef, fields) {
|
3654
|
-
|
3663
|
+
let rowDef = this._getRowDefinitionByRef(rowRef);
|
3655
3664
|
if(rowDef) {
|
3656
3665
|
return this._dt.setSegmentClassification(rowDef.getRowId(), fields);
|
3657
3666
|
}
|
@@ -3676,7 +3685,7 @@ Grid.prototype.contains = function(elem) {
|
|
3676
3685
|
* @return {boolean}
|
3677
3686
|
*/
|
3678
3687
|
Grid.prototype.isFocused = function() {
|
3679
|
-
|
3688
|
+
let activeElement = document.activeElement;
|
3680
3689
|
if(!activeElement || !activeElement.shadowRoot) {
|
3681
3690
|
// active element is not in the shadow DOM. try using contains method to check
|
3682
3691
|
return this.contains(activeElement);
|
@@ -3743,17 +3752,17 @@ Grid.prototype._onFormulaDataRequired = function(e) {
|
|
3743
3752
|
* @param {Object} e
|
3744
3753
|
*/
|
3745
3754
|
Grid.prototype._onDataComposed = function(e) {
|
3746
|
-
|
3755
|
+
let values = e["changes"];
|
3747
3756
|
if(!values) {
|
3748
3757
|
return; // Cannot do data composition if there is no change in data
|
3749
3758
|
}
|
3750
3759
|
|
3751
|
-
|
3760
|
+
let rowData = e["rowData"];
|
3752
3761
|
if(!rowData) {
|
3753
3762
|
return; // Row could already be removed or global change event is sent
|
3754
3763
|
}
|
3755
3764
|
|
3756
|
-
|
3765
|
+
let rowDef = rowData[ROW_DEF];
|
3757
3766
|
if(!rowDef) {
|
3758
3767
|
return;
|
3759
3768
|
}
|
@@ -3762,7 +3771,7 @@ Grid.prototype._onDataComposed = function(e) {
|
|
3762
3771
|
}
|
3763
3772
|
|
3764
3773
|
if(this._autoDateConversion) { // auto data conversion
|
3765
|
-
|
3774
|
+
let field, value, dataType, colDef;
|
3766
3775
|
for(field in values) {
|
3767
3776
|
colDef = this._getColumnDefinition(field);
|
3768
3777
|
if(colDef) {
|
@@ -3792,16 +3801,16 @@ Grid.prototype._onDataComposed = function(e) {
|
|
3792
3801
|
* @param {Object} e
|
3793
3802
|
*/
|
3794
3803
|
Grid.prototype._onSubSegmentChanged = function(e) {
|
3795
|
-
|
3796
|
-
|
3797
|
-
|
3804
|
+
let insertionList = /** @type{Array.<Segment>} */(e["insertionList"]);
|
3805
|
+
let removalList = /** @type{Array.<string>} */(e["removalList"]);
|
3806
|
+
let removedRows = /** @type{Object} */(e["removedRows"]);
|
3798
3807
|
|
3799
|
-
|
3800
|
-
|
3801
|
-
|
3808
|
+
let i;
|
3809
|
+
let removalCount = removalList.length;
|
3810
|
+
let rowDef = null;
|
3802
3811
|
for(i = 0; i < removalCount; i++) {
|
3803
|
-
|
3804
|
-
|
3812
|
+
let rid = removalList[i];
|
3813
|
+
let removedRow = removedRows[rid];
|
3805
3814
|
if(removedRow) {
|
3806
3815
|
rowDef = removedRow[ROW_DEF];
|
3807
3816
|
if(rowDef) {
|
@@ -3811,11 +3820,11 @@ Grid.prototype._onSubSegmentChanged = function(e) {
|
|
3811
3820
|
}
|
3812
3821
|
}
|
3813
3822
|
|
3814
|
-
|
3823
|
+
let insertionCount = insertionList.length;
|
3815
3824
|
for(i = 0; i < insertionCount; i++) {
|
3816
|
-
|
3817
|
-
//
|
3818
|
-
|
3825
|
+
let segment = insertionList[i];
|
3826
|
+
// let parentId = segment.getParentId();
|
3827
|
+
let segmentId = segment.getId();
|
3819
3828
|
rowDef = new RowDefinition({
|
3820
3829
|
"segmentId": segmentId
|
3821
3830
|
});
|
@@ -3835,10 +3844,10 @@ Grid.prototype._recalculateFormulas = function(e) {
|
|
3835
3844
|
if(e && e["rid"]) {
|
3836
3845
|
this._fnEngine.calculate(/** @type{Object.<string, *>} */ (e["rowData"]), /** @type{Object.<string, *>} */ (e["changes"]));
|
3837
3846
|
} else {
|
3838
|
-
|
3847
|
+
let rows = this._dc ? this._dc.getAllRowData() : null; // Slow
|
3839
3848
|
|
3840
|
-
|
3841
|
-
for(
|
3849
|
+
let rowCount = rows ? rows.length : 0;
|
3850
|
+
for(let r = 0; r < rowCount; ++r) { // WARNING: This is very slow
|
3842
3851
|
this._fnEngine.calculate(rows[r]);
|
3843
3852
|
}
|
3844
3853
|
}
|
@@ -3850,11 +3859,11 @@ Grid.prototype._recalculateFormulas = function(e) {
|
|
3850
3859
|
Grid.prototype._snapshotFillerDataChanged = function (e) {
|
3851
3860
|
if (!this._dt) return;
|
3852
3861
|
|
3853
|
-
|
3862
|
+
let data = e.data;
|
3854
3863
|
if(e.timeSeries) {
|
3855
3864
|
this._updateTimeSeriesFields(e); // Increase or decrease time series field
|
3856
3865
|
} else {
|
3857
|
-
for (
|
3866
|
+
for (let ric in data) {
|
3858
3867
|
this.setRicData(ric, data[ric]);
|
3859
3868
|
}
|
3860
3869
|
}
|
@@ -3869,7 +3878,7 @@ Grid.prototype._snapshotFillerDataChanged = function (e) {
|
|
3869
3878
|
Grid.prototype._startPolling = function () {
|
3870
3879
|
if(this._pollingEnabled && this._pollingInterval) {
|
3871
3880
|
if(this._lastPollingRequest && !this._pollingTimerId) {
|
3872
|
-
|
3881
|
+
let now = new Date();
|
3873
3882
|
this._lastPollingRequest = now.getTime();
|
3874
3883
|
this._pollingTimerId = setTimeout(this._onPollingInterval, this._pollingInterval);
|
3875
3884
|
}
|
@@ -3891,9 +3900,9 @@ Grid.prototype.activateADCPolling = function (activated) {
|
|
3891
3900
|
if(activated !== false) {
|
3892
3901
|
this._pollingEnabled = true;
|
3893
3902
|
// Make immediate request after re-activation if it has been a long time
|
3894
|
-
|
3903
|
+
let now = new Date();
|
3895
3904
|
if(this._lastPollingRequest) {
|
3896
|
-
|
3905
|
+
let diff = now.getTime() - this._lastPollingRequest;
|
3897
3906
|
if(diff > this._pollingInterval) {
|
3898
3907
|
this.refreshADCData();
|
3899
3908
|
}
|
@@ -3908,7 +3917,7 @@ Grid.prototype.activateADCPolling = function (activated) {
|
|
3908
3917
|
* @return {boolean} Return true, if a request has been made
|
3909
3918
|
*/
|
3910
3919
|
Grid.prototype.refreshADCData = function () {
|
3911
|
-
|
3920
|
+
let dirty = this._snapshot.addFields(this._connector.getAllFields());
|
3912
3921
|
if(dirty) {
|
3913
3922
|
dirty = this._snapshot.addRics(this._connector.getAllRics());
|
3914
3923
|
if(dirty) {
|
@@ -3922,9 +3931,9 @@ Grid.prototype.refreshADCData = function () {
|
|
3922
3931
|
/** @private
|
3923
3932
|
*/
|
3924
3933
|
Grid.prototype._onAutoLayoutUpdate = function() {
|
3925
|
-
|
3934
|
+
let elem = this._topNode;
|
3926
3935
|
|
3927
|
-
|
3936
|
+
let cw = elem.clientWidth;
|
3928
3937
|
if(cw !== this._clientWidth) {
|
3929
3938
|
this._clientWidth = cw;
|
3930
3939
|
this.updateLayout();
|
@@ -3936,7 +3945,7 @@ Grid.prototype._onAutoLayoutUpdate = function() {
|
|
3936
3945
|
* @param {Object=} opt_options { "colNames": Array.<string>, "rowCount": number, "startIndex": number, "getter": function(Object, string):* }
|
3937
3946
|
*/
|
3938
3947
|
Grid.prototype.logDT = function(opt_options) {
|
3939
|
-
|
3948
|
+
let rowDefs = this._getAllRowDefinitions();
|
3940
3949
|
this._logData(rowDefs, opt_options);
|
3941
3950
|
};
|
3942
3951
|
/** @description Log DataView to console. By default, this will log only fields specified in the column definition. To see other column data use "colNames" options
|
@@ -3954,7 +3963,7 @@ Grid.prototype.logDT = function(opt_options) {
|
|
3954
3963
|
grid.logDV({"rowCount": 10}); // Showing 10 records
|
3955
3964
|
*/
|
3956
3965
|
Grid.prototype.logDV = function(opt_options) {
|
3957
|
-
|
3966
|
+
let rowDefs = this.getRowDefinitions();
|
3958
3967
|
this._logData(rowDefs, opt_options);
|
3959
3968
|
};
|
3960
3969
|
/** Log the collection of data to console
|
@@ -3970,7 +3979,7 @@ Grid.prototype._logData = function(rowDefs, options) {
|
|
3970
3979
|
// TODO: Get all required fields and eliminate duplicate fields
|
3971
3980
|
options["colNames"] = this.getColumnFields();
|
3972
3981
|
}
|
3973
|
-
|
3982
|
+
let tbl = DataCache.constructTable(rowDefs.map(toRowData), options);
|
3974
3983
|
|
3975
3984
|
console.table(tbl); // eslint-disable-line
|
3976
3985
|
};
|
@@ -3982,17 +3991,17 @@ Grid.prototype._logData = function(rowDefs, options) {
|
|
3982
3991
|
* @returns {RowDefinition}
|
3983
3992
|
*/
|
3984
3993
|
Grid.prototype.replaceRow = function(rowRef, rowOption) {
|
3985
|
-
|
3986
|
-
|
3994
|
+
let rowId = this._getRowId(rowRef);
|
3995
|
+
let rowDef = this._getRowDefinitionByRef(rowRef);
|
3987
3996
|
if(rowDef.isAutoGenerated()) { // Users cannot replace auto-generated
|
3988
3997
|
return null;
|
3989
3998
|
}
|
3990
|
-
|
3999
|
+
let configObj = rowDef.getConfigObject();
|
3991
4000
|
|
3992
4001
|
if(deepEqual(configObj, rowOption)){
|
3993
4002
|
return null;
|
3994
4003
|
} else {
|
3995
|
-
|
4004
|
+
let insertedRow = this.insertRow(rowOption, rowId);
|
3996
4005
|
this.removeRow(rowId);
|
3997
4006
|
return insertedRow;
|
3998
4007
|
}
|