@builttocreate/engine-utils 2.6.0-beta.23 → 2.6.0-beta.24
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/joyDocHelper.js +50 -27
- package/dist/tableHelper.js +50 -2
- package/package.json +1 -1
package/dist/joyDocHelper.js
CHANGED
|
@@ -824,8 +824,7 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
824
824
|
* We use these lookups because multiple table fieldPositions belonging to the same table
|
|
825
825
|
* field will all use the same table value calculated lookup.
|
|
826
826
|
*/
|
|
827
|
-
var
|
|
828
|
-
var tableFieldColumnLookups = {};
|
|
827
|
+
var tableFieldLookup = {};
|
|
829
828
|
var nextFieldPositions = [];
|
|
830
829
|
(0, _toConsumableArray2["default"])(fieldPositions).forEach(function (fieldPosition) {
|
|
831
830
|
var nextFieldPosition = _objectSpread({}, fieldPosition);
|
|
@@ -839,37 +838,57 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
839
838
|
rowOrder = fieldPosition.rowOrder,
|
|
840
839
|
tableColumnOrder = fieldPosition.tableColumnOrder;
|
|
841
840
|
/**
|
|
842
|
-
*
|
|
843
|
-
*
|
|
844
|
-
* with
|
|
841
|
+
* Step 1: Generate rows, rowOrder, tableColumns, etc. lookups for associated field. We only have to
|
|
842
|
+
* do this once per-field. This increases performance if there are multiple form positions associated
|
|
843
|
+
* with the same form.
|
|
845
844
|
*/
|
|
846
845
|
|
|
847
|
-
|
|
848
|
-
|
|
846
|
+
if (!tableFieldLookup[field]) {
|
|
847
|
+
/**
|
|
848
|
+
* Step 1.1 Handle rows
|
|
849
|
+
*/
|
|
850
|
+
var nextRows = (0, _tableHelper.getRows)(value);
|
|
851
|
+
var nextRowOrder = (0, _tableHelper.getCleanedRowOrder)(rowOrder, nextRows);
|
|
852
|
+
var nextSortedRows = (0, _tableHelper.sortRows)(nextRows, nextRowOrder);
|
|
853
|
+
/**
|
|
854
|
+
* Step 1.2 Handle columns
|
|
855
|
+
*/
|
|
849
856
|
|
|
850
|
-
|
|
851
|
-
var
|
|
852
|
-
(0, _tableHelper.getColumns)(
|
|
853
|
-
|
|
857
|
+
var nextTableColumnOrder = (0, _tableHelper.getCleanedColumnOrder)(tableColumnOrder, tableColumns);
|
|
858
|
+
var nextSortedTableColumns = (0, _tableHelper.sortColumns)(tableColumns, nextTableColumnOrder);
|
|
859
|
+
var nextTableColumns = (0, _tableHelper.getColumns)(nextSortedTableColumns);
|
|
860
|
+
var nextTableColumnLookup = {};
|
|
861
|
+
nextTableColumns.forEach(function (column) {
|
|
862
|
+
return nextTableColumnLookup[column._id] = column;
|
|
854
863
|
});
|
|
855
|
-
|
|
856
|
-
|
|
864
|
+
/**
|
|
865
|
+
* Step 1.3 Handle cell calculations
|
|
866
|
+
*/
|
|
857
867
|
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
868
|
+
var calculatedValue = (0, _tableHelper.generateTableLookup)(nextSortedRows, nextSortedTableColumns);
|
|
869
|
+
tableFieldLookup[field] = {
|
|
870
|
+
value: nextSortedRows,
|
|
871
|
+
rowOrder: nextRowOrder,
|
|
872
|
+
tableColumns: nextTableColumns,
|
|
873
|
+
tableColumnOrder: nextTableColumnOrder,
|
|
874
|
+
tableColumnLookup: nextTableColumnLookup,
|
|
875
|
+
calculatedValue: calculatedValue
|
|
876
|
+
};
|
|
861
877
|
}
|
|
862
878
|
/**
|
|
863
|
-
* Ensure each table field has a properly formatted
|
|
879
|
+
* Ensure each table field has a properly formatted properties
|
|
864
880
|
*/
|
|
865
881
|
|
|
866
882
|
|
|
867
|
-
|
|
883
|
+
nextFieldPosition.value = tableFieldLookup[field].value;
|
|
884
|
+
nextFieldPosition.rowOrder = tableFieldLookup[field].rowOrder;
|
|
885
|
+
nextFieldPosition.tableColumns = tableFieldLookup[field].tableColumns;
|
|
886
|
+
nextFieldPosition.tableColumnOrder = tableFieldLookup[field].tableColumnOrder;
|
|
868
887
|
/**
|
|
869
888
|
* Add calculated value lookup. For instance, { A1: '', B1: '', C1: '', ... }
|
|
870
889
|
*/
|
|
871
890
|
|
|
872
|
-
|
|
891
|
+
nextFieldPosition.calculatedValue = tableFieldLookup[field].calculatedValue;
|
|
873
892
|
/**
|
|
874
893
|
* Individual Table Cell vs Entire Table
|
|
875
894
|
*
|
|
@@ -891,8 +910,8 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
891
910
|
* with it (ie rows[rowIndex] is undefined) it means that particular row is deleted
|
|
892
911
|
*/
|
|
893
912
|
|
|
894
|
-
if (
|
|
895
|
-
var
|
|
913
|
+
if (tableFieldLookup[field] && column && typeof rowIndex === 'number') {
|
|
914
|
+
var _tableFieldLookup$fie;
|
|
896
915
|
|
|
897
916
|
/**
|
|
898
917
|
* What is the difference between rowIndex and targetRowIndex?
|
|
@@ -905,10 +924,10 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
905
924
|
* order. The rowOrder is updated when users insert rows, move rows up or down, etc. it manages where rows
|
|
906
925
|
* are at in the list and how they should be rendered. This is why the rowIndex uses the rowOrder.
|
|
907
926
|
*/
|
|
908
|
-
var targetColumn =
|
|
909
|
-
var targetRowId =
|
|
910
|
-
var targetRowIndex =
|
|
911
|
-
return row._id === targetRowId;
|
|
927
|
+
var targetColumn = tableFieldLookup[field].tableColumnLookup[column];
|
|
928
|
+
var targetRowId = tableFieldLookup[field].rowOrder[rowIndex];
|
|
929
|
+
var targetRowIndex = tableFieldLookup[field].value.findIndex(function (row) {
|
|
930
|
+
return (row === null || row === void 0 ? void 0 : row._id) === targetRowId;
|
|
912
931
|
});
|
|
913
932
|
/**
|
|
914
933
|
* Add proper rowId to the field position so that it can be used
|
|
@@ -921,10 +940,14 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
921
940
|
* at the particular rowIndex was deleted
|
|
922
941
|
*/
|
|
923
942
|
|
|
924
|
-
nextFieldPosition.cellValue = ((
|
|
943
|
+
nextFieldPosition.cellValue = ((_tableFieldLookup$fie = tableFieldLookup[field].value[targetRowIndex]) === null || _tableFieldLookup$fie === void 0 ? void 0 : _tableFieldLookup$fie.cells[column]) || '';
|
|
944
|
+
/**
|
|
945
|
+
* Skip any individual field position that is associated with a deleted column.
|
|
946
|
+
* targetColumn will appear as undefined if a column is deleted
|
|
947
|
+
*/
|
|
925
948
|
|
|
926
949
|
if (targetColumn) {
|
|
927
|
-
nextFieldPosition.calculatedCellValue =
|
|
950
|
+
nextFieldPosition.calculatedCellValue = tableFieldLookup[field].calculatedValue["".concat(targetColumn.operand).concat(targetRowIndex + 1)];
|
|
928
951
|
nextFieldPosition.columnType = targetColumn.type;
|
|
929
952
|
nextFieldPosition.options = targetColumn.options;
|
|
930
953
|
nextFieldPosition.columnIdentifier = targetColumn.identifier;
|
package/dist/tableHelper.js
CHANGED
|
@@ -7,7 +7,7 @@ var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.validFormulaString = exports.spreadOperandRange = exports.sortRows = exports.sortColumns = exports.resolveOperandValue = exports.hasOperandRange = exports.hasCircularOperandReference = exports.handleTableCellChange = exports.handleMoveTableRowUp = exports.handleMoveTableRowDown = exports.handleMoveColumnRight = exports.handleMoveColumnLeft = exports.handleInsertTableRow = exports.handleDuplicateTableRow = exports.handleCreateTableRow = exports.getTemplateColumnOperandLookup = exports.getTargetColumnWithOperand = exports.getTableRowLookupWithPopulatedDropdownCells = exports.getTableFieldRowOrder = exports.getTableFieldLookupKey = exports.getRows = exports.getRowOrder = exports.getRowMap = exports.getRowIndexLookup = exports.getInputGroupRowLookupWithPopulatedDropdownCells = exports.getIndexesFromTableCellOperand = exports.getFormulaResult = exports.getFilteredRowOrder = exports.getDefaultTextColumn = exports.getDefaultRow = exports.getDefaultImageColumn = exports.getDefaultDropdownColumn = exports.getDefaultColumnOption = exports.getColumns = exports.getColumnOrder = exports.getColumnOperand = exports.getCleanedRowOrder = exports.getCellOperand = exports.generateTableLookupForRows = exports.generateTableLookup = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.generateInputGroupFields = exports["default"] = void 0;
|
|
10
|
+
exports.validFormulaString = exports.spreadOperandRange = exports.sortRows = exports.sortColumns = exports.resolveOperandValue = exports.hasOperandRange = exports.hasCircularOperandReference = exports.handleTableCellChange = exports.handleMoveTableRowUp = exports.handleMoveTableRowDown = exports.handleMoveColumnRight = exports.handleMoveColumnLeft = exports.handleInsertTableRow = exports.handleDuplicateTableRow = exports.handleCreateTableRow = exports.getTemplateColumnOperandLookup = exports.getTargetColumnWithOperand = exports.getTableRowLookupWithPopulatedDropdownCells = exports.getTableFieldRowOrder = exports.getTableFieldLookupKey = exports.getRows = exports.getRowOrder = exports.getRowMap = exports.getRowIndexLookup = exports.getInputGroupRowLookupWithPopulatedDropdownCells = exports.getIndexesFromTableCellOperand = exports.getFormulaResult = exports.getFilteredRowOrder = exports.getDefaultTextColumn = exports.getDefaultRow = exports.getDefaultImageColumn = exports.getDefaultDropdownColumn = exports.getDefaultColumnOption = exports.getColumns = exports.getColumnOrder = exports.getColumnOperand = exports.getCleanedRowOrder = exports.getCleanedColumnOrder = exports.getCellOperand = exports.generateTableLookupForRows = exports.generateTableLookup = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.generateInputGroupFields = exports["default"] = void 0;
|
|
11
11
|
|
|
12
12
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
13
|
|
|
@@ -386,12 +386,60 @@ var getColumnOrder = function getColumnOrder(columnOrder, columns) {
|
|
|
386
386
|
return column._id;
|
|
387
387
|
});
|
|
388
388
|
};
|
|
389
|
+
/**
|
|
390
|
+
* This method removes the columnIds of the deleted columns (or) any duplicate columnIds
|
|
391
|
+
* from the tableColumnOrder there by returning a cleaned tableColumnOrder
|
|
392
|
+
*
|
|
393
|
+
* @param {*} tableColumnOrder
|
|
394
|
+
* @param {*} tableColumns
|
|
395
|
+
*
|
|
396
|
+
* @returns {Array}
|
|
397
|
+
**/
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
exports.getColumnOrder = getColumnOrder;
|
|
401
|
+
|
|
402
|
+
var getCleanedColumnOrder = function getCleanedColumnOrder(columnOrder, columns) {
|
|
403
|
+
var nextColumnOrder = [];
|
|
404
|
+
/**
|
|
405
|
+
* Step 1: Handle generating or retrieving proper column order.
|
|
406
|
+
*/
|
|
407
|
+
|
|
408
|
+
if (columnOrder && columnOrder.length > 0) {
|
|
409
|
+
nextColumnOrder = columnOrder;
|
|
410
|
+
} else if (columns && columns.length > 0) {
|
|
411
|
+
columns.forEach(function (column) {
|
|
412
|
+
if (!column.deleted) nextColumnOrder.push(column._id);
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Step 2: Remove column Ids from columnOrder for columns that no longer exist or have been deleted
|
|
417
|
+
*/
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
var columnLookup = {};
|
|
421
|
+
columns.forEach(function (column) {
|
|
422
|
+
return columnLookup[column._id] = column && !column.deleted;
|
|
423
|
+
});
|
|
424
|
+
nextColumnOrder = nextColumnOrder.filter(function (columnId) {
|
|
425
|
+
return columnLookup[columnId];
|
|
426
|
+
});
|
|
427
|
+
/**
|
|
428
|
+
* Step 3: Remove any duplicate column Id references in the column order.
|
|
429
|
+
*/
|
|
430
|
+
|
|
431
|
+
var filteredNextColumnOrder = [];
|
|
432
|
+
nextColumnOrder.forEach(function (columnId) {
|
|
433
|
+
if (columnId && filteredNextColumnOrder.indexOf(columnId) === -1) filteredNextColumnOrder.push(columnId);
|
|
434
|
+
});
|
|
435
|
+
return filteredNextColumnOrder;
|
|
436
|
+
};
|
|
389
437
|
/**
|
|
390
438
|
* Get table columns with added operands. Operands are the A, B, C, etc.
|
|
391
439
|
*/
|
|
392
440
|
|
|
393
441
|
|
|
394
|
-
exports.
|
|
442
|
+
exports.getCleanedColumnOrder = getCleanedColumnOrder;
|
|
395
443
|
|
|
396
444
|
var getColumns = function getColumns(columns) {
|
|
397
445
|
var parsedColumns = columns;
|