@builttocreate/engine-utils 1.8.1 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/activityHelper.js +115 -2
- package/dist/fieldHelper.js +53 -3
- package/dist/tableHelper.js +98 -3
- package/package.json +1 -1
package/dist/activityHelper.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports["default"] = exports.getFormattedActivity = void 0;
|
|
8
|
+
exports["default"] = exports.addDocumentDataToActivities = exports.getFormattedActivity = void 0;
|
|
9
9
|
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
|
|
@@ -13,6 +13,10 @@ var _ActivityTypes = _interopRequireDefault(require("./constants/ActivityTypes")
|
|
|
13
13
|
|
|
14
14
|
var _FileTypes = _interopRequireDefault(require("./constants/FileTypes"));
|
|
15
15
|
|
|
16
|
+
var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
|
|
17
|
+
|
|
18
|
+
var _tableHelper = require("./tableHelper");
|
|
19
|
+
|
|
16
20
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
17
21
|
|
|
18
22
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
@@ -65,9 +69,118 @@ var getFormattedActivity = function getFormattedActivity(comments, deficiencies,
|
|
|
65
69
|
});
|
|
66
70
|
return activity;
|
|
67
71
|
};
|
|
72
|
+
/**
|
|
73
|
+
*
|
|
74
|
+
* Template should be a template that is using the new getTemplateWithLookups
|
|
75
|
+
*/
|
|
76
|
+
|
|
68
77
|
|
|
69
78
|
exports.getFormattedActivity = getFormattedActivity;
|
|
79
|
+
|
|
80
|
+
var addDocumentDataToActivities = function addDocumentDataToActivities(activities, doc, template) {
|
|
81
|
+
var templateFieldLookup = {};
|
|
82
|
+
|
|
83
|
+
if (template.fields && template.fields.length > 0) {
|
|
84
|
+
template.fields.forEach(function (field) {
|
|
85
|
+
return templateFieldLookup[field._id] = field;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
var fieldValues = doc && doc.fields ? doc.fields : null;
|
|
90
|
+
if (!activities || activities.length < 1 || !templateFieldLookup || !fieldValues) return activities;
|
|
91
|
+
var fieldRowsLookup = {};
|
|
92
|
+
var fieldRowIndexLookup = {};
|
|
93
|
+
var nextActivities = [];
|
|
94
|
+
activities.forEach(function (activity) {
|
|
95
|
+
var nextActivity = _objectSpread({}, activity);
|
|
96
|
+
|
|
97
|
+
if (activity.document && activity.document._id && activity.document.field) {
|
|
98
|
+
var docFieldValue = fieldValues[activity.document.field];
|
|
99
|
+
var templateField = templateFieldLookup[activity.document.field];
|
|
100
|
+
nextActivity.document.title = templateField.title;
|
|
101
|
+
nextActivity.document.type = templateField.type;
|
|
102
|
+
nextActivity.document.columns = templateField.tableColumns;
|
|
103
|
+
|
|
104
|
+
if (docFieldValue && templateField.type === _FieldTypes["default"].table) {
|
|
105
|
+
/**
|
|
106
|
+
* Table Step 1: create an easy way to lookup a row with the dropdown cells populated.
|
|
107
|
+
*
|
|
108
|
+
* We only need to generate the row lookup once per field to help increase performance,
|
|
109
|
+
* just incase we have other deficiencies that reference the same table field.
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Removing deleted rows from doc field value
|
|
114
|
+
* Added as a fix for table bug that did not display proper output for formula cells
|
|
115
|
+
* as rowIndex was messy
|
|
116
|
+
*/
|
|
117
|
+
var nextDocFieldValue = (0, _tableHelper.getRows)(docFieldValue);
|
|
118
|
+
|
|
119
|
+
if (!fieldRowsLookup[templateField._id]) {
|
|
120
|
+
fieldRowsLookup[templateField._id] = (0, _tableHelper.getTableRowLookupWithPopulatedDropdownCells)(templateField.tableColumns, nextDocFieldValue);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Table Step 2: create an easy way to lookup a row index so we can use it in our row
|
|
124
|
+
* display component.
|
|
125
|
+
*
|
|
126
|
+
* We only need to generate the row index lookup once per field to help increase performance,
|
|
127
|
+
* just incase we have other deficiencies that reference the same table field.
|
|
128
|
+
*/
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
if (!fieldRowIndexLookup[templateField._id]) {
|
|
132
|
+
fieldRowIndexLookup[templateField._id] = (0, _tableHelper.getRowIndexLookup)(templateField._id, template.fieldSettings, docFieldValue);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Table Step 3: Add row and rowIndex to the activity.document object for easy reference.
|
|
136
|
+
*
|
|
137
|
+
* nextActivity.document.value will now contain the single row object with all cell values populated ready to be displayed
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
nextActivity.document.value = fieldRowsLookup[activity.document.field][activity.document.row];
|
|
142
|
+
nextActivity.document.rowIndex = fieldRowIndexLookup[activity.document.field][activity.document.row];
|
|
143
|
+
} else if (docFieldValue && templateField.type === _FieldTypes["default"].inputGroup) {
|
|
144
|
+
/**
|
|
145
|
+
* Input Group Step 1: create an easy way to lookup a row with the dropdown cells populated.
|
|
146
|
+
*
|
|
147
|
+
* We only need to generate the row lookup once per field (since input groups are just rows)
|
|
148
|
+
* to help increase performance, just incase we have other deficiencies that reference the same table field.
|
|
149
|
+
*/
|
|
150
|
+
if (!fieldRowsLookup[templateField._id]) fieldRowsLookup[templateField._id] = (0, _tableHelper.getInputGroupRowLookupWithPopulatedDropdownCells)(templateField.tableColumns, docFieldValue);
|
|
151
|
+
/**
|
|
152
|
+
* Input Group Step 2: Add invidual row.cell value. We only add the invidual cell value and not the
|
|
153
|
+
* whole row because input group display components are treated like regular field and not like table rows.
|
|
154
|
+
*/
|
|
155
|
+
|
|
156
|
+
nextActivity.document.value = fieldRowsLookup[activity.document.field][activity.document.row].cells[activity.document.column];
|
|
157
|
+
} else if (docFieldValue && templateField.type === _FieldTypes["default"].multiSelect) {
|
|
158
|
+
var parsedDocFieldValue = docFieldValue && typeof docFieldValue === 'string' ? docFieldValue.split(',') : docFieldValue;
|
|
159
|
+
var _nextDocFieldValue = '';
|
|
160
|
+
|
|
161
|
+
if (parsedDocFieldValue.length > 0) {
|
|
162
|
+
parsedDocFieldValue.forEach(function (item) {
|
|
163
|
+
var option = templateField.optionsLookup[item];
|
|
164
|
+
_nextDocFieldValue = _nextDocFieldValue.concat(' ', option.value);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
nextActivity.document.value = _nextDocFieldValue;
|
|
169
|
+
} //This should handle adding the display value for selection and regular input fields
|
|
170
|
+
else {
|
|
171
|
+
var option = templateField.optionsLookup[docFieldValue];
|
|
172
|
+
nextActivity.document.value = option && option.value ? option.value : docFieldValue;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
nextActivities.push(nextActivity);
|
|
177
|
+
});
|
|
178
|
+
return nextActivities;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
exports.addDocumentDataToActivities = addDocumentDataToActivities;
|
|
70
182
|
var _default = {
|
|
71
|
-
getFormattedActivity: getFormattedActivity
|
|
183
|
+
getFormattedActivity: getFormattedActivity,
|
|
184
|
+
addDocumentDataToActivities: addDocumentDataToActivities
|
|
72
185
|
};
|
|
73
186
|
exports["default"] = _default;
|
package/dist/fieldHelper.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports["default"] = exports.getImportFieldValues = exports.getDefaultFieldValuesFromTemplate = exports.getMultiSelectFieldValue = exports.getChartFieldValue = void 0;
|
|
8
|
+
exports["default"] = exports.getTemplateWithLookups = exports.getImportFieldValues = exports.getDefaultFieldValuesFromTemplate = exports.getMultiSelectFieldValue = exports.getChartFieldValue = void 0;
|
|
9
9
|
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
|
|
@@ -108,7 +108,7 @@ var getDefaultFieldValuesFromTemplate = function getDefaultFieldValuesFromTempla
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
if (field.type === _FieldTypes["default"].date) {
|
|
111
|
-
fields[field._id] = field.value || new Date().getTime();
|
|
111
|
+
fields[field._id] = field.blockAutoPopulate ? '' : field.value || new Date().getTime();
|
|
112
112
|
}
|
|
113
113
|
});
|
|
114
114
|
return fields;
|
|
@@ -177,12 +177,62 @@ var getImportFieldValues = function getImportFieldValues(template, importSource,
|
|
|
177
177
|
});
|
|
178
178
|
return fields;
|
|
179
179
|
};
|
|
180
|
+
/**
|
|
181
|
+
* Generate optionsLookup and fieldLookup for template fields
|
|
182
|
+
* Note: Options lookup will be used by dropdown, mutliSelect, table and inputGroup fields
|
|
183
|
+
* to display value in dropdowns
|
|
184
|
+
* @param {} template
|
|
185
|
+
* @returns template
|
|
186
|
+
*/
|
|
187
|
+
|
|
180
188
|
|
|
181
189
|
exports.getImportFieldValues = getImportFieldValues;
|
|
190
|
+
|
|
191
|
+
var getTemplateWithLookups = function getTemplateWithLookups(template) {
|
|
192
|
+
var nextTemplate = _objectSpread({}, template);
|
|
193
|
+
|
|
194
|
+
nextTemplate.fields = [];
|
|
195
|
+
nextTemplate.fieldLookup = {};
|
|
196
|
+
template.fields.forEach(function (field) {
|
|
197
|
+
var nextField = _objectSpread({}, field);
|
|
198
|
+
|
|
199
|
+
nextField.optionsLookup = {};
|
|
200
|
+
|
|
201
|
+
if (nextField.options) {
|
|
202
|
+
nextField.options.forEach(function (option) {
|
|
203
|
+
return nextField.optionsLookup[option._id] = option;
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
if (nextField.tableColumns) {
|
|
208
|
+
nextField.tableColumnsLookup = {};
|
|
209
|
+
nextField.tableColumns.forEach(function (column, index) {
|
|
210
|
+
var nextColumn = _objectSpread(_objectSpread({}, column), {}, {
|
|
211
|
+
optionsLookup: {}
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
if (nextColumn.options) {
|
|
215
|
+
nextColumn.options.forEach(function (option) {
|
|
216
|
+
return nextColumn.optionsLookup[option._id] = option;
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
nextField.tableColumns[index] = nextColumn;
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
nextTemplate.fields.push(nextField);
|
|
225
|
+
nextTemplate.fieldLookup[nextField._id] = nextField;
|
|
226
|
+
});
|
|
227
|
+
return nextTemplate;
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
exports.getTemplateWithLookups = getTemplateWithLookups;
|
|
182
231
|
var _default = {
|
|
183
232
|
getChartFieldValue: getChartFieldValue,
|
|
184
233
|
getMultiSelectFieldValue: getMultiSelectFieldValue,
|
|
185
234
|
getDefaultFieldValuesFromTemplate: getDefaultFieldValuesFromTemplate,
|
|
186
|
-
getImportFieldValues: getImportFieldValues
|
|
235
|
+
getImportFieldValues: getImportFieldValues,
|
|
236
|
+
getTemplateWithLookups: getTemplateWithLookups
|
|
187
237
|
};
|
|
188
238
|
exports["default"] = _default;
|
package/dist/tableHelper.js
CHANGED
|
@@ -7,7 +7,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports["default"] = exports.handleMoveTableRowDown = exports.handleMoveTableRowUp = exports.handleDuplicateTableRow = exports.handleCreateTableRow = exports.handleInsertTableRow = exports.handleTableCellChange = exports.generateInputGroupFields = exports.spreadOperandRange = exports.validFormulaString = exports.hasOperandRange = exports.hasCircularOperandReference = exports.resolveOperandValue = exports.getFormulaResult = exports.generateTableLookup = exports.generateTableLookupForRows = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.getCellOperand = exports.getTemplateColumnOperandLookup = exports.getIndexesFromTableCellOperand = exports.getColumnOperand = exports.getColumns = exports.getTableFieldRowOrder = exports.getRowMap = exports.getFilteredRowOrder = exports.sortRows = exports.getRows = exports.getDefaultRow = exports.getTableFieldLookupKey = void 0;
|
|
10
|
+
exports["default"] = exports.handleMoveTableRowDown = exports.handleMoveTableRowUp = exports.handleDuplicateTableRow = exports.handleCreateTableRow = exports.handleInsertTableRow = exports.handleTableCellChange = exports.getRowIndexLookup = exports.getInputGroupRowLookupWithPopulatedDropdownCells = exports.getTableRowLookupWithPopulatedDropdownCells = exports.generateInputGroupFields = exports.spreadOperandRange = exports.validFormulaString = exports.hasOperandRange = exports.hasCircularOperandReference = exports.resolveOperandValue = exports.getFormulaResult = exports.generateTableLookup = exports.generateTableLookupForRows = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.getCellOperand = exports.getTemplateColumnOperandLookup = exports.getIndexesFromTableCellOperand = exports.getColumnOperand = exports.getColumns = exports.getTableFieldRowOrder = exports.getRowMap = exports.getFilteredRowOrder = exports.sortRows = exports.getRows = exports.getDefaultRow = exports.getTableFieldLookupKey = void 0;
|
|
11
11
|
|
|
12
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
13
|
|
|
@@ -517,7 +517,7 @@ var resolveOperandValue = function resolveOperandValue(sourceOperand, targetOper
|
|
|
517
517
|
// It creates and infinite circular loop of trying to resovle a value
|
|
518
518
|
// because they both depend on eachother.
|
|
519
519
|
|
|
520
|
-
if (sourceOperand && hasCircularOperandReference(targetValue, sourceOperand)) return '* INVALID - Circular Reference'; // 4. If targetCell has a formula value
|
|
520
|
+
if (sourceOperand && hasCircularOperandReference(targetValue, sourceOperand) || targetOperand && hasCircularOperandReference(targetValue, targetOperand)) return '* INVALID - Circular Reference'; // 4. If targetCell has a formula value
|
|
521
521
|
|
|
522
522
|
if (targetValue !== undefined && targetValue.charAt(0) === '=') {
|
|
523
523
|
var result = getFormulaResult(sourceOperand, targetValue, tableLookup);
|
|
@@ -712,6 +712,98 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
712
712
|
});
|
|
713
713
|
return tableReferences;
|
|
714
714
|
};
|
|
715
|
+
/**
|
|
716
|
+
* Populate table rows with values
|
|
717
|
+
* - Dropdown cells will have chosen values
|
|
718
|
+
* - Formula cells will have the formula result
|
|
719
|
+
*
|
|
720
|
+
* Note: Columns should already have the options lookup populated before
|
|
721
|
+
* being sent into this function
|
|
722
|
+
*
|
|
723
|
+
* @param {*} columns -
|
|
724
|
+
* @param {*} rows
|
|
725
|
+
* @returns
|
|
726
|
+
*/
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
exports.generateInputGroupFields = generateInputGroupFields;
|
|
730
|
+
|
|
731
|
+
var getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWithPopulatedDropdownCells(columns, rows) {
|
|
732
|
+
var rowsLookup = {};
|
|
733
|
+
var tableLookup = generateTableLookup(rows, columns);
|
|
734
|
+
var validRows = getRows(rows);
|
|
735
|
+
var validColumns = getColumns(columns);
|
|
736
|
+
validRows.forEach(function (row, rowIndex) {
|
|
737
|
+
var nextRow = _objectSpread(_objectSpread({}, row), {}, {
|
|
738
|
+
cells: _objectSpread({}, row.cells)
|
|
739
|
+
});
|
|
740
|
+
|
|
741
|
+
validColumns.forEach(function (column) {
|
|
742
|
+
var cellOperand = getCellOperand(column.operand, rowIndex + 1);
|
|
743
|
+
var value = tableLookup[cellOperand];
|
|
744
|
+
|
|
745
|
+
if (value && column.type === _FieldTableColumnTypes["default"].dropdown) {
|
|
746
|
+
nextRow.cells[column._id] = column.optionsLookup[value] ? column.optionsLookup[value].value : value;
|
|
747
|
+
} else {
|
|
748
|
+
nextRow.cells[column._id] = value;
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
rowsLookup[nextRow._id] = nextRow;
|
|
752
|
+
});
|
|
753
|
+
return rowsLookup;
|
|
754
|
+
};
|
|
755
|
+
/**
|
|
756
|
+
* Populate inputGroup dropdown questions with chosen value
|
|
757
|
+
*
|
|
758
|
+
* Note: Columns should already have the options lookup populated before
|
|
759
|
+
* being sent into this function
|
|
760
|
+
*
|
|
761
|
+
* @param {*} columns
|
|
762
|
+
* @param {*} rows
|
|
763
|
+
* @returns
|
|
764
|
+
*/
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
exports.getTableRowLookupWithPopulatedDropdownCells = getTableRowLookupWithPopulatedDropdownCells;
|
|
768
|
+
|
|
769
|
+
var getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRowLookupWithPopulatedDropdownCells(columns, rows) {
|
|
770
|
+
var rowsLookup = {};
|
|
771
|
+
var validRows = typeof row === 'string' ? JSON.parse(rows) : rows;
|
|
772
|
+
validRows.forEach(function (row) {
|
|
773
|
+
var nextRow = _objectSpread(_objectSpread({}, row), {}, {
|
|
774
|
+
cells: _objectSpread({}, row.cells)
|
|
775
|
+
});
|
|
776
|
+
|
|
777
|
+
columns.forEach(function (column) {
|
|
778
|
+
var optionId = nextRow.cells[column._id];
|
|
779
|
+
|
|
780
|
+
if (optionId && column.type === _FieldTableColumnTypes["default"].dropdown) {
|
|
781
|
+
nextRow.cells[column._id] = column.optionsLookup[optionId] ? column.optionsLookup[optionId].value : optionId;
|
|
782
|
+
}
|
|
783
|
+
});
|
|
784
|
+
rowsLookup[nextRow._id] = nextRow;
|
|
785
|
+
});
|
|
786
|
+
return rowsLookup;
|
|
787
|
+
};
|
|
788
|
+
/**
|
|
789
|
+
* Generate row index lookup:
|
|
790
|
+
* @param {*} fieldId
|
|
791
|
+
* @param {*} fieldSettings
|
|
792
|
+
* @param {*} rows
|
|
793
|
+
* @returns
|
|
794
|
+
*/
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
exports.getInputGroupRowLookupWithPopulatedDropdownCells = getInputGroupRowLookupWithPopulatedDropdownCells;
|
|
798
|
+
|
|
799
|
+
var getRowIndexLookup = function getRowIndexLookup(fieldId, fieldSettings, rows) {
|
|
800
|
+
var rowOrder = getTableFieldRowOrder(fieldId, fieldSettings, rows);
|
|
801
|
+
var rowIndexLookup = {};
|
|
802
|
+
rowOrder.forEach(function (rowId, index) {
|
|
803
|
+
rowIndexLookup[rowId] = index;
|
|
804
|
+
});
|
|
805
|
+
return rowIndexLookup;
|
|
806
|
+
};
|
|
715
807
|
/**
|
|
716
808
|
* Handle Table Cell Change
|
|
717
809
|
*
|
|
@@ -723,7 +815,7 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
723
815
|
*/
|
|
724
816
|
|
|
725
817
|
|
|
726
|
-
exports.
|
|
818
|
+
exports.getRowIndexLookup = getRowIndexLookup;
|
|
727
819
|
|
|
728
820
|
var handleTableCellChange = function handleTableCellChange(rows, rowId, columnId, val, callback) {
|
|
729
821
|
var targetRowIndex = rows.findIndex(function (row) {
|
|
@@ -858,6 +950,9 @@ var _default = {
|
|
|
858
950
|
spreadOperandRange: spreadOperandRange,
|
|
859
951
|
getTableFieldLookupKey: getTableFieldLookupKey,
|
|
860
952
|
getTableFieldRowOrder: getTableFieldRowOrder,
|
|
953
|
+
getTableRowLookupWithPopulatedDropdownCells: getTableRowLookupWithPopulatedDropdownCells,
|
|
954
|
+
getInputGroupRowLookupWithPopulatedDropdownCells: getInputGroupRowLookupWithPopulatedDropdownCells,
|
|
955
|
+
getRowIndexLookup: getRowIndexLookup,
|
|
861
956
|
handleTableCellChange: handleTableCellChange,
|
|
862
957
|
handleInsertTableRow: handleInsertTableRow,
|
|
863
958
|
handleCreateTableRow: handleCreateTableRow,
|