@builttocreate/engine-utils 1.16.0-rc4 → 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 +99 -5
  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,10 +80,12 @@ 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;
86
- if (field.options) formattedData.tableColumns = field.options;
87
+ if (field.tableColumnOrder) formattedData.tableColumnOrder = field.tableColumnOrder;
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;
89
91
  if (typeof field.yMin === 'number') formattedData.yMin = field.yMin;
@@ -93,16 +95,108 @@ var formatv2Form = function formatv2Form(form) {
93
95
  nextPage.fields.push(formattedData);
94
96
  nextFields.push(formattedData);
95
97
  });
98
+ return nextPage;
96
99
  });
97
100
  return _objectSpread(_objectSpread({}, form), {}, {
98
101
  pages: nextPages,
99
102
  fields: nextFields
100
103
  });
101
104
  };
105
+ /**
106
+ * Format a version 2 form (template) update payload
107
+ *
108
+ * @param {Object} form
109
+ * @return {Object}
110
+ */
111
+
102
112
 
103
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;
104
197
  var _default = {
105
198
  getDefaultPage: getDefaultPage,
106
- formatv2Form: formatv2Form
199
+ formatv2Form: formatv2Form,
200
+ getv2FormUpdatePayload: getv2FormUpdatePayload
107
201
  };
108
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-rc4",
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": [