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

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 -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
 
@@ -36,6 +36,8 @@ var getDefaultPage = function getDefaultPage() {
36
36
  return _objectSpread({
37
37
  _id: (0, _generateObjectId["default"])(),
38
38
  name: 'New Page',
39
+ width: 816,
40
+ height: 1056,
39
41
  fields: [],
40
42
  layoutMode: _PageLayoutModes["default"].grid,
41
43
  fieldStyleMode: _FieldStyleModes["default"].normal
@@ -44,8 +46,8 @@ var getDefaultPage = function getDefaultPage() {
44
46
  /**
45
47
  * Format a version 2 form (template)
46
48
  *
47
- * @param {Object} form
48
- * @return {Object}
49
+ * @param {Object} form
50
+ * @return {Object}
49
51
  */
50
52
 
51
53
 
@@ -80,9 +82,11 @@ var formatv2Form = function formatv2Form(form) {
80
82
  } //Add field parameters
81
83
 
82
84
 
85
+ if (field.identifier) formattedData.identifier = field.identifier;
83
86
  if (field.title) formattedData.title = field.title;
84
87
  if (field.value) formattedData.value = field.value;
85
88
  if (field.tableColumns) formattedData.tableColumns = field.tableColumns;
89
+ if (field.tableColumnOrder) formattedData.tableColumnOrder = field.tableColumnOrder;
86
90
  if (field.options) formattedData.options = field.options;
87
91
  if (field.yTitle) formattedData.yTitle = field.yTitle;
88
92
  if (typeof field.yMax === 'number') formattedData.yMax = field.yMax;
@@ -100,10 +104,101 @@ var formatv2Form = function formatv2Form(form) {
100
104
  fields: nextFields
101
105
  });
102
106
  };
107
+ /**
108
+ * Format a version 2 form (template) update payload
109
+ *
110
+ * @param {Object} form
111
+ * @return {Object}
112
+ */
113
+
103
114
 
104
115
  exports.formatv2Form = formatv2Form;
116
+
117
+ var getv2FormUpdatePayload = function getv2FormUpdatePayload(formPayload) {
118
+ var pages = formPayload.pages,
119
+ fields = formPayload.fields;
120
+ var nextFields = (0, _toConsumableArray2["default"])(fields);
121
+ var nextFieldsIndexLookup = {};
122
+ nextFields.forEach(function (field, i) {
123
+ nextFieldsIndexLookup[field._id] = i;
124
+ });
125
+ /**
126
+ * Field Keys are fields that belong on the field object
127
+ * and not on the fieldPosition object.
128
+ */
129
+
130
+ var fieldKeys = ['identifier', 'type', 'title', 'value', 'tableColumns', 'tableColumnOrder', 'options', 'yTitle', 'yMax', 'yMin', 'xTitle', 'xMax', 'xMin'];
131
+ /**
132
+ * Step 1: Properly save fields and field postion date
133
+ */
134
+
135
+ var nextPages = (0, _toConsumableArray2["default"])(pages).map(function (page) {
136
+ var nextPage = _objectSpread(_objectSpread({}, page), {}, {
137
+ fields: []
138
+ });
139
+
140
+ page.fields.forEach(function (fieldPosition) {
141
+ var fieldData = {
142
+ _id: fieldPosition.field
143
+ };
144
+ var fieldPositionData = {};
145
+ /**
146
+ * Step 1.1: Sort field and fieldPosition data
147
+ *
148
+ * If the fieldPosition.field doesn't to exist inside form.fields
149
+ * then that means it's a brand new fieldPosition and field and
150
+ * we need to add it the new field to form.fields.
151
+ */
152
+
153
+ Object.keys(fieldPosition).forEach(function (key) {
154
+ if (fieldKeys.indexOf(key) !== -1) {
155
+ fieldData[key] = fieldPosition[key];
156
+ } else {
157
+ fieldPositionData[key] = fieldPosition[key];
158
+ }
159
+ });
160
+ /**
161
+ * Step 1.2: Check if field needs to be created or simply updated
162
+ *
163
+ * If the fieldPosition.field doesn't exist inside form.fields
164
+ * then that means it's a brand new fieldPosition and field and
165
+ * we need to add it the new field to form.fields.
166
+ */
167
+
168
+ var fieldIndex = nextFieldsIndexLookup[fieldData._id];
169
+
170
+ if (typeof fieldIndex !== 'number') {
171
+ //Step 1.2.1 Field does not exist so add it
172
+ nextFields.push(fieldData);
173
+ } else {
174
+ //Step 1.2.2 Field does exist so update it
175
+ nextFields[fieldIndex] = _objectSpread(_objectSpread({}, nextFields[fieldIndex]), fieldData);
176
+ }
177
+ /**
178
+ * Step 1.3: Add the fieldPosition to the page.fields
179
+ */
180
+
181
+
182
+ nextPage.fields.push(fieldPositionData);
183
+ });
184
+ return nextPage;
185
+ });
186
+ /**
187
+ * Step 2: Delete any fields that no longer have field positions associated with them.
188
+ *
189
+ * TODO
190
+ */
191
+
192
+ return _objectSpread(_objectSpread({}, formPayload), {}, {
193
+ pages: nextPages,
194
+ fields: nextFields
195
+ });
196
+ };
197
+
198
+ exports.getv2FormUpdatePayload = getv2FormUpdatePayload;
105
199
  var _default = {
106
200
  getDefaultPage: getDefaultPage,
107
- formatv2Form: formatv2Form
201
+ formatv2Form: formatv2Form,
202
+ getv2FormUpdatePayload: getv2FormUpdatePayload
108
203
  };
109
204
  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-rc7",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [