@builttocreate/engine-utils 1.0.1 → 1.0.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.
Files changed (2) hide show
  1. package/dist/tableHelper.js +139 -4
  2. package/package.json +1 -1
@@ -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.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.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
 
@@ -544,22 +544,27 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
544
544
  var rowOrder = getTableFieldRowOrder(field._id, fieldSettings, tableRows);
545
545
  var sortedTableRows = sortRows(tableRows, rowOrder);
546
546
  sortedTableRows.forEach(function (row, rowIndex) {
547
+ var lastRowIndex = rowIndex === sortedTableRows.length - 1;
547
548
  /**
548
549
  * Step 1: Add InputGroup Row Header
549
550
  */
551
+
550
552
  tableReferences.push({
551
553
  uniqueId: "".concat(field._id, "-").concat(row._id),
552
554
  _id: field._id,
553
555
  title: field.title,
554
556
  type: _Table.inputGroupFieldTypes.inputGroupRowHeader,
555
557
  rowIndex: rowIndex,
556
- rowId: row._id
558
+ rowId: row._id,
559
+ firstIndex: rowIndex === 0,
560
+ lastIndex: false
557
561
  });
558
562
  /**
559
563
  * Step 2: Add Input Group Row Cells
560
564
  */
561
565
 
562
566
  tableColumns.forEach(function (column, columnIndex) {
567
+ var lastColumnIndex = columnIndex === tableColumns.length - 1;
563
568
  var value = row && row.cells ? row.cells[column._id] : '';
564
569
  var displayValue = column.type === _FieldTableColumnTypes["default"].dropdown ? columnOptionValueLookup[column._id][value] : value;
565
570
  tableReferences.push({
@@ -572,14 +577,138 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
572
577
  columnId: column._id,
573
578
  columnIndex: columnIndex,
574
579
  value: value,
575
- displayValue: displayValue
580
+ displayValue: displayValue,
581
+ firstIndex: false,
582
+ lastIndex: lastRowIndex && lastColumnIndex
576
583
  });
577
584
  });
578
585
  });
579
586
  return tableReferences;
580
587
  };
588
+ /**
589
+ * Handle Table Cell Change
590
+ *
591
+ * @param {Array} rows //List of current table rows
592
+ * @param {String} rowId
593
+ * @param {String} columnId
594
+ * @param {String} value
595
+ * @param {Func} callback
596
+ */
597
+
581
598
 
582
599
  exports.generateInputGroupFields = generateInputGroupFields;
600
+
601
+ var handleTableCellChange = function handleTableCellChange(rows, rowId, columnId, val, callback) {
602
+ var row = rows.find(function (row) {
603
+ return row._id === rowId;
604
+ });
605
+ var cells = row ? row.cells : {}; //Only save data if value has changed
606
+
607
+ if (cells[columnId] !== val && callback) {
608
+ callback({
609
+ row: {
610
+ _id: rowId,
611
+ cells: (0, _defineProperty2["default"])({}, columnId, val)
612
+ }
613
+ });
614
+ }
615
+ };
616
+ /**
617
+ * Handle Insert Table Row
618
+ *
619
+ * @param {Number} rowIndex
620
+ * @param {Func} callback
621
+ */
622
+
623
+
624
+ exports.handleTableCellChange = handleTableCellChange;
625
+
626
+ var handleInsertTableRow = function handleInsertTableRow(rowIndex, callback) {
627
+ if (callback) callback({
628
+ targetRowIndex: rowIndex + 1,
629
+ row: getDefaultRow()
630
+ });
631
+ };
632
+ /**
633
+ * Handle Create New Table Row
634
+ *
635
+ * @param {Array} rows //List of current table rows
636
+ * @param {Func} callback
637
+ */
638
+
639
+
640
+ exports.handleInsertTableRow = handleInsertTableRow;
641
+
642
+ var handleCreateTableRow = function handleCreateTableRow(rows, callback) {
643
+ var targetRowIndex = rows.length;
644
+ if (callback) callback({
645
+ targetRowIndex: targetRowIndex,
646
+ row: getDefaultRow()
647
+ });
648
+ };
649
+ /**
650
+ * Handle Duplicate Table Row
651
+ *
652
+ * @param {Array} rows //List of current table rows
653
+ * @param {String} rowId
654
+ * @param {Number} rowIndex
655
+ * @param {Func} callback
656
+ */
657
+
658
+
659
+ exports.handleCreateTableRow = handleCreateTableRow;
660
+
661
+ var handleDuplicateTableRow = function handleDuplicateTableRow(rows, rowId, rowIndex, callback) {
662
+ var duplicateRow = rows.find(function (row) {
663
+ return row._id === rowId;
664
+ });
665
+ var newRow = getDefaultRow();
666
+ newRow.cells = duplicateRow && duplicateRow.cells ? _objectSpread({}, duplicateRow.cells) : {};
667
+ var targetRowIndex = rowIndex + 1;
668
+ if (callback) callback({
669
+ targetRowIndex: targetRowIndex,
670
+ row: newRow
671
+ });
672
+ };
673
+ /**
674
+ * Handle Duplicate Table Row
675
+ *
676
+ * @param {Number} rowIndex
677
+ * @param {Func} callback
678
+ */
679
+
680
+
681
+ exports.handleDuplicateTableRow = handleDuplicateTableRow;
682
+
683
+ var handleMoveTableRowUp = function handleMoveTableRowUp(rowIndex, callback) {
684
+ //If first row then ignore
685
+ if (rowIndex === 0) return;
686
+ var targetRowIndex = rowIndex - 1;
687
+ if (callback) callback({
688
+ targetRowIndex: targetRowIndex
689
+ });
690
+ };
691
+ /**
692
+ * Handle Duplicate Table Row
693
+ *
694
+ * @param {Array} rows
695
+ * @param {Number} rowIndex
696
+ * @param {Func} callback
697
+ */
698
+
699
+
700
+ exports.handleMoveTableRowUp = handleMoveTableRowUp;
701
+
702
+ var handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, callback) {
703
+ //If last row then ignore
704
+ if (rowIndex >= rows.length - 1) return;
705
+ var targetRowIndex = rowIndex + 1;
706
+ if (callback) callback({
707
+ targetRowIndex: targetRowIndex
708
+ });
709
+ };
710
+
711
+ exports.handleMoveTableRowDown = handleMoveTableRowDown;
583
712
  var _default = {
584
713
  generateTableLookup: generateTableLookup,
585
714
  generateRowTableLookup: generateRowTableLookup,
@@ -597,6 +726,12 @@ var _default = {
597
726
  hasOperandRange: hasOperandRange,
598
727
  spreadOperandRange: spreadOperandRange,
599
728
  getTableFieldLookupKey: getTableFieldLookupKey,
600
- getTableFieldRowOrder: getTableFieldRowOrder
729
+ getTableFieldRowOrder: getTableFieldRowOrder,
730
+ handleTableCellChange: handleTableCellChange,
731
+ handleInsertTableRow: handleInsertTableRow,
732
+ handleCreateTableRow: handleCreateTableRow,
733
+ handleDuplicateTableRow: handleDuplicateTableRow,
734
+ handleMoveTableRowUp: handleMoveTableRowUp,
735
+ handleMoveTableRowDown: handleMoveTableRowDown
601
736
  };
602
737
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builttocreate/engine-utils",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [