@builttocreate/engine-utils 1.5.1 → 1.6.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.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;
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.getFilteredRowOrder = exports.sortRows = exports.getRows = exports.getDefaultRow = exports.getTableFieldLookupKey = void 0;
11
11
 
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
 
@@ -77,6 +77,38 @@ var sortRows = function sortRows(rows, rowOrder) {
77
77
  });
78
78
  return sortedRows;
79
79
  };
80
+ /**
81
+ * Filter table rows by column values
82
+ *
83
+ * @param {Array} rows
84
+ * @param {Object} filters //{ colId: value, colId: value, ....}
85
+ */
86
+
87
+
88
+ exports.sortRows = sortRows;
89
+
90
+ var getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters) {
91
+ var filteredColumnIds = filters ? Object.keys(filters) : [];
92
+
93
+ if (filteredColumnIds.length > 0) {
94
+ var matchedRows = {};
95
+ rows.forEach(function (row) {
96
+ if (row.deleted) return;
97
+ var rowMatched = true;
98
+ filteredColumnIds.forEach(function (columnId) {
99
+ var filter = filters[columnId] ? filters[columnId].toLowerCase() : '';
100
+ var value = row.cells && row.cells[columnId] ? row.cells[columnId].toLowerCase() : '';
101
+ if (filter && (!value || value.indexOf(filter) === -1)) rowMatched = false;
102
+ });
103
+ if (rowMatched) matchedRows[row._id] = true;
104
+ });
105
+ return rowOrder.filter(function (rowId) {
106
+ return matchedRows[rowId];
107
+ });
108
+ } else {
109
+ return rowOrder;
110
+ }
111
+ };
80
112
  /**
81
113
  * Create a table row map for simple value lookup
82
114
  *
@@ -92,7 +124,7 @@ var sortRows = function sortRows(rows, rowOrder) {
92
124
  */
93
125
 
94
126
 
95
- exports.sortRows = sortRows;
127
+ exports.getFilteredRowOrder = getFilteredRowOrder;
96
128
 
97
129
  var getRowMap = function getRowMap() {
98
130
  var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
@@ -685,13 +717,15 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
685
717
  exports.generateInputGroupFields = generateInputGroupFields;
686
718
 
687
719
  var handleTableCellChange = function handleTableCellChange(rows, rowId, columnId, val, callback) {
688
- var row = rows.find(function (row) {
720
+ var targetRowIndex = rows.findIndex(function (row) {
689
721
  return row._id === rowId;
690
722
  });
723
+ var row = rows[targetRowIndex];
691
724
  var cells = row ? row.cells : {}; //Only save data if value has changed
692
725
 
693
726
  if (cells[columnId] !== val && callback) {
694
727
  callback({
728
+ targetRowIndex: targetRowIndex,
695
729
  row: {
696
730
  _id: rowId,
697
731
  cells: (0, _defineProperty2["default"])({}, columnId, val)
@@ -803,6 +837,7 @@ var _default = {
803
837
  getCellOperand: getCellOperand,
804
838
  getIndexesFromTableCellOperand: getIndexesFromTableCellOperand,
805
839
  getRows: getRows,
840
+ getFilteredRowOrder: getFilteredRowOrder,
806
841
  getDefaultRow: getDefaultRow,
807
842
  getRowMap: getRowMap,
808
843
  getColumns: getColumns,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builttocreate/engine-utils",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [