@builttocreate/engine-utils 2.8.0 → 2.9.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.
- package/dist/activityHelper.js +15 -40
- package/dist/changedKeys.js +1 -4
- package/dist/chartHelper.js +4 -13
- package/dist/constants/ActivityTypes.js +5 -9
- package/dist/constants/DocumentTypes.js +1 -2
- package/dist/constants/FieldDisplayTypes.js +5 -6
- package/dist/constants/FieldPresentationModes.js +4 -8
- package/dist/constants/FieldTableColumnTypes.js +2 -3
- package/dist/constants/FieldTableCustomColumnIds.js +2 -3
- package/dist/constants/FieldTypes.js +3 -3
- package/dist/constants/FileTypes.js +4 -7
- package/dist/constants/FileViews.js +2 -4
- package/dist/constants/FormStyleOptions.js +2 -3
- package/dist/constants/ListTypes.js +2 -3
- package/dist/constants/PageLayoutModes.js +2 -4
- package/dist/constants/PageTypes.js +1 -3
- package/dist/constants/Roles.js +1 -3
- package/dist/constants/Table.js +6 -11
- package/dist/fieldHelper.js +25 -85
- package/dist/fileHelper.js +3 -11
- package/dist/generateObjectId.js +2 -5
- package/dist/index.js +4 -31
- package/dist/joyDocHelper.js +140 -203
- package/dist/paginationHelper.js +3 -7
- package/dist/reduxApiMiddleware.js +12 -27
- package/dist/roleHelper.js +4 -13
- package/dist/tableHelper.js +117 -291
- package/dist/validateObjectId.js +2 -5
- package/package.json +4 -4
package/dist/tableHelper.js
CHANGED
|
@@ -1,77 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.validFormulaString = exports.spreadOperandRange = exports.sortRows = exports.sortColumns = exports.resolveOperandValue = exports.hasOperandRange = exports.hasCircularOperandReference = exports.handleTableCellChange = exports.handleMoveTableRowUp = exports.handleMoveTableRowDown = exports.handleMoveColumnRight = exports.handleMoveColumnLeft = exports.handleInsertTableRow = exports.handleDuplicateTableRow = exports.handleCreateTableRow = exports.getTemplateColumnOperandLookup = exports.getTargetColumnWithOperand = exports.getTableRowLookupWithPopulatedDropdownCells = exports.getTableFieldRowOrder = exports.getTableFieldLookupKey = exports.getRows = exports.getRowOrder = exports.getRowMap = exports.getRowIndexLookup = exports.getInputGroupRowLookupWithPopulatedDropdownCells = exports.getIndexesFromTableCellOperand = exports.getFormulaResult = exports.getFilteredRowOrder = exports.getDefaultTextColumn = exports.getDefaultRow = exports.getDefaultImageColumn = exports.getDefaultDropdownColumn = exports.getDefaultColumnOption = exports.getColumns = exports.getColumnOrder = exports.getColumnOperand = exports.getCleanedRowOrder = exports.getCleanedColumnOrder = exports.getCellOperand = exports.generateTableLookupForRows = exports.generateTableLookup = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.generateInputGroupFields = exports["default"] = void 0;
|
|
11
|
-
|
|
12
9
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
-
|
|
14
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
11
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
17
|
-
|
|
18
12
|
var _hotFormulaParser = require("@builttocreate/hot-formula-parser");
|
|
19
|
-
|
|
20
13
|
var _generateObjectId = _interopRequireDefault(require("./generateObjectId"));
|
|
21
|
-
|
|
22
14
|
var _Table = _interopRequireWildcard(require("./constants/Table"));
|
|
23
|
-
|
|
24
15
|
var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
|
|
25
|
-
|
|
26
16
|
var _FieldTableColumnTypes = _interopRequireDefault(require("./constants/FieldTableColumnTypes"));
|
|
27
|
-
|
|
28
17
|
var _FieldTableCustomColumnIds = _interopRequireDefault(require("./constants/FieldTableCustomColumnIds"));
|
|
29
|
-
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
35
|
-
|
|
36
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
37
|
-
|
|
18
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
19
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } } return n["default"] = e, t && t.set(e, n), n; }
|
|
20
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
21
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
38
22
|
var parser = new _hotFormulaParser.Parser();
|
|
39
|
-
|
|
40
|
-
var getTableFieldLookupKey = function getTableFieldLookupKey(fieldId, rowIndex, columnId) {
|
|
23
|
+
var getTableFieldLookupKey = exports.getTableFieldLookupKey = function getTableFieldLookupKey(fieldId, rowIndex, columnId) {
|
|
41
24
|
return "".concat(fieldId, "-").concat(rowIndex, "-").concat(columnId);
|
|
42
25
|
};
|
|
43
|
-
|
|
44
|
-
exports.getTableFieldLookupKey = getTableFieldLookupKey;
|
|
45
|
-
|
|
46
|
-
var getDefaultRow = function getDefaultRow() {
|
|
26
|
+
var getDefaultRow = exports.getDefaultRow = function getDefaultRow() {
|
|
47
27
|
return {
|
|
48
28
|
_id: (0, _generateObjectId["default"])(),
|
|
49
29
|
deleted: false,
|
|
50
30
|
cells: {}
|
|
51
31
|
};
|
|
52
32
|
};
|
|
53
|
-
|
|
54
|
-
exports.getDefaultRow = getDefaultRow;
|
|
55
|
-
|
|
56
|
-
var getRows = function getRows(rows) {
|
|
33
|
+
var getRows = exports.getRows = function getRows(rows) {
|
|
57
34
|
var parsedRows = rows;
|
|
58
|
-
|
|
59
35
|
if (typeof parsedRows === 'string') {
|
|
60
36
|
parsedRows = JSON.parse(parsedRows);
|
|
61
37
|
}
|
|
62
|
-
|
|
63
38
|
return parsedRows ? parsedRows.filter(function (row) {
|
|
64
39
|
return !row.deleted;
|
|
65
40
|
}) : [];
|
|
66
41
|
};
|
|
42
|
+
|
|
67
43
|
/**
|
|
68
44
|
* Sort rows based on rowOrder
|
|
69
45
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
exports.getRows = getRows;
|
|
73
|
-
|
|
74
|
-
var sortRows = function sortRows(rows, rowOrder) {
|
|
46
|
+
var sortRows = exports.sortRows = function sortRows(rows, rowOrder) {
|
|
75
47
|
if (!rowOrder) return rows;
|
|
76
48
|
var rowLookup = {};
|
|
77
49
|
rows.forEach(function (row) {
|
|
@@ -83,6 +55,7 @@ var sortRows = function sortRows(rows, rowOrder) {
|
|
|
83
55
|
});
|
|
84
56
|
return sortedRows;
|
|
85
57
|
};
|
|
58
|
+
|
|
86
59
|
/**
|
|
87
60
|
* Filter table row order by cell values
|
|
88
61
|
*
|
|
@@ -90,32 +63,25 @@ var sortRows = function sortRows(rows, rowOrder) {
|
|
|
90
63
|
* @param {Array} rows
|
|
91
64
|
* @param {Object} filters //{ colId: value, colId: value, ....}
|
|
92
65
|
*/
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
exports.sortRows = sortRows;
|
|
96
|
-
|
|
97
|
-
var getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters) {
|
|
66
|
+
var getFilteredRowOrder = exports.getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters) {
|
|
98
67
|
var filteredColumnIds = filters ? Object.keys(filters) : [];
|
|
99
68
|
var validRowOrder = rowOrder;
|
|
100
|
-
|
|
101
69
|
if (!validRowOrder) {
|
|
102
70
|
var validRows = rows ? getRows(rows) : [];
|
|
103
71
|
validRowOrder = validRows.map(function (row) {
|
|
104
72
|
return row._id;
|
|
105
73
|
});
|
|
106
74
|
}
|
|
75
|
+
|
|
107
76
|
/**
|
|
108
77
|
* Remove any duplicate rowIds. We have had instances where
|
|
109
78
|
* users encounter duplicate rowIds in the rowOrder.
|
|
110
79
|
* See: https://github.com/zionlabs/Issues/issues/1589
|
|
111
80
|
*/
|
|
112
|
-
|
|
113
|
-
|
|
114
81
|
var cleanedValidRowOrder = [];
|
|
115
82
|
validRowOrder.forEach(function (rowId) {
|
|
116
83
|
if (cleanedValidRowOrder.indexOf(rowId) === -1) cleanedValidRowOrder.push(rowId);
|
|
117
84
|
});
|
|
118
|
-
|
|
119
85
|
if (filteredColumnIds.length > 0) {
|
|
120
86
|
var matchedRows = {};
|
|
121
87
|
rows.forEach(function (row) {
|
|
@@ -135,6 +101,7 @@ var getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters)
|
|
|
135
101
|
return cleanedValidRowOrder;
|
|
136
102
|
}
|
|
137
103
|
};
|
|
104
|
+
|
|
138
105
|
/**
|
|
139
106
|
* Create a table row map for simple value lookup
|
|
140
107
|
*
|
|
@@ -148,11 +115,7 @@ var getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters)
|
|
|
148
115
|
* @param {Array} rows
|
|
149
116
|
* @return {Object}
|
|
150
117
|
*/
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
exports.getFilteredRowOrder = getFilteredRowOrder;
|
|
154
|
-
|
|
155
|
-
var getRowMap = function getRowMap() {
|
|
118
|
+
var getRowMap = exports.getRowMap = function getRowMap() {
|
|
156
119
|
var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
157
120
|
var items = getRows(rows);
|
|
158
121
|
var rowMap = {};
|
|
@@ -161,6 +124,7 @@ var getRowMap = function getRowMap() {
|
|
|
161
124
|
});
|
|
162
125
|
return rowMap;
|
|
163
126
|
};
|
|
127
|
+
|
|
164
128
|
/**
|
|
165
129
|
* Get row order
|
|
166
130
|
*
|
|
@@ -169,15 +133,12 @@ var getRowMap = function getRowMap() {
|
|
|
169
133
|
*
|
|
170
134
|
* @return {Array}
|
|
171
135
|
*/
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
exports.getRowMap = getRowMap;
|
|
175
|
-
|
|
176
|
-
var getRowOrder = function getRowOrder(rowOrder, rows) {
|
|
136
|
+
var getRowOrder = exports.getRowOrder = function getRowOrder(rowOrder, rows) {
|
|
177
137
|
return rowOrder || getRows(rows).map(function (row) {
|
|
178
138
|
return row._id;
|
|
179
139
|
});
|
|
180
140
|
};
|
|
141
|
+
|
|
181
142
|
/**
|
|
182
143
|
* Get row order for table field. If there isn't a row order set in the
|
|
183
144
|
* fieldSettings then it will default to the normal row array Ids.
|
|
@@ -188,16 +149,13 @@ var getRowOrder = function getRowOrder(rowOrder, rows) {
|
|
|
188
149
|
*
|
|
189
150
|
* @return {Array}
|
|
190
151
|
*/
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
exports.getRowOrder = getRowOrder;
|
|
194
|
-
|
|
195
|
-
var getTableFieldRowOrder = function getTableFieldRowOrder(fieldId, fieldSettings, rows) {
|
|
152
|
+
var getTableFieldRowOrder = exports.getTableFieldRowOrder = function getTableFieldRowOrder(fieldId, fieldSettings, rows) {
|
|
196
153
|
var filteredRows = rows ? getRows(rows) : [];
|
|
197
154
|
return fieldSettings && fieldSettings[fieldId] && fieldSettings[fieldId].rowOrder ? (0, _toConsumableArray2["default"])(fieldSettings[fieldId].rowOrder) : filteredRows.map(function (row) {
|
|
198
155
|
return row._id;
|
|
199
156
|
});
|
|
200
157
|
};
|
|
158
|
+
|
|
201
159
|
/**
|
|
202
160
|
* This method removes the rowIds of the deleted rows (or) any duplicate rowIds
|
|
203
161
|
* from the rowOrder there by returning a cleaned rowOrder
|
|
@@ -206,16 +164,12 @@ var getTableFieldRowOrder = function getTableFieldRowOrder(fieldId, fieldSetting
|
|
|
206
164
|
*
|
|
207
165
|
* @returns {Array}
|
|
208
166
|
**/
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
exports.getTableFieldRowOrder = getTableFieldRowOrder;
|
|
212
|
-
|
|
213
|
-
var getCleanedRowOrder = function getCleanedRowOrder(rowOrder, rows) {
|
|
167
|
+
var getCleanedRowOrder = exports.getCleanedRowOrder = function getCleanedRowOrder(rowOrder, rows) {
|
|
214
168
|
var nextRowOrder = [];
|
|
169
|
+
|
|
215
170
|
/**
|
|
216
171
|
* Step 1: Handle generating or retrieving proper row order.
|
|
217
172
|
*/
|
|
218
|
-
|
|
219
173
|
if (rowOrder && rowOrder.length > 0) {
|
|
220
174
|
nextRowOrder = rowOrder;
|
|
221
175
|
} else if (rows && rows.length > 0) {
|
|
@@ -223,11 +177,10 @@ var getCleanedRowOrder = function getCleanedRowOrder(rowOrder, rows) {
|
|
|
223
177
|
if (!row.deleted) nextRowOrder.push(row._id);
|
|
224
178
|
});
|
|
225
179
|
}
|
|
180
|
+
|
|
226
181
|
/**
|
|
227
182
|
* Step 2: Remove row Ids from rowOrder for rows that no longer exist or have been deleted
|
|
228
183
|
*/
|
|
229
|
-
|
|
230
|
-
|
|
231
184
|
var rowLookup = {};
|
|
232
185
|
rows.forEach(function (row) {
|
|
233
186
|
return rowLookup[row._id] = row && !row.deleted;
|
|
@@ -235,27 +188,24 @@ var getCleanedRowOrder = function getCleanedRowOrder(rowOrder, rows) {
|
|
|
235
188
|
nextRowOrder = nextRowOrder.filter(function (rowId) {
|
|
236
189
|
return rowLookup[rowId];
|
|
237
190
|
});
|
|
191
|
+
|
|
238
192
|
/**
|
|
239
193
|
* Step 3: Remove any duplicate row Id references in the row order.
|
|
240
194
|
*/
|
|
241
|
-
|
|
242
195
|
var filteredNextRowOrder = [];
|
|
243
196
|
nextRowOrder.forEach(function (rowId) {
|
|
244
197
|
if (rowId && filteredNextRowOrder.indexOf(rowId) === -1) filteredNextRowOrder.push(rowId);
|
|
245
198
|
});
|
|
246
199
|
return filteredNextRowOrder;
|
|
247
200
|
};
|
|
201
|
+
|
|
248
202
|
/**
|
|
249
203
|
* Handle Move Column Left
|
|
250
204
|
*
|
|
251
205
|
* @param {Number} columnIndex
|
|
252
206
|
* @param {Func} callback
|
|
253
207
|
*/
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
exports.getCleanedRowOrder = getCleanedRowOrder;
|
|
257
|
-
|
|
258
|
-
var handleMoveColumnLeft = function handleMoveColumnLeft(columnIndex, callback) {
|
|
208
|
+
var handleMoveColumnLeft = exports.handleMoveColumnLeft = function handleMoveColumnLeft(columnIndex, callback) {
|
|
259
209
|
//If first index then ignore
|
|
260
210
|
if (columnIndex === 0) return;
|
|
261
211
|
var targetIndex = columnIndex - 1;
|
|
@@ -263,6 +213,7 @@ var handleMoveColumnLeft = function handleMoveColumnLeft(columnIndex, callback)
|
|
|
263
213
|
targetIndex: targetIndex
|
|
264
214
|
});
|
|
265
215
|
};
|
|
216
|
+
|
|
266
217
|
/**
|
|
267
218
|
* Handle Move Column Right
|
|
268
219
|
*
|
|
@@ -270,11 +221,7 @@ var handleMoveColumnLeft = function handleMoveColumnLeft(columnIndex, callback)
|
|
|
270
221
|
* @param {Number} columnIndex
|
|
271
222
|
* @param {Func} callback
|
|
272
223
|
*/
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
exports.handleMoveColumnLeft = handleMoveColumnLeft;
|
|
276
|
-
|
|
277
|
-
var handleMoveColumnRight = function handleMoveColumnRight(columns, columnIndex, callback) {
|
|
224
|
+
var handleMoveColumnRight = exports.handleMoveColumnRight = function handleMoveColumnRight(columns, columnIndex, callback) {
|
|
278
225
|
//If last column index then ignore
|
|
279
226
|
if (columnIndex >= columns.length - 1) return;
|
|
280
227
|
var targetIndex = columnIndex + 1;
|
|
@@ -282,23 +229,21 @@ var handleMoveColumnRight = function handleMoveColumnRight(columns, columnIndex,
|
|
|
282
229
|
targetIndex: targetIndex
|
|
283
230
|
});
|
|
284
231
|
};
|
|
232
|
+
|
|
285
233
|
/**
|
|
286
234
|
* Get default column option
|
|
287
235
|
*
|
|
288
236
|
* @param {String} value
|
|
289
237
|
* @return {Object}
|
|
290
238
|
*/
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
exports.handleMoveColumnRight = handleMoveColumnRight;
|
|
294
|
-
|
|
295
|
-
var getDefaultColumnOption = function getDefaultColumnOption(value) {
|
|
239
|
+
var getDefaultColumnOption = exports.getDefaultColumnOption = function getDefaultColumnOption(value) {
|
|
296
240
|
return {
|
|
297
241
|
_id: (0, _generateObjectId["default"])(),
|
|
298
242
|
value: value || 'Option',
|
|
299
243
|
deleted: false
|
|
300
244
|
};
|
|
301
245
|
};
|
|
246
|
+
|
|
302
247
|
/**
|
|
303
248
|
* Get default text column for table field
|
|
304
249
|
*
|
|
@@ -306,11 +251,7 @@ var getDefaultColumnOption = function getDefaultColumnOption(value) {
|
|
|
306
251
|
*
|
|
307
252
|
* @return {Object}
|
|
308
253
|
*/
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
exports.getDefaultColumnOption = getDefaultColumnOption;
|
|
312
|
-
|
|
313
|
-
var getDefaultTextColumn = function getDefaultTextColumn() {
|
|
254
|
+
var getDefaultTextColumn = exports.getDefaultTextColumn = function getDefaultTextColumn() {
|
|
314
255
|
var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
315
256
|
return _objectSpread({
|
|
316
257
|
_id: (0, _generateObjectId["default"])(),
|
|
@@ -320,6 +261,7 @@ var getDefaultTextColumn = function getDefaultTextColumn() {
|
|
|
320
261
|
deleted: false
|
|
321
262
|
}, defaults);
|
|
322
263
|
};
|
|
264
|
+
|
|
323
265
|
/**
|
|
324
266
|
* Get default dropdown column for table field
|
|
325
267
|
*
|
|
@@ -327,11 +269,7 @@ var getDefaultTextColumn = function getDefaultTextColumn() {
|
|
|
327
269
|
*
|
|
328
270
|
* @return {Object}
|
|
329
271
|
*/
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
exports.getDefaultTextColumn = getDefaultTextColumn;
|
|
333
|
-
|
|
334
|
-
var getDefaultImageColumn = function getDefaultImageColumn() {
|
|
272
|
+
var getDefaultImageColumn = exports.getDefaultImageColumn = function getDefaultImageColumn() {
|
|
335
273
|
var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
336
274
|
return _objectSpread({
|
|
337
275
|
_id: (0, _generateObjectId["default"])(),
|
|
@@ -343,6 +281,7 @@ var getDefaultImageColumn = function getDefaultImageColumn() {
|
|
|
343
281
|
maxImageHeight: 120
|
|
344
282
|
}, defaults);
|
|
345
283
|
};
|
|
284
|
+
|
|
346
285
|
/**
|
|
347
286
|
* Get default dropdown column for table field
|
|
348
287
|
*
|
|
@@ -350,11 +289,7 @@ var getDefaultImageColumn = function getDefaultImageColumn() {
|
|
|
350
289
|
*
|
|
351
290
|
* @return {Object}
|
|
352
291
|
*/
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
exports.getDefaultImageColumn = getDefaultImageColumn;
|
|
356
|
-
|
|
357
|
-
var getDefaultDropdownColumn = function getDefaultDropdownColumn() {
|
|
292
|
+
var getDefaultDropdownColumn = exports.getDefaultDropdownColumn = function getDefaultDropdownColumn() {
|
|
358
293
|
var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
359
294
|
var options = defaults.options || [getDefaultColumnOption('Yes'), getDefaultColumnOption('No'), getDefaultColumnOption('N/A')];
|
|
360
295
|
return _objectSpread({
|
|
@@ -369,6 +304,7 @@ var getDefaultDropdownColumn = function getDefaultDropdownColumn() {
|
|
|
369
304
|
})
|
|
370
305
|
}, defaults);
|
|
371
306
|
};
|
|
307
|
+
|
|
372
308
|
/**
|
|
373
309
|
* Get column order
|
|
374
310
|
*
|
|
@@ -377,15 +313,12 @@ var getDefaultDropdownColumn = function getDefaultDropdownColumn() {
|
|
|
377
313
|
*
|
|
378
314
|
* @return {Array}
|
|
379
315
|
*/
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
exports.getDefaultDropdownColumn = getDefaultDropdownColumn;
|
|
383
|
-
|
|
384
|
-
var getColumnOrder = function getColumnOrder(columnOrder, columns) {
|
|
316
|
+
var getColumnOrder = exports.getColumnOrder = function getColumnOrder(columnOrder, columns) {
|
|
385
317
|
return columnOrder || getColumns(columns).map(function (column) {
|
|
386
318
|
return column._id;
|
|
387
319
|
});
|
|
388
320
|
};
|
|
321
|
+
|
|
389
322
|
/**
|
|
390
323
|
* This method removes the columnIds of the deleted columns (or) any duplicate columnIds
|
|
391
324
|
* from the tableColumnOrder there by returning a cleaned tableColumnOrder
|
|
@@ -395,16 +328,12 @@ var getColumnOrder = function getColumnOrder(columnOrder, columns) {
|
|
|
395
328
|
*
|
|
396
329
|
* @returns {Array}
|
|
397
330
|
**/
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
exports.getColumnOrder = getColumnOrder;
|
|
401
|
-
|
|
402
|
-
var getCleanedColumnOrder = function getCleanedColumnOrder(columnOrder, columns) {
|
|
331
|
+
var getCleanedColumnOrder = exports.getCleanedColumnOrder = function getCleanedColumnOrder(columnOrder, columns) {
|
|
403
332
|
var nextColumnOrder = [];
|
|
333
|
+
|
|
404
334
|
/**
|
|
405
335
|
* Step 1: Handle generating or retrieving proper column order.
|
|
406
336
|
*/
|
|
407
|
-
|
|
408
337
|
if (columnOrder && columnOrder.length > 0) {
|
|
409
338
|
nextColumnOrder = columnOrder;
|
|
410
339
|
} else if (columns && columns.length > 0) {
|
|
@@ -412,11 +341,10 @@ var getCleanedColumnOrder = function getCleanedColumnOrder(columnOrder, columns)
|
|
|
412
341
|
if (!column.deleted) nextColumnOrder.push(column._id);
|
|
413
342
|
});
|
|
414
343
|
}
|
|
344
|
+
|
|
415
345
|
/**
|
|
416
346
|
* Step 2: Remove column Ids from columnOrder for columns that no longer exist or have been deleted
|
|
417
347
|
*/
|
|
418
|
-
|
|
419
|
-
|
|
420
348
|
var columnLookup = {};
|
|
421
349
|
columns.forEach(function (column) {
|
|
422
350
|
return columnLookup[column._id] = column && !column.deleted;
|
|
@@ -424,47 +352,38 @@ var getCleanedColumnOrder = function getCleanedColumnOrder(columnOrder, columns)
|
|
|
424
352
|
nextColumnOrder = nextColumnOrder.filter(function (columnId) {
|
|
425
353
|
return columnLookup[columnId];
|
|
426
354
|
});
|
|
355
|
+
|
|
427
356
|
/**
|
|
428
357
|
* Step 3: Remove any duplicate column Id references in the column order.
|
|
429
358
|
*/
|
|
430
|
-
|
|
431
359
|
var filteredNextColumnOrder = [];
|
|
432
360
|
nextColumnOrder.forEach(function (columnId) {
|
|
433
361
|
if (columnId && filteredNextColumnOrder.indexOf(columnId) === -1) filteredNextColumnOrder.push(columnId);
|
|
434
362
|
});
|
|
435
363
|
return filteredNextColumnOrder;
|
|
436
364
|
};
|
|
365
|
+
|
|
437
366
|
/**
|
|
438
367
|
* Get table columns with added operands. Operands are the A, B, C, etc.
|
|
439
368
|
*/
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
exports.getCleanedColumnOrder = getCleanedColumnOrder;
|
|
443
|
-
|
|
444
|
-
var getColumns = function getColumns(columns) {
|
|
369
|
+
var getColumns = exports.getColumns = function getColumns(columns) {
|
|
445
370
|
var parsedColumns = columns;
|
|
446
|
-
|
|
447
371
|
if (typeof parsedColumns === 'string') {
|
|
448
372
|
parsedColumns = JSON.parse(parsedColumns);
|
|
449
373
|
}
|
|
450
|
-
|
|
451
374
|
return !parsedColumns ? [] : parsedColumns.filter(function (column) {
|
|
452
375
|
return !column.deleted;
|
|
453
376
|
}).map(function (column, i) {
|
|
454
377
|
var nextColumn = _objectSpread({}, column);
|
|
455
|
-
|
|
456
378
|
nextColumn.operand = getColumnOperand(i);
|
|
457
379
|
return nextColumn;
|
|
458
380
|
});
|
|
459
381
|
};
|
|
382
|
+
|
|
460
383
|
/**
|
|
461
384
|
* Sort columns based on columnOrder
|
|
462
385
|
*/
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
exports.getColumns = getColumns;
|
|
466
|
-
|
|
467
|
-
var sortColumns = function sortColumns(columns, columnOrder) {
|
|
386
|
+
var sortColumns = exports.sortColumns = function sortColumns(columns, columnOrder) {
|
|
468
387
|
if (!columnOrder) return columns;
|
|
469
388
|
var columnLookup = {};
|
|
470
389
|
columns.forEach(function (col) {
|
|
@@ -476,20 +395,15 @@ var sortColumns = function sortColumns(columns, columnOrder) {
|
|
|
476
395
|
});
|
|
477
396
|
return sortedColumns;
|
|
478
397
|
};
|
|
398
|
+
|
|
479
399
|
/**
|
|
480
400
|
* Get the targetColumn with added operand. Operands are A, B ,C etc...
|
|
481
401
|
*/
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
exports.sortColumns = sortColumns;
|
|
485
|
-
|
|
486
|
-
var getTargetColumnWithOperand = function getTargetColumnWithOperand(columnOrder, columns, columnId) {
|
|
402
|
+
var getTargetColumnWithOperand = exports.getTargetColumnWithOperand = function getTargetColumnWithOperand(columnOrder, columns, columnId) {
|
|
487
403
|
var targetColumn = columns.find(function (col) {
|
|
488
404
|
return col._id === columnId;
|
|
489
405
|
});
|
|
490
|
-
|
|
491
406
|
var nextTargetColumn = _objectSpread({}, targetColumn);
|
|
492
|
-
|
|
493
407
|
var targetColumnIndex = columnOrder.findIndex(function (item) {
|
|
494
408
|
return item === targetColumn._id;
|
|
495
409
|
});
|
|
@@ -497,18 +411,16 @@ var getTargetColumnWithOperand = function getTargetColumnWithOperand(columnOrder
|
|
|
497
411
|
nextTargetColumn.operand = targetColumnOperand;
|
|
498
412
|
return nextTargetColumn;
|
|
499
413
|
};
|
|
414
|
+
|
|
500
415
|
/**
|
|
501
416
|
* Return letter for a column index. For intance: A, B, C
|
|
502
417
|
*
|
|
503
418
|
* Used to create the table lookup operands: A1, B12, etc.
|
|
504
419
|
*/
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
exports.getTargetColumnWithOperand = getTargetColumnWithOperand;
|
|
508
|
-
|
|
509
|
-
var getColumnOperand = function getColumnOperand(index) {
|
|
420
|
+
var getColumnOperand = exports.getColumnOperand = function getColumnOperand(index) {
|
|
510
421
|
return String.fromCharCode(65 + index);
|
|
511
422
|
};
|
|
423
|
+
|
|
512
424
|
/**
|
|
513
425
|
* Return rowIndex and columnIndex for cellOperand
|
|
514
426
|
*
|
|
@@ -517,11 +429,7 @@ var getColumnOperand = function getColumnOperand(index) {
|
|
|
517
429
|
* @param {String} cellOperand
|
|
518
430
|
* @returns {Object}
|
|
519
431
|
*/
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
exports.getColumnOperand = getColumnOperand;
|
|
523
|
-
|
|
524
|
-
var getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cellOperand) {
|
|
432
|
+
var getIndexesFromTableCellOperand = exports.getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cellOperand) {
|
|
525
433
|
var letter = cellOperand.match(/[A-Z]*/gi).find(function (value) {
|
|
526
434
|
return value;
|
|
527
435
|
});
|
|
@@ -530,7 +438,6 @@ var getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cel
|
|
|
530
438
|
});
|
|
531
439
|
return {
|
|
532
440
|
columnIndex: _Table.operandLetterIndexes[letter],
|
|
533
|
-
|
|
534
441
|
/**
|
|
535
442
|
* Cell operands start at an index of 1. So to get the true
|
|
536
443
|
* index for the rowIndex we need to substract 1 so we can
|
|
@@ -539,6 +446,7 @@ var getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cel
|
|
|
539
446
|
rowIndex: rowIndex - 1
|
|
540
447
|
};
|
|
541
448
|
};
|
|
449
|
+
|
|
542
450
|
/**
|
|
543
451
|
* Get operand lookup for all table/inputGroup fields in a template.
|
|
544
452
|
*
|
|
@@ -547,11 +455,7 @@ var getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cel
|
|
|
547
455
|
* ....
|
|
548
456
|
* }
|
|
549
457
|
*/
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
exports.getIndexesFromTableCellOperand = getIndexesFromTableCellOperand;
|
|
553
|
-
|
|
554
|
-
var getTemplateColumnOperandLookup = function getTemplateColumnOperandLookup(template) {
|
|
458
|
+
var getTemplateColumnOperandLookup = exports.getTemplateColumnOperandLookup = function getTemplateColumnOperandLookup(template) {
|
|
555
459
|
var operandLookup = {};
|
|
556
460
|
template.fields.forEach(function (field) {
|
|
557
461
|
if (field.type !== _FieldTypes["default"].table && field.type !== _FieldTypes["default"].inputGroup) return;
|
|
@@ -563,19 +467,17 @@ var getTemplateColumnOperandLookup = function getTemplateColumnOperandLookup(tem
|
|
|
563
467
|
});
|
|
564
468
|
return operandLookup;
|
|
565
469
|
};
|
|
470
|
+
|
|
566
471
|
/**
|
|
567
472
|
* Return operand for cell. For intance: A1, B2, C1
|
|
568
473
|
*
|
|
569
474
|
* @param {String} columnOperand //A, B, C, etc.
|
|
570
475
|
* @param {Number} rowIndex
|
|
571
476
|
*/
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
exports.getTemplateColumnOperandLookup = getTemplateColumnOperandLookup;
|
|
575
|
-
|
|
576
|
-
var getCellOperand = function getCellOperand(columnOperand, rowIndex) {
|
|
477
|
+
var getCellOperand = exports.getCellOperand = function getCellOperand(columnOperand, rowIndex) {
|
|
577
478
|
return "".concat(columnOperand).concat(rowIndex);
|
|
578
479
|
};
|
|
480
|
+
|
|
579
481
|
/**
|
|
580
482
|
* Generate table lookup by rowIndex and column operand
|
|
581
483
|
*
|
|
@@ -594,11 +496,7 @@ var getCellOperand = function getCellOperand(columnOperand, rowIndex) {
|
|
|
594
496
|
* @return {Object}
|
|
595
497
|
|
|
596
498
|
*/
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
exports.getCellOperand = getCellOperand;
|
|
600
|
-
|
|
601
|
-
var generateRowTableLookup = function generateRowTableLookup(rows, columns, tableLookup) {
|
|
499
|
+
var generateRowTableLookup = exports.generateRowTableLookup = function generateRowTableLookup(rows, columns, tableLookup) {
|
|
602
500
|
if (!rows || !columns || !tableLookup) return {};
|
|
603
501
|
var rowTableLookup = {};
|
|
604
502
|
rows.forEach(function (row, rowIndex) {
|
|
@@ -611,6 +509,7 @@ var generateRowTableLookup = function generateRowTableLookup(rows, columns, tabl
|
|
|
611
509
|
});
|
|
612
510
|
return rowTableLookup;
|
|
613
511
|
};
|
|
512
|
+
|
|
614
513
|
/**
|
|
615
514
|
* Generate table lookups for each table field in template. It takes
|
|
616
515
|
* all table & inputGroup fields and generates a table lookup object for them.
|
|
@@ -633,11 +532,7 @@ var generateRowTableLookup = function generateRowTableLookup(rows, columns, tabl
|
|
|
633
532
|
* ...
|
|
634
533
|
* }
|
|
635
534
|
*/
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
exports.generateRowTableLookup = generateRowTableLookup;
|
|
639
|
-
|
|
640
|
-
var generateTableFieldLookups = function generateTableFieldLookups(doc, template) {
|
|
535
|
+
var generateTableFieldLookups = exports.generateTableFieldLookups = function generateTableFieldLookups(doc, template) {
|
|
641
536
|
var tableFields = template.fields.filter(function (field) {
|
|
642
537
|
return (field.type === _FieldTypes["default"].table || field.type === _FieldTypes["default"].inputGroup) && !field.deleted;
|
|
643
538
|
});
|
|
@@ -656,6 +551,7 @@ var generateTableFieldLookups = function generateTableFieldLookups(doc, template
|
|
|
656
551
|
});
|
|
657
552
|
return tableLookups;
|
|
658
553
|
};
|
|
554
|
+
|
|
659
555
|
/**
|
|
660
556
|
* Organize the table lookup on a row by row basis
|
|
661
557
|
* @param {Array} rows
|
|
@@ -676,11 +572,7 @@ var generateTableFieldLookups = function generateTableFieldLookups(doc, template
|
|
|
676
572
|
* }
|
|
677
573
|
*
|
|
678
574
|
*/
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
exports.generateTableFieldLookups = generateTableFieldLookups;
|
|
682
|
-
|
|
683
|
-
var generateTableLookupForRows = function generateTableLookupForRows(rows, columns) {
|
|
575
|
+
var generateTableLookupForRows = exports.generateTableLookupForRows = function generateTableLookupForRows(rows, columns) {
|
|
684
576
|
var tableLookup = generateTableLookup(rows, columns);
|
|
685
577
|
var rowLookup = {};
|
|
686
578
|
Object.keys(tableLookup).forEach(function (key) {
|
|
@@ -692,6 +584,7 @@ var generateTableLookupForRows = function generateTableLookupForRows(rows, colum
|
|
|
692
584
|
});
|
|
693
585
|
return rowLookup;
|
|
694
586
|
};
|
|
587
|
+
|
|
695
588
|
/**
|
|
696
589
|
* Generate Lookup Operand Lookup Table for Table Data. Supports converting
|
|
697
590
|
* formula cells to the calculated value.
|
|
@@ -710,11 +603,7 @@ var generateTableLookupForRows = function generateTableLookupForRows(rows, colum
|
|
|
710
603
|
* B2: 4,
|
|
711
604
|
* }
|
|
712
605
|
*/
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
exports.generateTableLookupForRows = generateTableLookupForRows;
|
|
716
|
-
|
|
717
|
-
var generateTableLookup = function generateTableLookup(rows, columns) {
|
|
606
|
+
var generateTableLookup = exports.generateTableLookup = function generateTableLookup(rows, columns) {
|
|
718
607
|
var tableLookup = {};
|
|
719
608
|
var columnOptionsLookup = {};
|
|
720
609
|
var tableColumns = [];
|
|
@@ -725,10 +614,8 @@ var generateTableLookup = function generateTableLookup(rows, columns) {
|
|
|
725
614
|
});
|
|
726
615
|
filteredColumns.forEach(function (column, i) {
|
|
727
616
|
var nextColumn = _objectSpread({}, column);
|
|
728
|
-
|
|
729
617
|
nextColumn.operand = String.fromCharCode(65 + i);
|
|
730
618
|
tableColumns.push(nextColumn);
|
|
731
|
-
|
|
732
619
|
if (column.type === _FieldTableColumnTypes["default"].dropdown) {
|
|
733
620
|
columnOptionsLookup[column._id] = {};
|
|
734
621
|
column.options.forEach(function (option) {
|
|
@@ -751,7 +638,6 @@ var generateTableLookup = function generateTableLookup(rows, columns) {
|
|
|
751
638
|
if (cellRawValue && typeof cellRawValue === 'number') cellValue = cellRawValue.toString();
|
|
752
639
|
var formulaCell = cellValue !== undefined && cellValue.charAt(0) === '=';
|
|
753
640
|
var containsOperands = cellValue !== undefined && cellValue.match(/[A-Z]([0-9]{1,10})/gi);
|
|
754
|
-
|
|
755
641
|
if (cellValue && column.type === _FieldTableColumnTypes["default"].dropdown) {
|
|
756
642
|
tableLookup[cellKey] = columnOptionsLookup[column._id][cellValue];
|
|
757
643
|
} else if ((cellValue || cellRawValue) && column.type === _FieldTableColumnTypes["default"].image) {
|
|
@@ -772,10 +658,7 @@ var generateTableLookup = function generateTableLookup(rows, columns) {
|
|
|
772
658
|
});
|
|
773
659
|
return tableLookup;
|
|
774
660
|
};
|
|
775
|
-
|
|
776
|
-
exports.generateTableLookup = generateTableLookup;
|
|
777
|
-
|
|
778
|
-
var getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLookup) {
|
|
661
|
+
var getFormulaResult = exports.getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLookup) {
|
|
779
662
|
formula = spreadOperandRange(formula);
|
|
780
663
|
var invalidFormulaError = validFormulaString(sourceOperand, formula);
|
|
781
664
|
if (invalidFormulaError) return tableLookup[sourceOperand] = invalidFormulaError;
|
|
@@ -785,15 +668,14 @@ var getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLo
|
|
|
785
668
|
var operandValue = resolveOperandValue(sourceOperand, operand, tableLookup);
|
|
786
669
|
formula = formula.replace(operand, operandValue);
|
|
787
670
|
});
|
|
671
|
+
|
|
788
672
|
/**
|
|
789
673
|
* Add leading zeros to decimal numbers. hot-formula-parser throws an
|
|
790
674
|
* error if we try to parse non leading decimal numbers. For instace,
|
|
791
675
|
* a non leading decimal number is: .7 .001 etc. We convert these
|
|
792
676
|
* values to 0.7 & 0.001
|
|
793
677
|
*/
|
|
794
|
-
|
|
795
678
|
var noLeadingZeroDecimalMatches = formula.match(/\D\./);
|
|
796
|
-
|
|
797
679
|
if (noLeadingZeroDecimalMatches && noLeadingZeroDecimalMatches.length > 0) {
|
|
798
680
|
noLeadingZeroDecimalMatches.forEach(function (val) {
|
|
799
681
|
var splitVals = val.split('');
|
|
@@ -802,13 +684,13 @@ var getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLo
|
|
|
802
684
|
formula = formula.replace(val, newValue);
|
|
803
685
|
});
|
|
804
686
|
}
|
|
805
|
-
|
|
806
687
|
formula = formula.replace('=', '');
|
|
807
688
|
var parsedValue = parser.parse(formula);
|
|
808
689
|
if (parsedValue.result) parsedValue.result = Math.round(100 * parsedValue.result) / 100;
|
|
809
690
|
tableLookup[sourceOperand] = parsedValue.result ? parsedValue.result.toString() : parsedValue.error;
|
|
810
691
|
return parsedValue;
|
|
811
692
|
};
|
|
693
|
+
|
|
812
694
|
/**
|
|
813
695
|
* Resolve operand value
|
|
814
696
|
* An operand is A1, B1, etc.
|
|
@@ -817,77 +699,61 @@ var getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLo
|
|
|
817
699
|
* @param targetOperand //The cell you are trying to retrieve a value from
|
|
818
700
|
* @param tableLookup //The lookup of values contained in the table;
|
|
819
701
|
*/
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
exports.getFormulaResult = getFormulaResult;
|
|
823
|
-
|
|
824
|
-
var resolveOperandValue = function resolveOperandValue(sourceOperand, targetOperand, tableLookup) {
|
|
702
|
+
var resolveOperandValue = exports.resolveOperandValue = function resolveOperandValue(sourceOperand, targetOperand, tableLookup) {
|
|
825
703
|
var targetValue = tableLookup[targetOperand] && typeof tableLookup[targetOperand] === 'string' ? tableLookup[targetOperand].trim() : tableLookup[targetOperand];
|
|
826
704
|
/**
|
|
827
705
|
* 1. If tableLookup doesn't have a value (or) if the targetValue
|
|
828
706
|
* appears to be an object (image column cell values) return 0.
|
|
829
707
|
*/
|
|
708
|
+
if (!targetValue || (0, _typeof2["default"])(targetValue) === 'object') return 0;
|
|
830
709
|
|
|
831
|
-
|
|
710
|
+
// 2. If tableLookup is already a number return the number value
|
|
711
|
+
if (typeof targetValue === 'number') return targetValue;
|
|
832
712
|
|
|
833
|
-
|
|
713
|
+
// 3. If targetCell has circular reference return invalid.
|
|
834
714
|
//
|
|
835
715
|
// A circular reference can occur when C1 reference B1 and B1 references C1.
|
|
836
716
|
// It creates and infinite circular loop of trying to resovle a value
|
|
837
717
|
// because they both depend on eachother.
|
|
718
|
+
if (sourceOperand && hasCircularOperandReference(targetValue, sourceOperand) || targetOperand && hasCircularOperandReference(targetValue, targetOperand)) return '* INVALID - Circular Reference';
|
|
838
719
|
|
|
839
|
-
|
|
840
|
-
|
|
720
|
+
// 4. If targetCell has a formula value
|
|
841
721
|
if (targetValue !== undefined && targetValue.charAt(0) === '=') {
|
|
842
722
|
var result = getFormulaResult(sourceOperand, targetValue, tableLookup);
|
|
843
723
|
return result.result || result.error;
|
|
844
|
-
}
|
|
845
|
-
// formula cell then just return the cell value
|
|
846
|
-
|
|
724
|
+
}
|
|
847
725
|
|
|
726
|
+
// 5. If targetCell has a normal value or an already resolved
|
|
727
|
+
// formula cell then just return the cell value
|
|
848
728
|
if (targetValue) return targetValue;
|
|
849
729
|
};
|
|
850
|
-
|
|
851
|
-
exports.resolveOperandValue = resolveOperandValue;
|
|
852
|
-
|
|
853
|
-
var hasCircularOperandReference = function hasCircularOperandReference(targetValue, lookupOperand) {
|
|
730
|
+
var hasCircularOperandReference = exports.hasCircularOperandReference = function hasCircularOperandReference(targetValue, lookupOperand) {
|
|
854
731
|
var regExp = new RegExp(lookupOperand, 'gi');
|
|
855
732
|
var foundOperandReferences = targetValue.match(regExp);
|
|
856
733
|
return !!(foundOperandReferences && foundOperandReferences.length > 0);
|
|
857
734
|
};
|
|
858
|
-
|
|
859
|
-
exports.hasCircularOperandReference = hasCircularOperandReference;
|
|
860
|
-
|
|
861
|
-
var hasOperandRange = function hasOperandRange(targetValue) {
|
|
735
|
+
var hasOperandRange = exports.hasOperandRange = function hasOperandRange(targetValue) {
|
|
862
736
|
return /[A-Z]([0-9]{1,10}):[A-Z]([0-9]{1,10})/gi.test(targetValue);
|
|
863
737
|
};
|
|
738
|
+
|
|
864
739
|
/**
|
|
865
740
|
* Check for any invalid patterns inside of the formula string
|
|
866
741
|
*/
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
exports.hasOperandRange = hasOperandRange;
|
|
870
|
-
|
|
871
|
-
var validFormulaString = function validFormulaString(sourceOperand, formula) {
|
|
742
|
+
var validFormulaString = exports.validFormulaString = function validFormulaString(sourceOperand, formula) {
|
|
872
743
|
if (sourceOperand && hasCircularOperandReference(formula, sourceOperand)) {
|
|
873
744
|
return '*INVALID - Circular Reference';
|
|
874
745
|
}
|
|
875
|
-
|
|
876
746
|
var lowercaseOperands = formula.match(/[a-z]/g);
|
|
877
|
-
|
|
878
747
|
if (lowercaseOperands && lowercaseOperands.length > 0) {
|
|
879
748
|
return '*INVALID - Lowercase Letters Not Supported';
|
|
880
749
|
}
|
|
881
750
|
};
|
|
751
|
+
|
|
882
752
|
/**
|
|
883
753
|
* Spread the operand range into individual operands.
|
|
884
754
|
* For instance: SUM(A1:A4) turns into SUM(A1, A2, A3, A4);
|
|
885
755
|
*/
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
exports.validFormulaString = validFormulaString;
|
|
889
|
-
|
|
890
|
-
var spreadOperandRange = function spreadOperandRange(targetValue) {
|
|
756
|
+
var spreadOperandRange = exports.spreadOperandRange = function spreadOperandRange(targetValue) {
|
|
891
757
|
if (!hasOperandRange(targetValue)) return targetValue;
|
|
892
758
|
var operandRangeMatches = targetValue.match(/[A-Z]([0-9]{1,10}):[A-Z]([0-9]{1,10})/gi);
|
|
893
759
|
var operandRange = operandRangeMatches[0];
|
|
@@ -897,46 +763,43 @@ var spreadOperandRange = function spreadOperandRange(targetValue) {
|
|
|
897
763
|
var operandAIndex = operandA.match(/[0-9]+/gi) ? operandA.match(/[0-9]+/gi)[0] : null;
|
|
898
764
|
var operandB = operands[1];
|
|
899
765
|
var operandBLetter = operandB.match(/[A-Z]+/gi) ? operandB.match(/[A-Z]+/gi)[0] : null;
|
|
900
|
-
var operandBIndex = operandB.match(/[0-9]+/gi) ? operandB.match(/[0-9]+/gi)[0] : null;
|
|
766
|
+
var operandBIndex = operandB.match(/[0-9]+/gi) ? operandB.match(/[0-9]+/gi)[0] : null;
|
|
901
767
|
|
|
902
|
-
|
|
903
|
-
|
|
768
|
+
// If any values are missing return orignal targetValue
|
|
769
|
+
if (!operandALetter || !operandAIndex || !operandBLetter || !operandBIndex) return targetValue;
|
|
904
770
|
|
|
771
|
+
// Handle row range.
|
|
772
|
+
// For instance: C1:C8
|
|
905
773
|
if (operandALetter === operandBLetter) {
|
|
906
774
|
var columnOperand = operandALetter;
|
|
907
775
|
var startIndex = parseInt(operandAIndex, 10);
|
|
908
776
|
var endIndex = parseInt(operandBIndex, 10);
|
|
909
777
|
var operandRangeValues = operandA;
|
|
910
778
|
var i = startIndex + 1;
|
|
911
|
-
|
|
912
779
|
while (i <= endIndex) {
|
|
913
780
|
operandRangeValues += ",".concat(columnOperand).concat(i);
|
|
914
781
|
i++;
|
|
915
782
|
}
|
|
916
|
-
|
|
917
783
|
targetValue = targetValue.replace(/[A-Z](\d{1,10}):[A-Z](\d{1,10})/gi, operandRangeValues);
|
|
918
|
-
}
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
// Handle column range
|
|
919
787
|
// For instance, A1:D1
|
|
920
788
|
else {
|
|
921
789
|
var _startIndex = parseInt(_Table["default"].operandLetters.indexOf(operandALetter.toUpperCase()), 10);
|
|
922
|
-
|
|
923
790
|
var _endIndex = parseInt(_Table["default"].operandLetters.indexOf(operandBLetter.toUpperCase()), 10);
|
|
924
|
-
|
|
925
791
|
var _operandRangeValues = operandA;
|
|
926
|
-
|
|
927
792
|
var _i = _startIndex + 1;
|
|
928
|
-
|
|
929
793
|
while (_i <= _endIndex) {
|
|
930
794
|
var nextOperandLetter = _Table["default"].operandLetters[_i];
|
|
931
795
|
_operandRangeValues += ",".concat(nextOperandLetter).concat(operandAIndex);
|
|
932
796
|
_i++;
|
|
933
797
|
}
|
|
934
|
-
|
|
935
798
|
targetValue = targetValue.replace(/[A-Z](\d{1,10}):[A-Z](\d{1,10})/gi, _operandRangeValues);
|
|
936
799
|
}
|
|
937
|
-
|
|
938
800
|
return targetValue;
|
|
939
801
|
};
|
|
802
|
+
|
|
940
803
|
/**
|
|
941
804
|
* Primarily used for Mobile
|
|
942
805
|
*
|
|
@@ -948,11 +811,7 @@ var spreadOperandRange = function spreadOperandRange(targetValue) {
|
|
|
948
811
|
* @param {Array} rows
|
|
949
812
|
*
|
|
950
813
|
*/
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
exports.spreadOperandRange = spreadOperandRange;
|
|
954
|
-
|
|
955
|
-
var generateInputGroupFields = function generateInputGroupFields(field, columns) {
|
|
814
|
+
var generateInputGroupFields = exports.generateInputGroupFields = function generateInputGroupFields(field, columns) {
|
|
956
815
|
var rows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [getDefaultRow()];
|
|
957
816
|
var fieldSettings = arguments.length > 3 ? arguments[3] : undefined;
|
|
958
817
|
var activity = arguments.length > 4 ? arguments[4] : undefined;
|
|
@@ -971,7 +830,6 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
971
830
|
var rowOrder = getTableFieldRowOrder(field._id, fieldSettings, tableRows);
|
|
972
831
|
var sortedTableRows = sortRows(tableRows, rowOrder);
|
|
973
832
|
var cellActivityLookup = {};
|
|
974
|
-
|
|
975
833
|
if (activity && activity.length > 0) {
|
|
976
834
|
activity.forEach(function (act) {
|
|
977
835
|
var rowId = act.document.row;
|
|
@@ -981,14 +839,13 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
981
839
|
cellActivityLookup[cellKey] += 1;
|
|
982
840
|
});
|
|
983
841
|
}
|
|
984
|
-
|
|
985
842
|
sortedTableRows.forEach(function (row, rowIndex) {
|
|
986
843
|
var firstRowIndex = rowIndex === 0;
|
|
987
844
|
var lastRowIndex = rowIndex === sortedTableRows.length - 1;
|
|
845
|
+
|
|
988
846
|
/**
|
|
989
847
|
* Step 1: Add InputGroup Row Header
|
|
990
848
|
*/
|
|
991
|
-
|
|
992
849
|
tableReferences.push({
|
|
993
850
|
uniqueId: "".concat(field._id).concat(row._id),
|
|
994
851
|
_id: field._id,
|
|
@@ -1001,10 +858,10 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
1001
858
|
firstIndex: rowIndex === 0,
|
|
1002
859
|
lastIndex: false
|
|
1003
860
|
});
|
|
861
|
+
|
|
1004
862
|
/**
|
|
1005
863
|
* Step 2: Add Input Group Row Cells
|
|
1006
864
|
*/
|
|
1007
|
-
|
|
1008
865
|
tableColumns.forEach(function (column, columnIndex) {
|
|
1009
866
|
var lastColumnIndex = columnIndex === tableColumns.length - 1;
|
|
1010
867
|
var value = row && row.cells ? row.cells[column._id] : '';
|
|
@@ -1031,6 +888,7 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
1031
888
|
});
|
|
1032
889
|
return tableReferences;
|
|
1033
890
|
};
|
|
891
|
+
|
|
1034
892
|
/**
|
|
1035
893
|
* Populate table rows with values
|
|
1036
894
|
* - Dropdown cells will have chosen values
|
|
@@ -1044,10 +902,7 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
1044
902
|
* @returns
|
|
1045
903
|
*/
|
|
1046
904
|
|
|
1047
|
-
|
|
1048
|
-
exports.generateInputGroupFields = generateInputGroupFields;
|
|
1049
|
-
|
|
1050
|
-
var getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWithPopulatedDropdownCells(columns, rows) {
|
|
905
|
+
var getTableRowLookupWithPopulatedDropdownCells = exports.getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWithPopulatedDropdownCells(columns, rows) {
|
|
1051
906
|
var rowsLookup = {};
|
|
1052
907
|
var tableLookup = generateTableLookup(rows, columns);
|
|
1053
908
|
var validRows = getRows(rows);
|
|
@@ -1056,11 +911,9 @@ var getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWith
|
|
|
1056
911
|
var nextRow = _objectSpread(_objectSpread({}, row), {}, {
|
|
1057
912
|
cells: _objectSpread({}, row.cells)
|
|
1058
913
|
});
|
|
1059
|
-
|
|
1060
914
|
validColumns.forEach(function (column) {
|
|
1061
915
|
var cellOperand = getCellOperand(column.operand, rowIndex + 1);
|
|
1062
916
|
var value = tableLookup[cellOperand];
|
|
1063
|
-
|
|
1064
917
|
if (value && column.type === _FieldTableColumnTypes["default"].dropdown) {
|
|
1065
918
|
nextRow.cells[column._id] = column.optionsLookup[value] ? column.optionsLookup[value].value : value;
|
|
1066
919
|
} else {
|
|
@@ -1071,6 +924,7 @@ var getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWith
|
|
|
1071
924
|
});
|
|
1072
925
|
return rowsLookup;
|
|
1073
926
|
};
|
|
927
|
+
|
|
1074
928
|
/**
|
|
1075
929
|
* Populate inputGroup dropdown questions with chosen value
|
|
1076
930
|
*
|
|
@@ -1082,20 +936,15 @@ var getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWith
|
|
|
1082
936
|
* @returns
|
|
1083
937
|
*/
|
|
1084
938
|
|
|
1085
|
-
|
|
1086
|
-
exports.getTableRowLookupWithPopulatedDropdownCells = getTableRowLookupWithPopulatedDropdownCells;
|
|
1087
|
-
|
|
1088
|
-
var getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRowLookupWithPopulatedDropdownCells(columns, rows) {
|
|
939
|
+
var getInputGroupRowLookupWithPopulatedDropdownCells = exports.getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRowLookupWithPopulatedDropdownCells(columns, rows) {
|
|
1089
940
|
var rowsLookup = {};
|
|
1090
941
|
var validRows = typeof rows === 'string' ? JSON.parse(rows) : rows;
|
|
1091
942
|
validRows.forEach(function (row) {
|
|
1092
943
|
var nextRow = _objectSpread(_objectSpread({}, row), {}, {
|
|
1093
944
|
cells: _objectSpread({}, row.cells)
|
|
1094
945
|
});
|
|
1095
|
-
|
|
1096
946
|
columns.forEach(function (column) {
|
|
1097
947
|
var optionId = nextRow.cells[column._id];
|
|
1098
|
-
|
|
1099
948
|
if (optionId && column.type === _FieldTableColumnTypes["default"].dropdown) {
|
|
1100
949
|
nextRow.cells[column._id] = column.optionsLookup[optionId] ? column.optionsLookup[optionId].value : optionId;
|
|
1101
950
|
}
|
|
@@ -1104,6 +953,7 @@ var getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRow
|
|
|
1104
953
|
});
|
|
1105
954
|
return rowsLookup;
|
|
1106
955
|
};
|
|
956
|
+
|
|
1107
957
|
/**
|
|
1108
958
|
* Generate row index lookup:
|
|
1109
959
|
* @param {*} fieldId
|
|
@@ -1111,11 +961,7 @@ var getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRow
|
|
|
1111
961
|
* @param {*} rows
|
|
1112
962
|
* @returns
|
|
1113
963
|
*/
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
exports.getInputGroupRowLookupWithPopulatedDropdownCells = getInputGroupRowLookupWithPopulatedDropdownCells;
|
|
1117
|
-
|
|
1118
|
-
var getRowIndexLookup = function getRowIndexLookup(fieldId, fieldSettings, rows) {
|
|
964
|
+
var getRowIndexLookup = exports.getRowIndexLookup = function getRowIndexLookup(fieldId, fieldSettings, rows) {
|
|
1119
965
|
var rowOrder = getTableFieldRowOrder(fieldId, fieldSettings, rows);
|
|
1120
966
|
var rowIndexLookup = {};
|
|
1121
967
|
rowOrder.forEach(function (rowId, index) {
|
|
@@ -1123,6 +969,7 @@ var getRowIndexLookup = function getRowIndexLookup(fieldId, fieldSettings, rows)
|
|
|
1123
969
|
});
|
|
1124
970
|
return rowIndexLookup;
|
|
1125
971
|
};
|
|
972
|
+
|
|
1126
973
|
/**
|
|
1127
974
|
* Handle Table Cell Change
|
|
1128
975
|
*
|
|
@@ -1132,17 +979,14 @@ var getRowIndexLookup = function getRowIndexLookup(fieldId, fieldSettings, rows)
|
|
|
1132
979
|
* @param {String} value
|
|
1133
980
|
* @param {Func} callback
|
|
1134
981
|
*/
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
exports.getRowIndexLookup = getRowIndexLookup;
|
|
1138
|
-
|
|
1139
|
-
var handleTableCellChange = function handleTableCellChange(rows, rowId, columnId, val, callback) {
|
|
982
|
+
var handleTableCellChange = exports.handleTableCellChange = function handleTableCellChange(rows, rowId, columnId, val, callback) {
|
|
1140
983
|
var targetRowIndex = rows.findIndex(function (row) {
|
|
1141
984
|
return row._id === rowId;
|
|
1142
985
|
});
|
|
1143
986
|
var row = rows[targetRowIndex];
|
|
1144
|
-
var cells = row ? row.cells : {};
|
|
987
|
+
var cells = row ? row.cells : {};
|
|
1145
988
|
|
|
989
|
+
//Only save data if value has changed
|
|
1146
990
|
if (cells[columnId] !== val && callback) {
|
|
1147
991
|
callback({
|
|
1148
992
|
targetRowIndex: targetRowIndex,
|
|
@@ -1153,39 +997,34 @@ var handleTableCellChange = function handleTableCellChange(rows, rowId, columnId
|
|
|
1153
997
|
});
|
|
1154
998
|
}
|
|
1155
999
|
};
|
|
1000
|
+
|
|
1156
1001
|
/**
|
|
1157
1002
|
* Handle Insert Table Row
|
|
1158
1003
|
*
|
|
1159
1004
|
* @param {Number} rowIndex
|
|
1160
1005
|
* @param {Func} callback
|
|
1161
1006
|
*/
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
exports.handleTableCellChange = handleTableCellChange;
|
|
1165
|
-
|
|
1166
|
-
var handleInsertTableRow = function handleInsertTableRow(rowIndex, callback) {
|
|
1007
|
+
var handleInsertTableRow = exports.handleInsertTableRow = function handleInsertTableRow(rowIndex, callback) {
|
|
1167
1008
|
if (callback) callback({
|
|
1168
1009
|
targetRowIndex: rowIndex + 1,
|
|
1169
1010
|
row: getDefaultRow()
|
|
1170
1011
|
});
|
|
1171
1012
|
};
|
|
1013
|
+
|
|
1172
1014
|
/**
|
|
1173
1015
|
* Handle Create New Table Row
|
|
1174
1016
|
*
|
|
1175
1017
|
* @param {Array} rows //List of current table rows
|
|
1176
1018
|
* @param {Func} callback
|
|
1177
1019
|
*/
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
exports.handleInsertTableRow = handleInsertTableRow;
|
|
1181
|
-
|
|
1182
|
-
var handleCreateTableRow = function handleCreateTableRow(rows, callback) {
|
|
1020
|
+
var handleCreateTableRow = exports.handleCreateTableRow = function handleCreateTableRow(rows, callback) {
|
|
1183
1021
|
var targetRowIndex = rows.length;
|
|
1184
1022
|
if (callback) callback({
|
|
1185
1023
|
targetRowIndex: targetRowIndex,
|
|
1186
1024
|
row: getDefaultRow()
|
|
1187
1025
|
});
|
|
1188
1026
|
};
|
|
1027
|
+
|
|
1189
1028
|
/**
|
|
1190
1029
|
* Handle Duplicate Table Row
|
|
1191
1030
|
*
|
|
@@ -1194,11 +1033,7 @@ var handleCreateTableRow = function handleCreateTableRow(rows, callback) {
|
|
|
1194
1033
|
* @param {Number} rowIndex
|
|
1195
1034
|
* @param {Func} callback
|
|
1196
1035
|
*/
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
exports.handleCreateTableRow = handleCreateTableRow;
|
|
1200
|
-
|
|
1201
|
-
var handleDuplicateTableRow = function handleDuplicateTableRow(rows, rowId, rowIndex, callback) {
|
|
1036
|
+
var handleDuplicateTableRow = exports.handleDuplicateTableRow = function handleDuplicateTableRow(rows, rowId, rowIndex, callback) {
|
|
1202
1037
|
var duplicateRow = rows.find(function (row) {
|
|
1203
1038
|
return row._id === rowId;
|
|
1204
1039
|
});
|
|
@@ -1210,17 +1045,14 @@ var handleDuplicateTableRow = function handleDuplicateTableRow(rows, rowId, rowI
|
|
|
1210
1045
|
row: newRow
|
|
1211
1046
|
});
|
|
1212
1047
|
};
|
|
1048
|
+
|
|
1213
1049
|
/**
|
|
1214
1050
|
* Handle Move Table Row Up
|
|
1215
1051
|
*
|
|
1216
1052
|
* @param {Number} rowIndex
|
|
1217
1053
|
* @param {Func} callback
|
|
1218
1054
|
*/
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
exports.handleDuplicateTableRow = handleDuplicateTableRow;
|
|
1222
|
-
|
|
1223
|
-
var handleMoveTableRowUp = function handleMoveTableRowUp(rowIndex, callback) {
|
|
1055
|
+
var handleMoveTableRowUp = exports.handleMoveTableRowUp = function handleMoveTableRowUp(rowIndex, callback) {
|
|
1224
1056
|
//If first row then ignore
|
|
1225
1057
|
if (rowIndex === 0) return;
|
|
1226
1058
|
var targetRowIndex = rowIndex - 1;
|
|
@@ -1228,6 +1060,7 @@ var handleMoveTableRowUp = function handleMoveTableRowUp(rowIndex, callback) {
|
|
|
1228
1060
|
targetRowIndex: targetRowIndex
|
|
1229
1061
|
});
|
|
1230
1062
|
};
|
|
1063
|
+
|
|
1231
1064
|
/**
|
|
1232
1065
|
* Handle Move Table Row Down
|
|
1233
1066
|
*
|
|
@@ -1235,11 +1068,7 @@ var handleMoveTableRowUp = function handleMoveTableRowUp(rowIndex, callback) {
|
|
|
1235
1068
|
* @param {Number} rowIndex
|
|
1236
1069
|
* @param {Func} callback
|
|
1237
1070
|
*/
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
exports.handleMoveTableRowUp = handleMoveTableRowUp;
|
|
1241
|
-
|
|
1242
|
-
var handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, callback) {
|
|
1071
|
+
var handleMoveTableRowDown = exports.handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, callback) {
|
|
1243
1072
|
//If last row then ignore
|
|
1244
1073
|
if (rowIndex >= rows.length - 1) return;
|
|
1245
1074
|
var targetRowIndex = rowIndex + 1;
|
|
@@ -1247,9 +1076,7 @@ var handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, cal
|
|
|
1247
1076
|
targetRowIndex: targetRowIndex
|
|
1248
1077
|
});
|
|
1249
1078
|
};
|
|
1250
|
-
|
|
1251
|
-
exports.handleMoveTableRowDown = handleMoveTableRowDown;
|
|
1252
|
-
var _default = {
|
|
1079
|
+
var _default = exports["default"] = {
|
|
1253
1080
|
generateTableLookup: generateTableLookup,
|
|
1254
1081
|
generateTableLookupForRows: generateTableLookupForRows,
|
|
1255
1082
|
generateInputGroupFields: generateInputGroupFields,
|
|
@@ -1291,5 +1118,4 @@ var _default = {
|
|
|
1291
1118
|
handleMoveTableRowDown: handleMoveTableRowDown,
|
|
1292
1119
|
FieldTableColumnTypes: _FieldTableColumnTypes["default"],
|
|
1293
1120
|
FieldTableCustomColumnIds: _FieldTableCustomColumnIds["default"]
|
|
1294
|
-
};
|
|
1295
|
-
exports["default"] = _default;
|
|
1121
|
+
};
|