@builttocreate/engine-utils 1.0.3 → 1.1.0

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.
@@ -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.generateTableFieldLookups = exports.generateRowTableLookup = exports.getCellOperand = exports.getTemplateColumnOperandLookup = exports.getColumnOperand = exports.getColumns = exports.getTableFieldRowOrder = exports.getRowMap = 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.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.getColumnOperand = exports.getColumns = exports.getTableFieldRowOrder = exports.getRowMap = exports.sortRows = exports.getRows = exports.getDefaultRow = exports.getTableFieldLookupKey = void 0;
11
11
 
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
 
@@ -66,15 +66,16 @@ var getRows = function getRows(rows) {
66
66
  exports.getRows = getRows;
67
67
 
68
68
  var sortRows = function sortRows(rows, rowOrder) {
69
+ if (!rowOrder) return rows;
69
70
  var rowLookup = {};
70
71
  rows.forEach(function (row) {
71
- return rowLookup[row._id] = row;
72
+ rowLookup[row._id] = row;
72
73
  });
73
- var validRows = [];
74
+ var sortedRows = [];
74
75
  rowOrder.forEach(function (rowId) {
75
- if (rowLookup[rowId]) validRows.push(rowLookup[rowId]);
76
+ if (rowLookup[rowId]) sortedRows.push(rowLookup[rowId]);
76
77
  });
77
- return validRows;
78
+ return sortedRows;
78
79
  };
79
80
  /**
80
81
  * Create a table row map for simple value lookup
@@ -274,6 +275,40 @@ var generateTableFieldLookups = function generateTableFieldLookups(doc, template
274
275
  });
275
276
  return tableLookups;
276
277
  };
278
+ /**
279
+ * Organize the table lookup on a row by row basis
280
+ * @param {Array} rows
281
+ * @param {Array} columns
282
+ * @retuns {Object}
283
+ *
284
+ * Example return object:
285
+ * {
286
+ * 1: {
287
+ * A1: 12,
288
+ * B1: 1,
289
+ * },
290
+ * 2: {
291
+ * A2: 10,
292
+ * B2: 4,
293
+ * },
294
+ * ...
295
+ * }
296
+ *
297
+ */
298
+
299
+
300
+ exports.generateTableFieldLookups = generateTableFieldLookups;
301
+
302
+ var generateTableLookupForRows = function generateTableLookupForRows(rows, columns) {
303
+ var tableLookup = generateTableLookup(rows, columns);
304
+ var rowLookup = {};
305
+ Object.keys(tableLookup).forEach(function (key) {
306
+ var rowIndex = key.match(/[0-9]*/gi)[1];
307
+ if (!rowLookup[rowIndex]) rowLookup[rowIndex] = {};
308
+ rowLookup[rowIndex][key] = tableLookup[key];
309
+ });
310
+ return rowLookup;
311
+ };
277
312
  /**
278
313
  * Generate Lookup Operand Lookup Table for Table Data. Supports converting
279
314
  * formula cells to the calculated value.
@@ -291,11 +326,10 @@ var generateTableFieldLookups = function generateTableFieldLookups(doc, template
291
326
  * A2: 2,
292
327
  * B2: 4,
293
328
  * }
294
- *
295
329
  */
296
330
 
297
331
 
298
- exports.generateTableFieldLookups = generateTableFieldLookups;
332
+ exports.generateTableLookupForRows = generateTableLookupForRows;
299
333
 
300
334
  var generateTableLookup = function generateTableLookup(rows, columns) {
301
335
  var tableLookup = {};
@@ -544,6 +578,7 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
544
578
  var rowOrder = getTableFieldRowOrder(field._id, fieldSettings, tableRows);
545
579
  var sortedTableRows = sortRows(tableRows, rowOrder);
546
580
  sortedTableRows.forEach(function (row, rowIndex) {
581
+ var firstRowIndex = rowIndex === 0;
547
582
  var lastRowIndex = rowIndex === sortedTableRows.length - 1;
548
583
  /**
549
584
  * Step 1: Add InputGroup Row Header
@@ -556,6 +591,8 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
556
591
  type: _Table.inputGroupFieldTypes.inputGroupRowHeader,
557
592
  rowIndex: rowIndex,
558
593
  rowId: row._id,
594
+ firstRowIndex: firstRowIndex,
595
+ lastRowIndex: lastRowIndex,
559
596
  firstIndex: rowIndex === 0,
560
597
  lastIndex: false
561
598
  });
@@ -578,6 +615,8 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
578
615
  columnIndex: columnIndex,
579
616
  value: value,
580
617
  displayValue: displayValue,
618
+ firstRowIndex: firstRowIndex,
619
+ lastRowIndex: lastRowIndex,
581
620
  firstIndex: false,
582
621
  lastIndex: lastRowIndex && lastColumnIndex
583
622
  });
@@ -707,11 +746,57 @@ var handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, cal
707
746
  targetRowIndex: targetRowIndex
708
747
  });
709
748
  };
749
+ /**
750
+ * Get cell position lookup for table field data
751
+ *
752
+ * @param {Array} columns
753
+ * @param {Array} rows
754
+ * @param {Object} columnWidthLookup = { rowMenu: 20, rowNumber: 20, dropdown: 100, text: 100 }
755
+ * @return {Object}
756
+ *
757
+ */
758
+
759
+ /*const getTableFieldCellPositionLookup = (columns, rows, columnWidthLookup) => {
760
+
761
+ const columns = getColumns([...columns]);
762
+ const rows = getRows(rows);
763
+
764
+ const rowMenuColumnWidth = columnWidthLookup[FieldTableCustomColumnIds.rowMenu] || 0;
765
+ const rowNumberColumnWidth = columnWidthLookup[FieldTableCustomColumnIds.rowNumber] || 0;
766
+ const startingColumnWidth = rowMenuColumnWidth + rowNumberColumnWidth;
767
+
768
+ const cellLookup = {};
769
+
770
+ if (rows && rows.length > 0) {
771
+ rows.forEach((row, rowIndex) => {
772
+ columns.forEach((column, columnIndex) => {
773
+
774
+ const columnWidth = column.type === FieldTableColumnTypes.text ?
775
+ columnWidthLookup[FieldTableColumnTypes.text] : columnWidthLookup[FieldTableColumnTypes.dropdown];
776
+
777
+ cellLookup[`${rowIndex}-${columnIndex}`] = {
778
+ rowId: row._id,
779
+ rowIndex,
780
+ columnX: startingColumnWidth + (columnIndex * columnWidth),
781
+ columnId: column._id,
782
+ columnType: column.type
783
+ };
784
+
785
+ });
786
+
787
+ });
788
+
789
+ }
790
+
791
+ return cellLookup;
792
+
793
+ }*/
794
+
710
795
 
711
796
  exports.handleMoveTableRowDown = handleMoveTableRowDown;
712
797
  var _default = {
713
798
  generateTableLookup: generateTableLookup,
714
- generateRowTableLookup: generateRowTableLookup,
799
+ generateTableLookupForRows: generateTableLookupForRows,
715
800
  generateInputGroupFields: generateInputGroupFields,
716
801
  getColumnOperand: getColumnOperand,
717
802
  getCellOperand: getCellOperand,
@@ -732,6 +817,8 @@ var _default = {
732
817
  handleCreateTableRow: handleCreateTableRow,
733
818
  handleDuplicateTableRow: handleDuplicateTableRow,
734
819
  handleMoveTableRowUp: handleMoveTableRowUp,
735
- handleMoveTableRowDown: handleMoveTableRowDown
820
+ handleMoveTableRowDown: handleMoveTableRowDown,
821
+ FieldTableColumnTypes: _FieldTableColumnTypes["default"],
822
+ FieldTableCustomColumnIds: _FieldTableCustomColumnIds["default"]
736
823
  };
737
824
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builttocreate/engine-utils",
3
- "version": "1.0.3",
3
+ "version": "1.1.0",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [