@builttocreate/engine-utils 1.10.0-rc1 → 1.11.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 +12 -6
- package/dist/fieldHelper.js +35 -3
- package/dist/tableHelper.js +20 -7
- package/package.json +2 -1
package/dist/activityHelper.js
CHANGED
|
@@ -87,6 +87,7 @@ var addDocumentDataToActivities = function addDocumentDataToActivities(activitie
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
var fieldValues = doc && doc.fields ? doc.fields : null;
|
|
90
|
+
var fieldSettings = doc && doc.fieldSettings ? doc.fieldSettings : {};
|
|
90
91
|
if (!activities || activities.length < 1 || !templateFieldLookup || !fieldValues) return activities;
|
|
91
92
|
var fieldRowsLookup = {};
|
|
92
93
|
var fieldRowIndexLookup = {};
|
|
@@ -94,7 +95,7 @@ var addDocumentDataToActivities = function addDocumentDataToActivities(activitie
|
|
|
94
95
|
activities.forEach(function (activity) {
|
|
95
96
|
var nextActivity = _objectSpread({}, activity);
|
|
96
97
|
|
|
97
|
-
if (activity.document && activity.document.
|
|
98
|
+
if (activity.document && activity.document.field) {
|
|
98
99
|
var docFieldValue = fieldValues[activity.document.field];
|
|
99
100
|
var templateField = templateFieldLookup[activity.document.field];
|
|
100
101
|
nextActivity.document.title = templateField.title;
|
|
@@ -129,7 +130,7 @@ var addDocumentDataToActivities = function addDocumentDataToActivities(activitie
|
|
|
129
130
|
|
|
130
131
|
|
|
131
132
|
if (!fieldRowIndexLookup[templateField._id]) {
|
|
132
|
-
fieldRowIndexLookup[templateField._id] = (0, _tableHelper.getRowIndexLookup)(templateField._id,
|
|
133
|
+
fieldRowIndexLookup[templateField._id] = (0, _tableHelper.getRowIndexLookup)(templateField._id, fieldSettings, docFieldValue);
|
|
133
134
|
}
|
|
134
135
|
/**
|
|
135
136
|
* Table Step 3: Add row and rowIndex to the activity.document object for easy reference.
|
|
@@ -138,8 +139,10 @@ var addDocumentDataToActivities = function addDocumentDataToActivities(activitie
|
|
|
138
139
|
*/
|
|
139
140
|
|
|
140
141
|
|
|
141
|
-
|
|
142
|
-
|
|
142
|
+
if (fieldRowsLookup[activity.document.field] && fieldRowIndexLookup[activity.document.field]) {
|
|
143
|
+
nextActivity.document.value = fieldRowsLookup[activity.document.field][activity.document.row];
|
|
144
|
+
nextActivity.document.rowIndex = fieldRowIndexLookup[activity.document.field][activity.document.row];
|
|
145
|
+
}
|
|
143
146
|
} else if (docFieldValue && templateField.type === _FieldTypes["default"].inputGroup) {
|
|
144
147
|
/**
|
|
145
148
|
* Input Group Step 1: create an easy way to lookup a row with the dropdown cells populated.
|
|
@@ -153,7 +156,9 @@ var addDocumentDataToActivities = function addDocumentDataToActivities(activitie
|
|
|
153
156
|
* whole row because input group display components are treated like regular field and not like table rows.
|
|
154
157
|
*/
|
|
155
158
|
|
|
156
|
-
|
|
159
|
+
if (fieldRowsLookup[activity.document.field] && fieldRowsLookup[activity.document.field][activity.document.row] && fieldRowsLookup[activity.document.field][activity.document.row].cells[activity.document.column]) {
|
|
160
|
+
nextActivity.document.value = fieldRowsLookup[activity.document.field][activity.document.row].cells[activity.document.column];
|
|
161
|
+
}
|
|
157
162
|
} else if (docFieldValue && templateField.type === _FieldTypes["default"].multiSelect) {
|
|
158
163
|
var parsedDocFieldValue = docFieldValue && typeof docFieldValue === 'string' ? docFieldValue.split(',') : docFieldValue;
|
|
159
164
|
var _nextDocFieldValue = '';
|
|
@@ -161,7 +166,8 @@ var addDocumentDataToActivities = function addDocumentDataToActivities(activitie
|
|
|
161
166
|
if (parsedDocFieldValue.length > 0) {
|
|
162
167
|
parsedDocFieldValue.forEach(function (item) {
|
|
163
168
|
var option = templateField.optionsLookup[item];
|
|
164
|
-
|
|
169
|
+
if (!option) return;
|
|
170
|
+
_nextDocFieldValue = _nextDocFieldValue.concat(option.value, ', ');
|
|
165
171
|
});
|
|
166
172
|
}
|
|
167
173
|
|
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["default"] = exports.getTemplateWithLookups = exports.getImportFieldValues = exports.getDefaultFieldValuesFromTemplate = exports.getMultiSelectFieldValue = exports.getChartFieldValue = void 0;
|
|
8
|
+
exports["default"] = exports.getTemplateWithLookups = exports.getImportFieldValues = exports.getDefaultFieldValuesFromTemplate = exports.handleMultiSelectOptionToggle = exports.getMultiSelectFieldValue = exports.getChartFieldValue = void 0;
|
|
9
9
|
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
|
|
@@ -55,13 +55,44 @@ exports.getChartFieldValue = getChartFieldValue;
|
|
|
55
55
|
|
|
56
56
|
var getMultiSelectFieldValue = function getMultiSelectFieldValue(value) {
|
|
57
57
|
if (value && typeof value === 'string') {
|
|
58
|
-
return value.split(',');
|
|
58
|
+
return value.replace(/\s/g, '').split(',');
|
|
59
59
|
} else if (value && (0, _typeof2["default"])(value) === 'object') {
|
|
60
60
|
return (0, _toConsumableArray2["default"])(value);
|
|
61
61
|
} else {
|
|
62
62
|
return [];
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
|
+
/**
|
|
66
|
+
* Update the selected options.
|
|
67
|
+
*
|
|
68
|
+
* @param (Bool) multi
|
|
69
|
+
* @param (Array) selectedOptions //[optionId, optionId, ...]
|
|
70
|
+
* @param (String) optionId //Option that is being toggled
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
exports.getMultiSelectFieldValue = getMultiSelectFieldValue;
|
|
75
|
+
|
|
76
|
+
var handleMultiSelectOptionToggle = function handleMultiSelectOptionToggle(multi) {
|
|
77
|
+
var selectedOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
78
|
+
var optionId = arguments.length > 2 ? arguments[2] : undefined;
|
|
79
|
+
var nextSelection = (0, _toConsumableArray2["default"])(selectedOptions);
|
|
80
|
+
var optionIndex = nextSelection.indexOf(optionId);
|
|
81
|
+
|
|
82
|
+
if (optionIndex !== -1) {
|
|
83
|
+
nextSelection.splice(optionIndex, 1);
|
|
84
|
+
} else if (multi) {
|
|
85
|
+
nextSelection.push(optionId);
|
|
86
|
+
} else {
|
|
87
|
+
nextSelection = [optionId];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (multi) {
|
|
91
|
+
return nextSelection;
|
|
92
|
+
} else {
|
|
93
|
+
return nextSelection[0] || '';
|
|
94
|
+
}
|
|
95
|
+
};
|
|
65
96
|
/**
|
|
66
97
|
* Get default field values from template
|
|
67
98
|
*
|
|
@@ -70,7 +101,7 @@ var getMultiSelectFieldValue = function getMultiSelectFieldValue(value) {
|
|
|
70
101
|
*/
|
|
71
102
|
|
|
72
103
|
|
|
73
|
-
exports.
|
|
104
|
+
exports.handleMultiSelectOptionToggle = handleMultiSelectOptionToggle;
|
|
74
105
|
|
|
75
106
|
var getDefaultFieldValuesFromTemplate = function getDefaultFieldValuesFromTemplate(template, defaultUserId) {
|
|
76
107
|
var fields = {};
|
|
@@ -231,6 +262,7 @@ exports.getTemplateWithLookups = getTemplateWithLookups;
|
|
|
231
262
|
var _default = {
|
|
232
263
|
getChartFieldValue: getChartFieldValue,
|
|
233
264
|
getMultiSelectFieldValue: getMultiSelectFieldValue,
|
|
265
|
+
handleMultiSelectOptionToggle: handleMultiSelectOptionToggle,
|
|
234
266
|
getDefaultFieldValuesFromTemplate: getDefaultFieldValuesFromTemplate,
|
|
235
267
|
getImportFieldValues: getImportFieldValues,
|
|
236
268
|
getTemplateWithLookups: getTemplateWithLookups
|
package/dist/tableHelper.js
CHANGED
|
@@ -15,6 +15,8 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
15
15
|
|
|
16
16
|
var _shortid = _interopRequireDefault(require("shortid"));
|
|
17
17
|
|
|
18
|
+
var _moment = _interopRequireDefault(require("moment"));
|
|
19
|
+
|
|
18
20
|
var _hotFormulaParser = require("@builttocreate/hot-formula-parser");
|
|
19
21
|
|
|
20
22
|
var _Table = _interopRequireWildcard(require("./constants/Table"));
|
|
@@ -39,7 +41,7 @@ exports.getTableFieldLookupKey = getTableFieldLookupKey;
|
|
|
39
41
|
|
|
40
42
|
var getDefaultRow = function getDefaultRow() {
|
|
41
43
|
return {
|
|
42
|
-
_id: _shortid["default"].generate(),
|
|
44
|
+
_id: "".concat(_shortid["default"].generate()).concat((0, _moment["default"])().valueOf()),
|
|
43
45
|
deleted: false,
|
|
44
46
|
cells: {}
|
|
45
47
|
};
|
|
@@ -98,6 +100,17 @@ var getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters)
|
|
|
98
100
|
return row._id;
|
|
99
101
|
});
|
|
100
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Remove any duplicate rowIds. We have had instances where
|
|
105
|
+
* users encounter duplicate rowIds in the rowOrder.
|
|
106
|
+
* See: https://github.com/zionlabs/Issues/issues/1589
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
var cleanedValidRowOrder = [];
|
|
111
|
+
validRowOrder.forEach(function (rowId) {
|
|
112
|
+
if (cleanedValidRowOrder.indexOf(rowId) === -1) cleanedValidRowOrder.push(rowId);
|
|
113
|
+
});
|
|
101
114
|
|
|
102
115
|
if (filteredColumnIds.length > 0) {
|
|
103
116
|
var matchedRows = {};
|
|
@@ -111,11 +124,11 @@ var getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters)
|
|
|
111
124
|
});
|
|
112
125
|
if (rowMatched) matchedRows[row._id] = true;
|
|
113
126
|
});
|
|
114
|
-
return
|
|
127
|
+
return cleanedValidRowOrder.filter(function (rowId) {
|
|
115
128
|
return matchedRows[rowId];
|
|
116
129
|
});
|
|
117
130
|
} else {
|
|
118
|
-
return
|
|
131
|
+
return cleanedValidRowOrder;
|
|
119
132
|
}
|
|
120
133
|
};
|
|
121
134
|
/**
|
|
@@ -657,7 +670,7 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
657
670
|
activity.forEach(function (act) {
|
|
658
671
|
var rowId = act.document.row;
|
|
659
672
|
var columnId = act.document.column;
|
|
660
|
-
var cellKey = "".concat(field._id
|
|
673
|
+
var cellKey = "".concat(field._id).concat(rowId).concat(columnId);
|
|
661
674
|
if (!cellActivityLookup[cellKey]) cellActivityLookup[cellKey] = 0;
|
|
662
675
|
cellActivityLookup[cellKey] += 1;
|
|
663
676
|
});
|
|
@@ -671,7 +684,7 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
671
684
|
*/
|
|
672
685
|
|
|
673
686
|
tableReferences.push({
|
|
674
|
-
uniqueId: "".concat(field._id
|
|
687
|
+
uniqueId: "".concat(field._id).concat(row._id),
|
|
675
688
|
_id: field._id,
|
|
676
689
|
title: field.title,
|
|
677
690
|
type: _Table.inputGroupFieldTypes.inputGroupRowHeader,
|
|
@@ -690,7 +703,7 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
|
|
|
690
703
|
var lastColumnIndex = columnIndex === tableColumns.length - 1;
|
|
691
704
|
var value = row && row.cells ? row.cells[column._id] : '';
|
|
692
705
|
var displayValue = column.type === _FieldTableColumnTypes["default"].dropdown ? columnOptionValueLookup[column._id][value] : value;
|
|
693
|
-
var cellKey = "".concat(field._id
|
|
706
|
+
var cellKey = "".concat(field._id).concat(row._id).concat(column._id);
|
|
694
707
|
tableReferences.push({
|
|
695
708
|
uniqueId: cellKey,
|
|
696
709
|
_id: field._id,
|
|
@@ -768,7 +781,7 @@ exports.getTableRowLookupWithPopulatedDropdownCells = getTableRowLookupWithPopul
|
|
|
768
781
|
|
|
769
782
|
var getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRowLookupWithPopulatedDropdownCells(columns, rows) {
|
|
770
783
|
var rowsLookup = {};
|
|
771
|
-
var validRows = typeof
|
|
784
|
+
var validRows = typeof rows === 'string' ? JSON.parse(rows) : rows;
|
|
772
785
|
validRows.forEach(function (row) {
|
|
773
786
|
var nextRow = _objectSpread(_objectSpread({}, row), {}, {
|
|
774
787
|
cells: _objectSpread({}, row.cells)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@builttocreate/engine-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "Utility library for common logic shared across web and mobile",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@babel/polyfill": "^7.12.1",
|
|
48
48
|
"@builttocreate/hot-formula-parser": "4.0.1",
|
|
49
|
+
"moment": "^2.29.1",
|
|
49
50
|
"shortid": "^2.2.16"
|
|
50
51
|
},
|
|
51
52
|
"jest": {
|