@builttocreate/engine-utils 2.4.0 → 2.5.0-beta.1.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/constants/FieldTypes.js +4 -1
- package/dist/fieldHelper.js +74 -4
- package/dist/joyDocHelper.js +24 -0
- package/dist/tableHelper.js +52 -4
- package/package.json +4 -2
|
@@ -7,7 +7,8 @@ exports["default"] = void 0;
|
|
|
7
7
|
// Display Fields
|
|
8
8
|
var uniqueId = 'uniqueId';
|
|
9
9
|
var image = 'image';
|
|
10
|
-
var richText = 'richText';
|
|
10
|
+
var richText = 'richText';
|
|
11
|
+
var block = 'block'; // Data Fields
|
|
11
12
|
|
|
12
13
|
var text = 'text';
|
|
13
14
|
var textarea = 'textarea';
|
|
@@ -25,6 +26,7 @@ var chart = 'chart';
|
|
|
25
26
|
var types = {
|
|
26
27
|
uniqueId: uniqueId,
|
|
27
28
|
image: image,
|
|
29
|
+
block: block,
|
|
28
30
|
richText: richText,
|
|
29
31
|
text: text,
|
|
30
32
|
textarea: textarea,
|
|
@@ -44,6 +46,7 @@ types.all = Object.keys(types);
|
|
|
44
46
|
types.titles = {
|
|
45
47
|
uniqueId: 'Auto Number',
|
|
46
48
|
image: 'Image',
|
|
49
|
+
block: 'Display Text',
|
|
47
50
|
richText: 'Rich Text',
|
|
48
51
|
text: 'Short Text',
|
|
49
52
|
textarea: 'Long Text',
|
package/dist/fieldHelper.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.handleMultiSelectOptionToggle = exports.getTemplateWithLookups = exports.getMultiSelectFieldValue = exports.getImportFieldValues = exports.getDefaultOption = exports.getDefaultFieldValuesFromTemplate = exports.getChartFieldValue = exports["default"] = void 0;
|
|
8
|
+
exports.isTargetOptionDeleted = exports.isFieldEmpty = exports.handleMultiSelectOptionToggle = exports.getTemplateWithLookups = exports.getMultiSelectFieldValue = exports.getImportFieldValues = exports.getDefaultOption = exports.getDefaultFieldValuesFromTemplate = exports.getChartFieldValue = exports["default"] = void 0;
|
|
9
9
|
|
|
10
10
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
11
|
|
|
@@ -13,14 +13,14 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
13
13
|
|
|
14
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
15
15
|
|
|
16
|
-
var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
|
|
17
|
-
|
|
18
16
|
var _chartHelper = require("./chartHelper");
|
|
19
17
|
|
|
20
18
|
var _tableHelper = require("./tableHelper");
|
|
21
19
|
|
|
22
20
|
var _generateObjectId = _interopRequireDefault(require("./generateObjectId"));
|
|
23
21
|
|
|
22
|
+
var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
|
|
23
|
+
|
|
24
24
|
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; }
|
|
25
25
|
|
|
26
26
|
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; }
|
|
@@ -281,8 +281,76 @@ var getTemplateWithLookups = function getTemplateWithLookups(template) {
|
|
|
281
281
|
});
|
|
282
282
|
return nextTemplate;
|
|
283
283
|
};
|
|
284
|
+
/**
|
|
285
|
+
* This method checks if the field passed via input is empty by checking
|
|
286
|
+
* the field.value.
|
|
287
|
+
* @param {*} fieldProps
|
|
288
|
+
* @returns
|
|
289
|
+
*/
|
|
290
|
+
|
|
284
291
|
|
|
285
292
|
exports.getTemplateWithLookups = getTemplateWithLookups;
|
|
293
|
+
|
|
294
|
+
var isFieldEmpty = function isFieldEmpty(fieldType, fieldValue, fieldOptions) {
|
|
295
|
+
var isEmpty = false;
|
|
296
|
+
|
|
297
|
+
if (fieldType === _FieldTypes["default"].text && (!fieldValue || fieldValue && fieldValue.replace(/\s+/g, '').length === 0)) {
|
|
298
|
+
isEmpty = true;
|
|
299
|
+
} else if (fieldType === _FieldTypes["default"].textarea && (!fieldValue || fieldValue && fieldValue.replace(/\s+/g, '').length === 0)) {
|
|
300
|
+
isEmpty = true;
|
|
301
|
+
} else if (fieldType === _FieldTypes["default"].number && typeof fieldValue !== 'number') {
|
|
302
|
+
isEmpty = true;
|
|
303
|
+
} else if (fieldType === _FieldTypes["default"].date && !fieldValue) {
|
|
304
|
+
isEmpty = true;
|
|
305
|
+
} else if (fieldType === _FieldTypes["default"].signature && !fieldValue) {
|
|
306
|
+
isEmpty = true;
|
|
307
|
+
} else if (fieldType === _FieldTypes["default"].dropdown && (!fieldValue || fieldValue && fieldOptions.length > 0 && isTargetOptionDeleted(fieldValue, fieldOptions))) {
|
|
308
|
+
isEmpty = true;
|
|
309
|
+
} else if (fieldType === _FieldTypes["default"].multiSelect && (!fieldValue || fieldValue && fieldOptions.length > 0 && isTargetOptionDeleted(fieldValue, fieldOptions))) {
|
|
310
|
+
isEmpty = true;
|
|
311
|
+
} else if (fieldType === _FieldTypes["default"].image && (!fieldValue || fieldValue && fieldValue.length === 0)) {
|
|
312
|
+
isEmpty = true;
|
|
313
|
+
} else if (fieldType === _FieldTypes["default"].chart && (!fieldValue || fieldValue && fieldValue.length === 0)) {
|
|
314
|
+
isEmpty = true;
|
|
315
|
+
} else if (fieldType === _FieldTypes["default"].table && (!fieldValue || fieldValue && fieldValue.filter(function (item) {
|
|
316
|
+
return !item.deleted;
|
|
317
|
+
}).length === 0)) {
|
|
318
|
+
isEmpty = true;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
return isEmpty;
|
|
322
|
+
};
|
|
323
|
+
/**
|
|
324
|
+
* This function checks whether an option associated with multiselect or dropdown
|
|
325
|
+
* field is deleted.
|
|
326
|
+
* @param {*} value // value
|
|
327
|
+
* @param {*} options
|
|
328
|
+
*/
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
exports.isFieldEmpty = isFieldEmpty;
|
|
332
|
+
|
|
333
|
+
var isTargetOptionDeleted = function isTargetOptionDeleted(value, options) {
|
|
334
|
+
/***
|
|
335
|
+
* We are converting the value that is passed in to array since
|
|
336
|
+
* this method is used by dropdown field and multiSelect field
|
|
337
|
+
* Dropdown passes the value as a string whereas mutliselect passes
|
|
338
|
+
* the value as an array
|
|
339
|
+
*/
|
|
340
|
+
var nextValue = Array.isArray(value) ? value : [value];
|
|
341
|
+
if (!nextValue || nextValue.length === 0) return true;
|
|
342
|
+
var optionsLookup = {};
|
|
343
|
+
options.forEach(function (option) {
|
|
344
|
+
optionsLookup[option._id] = option;
|
|
345
|
+
});
|
|
346
|
+
var undeletedOptions = nextValue.filter(function (item) {
|
|
347
|
+
return optionsLookup[item] && !optionsLookup[item].deleted;
|
|
348
|
+
});
|
|
349
|
+
var result = !(undeletedOptions.length > 0);
|
|
350
|
+
return result;
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
exports.isTargetOptionDeleted = isTargetOptionDeleted;
|
|
286
354
|
var _default = {
|
|
287
355
|
getDefaultOption: getDefaultOption,
|
|
288
356
|
getChartFieldValue: getChartFieldValue,
|
|
@@ -290,6 +358,8 @@ var _default = {
|
|
|
290
358
|
handleMultiSelectOptionToggle: handleMultiSelectOptionToggle,
|
|
291
359
|
getDefaultFieldValuesFromTemplate: getDefaultFieldValuesFromTemplate,
|
|
292
360
|
getImportFieldValues: getImportFieldValues,
|
|
293
|
-
getTemplateWithLookups: getTemplateWithLookups
|
|
361
|
+
getTemplateWithLookups: getTemplateWithLookups,
|
|
362
|
+
isFieldEmpty: isFieldEmpty,
|
|
363
|
+
isTargetOptionDeleted: isTargetOptionDeleted
|
|
294
364
|
};
|
|
295
365
|
exports["default"] = _default;
|
package/dist/joyDocHelper.js
CHANGED
|
@@ -19,6 +19,10 @@ var _FieldPresentationModes = _interopRequireDefault(require("./constants/FieldP
|
|
|
19
19
|
|
|
20
20
|
var _DocumentTypes = _interopRequireDefault(require("./constants/DocumentTypes"));
|
|
21
21
|
|
|
22
|
+
var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
|
|
23
|
+
|
|
24
|
+
var _tableHelper = require("./tableHelper");
|
|
25
|
+
|
|
22
26
|
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; }
|
|
23
27
|
|
|
24
28
|
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; }
|
|
@@ -153,6 +157,26 @@ var getCleanedJoyDoc = function getCleanedJoyDoc(doc) {
|
|
|
153
157
|
} else {
|
|
154
158
|
nextDoc.files = [getDefaultJoyDocFile()];
|
|
155
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Logic below is used to clean the table field rowOrder by removing the
|
|
162
|
+
* deletedRowIds / duplicateRowIds
|
|
163
|
+
* */
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
if (nextDoc.fields && nextDoc.fields.length > 0) {
|
|
167
|
+
nextDoc.fields = nextDoc.fields.map(function (field) {
|
|
168
|
+
var nextField = _objectSpread({}, field);
|
|
169
|
+
|
|
170
|
+
if (field.type === _FieldTypes["default"].table) {
|
|
171
|
+
console.log('field.rowOrder', field.rowOrder);
|
|
172
|
+
var cleanedRoworder = (0, _tableHelper.getCleanedRowOrder)(field.rowOrder, field.value);
|
|
173
|
+
console.log('cleanedRowOrder', cleanedRoworder);
|
|
174
|
+
nextField.rowOrder = cleanedRoworder;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return nextField;
|
|
178
|
+
});
|
|
179
|
+
}
|
|
156
180
|
|
|
157
181
|
return nextDoc;
|
|
158
182
|
};
|
package/dist/tableHelper.js
CHANGED
|
@@ -7,7 +7,7 @@ var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
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.getCellOperand = exports.generateTableLookupForRows = exports.generateTableLookup = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.generateInputGroupFields = exports["default"] = void 0;
|
|
10
|
+
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.getCellOperand = exports.generateTableLookupForRows = exports.generateTableLookup = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.generateInputGroupFields = exports["default"] = void 0;
|
|
11
11
|
|
|
12
12
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
13
|
|
|
@@ -198,6 +198,53 @@ var getTableFieldRowOrder = function getTableFieldRowOrder(fieldId, fieldSetting
|
|
|
198
198
|
return row._id;
|
|
199
199
|
});
|
|
200
200
|
};
|
|
201
|
+
/**
|
|
202
|
+
* This method removes the rowIds of the deleted rows (or) any duplicate rowIds
|
|
203
|
+
* from the rowOrder there by returning a cleaned rowOrder
|
|
204
|
+
* @param {*} rowOrder
|
|
205
|
+
* @param {*} rows
|
|
206
|
+
*
|
|
207
|
+
* @returns {Array}
|
|
208
|
+
**/
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
exports.getTableFieldRowOrder = getTableFieldRowOrder;
|
|
212
|
+
|
|
213
|
+
var getCleanedRowOrder = function getCleanedRowOrder(rowOrder, rows) {
|
|
214
|
+
var nextRowOrder = [];
|
|
215
|
+
/**
|
|
216
|
+
* Step 1: Handle generating or retrieving proper row order.
|
|
217
|
+
*/
|
|
218
|
+
|
|
219
|
+
if (rowOrder && rowOrder.length > 0) {
|
|
220
|
+
nextRowOrder = rowOrder;
|
|
221
|
+
} else if (rows && rows.length > 0) {
|
|
222
|
+
rows.forEach(function (row) {
|
|
223
|
+
if (!row.deleted) nextRowOrder.push(row._id);
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Step 2: Remove row Ids from rowOrder for rows that no longer exist or have been deleted
|
|
228
|
+
*/
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
var rowLookup = {};
|
|
232
|
+
rows.forEach(function (row) {
|
|
233
|
+
return rowLookup[row._id] = row && !row.deleted;
|
|
234
|
+
});
|
|
235
|
+
nextRowOrder = nextRowOrder.filter(function (rowId) {
|
|
236
|
+
return rowLookup[rowId];
|
|
237
|
+
});
|
|
238
|
+
/**
|
|
239
|
+
* Step 3: Remove any duplicate row Id references in the row order.
|
|
240
|
+
*/
|
|
241
|
+
|
|
242
|
+
var filteredNextRowOrder = [];
|
|
243
|
+
nextRowOrder.forEach(function (rowId) {
|
|
244
|
+
if (filteredNextRowOrder.indexOf(rowId) === -1) filteredNextRowOrder.push(rowId);
|
|
245
|
+
});
|
|
246
|
+
return filteredNextRowOrder;
|
|
247
|
+
};
|
|
201
248
|
/**
|
|
202
249
|
* Handle Move Column Left
|
|
203
250
|
*
|
|
@@ -206,7 +253,7 @@ var getTableFieldRowOrder = function getTableFieldRowOrder(fieldId, fieldSetting
|
|
|
206
253
|
*/
|
|
207
254
|
|
|
208
255
|
|
|
209
|
-
exports.
|
|
256
|
+
exports.getCleanedRowOrder = getCleanedRowOrder;
|
|
210
257
|
|
|
211
258
|
var handleMoveColumnLeft = function handleMoveColumnLeft(columnIndex, callback) {
|
|
212
259
|
//If first index then ignore
|
|
@@ -1161,9 +1208,11 @@ var _default = {
|
|
|
1161
1208
|
getCellOperand: getCellOperand,
|
|
1162
1209
|
getIndexesFromTableCellOperand: getIndexesFromTableCellOperand,
|
|
1163
1210
|
getRowOrder: getRowOrder,
|
|
1211
|
+
getTableFieldRowOrder: getTableFieldRowOrder,
|
|
1212
|
+
getFilteredRowOrder: getFilteredRowOrder,
|
|
1213
|
+
getCleanedRowOrder: getCleanedRowOrder,
|
|
1164
1214
|
getRows: getRows,
|
|
1165
1215
|
sortRows: sortRows,
|
|
1166
|
-
getFilteredRowOrder: getFilteredRowOrder,
|
|
1167
1216
|
getDefaultRow: getDefaultRow,
|
|
1168
1217
|
getRowMap: getRowMap,
|
|
1169
1218
|
getDefaultColumnOption: getDefaultColumnOption,
|
|
@@ -1179,7 +1228,6 @@ var _default = {
|
|
|
1179
1228
|
hasOperandRange: hasOperandRange,
|
|
1180
1229
|
spreadOperandRange: spreadOperandRange,
|
|
1181
1230
|
getTableFieldLookupKey: getTableFieldLookupKey,
|
|
1182
|
-
getTableFieldRowOrder: getTableFieldRowOrder,
|
|
1183
1231
|
getTableRowLookupWithPopulatedDropdownCells: getTableRowLookupWithPopulatedDropdownCells,
|
|
1184
1232
|
getInputGroupRowLookupWithPopulatedDropdownCells: getInputGroupRowLookupWithPopulatedDropdownCells,
|
|
1185
1233
|
getRowIndexLookup: getRowIndexLookup,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@builttocreate/engine-utils",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0-beta.1.0",
|
|
4
4
|
"description": "Utility library for common logic shared across web and mobile",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -54,6 +54,8 @@
|
|
|
54
54
|
"moduleNameMapper": {
|
|
55
55
|
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
|
|
56
56
|
"\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js"
|
|
57
|
-
}
|
|
57
|
+
},
|
|
58
|
+
"globalSetup":"./jestConfig.js"
|
|
59
|
+
|
|
58
60
|
}
|
|
59
61
|
}
|