@builttocreate/engine-utils 1.0.0 → 1.0.2

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