UNPKG

16 kBJavaScriptView Raw
1function _classCallCheck(instance, Constructor) {
2 if (!(instance instanceof Constructor)) {
3 throw new TypeError("Cannot call a class as a function");
4 }
5}
6
7function _defineProperties(target, props) {
8 for (var i = 0; i < props.length; i++) {
9 var descriptor = props[i];
10 descriptor.enumerable = descriptor.enumerable || false;
11 descriptor.configurable = true;
12 if ("value" in descriptor) descriptor.writable = true;
13 Object.defineProperty(target, descriptor.key, descriptor);
14 }
15}
16
17function _createClass(Constructor, protoProps, staticProps) {
18 if (protoProps) _defineProperties(Constructor.prototype, protoProps);
19 if (staticProps) _defineProperties(Constructor, staticProps);
20 return Constructor;
21}
22
23function _extends() {
24 _extends = Object.assign || function (target) {
25 for (var i = 1; i < arguments.length; i++) {
26 var source = arguments[i];
27
28 for (var key in source) {
29 if (Object.prototype.hasOwnProperty.call(source, key)) {
30 target[key] = source[key];
31 }
32 }
33 }
34
35 return target;
36 };
37
38 return _extends.apply(this, arguments);
39}
40
41function _inherits(subClass, superClass) {
42 if (typeof superClass !== "function" && superClass !== null) {
43 throw new TypeError("Super expression must either be null or a function");
44 }
45
46 subClass.prototype = Object.create(superClass && superClass.prototype, {
47 constructor: {
48 value: subClass,
49 writable: true,
50 configurable: true
51 }
52 });
53 if (superClass) _setPrototypeOf(subClass, superClass);
54}
55
56function _getPrototypeOf(o) {
57 _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
58 return o.__proto__ || Object.getPrototypeOf(o);
59 };
60 return _getPrototypeOf(o);
61}
62
63function _setPrototypeOf(o, p) {
64 _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
65 o.__proto__ = p;
66 return o;
67 };
68
69 return _setPrototypeOf(o, p);
70}
71
72function _assertThisInitialized(self) {
73 if (self === void 0) {
74 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
75 }
76
77 return self;
78}
79
80function _possibleConstructorReturn(self, call) {
81 if (call && (typeof call === "object" || typeof call === "function")) {
82 return call;
83 }
84
85 return _assertThisInitialized(self);
86}
87
88const { React } = window;
89const PureComponent = React.PureComponent;
90const Component = React.Component;
91const useState = React.useState;
92const useEffect = React.useEffect;
93
94var events = ["AllowDeleteChanged", "AllowUpdateChanged", "AllowInsertChanged", "SaveFailed", "PartialDataLoaded", "DataLoadFailed", "FieldChanged", "RecordCreated", "RecordRefreshed", "RecordDeleting", "RecordDeleted", "AfterSave", "BeforeLoad", "BeforeSave", "CancelEdit", "CurrentIndexChanged", "DataLoaded", "DirtyChanged"];
95function dataObjectConnect(dataObject) {
96 var currentRowOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
97 return function connect(WrappedComponent) {
98 function getDataObject() {
99 return typeof dataObject === "string" ? window[dataObject] : dataObject;
100 }
101
102 var connector =
103 /*#__PURE__*/
104 function (_React$Component) {
105 _inherits(connector, _React$Component);
106
107 function connector(props) {
108 var _this;
109
110 _classCallCheck(this, connector);
111
112 _this = _possibleConstructorReturn(this, _getPrototypeOf(connector).call(this, props));
113 var initialState = {};
114 var dataObject = getDataObject();
115
116 if (currentRowOnly) {
117 var _iteratorNormalCompletion = true;
118 var _didIteratorError = false;
119 var _iteratorError = undefined;
120
121 try {
122 for (var _iterator = dataObject.getFields()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
123 var field = _step.value;
124 initialState[field.name] = null;
125 }
126 } catch (err) {
127 _didIteratorError = true;
128 _iteratorError = err;
129 } finally {
130 try {
131 if (!_iteratorNormalCompletion && _iterator.return != null) {
132 _iterator.return();
133 }
134 } finally {
135 if (_didIteratorError) {
136 throw _iteratorError;
137 }
138 }
139 }
140 } else {
141 initialState.data = [];
142 }
143
144 _this.state = Object.assign({
145 canDelete: dataObject.isDeleteAllowed(),
146 canUpdate: dataObject.isUpdateAllowed(),
147 canInsert: dataObject.isInsertAllowed(),
148 currentIndex: dataObject.getCurrentIndex(),
149 isDirty: dataObject.isDirty(),
150 isDeleting: false,
151 isLoading: dataObject.isDataLoading() === true,
152 isSaving: false,
153 loadError: null,
154 saveFailed: false
155 }, initialState);
156 _this.handleAfterSave = _this.handleAfterSave.bind(_assertThisInitialized(_assertThisInitialized(_this)));
157 _this.handleAllowDeleteChanged = _this.handleAllowDeleteChanged.bind(_assertThisInitialized(_assertThisInitialized(_this)));
158 _this.handleAllowInsertChanged = _this.handleAllowInsertChanged.bind(_assertThisInitialized(_assertThisInitialized(_this)));
159 _this.handleAllowUpdateChanged = _this.handleAllowUpdateChanged.bind(_assertThisInitialized(_assertThisInitialized(_this)));
160 _this.handleBeforeLoad = _this.handleBeforeLoad.bind(_assertThisInitialized(_assertThisInitialized(_this)));
161 _this.handleBeforeSave = _this.handleBeforeSave.bind(_assertThisInitialized(_assertThisInitialized(_this)));
162 _this.handleCancelEdit = _this.handleCancelEdit.bind(_assertThisInitialized(_assertThisInitialized(_this)));
163 _this.handleCurrentIndexChanged = _this.handleCurrentIndexChanged.bind(_assertThisInitialized(_assertThisInitialized(_this)));
164 _this.handleDataLoaded = _this.handleDataLoaded.bind(_assertThisInitialized(_assertThisInitialized(_this)));
165 _this.handleDataLoadFailed = _this.handleDataLoadFailed.bind(_assertThisInitialized(_assertThisInitialized(_this)));
166 _this.handleDirtyChanged = _this.handleDirtyChanged.bind(_assertThisInitialized(_assertThisInitialized(_this)));
167 _this.handlePartialDataLoaded = _this.handlePartialDataLoaded.bind(_assertThisInitialized(_assertThisInitialized(_this)));
168 _this.handleRecordDeleting = _this.handleRecordDeleting.bind(_assertThisInitialized(_assertThisInitialized(_this)));
169 _this.handleRecordDeleted = _this.handleRecordDeleted.bind(_assertThisInitialized(_assertThisInitialized(_this)));
170 _this.handleSaveFailed = _this.handleSaveFailed.bind(_assertThisInitialized(_assertThisInitialized(_this)));
171 _this.setFieldValue = _this.setFieldValue.bind(_assertThisInitialized(_assertThisInitialized(_this)));
172 _this.setFieldValues = _this.setFieldValues.bind(_assertThisInitialized(_assertThisInitialized(_this)));
173 _this.updateData = _this.updateData.bind(_assertThisInitialized(_assertThisInitialized(_this)));
174 _this.handleFieldChanged = _this.updateData;
175 _this.handleRecordCreated = _this.updateData;
176 _this.handleRecordRefreshed = _this.updateData;
177 return _this;
178 }
179
180 _createClass(connector, [{
181 key: "componentDidMount",
182 value: function componentDidMount() {
183 var dataObject = getDataObject();
184
185 for (var _i = 0; _i < events.length; _i++) {
186 var event = events[_i];
187 dataObject.attachEvent("on" + event, this["handle" + event]);
188 }
189
190 this.updateData();
191 }
192 }, {
193 key: "componentWillUnmount",
194 value: function componentWillUnmount() {
195 var dataObject = getDataObject();
196
197 for (var _i2 = 0; _i2 < events.length; _i2++) {
198 var event = events[_i2];
199 dataObject.detachEvent("on" + event, this["handle" + event]);
200 }
201 }
202 }, {
203 key: "cancelEdit",
204 value: function cancelEdit() {
205 getDataObject().cancelEdit();
206 }
207 }, {
208 key: "deleteRow",
209 value: function deleteRow(idx) {
210 var dataObject = getDataObject();
211 return new Promise(function (resolve) {
212 var callback = function callback(error, data) {
213 resolve({
214 data: data,
215 error: error
216 });
217 };
218
219 if (currentRowOnly) {
220 dataObject.deleteCurrentRow(callback);
221 } else {
222 dataObject.deleteRow(idx, callback);
223 }
224 });
225 }
226 }, {
227 key: "endEdit",
228 value: function endEdit(callback) {
229 var dataObject = getDataObject();
230 return new Promise(function (resolve) {
231 dataObject.endEdit(function (error, data) {
232 "function" === typeof callback && callback(error, data);
233 resolve({
234 data: data,
235 error: error
236 });
237 });
238 });
239 }
240 }, {
241 key: "updateData",
242 value: function updateData() {
243 var otherState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
244 var dataObject = getDataObject();
245
246 if (currentRowOnly) {
247 var record = dataObject.currentRow();
248 this.setState(Object.assign(record, otherState));
249 } else {
250 var data = dataObject.getData();
251 var current = dataObject.currentRow();
252 this.setState(Object.assign({
253 current: current,
254 data: data
255 }, otherState));
256 }
257 }
258 }, {
259 key: "handleAllowDeleteChanged",
260 value: function handleAllowDeleteChanged(allowed) {
261 this.setState({
262 canDelete: allowed
263 });
264 }
265 }, {
266 key: "handleAllowUpdateChanged",
267 value: function handleAllowUpdateChanged(allowed) {
268 this.setState({
269 canUpdate: allowed
270 });
271 }
272 }, {
273 key: "handleAllowInsertChanged",
274 value: function handleAllowInsertChanged(allowed) {
275 this.setState({
276 canInsert: allowed
277 });
278 }
279 }, {
280 key: "handleSaveFailed",
281 value: function handleSaveFailed() {
282 this.setState({
283 saveFailed: true
284 });
285 }
286 }, {
287 key: "handlePartialDataLoaded",
288 value: function handlePartialDataLoaded() {
289 return null;
290 }
291 }, {
292 key: "handleDataLoadFailed",
293 value: function handleDataLoadFailed(loadError) {
294 if (loadError) {
295 this.setState({
296 isLoading: false,
297 loadError: loadError
298 });
299 } else {
300 this.setState({
301 isLoading: false
302 });
303 }
304 }
305 }, {
306 key: "handleRecordDeleting",
307 value: function handleRecordDeleting() {
308 this.setState({
309 isDeleting: true
310 });
311 }
312 }, {
313 key: "handleRecordDeleted",
314 value: function handleRecordDeleted() {
315 this.updateData({
316 isDeleting: false
317 });
318 }
319 }, {
320 key: "handleAfterSave",
321 value: function handleAfterSave() {
322 this.updateData({
323 isSaving: false
324 });
325 }
326 }, {
327 key: "handleBeforeLoad",
328 value: function handleBeforeLoad() {
329 this.setState({
330 isLoading: true
331 });
332 }
333 }, {
334 key: "handleBeforeSave",
335 value: function handleBeforeSave() {
336 this.setState({
337 isSaving: true,
338 saveFailed: false
339 });
340 }
341 }, {
342 key: "handleCancelEdit",
343 value: function handleCancelEdit() {
344 this.updateData({
345 isSaving: false
346 });
347 }
348 }, {
349 key: "handleCurrentIndexChanged",
350 value: function handleCurrentIndexChanged(currentIndex) {
351 if (currentRowOnly) {
352 this.updateData();
353 } else {
354 this.updateData();
355 this.setState({
356 currentIndex: currentIndex
357 });
358 }
359 }
360 }, {
361 key: "handleDataLoaded",
362 value: function handleDataLoaded() {
363 this.updateData({
364 isLoading: false,
365 isSaving: false,
366 isDeleting: false,
367 saveFailed: false
368 });
369 }
370 }, {
371 key: "handleDirtyChanged",
372 value: function handleDirtyChanged() {
373 this.setState({
374 isDirty: getDataObject().isDirty()
375 });
376 }
377 }, {
378 key: "refreshData",
379 value: function refreshData(callback) {
380 var dataObject = getDataObject();
381 return new Promise(function (resolve) {
382 dataObject.refreshDataSource(function (error, data) {
383 "function" === typeof callback && callback(error, data);
384 resolve({
385 data: data,
386 error: error
387 });
388 });
389 });
390 }
391 }, {
392 key: "refreshRow",
393 value: function refreshRow(callback) {
394 var dataObject = getDataObject();
395 return new Promise(function (resolve) {
396 dataObject.refreshCurrentRow(function (error, data) {
397 "function" === typeof callback && callback(error, data);
398 resolve({
399 data: data,
400 error: error
401 });
402 });
403 });
404 }
405 }, {
406 key: "setFieldValue",
407 value: function setFieldValue(name, value) {
408 getDataObject().currentRow(name, value);
409 this.updateData();
410 }
411 }, {
412 key: "setFieldValues",
413 value: function setFieldValues(fields) {
414 var dataObject = getDataObject();
415
416 for (var field in fields) {
417 if (fields.hasOwnProperty(field)) {
418 dataObject.currentRow(field, fields[field]);
419 }
420 }
421
422 this.updateData();
423 }
424 }, {
425 key: "setCurrentIndex",
426 value: function setCurrentIndex(idx) {
427 getDataObject().setCurrentIndex(idx);
428 }
429 }, {
430 key: "setParameter",
431 value: function setParameter() {
432 var _getDataObject;
433
434 (_getDataObject = getDataObject()).setParameter.apply(_getDataObject, arguments);
435 }
436 }, {
437 key: "render",
438 value: function render() {
439 return React.createElement(WrappedComponent, _extends({}, this.state, {
440 onCancelEdit: this.cancelEdit,
441 onCurrentIndexChange: this.setCurrentIndex,
442 onDeleteRow: this.deleteRow,
443 onEndEdit: this.endEdit,
444 onFieldChange: this.setFieldValue,
445 onFieldsChange: this.setFieldValues,
446 onRefreshData: this.refreshData,
447 onRefreshRow: this.refreshRow,
448 onSetParameter: this.setParameter
449 }, this.props));
450 }
451 }]);
452
453 return connector;
454 }(React.Component);
455
456 function getDisplayName() {
457 return WrappedComponent.displayName || WrappedComponent.name || "Component";
458 }
459
460 connector.displayName = typeof dataObject === "string" ? dataObject : dataObject.getDataSourceId();
461 connector.displayName += "(".concat(getDisplayName(), ")");
462 return connector;
463 };
464}
465var properties = ["onCancelEdit", "onCurrentIndexChange", "onEndEdit", "onDeleteRow", "onFieldChange", "onFieldsChange", "onRefreshData", "onRefreshRow", "onSetParameter", "canDelete", "canUpdate", "canInsert", "currentIndex", "isDirty", "isDeleting", "isLoading", "isSaving", "loadError", "saveFailed"];
466
467export { dataObjectConnect, properties };