@builttocreate/engine-utils 1.1.0 → 1.2.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.
@@ -3,7 +3,62 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.inputGroupFieldTypes = exports.viewTypes = exports.operandLetters = void 0;
6
+ exports["default"] = exports.inputGroupFieldTypes = exports.viewTypes = exports.operandLetters = exports.operandLetterIndexes = void 0;
7
+ var operandLetterIndexes = {
8
+ 'A': 0,
9
+ 'B': 1,
10
+ 'C': 2,
11
+ 'D': 3,
12
+ 'E': 4,
13
+ 'F': 5,
14
+ 'G': 6,
15
+ 'H': 7,
16
+ 'I': 8,
17
+ 'J': 9,
18
+ 'K': 10,
19
+ 'L': 11,
20
+ 'M': 12,
21
+ 'N': 13,
22
+ 'O': 14,
23
+ 'P': 15,
24
+ 'Q': 16,
25
+ 'R': 17,
26
+ 'S': 18,
27
+ 'T': 19,
28
+ 'U': 20,
29
+ 'V': 21,
30
+ 'W': 22,
31
+ 'X': 23,
32
+ 'Y': 24,
33
+ 'Z': 25,
34
+ 'AA': 26,
35
+ 'AB': 27,
36
+ 'AC': 28,
37
+ 'AD': 29,
38
+ 'AE': 30,
39
+ 'AF': 31,
40
+ 'AG': 32,
41
+ 'AH': 33,
42
+ 'AI': 34,
43
+ 'AJ': 35,
44
+ 'AK': 36,
45
+ 'AL': 37,
46
+ 'AM': 38,
47
+ 'AN': 39,
48
+ 'AO': 40,
49
+ 'AP': 41,
50
+ 'AQ': 42,
51
+ 'AR': 43,
52
+ 'AS': 44,
53
+ 'AT': 45,
54
+ 'AU': 46,
55
+ 'AV': 47,
56
+ 'AW': 48,
57
+ 'AX': 49,
58
+ 'AY': 50,
59
+ 'AZ': 51
60
+ };
61
+ exports.operandLetterIndexes = operandLetterIndexes;
7
62
  var operandLetters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'];
8
63
  exports.operandLetters = operandLetters;
9
64
  var viewTypes = {
@@ -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.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.getIndexesFromTableCellOperand = 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
 
@@ -158,6 +158,36 @@ exports.getColumns = getColumns;
158
158
  var getColumnOperand = function getColumnOperand(index) {
159
159
  return String.fromCharCode(65 + index);
160
160
  };
161
+ /**
162
+ * Return rowIndex and columnIndex for cellOperand
163
+ *
164
+ * Operand examples: A1, B12, etc.
165
+ *
166
+ * @param {String} cellOperand
167
+ * @returns {Object}
168
+ */
169
+
170
+
171
+ exports.getColumnOperand = getColumnOperand;
172
+
173
+ var getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cellOperand) {
174
+ var letter = cellOperand.match(/[A-Z]*/gi).find(function (value) {
175
+ return value;
176
+ });
177
+ var rowIndex = cellOperand.match(/[0-9]*/gi).find(function (value) {
178
+ return value;
179
+ });
180
+ return {
181
+ columnIndex: _Table.operandLetterIndexes[letter],
182
+
183
+ /**
184
+ * Cell operands start at an index of 1. So to get the true
185
+ * index for the rowIndex we need to substract 1 so we can
186
+ * use a 0 based index.
187
+ */
188
+ rowIndex: rowIndex - 1
189
+ };
190
+ };
161
191
  /**
162
192
  * Get operand lookup for all table/inputGroup fields in a template.
163
193
  *
@@ -168,7 +198,7 @@ var getColumnOperand = function getColumnOperand(index) {
168
198
  */
169
199
 
170
200
 
171
- exports.getColumnOperand = getColumnOperand;
201
+ exports.getIndexesFromTableCellOperand = getIndexesFromTableCellOperand;
172
202
 
173
203
  var getTemplateColumnOperandLookup = function getTemplateColumnOperandLookup(template) {
174
204
  var operandLookup = {};
@@ -276,7 +306,7 @@ var generateTableFieldLookups = function generateTableFieldLookups(doc, template
276
306
  return tableLookups;
277
307
  };
278
308
  /**
279
- * Organize the table lookup on a row by row basis
309
+ * Organize the table lookup on a row by row basis
280
310
  * @param {Array} rows
281
311
  * @param {Array} columns
282
312
  * @retuns {Object}
@@ -303,7 +333,9 @@ var generateTableLookupForRows = function generateTableLookupForRows(rows, colum
303
333
  var tableLookup = generateTableLookup(rows, columns);
304
334
  var rowLookup = {};
305
335
  Object.keys(tableLookup).forEach(function (key) {
306
- var rowIndex = key.match(/[0-9]*/gi)[1];
336
+ var rowIndex = key.match(/[0-9]*/gi).find(function (value) {
337
+ return value;
338
+ });
307
339
  if (!rowLookup[rowIndex]) rowLookup[rowIndex] = {};
308
340
  rowLookup[rowIndex][key] = tableLookup[key];
309
341
  });
@@ -371,8 +403,8 @@ var generateTableLookup = function generateTableLookup(rows, columns) {
371
403
  } else if (cellValue && formulaCell && containsOperands) {
372
404
  formulaCells.push(cellKey);
373
405
  tableLookup[cellKey] = cellValue;
374
- } else if (cellValue) {
375
- tableLookup[cellKey] = cellValue;
406
+ } else {
407
+ tableLookup[cellKey] = cellValue || '';
376
408
  }
377
409
  });
378
410
  });
@@ -746,52 +778,6 @@ var handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, cal
746
778
  targetRowIndex: targetRowIndex
747
779
  });
748
780
  };
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
-
795
781
 
796
782
  exports.handleMoveTableRowDown = handleMoveTableRowDown;
797
783
  var _default = {
@@ -800,6 +786,7 @@ var _default = {
800
786
  generateInputGroupFields: generateInputGroupFields,
801
787
  getColumnOperand: getColumnOperand,
802
788
  getCellOperand: getCellOperand,
789
+ getIndexesFromTableCellOperand: getIndexesFromTableCellOperand,
803
790
  getRows: getRows,
804
791
  getDefaultRow: getDefaultRow,
805
792
  getRowMap: getRowMap,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builttocreate/engine-utils",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [