@builttocreate/engine-utils 1.1.1 → 1.2.1

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 = {};
@@ -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
  });
@@ -563,6 +595,7 @@ exports.spreadOperandRange = spreadOperandRange;
563
595
  var generateInputGroupFields = function generateInputGroupFields(field, columns) {
564
596
  var rows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [getDefaultRow()];
565
597
  var fieldSettings = arguments.length > 3 ? arguments[3] : undefined;
598
+ var activity = arguments.length > 4 ? arguments[4] : undefined;
566
599
  var tableReferences = [];
567
600
  var tableColumns = getColumns(columns);
568
601
  var columnOptionValueLookup = {};
@@ -577,6 +610,18 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
577
610
  var tableRows = getRows(rows);
578
611
  var rowOrder = getTableFieldRowOrder(field._id, fieldSettings, tableRows);
579
612
  var sortedTableRows = sortRows(tableRows, rowOrder);
613
+ var cellActivityLookup = {};
614
+
615
+ if (activity && activity.length > 0) {
616
+ activity.forEach(function (act) {
617
+ var rowId = act.document.row;
618
+ var columnId = act.document.column;
619
+ var cellKey = "".concat(field._id, "-").concat(rowId, "-").concat(columnId);
620
+ if (!cellActivityLookup[cellKey]) cellActivityLookup[cellKey] = 0;
621
+ cellActivityLookup[cellKey] += 1;
622
+ });
623
+ }
624
+
580
625
  sortedTableRows.forEach(function (row, rowIndex) {
581
626
  var firstRowIndex = rowIndex === 0;
582
627
  var lastRowIndex = rowIndex === sortedTableRows.length - 1;
@@ -604,13 +649,15 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
604
649
  var lastColumnIndex = columnIndex === tableColumns.length - 1;
605
650
  var value = row && row.cells ? row.cells[column._id] : '';
606
651
  var displayValue = column.type === _FieldTableColumnTypes["default"].dropdown ? columnOptionValueLookup[column._id][value] : value;
652
+ var cellKey = "".concat(field._id, "-").concat(row._id, "-").concat(column._id);
607
653
  tableReferences.push({
608
- uniqueId: "".concat(field._id, "-").concat(row._id, "-").concat(column._id),
654
+ uniqueId: cellKey,
609
655
  _id: field._id,
610
656
  title: column.title,
611
657
  type: column.type === _FieldTableColumnTypes["default"].dropdown ? _Table.inputGroupFieldTypes.inputGroupDropdownCell : _Table.inputGroupFieldTypes.inputGroupTextCell,
612
658
  rowIndex: rowIndex,
613
659
  rowId: row._id,
660
+ activity: cellActivityLookup[cellKey] || 0,
614
661
  columnId: column._id,
615
662
  columnIndex: columnIndex,
616
663
  value: value,
@@ -746,52 +793,6 @@ var handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, cal
746
793
  targetRowIndex: targetRowIndex
747
794
  });
748
795
  };
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
796
 
796
797
  exports.handleMoveTableRowDown = handleMoveTableRowDown;
797
798
  var _default = {
@@ -800,6 +801,7 @@ var _default = {
800
801
  generateInputGroupFields: generateInputGroupFields,
801
802
  getColumnOperand: getColumnOperand,
802
803
  getCellOperand: getCellOperand,
804
+ getIndexesFromTableCellOperand: getIndexesFromTableCellOperand,
803
805
  getRows: getRows,
804
806
  getDefaultRow: getDefaultRow,
805
807
  getRowMap: getRowMap,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builttocreate/engine-utils",
3
- "version": "1.1.1",
3
+ "version": "1.2.1",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [