@builttocreate/engine-utils 1.16.0-rc5 → 1.16.0-rc6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/formHelper.js +97 -4
  2. package/package.json +1 -1
@@ -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.formatv2Form = exports.getDefaultPage = void 0;
8
+ exports["default"] = exports.getv2FormUpdatePayload = exports.formatv2Form = exports.getDefaultPage = void 0;
9
9
 
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
 
@@ -44,8 +44,8 @@ var getDefaultPage = function getDefaultPage() {
44
44
  /**
45
45
  * Format a version 2 form (template)
46
46
  *
47
- * @param {Object} form
48
- * @return {Object}
47
+ * @param {Object} form
48
+ * @return {Object}
49
49
  */
50
50
 
51
51
 
@@ -80,9 +80,11 @@ var formatv2Form = function formatv2Form(form) {
80
80
  } //Add field parameters
81
81
 
82
82
 
83
+ if (field.identifier) formattedData.identifier = field.identifier;
83
84
  if (field.title) formattedData.title = field.title;
84
85
  if (field.value) formattedData.value = field.value;
85
86
  if (field.tableColumns) formattedData.tableColumns = field.tableColumns;
87
+ if (field.tableColumnOrder) formattedData.tableColumnOrder = field.tableColumnOrder;
86
88
  if (field.options) formattedData.options = field.options;
87
89
  if (field.yTitle) formattedData.yTitle = field.yTitle;
88
90
  if (typeof field.yMax === 'number') formattedData.yMax = field.yMax;
@@ -100,10 +102,101 @@ var formatv2Form = function formatv2Form(form) {
100
102
  fields: nextFields
101
103
  });
102
104
  };
105
+ /**
106
+ * Format a version 2 form (template) update payload
107
+ *
108
+ * @param {Object} form
109
+ * @return {Object}
110
+ */
111
+
103
112
 
104
113
  exports.formatv2Form = formatv2Form;
114
+
115
+ var getv2FormUpdatePayload = function getv2FormUpdatePayload(formPayload) {
116
+ var pages = formPayload.pages,
117
+ fields = formPayload.fields;
118
+ var nextFields = (0, _toConsumableArray2["default"])(fields);
119
+ var nextFieldsIndexLookup = {};
120
+ nextFields.forEach(function (field, i) {
121
+ nextFieldsIndexLookup[field._id] = i;
122
+ });
123
+ /**
124
+ * Field Keys are fields that belong on the field object
125
+ * and not on the fieldPosition object.
126
+ */
127
+
128
+ var fieldKeys = ['identifier', 'title', 'value', 'tableColumns', 'tableColumnOrder', 'options', 'yTitle', 'yMax', 'yMin', 'xTitle', 'xMax', 'xMin'];
129
+ /**
130
+ * Step 1: Properly save fields and field postion date
131
+ */
132
+
133
+ var nextPages = (0, _toConsumableArray2["default"])(pages).map(function (page) {
134
+ var nextPage = _objectSpread(_objectSpread({}, page), {}, {
135
+ fields: []
136
+ });
137
+
138
+ page.fields.forEach(function (fieldPosition) {
139
+ var fieldData = {
140
+ _id: fieldPosition.field
141
+ };
142
+ var fieldPositionData = {};
143
+ /**
144
+ * Step 1.1: Sort field and fieldPosition data
145
+ *
146
+ * If the fieldPosition.field doesn't to exist inside form.fields
147
+ * then that means it's a brand new fieldPosition and field and
148
+ * we need to add it the new field to form.fields.
149
+ */
150
+
151
+ Object.keys(fieldPosition).forEach(function (key) {
152
+ if (fieldKeys.indexOf(key) !== -1) {
153
+ fieldData[key] = fieldPosition[key];
154
+ } else {
155
+ fieldPositionData[key] = fieldPosition[key];
156
+ }
157
+ });
158
+ /**
159
+ * Step 1.2: Check if field needs to be created or simply updated
160
+ *
161
+ * If the fieldPosition.field doesn't exist inside form.fields
162
+ * then that means it's a brand new fieldPosition and field and
163
+ * we need to add it the new field to form.fields.
164
+ */
165
+
166
+ var fieldIndex = nextFieldsIndexLookup[fieldData._id];
167
+
168
+ if (typeof fieldIndex !== 'number') {
169
+ //Step 1.2.1 Field does not exist so add it
170
+ nextFields.push(fieldData);
171
+ } else {
172
+ //Step 1.2.2 Field does exist so update it
173
+ nextFields[fieldIndex] = _objectSpread(_objectSpread({}, nextFields[fieldIndex]), fieldData);
174
+ }
175
+ /**
176
+ * Step 1.3: Add the fieldPosition to the page.fields
177
+ */
178
+
179
+
180
+ nextPage.fields.push(fieldPositionData);
181
+ });
182
+ return nextPage;
183
+ });
184
+ /**
185
+ * Step 2: Delete any fields that no longer have field positions associated with them.
186
+ *
187
+ * TODO
188
+ */
189
+
190
+ return _objectSpread(_objectSpread({}, formPayload), {}, {
191
+ pages: nextPages,
192
+ fields: nextFields
193
+ });
194
+ };
195
+
196
+ exports.getv2FormUpdatePayload = getv2FormUpdatePayload;
105
197
  var _default = {
106
198
  getDefaultPage: getDefaultPage,
107
- formatv2Form: formatv2Form
199
+ formatv2Form: formatv2Form,
200
+ getv2FormUpdatePayload: getv2FormUpdatePayload
108
201
  };
109
202
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builttocreate/engine-utils",
3
- "version": "1.16.0-rc5",
3
+ "version": "1.16.0-rc6",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [