react-hook-core 0.2.1 → 0.2.3

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/lib/useEdit.js CHANGED
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
3
+ __assign = Object.assign || function (t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  var react_1 = require("react");
@@ -21,442 +21,460 @@ var reflect_1 = require("./reflect");
21
21
  var state_1 = require("./state");
22
22
  var update_1 = require("./update");
23
23
  exports.useEdit = function (refForm, initialState, service, p2, p) {
24
- var params = react_router_1.useParams();
25
- var baseProps = exports.useCoreEdit(refForm, initialState, service, p2, p);
26
- react_1.useEffect(function () {
27
- if (refForm) {
28
- var registerEvents = (p2.ui ? p2.ui.registerEvents : undefined);
29
- core_1.initForm(baseProps.refForm.current, registerEvents);
30
- }
31
- var n = baseProps.getModelName(refForm.current);
32
- var obj = {};
33
- obj[n] = baseProps.createModel();
34
- baseProps.setState(obj);
35
- var keys;
36
- if (p && !p.keys && service && service.metadata) {
37
- var metadata = (p.metadata ? p.metadata : service.metadata());
38
- if (metadata) {
39
- var meta = edit_1.build(metadata);
40
- keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
41
- var version = (p.version ? p.version : (meta ? meta.version : undefined));
42
- p.keys = keys;
43
- p.version = version;
44
- }
45
- }
46
- var id = core_1.buildId(params, keys);
47
- if (p && p.initialize) {
48
- p.initialize(id, baseProps.load, baseProps.setState, p.callback);
49
- }
50
- else {
51
- try {
52
- baseProps.load(id, p ? p.callback : undefined);
53
- }
54
- catch (error) {
55
- p2.showError(error);
56
- core_1.hideLoading(p2.loading);
57
- }
58
- }
59
- }, []);
60
- return __assign({}, baseProps);
24
+ var params = react_router_1.useParams();
25
+ var baseProps = exports.useCoreEdit(refForm, initialState, service, p2, p);
26
+ react_1.useEffect(function () {
27
+ if (refForm) {
28
+ var registerEvents = (p2.ui ? p2.ui.registerEvents : undefined);
29
+ core_1.initForm(baseProps.refForm.current, registerEvents);
30
+ }
31
+ var n = baseProps.getModelName(refForm.current);
32
+ var obj = {};
33
+ obj[n] = baseProps.createModel();
34
+ baseProps.setState(obj);
35
+ var keys;
36
+ if (p && !p.keys && service && service.metadata) {
37
+ var metadata = (p.metadata ? p.metadata : service.metadata());
38
+ if (metadata) {
39
+ var meta = edit_1.build(metadata);
40
+ keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
41
+ var version = (p.version ? p.version : (meta ? meta.version : undefined));
42
+ p.keys = keys;
43
+ p.version = version;
44
+ }
45
+ }
46
+ var id = core_1.buildId(params, keys);
47
+ if (p && p.initialize) {
48
+ p.initialize(id, baseProps.load, baseProps.setState, p.callback);
49
+ }
50
+ else {
51
+ try {
52
+ baseProps.load(id, p ? p.callback : undefined);
53
+ }
54
+ catch (error) {
55
+ p2.showError(error);
56
+ core_1.hideLoading(p2.loading);
57
+ }
58
+ }
59
+ }, []);
60
+ return __assign({}, baseProps);
61
61
  };
62
62
  exports.useEditProps = function (props, refForm, initialState, service, p2, p) {
63
- var params = react_router_1.useParams();
64
- var baseProps = exports.useCoreEdit(refForm, initialState, service, p2, p, props);
65
- react_1.useEffect(function () {
66
- if (refForm) {
67
- var registerEvents = (p2.ui ? p2.ui.registerEvents : undefined);
68
- core_1.initForm(baseProps.refForm.current, registerEvents);
69
- }
70
- var n = baseProps.getModelName(refForm.current);
71
- var obj = {};
72
- obj[n] = baseProps.createModel();
73
- baseProps.setState(obj);
74
- var keys;
75
- if (p && !p.keys && service && service.metadata) {
76
- var metadata = (p.metadata ? p.metadata : service.metadata());
77
- if (metadata) {
78
- var meta = edit_1.build(metadata);
79
- keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
80
- var version = (p.version ? p.version : (meta ? meta.version : undefined));
81
- p.keys = keys;
82
- p.version = version;
83
- }
84
- }
85
- var id = core_1.buildId(params, keys);
86
- if (p && p.initialize) {
87
- p.initialize(id, baseProps.load, baseProps.setState, p.callback);
88
- }
89
- else {
90
- baseProps.load(id, p ? p.callback : undefined);
91
- }
92
- }, []);
93
- return __assign({}, baseProps);
63
+ var params = react_router_1.useParams();
64
+ var baseProps = exports.useCoreEdit(refForm, initialState, service, p2, p, props);
65
+ react_1.useEffect(function () {
66
+ if (refForm) {
67
+ var registerEvents = (p2.ui ? p2.ui.registerEvents : undefined);
68
+ core_1.initForm(baseProps.refForm.current, registerEvents);
69
+ }
70
+ var n = baseProps.getModelName(refForm.current);
71
+ var obj = {};
72
+ obj[n] = baseProps.createModel();
73
+ baseProps.setState(obj);
74
+ var keys;
75
+ if (p && !p.keys && service && service.metadata) {
76
+ var metadata = (p.metadata ? p.metadata : service.metadata());
77
+ if (metadata) {
78
+ var meta = edit_1.build(metadata);
79
+ keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
80
+ var version = (p.version ? p.version : (meta ? meta.version : undefined));
81
+ p.keys = keys;
82
+ p.version = version;
83
+ }
84
+ }
85
+ var id = core_1.buildId(params, keys);
86
+ if (p && p.initialize) {
87
+ p.initialize(id, baseProps.load, baseProps.setState, p.callback);
88
+ }
89
+ else {
90
+ baseProps.load(id, p ? p.callback : undefined);
91
+ }
92
+ }, []);
93
+ return __assign({}, baseProps);
94
94
  };
95
95
  exports.useEditOneProps = function (p) {
96
- return exports.useEditProps(p.props, p.refForm, p.initialState, p.service, p, p);
96
+ return exports.useEditProps(p.props, p.refForm, p.initialState, p.service, p, p);
97
97
  };
98
98
  exports.useEditOne = function (p) {
99
- return exports.useEdit(p.refForm, p.initialState, p.service, p, p);
99
+ return exports.useEdit(p.refForm, p.initialState, p.service, p, p);
100
100
  };
101
101
  exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
102
- var navigate = react_router_1.useNavigate();
103
- var back = function (event) {
104
- if (event) {
105
- event.preventDefault();
106
- }
102
+ var navigate = react_router_1.useNavigate();
103
+ var _a = react_1.useState(), running = _a[0], setRunning = _a[1];
104
+ var getModelName = function (f) {
105
+ if (p && p.name && p.name.length > 0) {
106
+ return p.name;
107
+ }
108
+ return core_1.getModelName(f);
109
+ };
110
+ var baseProps = update_1.useUpdate(initialState, getModelName, p1.getLocale);
111
+ var state = baseProps.state, setState = baseProps.setState;
112
+ var _b = merge_1.useMergeState({
113
+ newMode: false,
114
+ setBack: false,
115
+ readOnly: p ? p.readOnly : undefined,
116
+ originalModel: undefined
117
+ }), flag = _b[0], setFlag = _b[1];
118
+ var showModel = function (model) {
119
+ var n = getModelName(refForm.current);
120
+ var objSet = {};
121
+ objSet[n] = model;
122
+ setState(objSet);
123
+ if (p && p.readOnly) {
124
+ var f = refForm.current;
125
+ formutil_1.setReadOnly(f);
126
+ }
127
+ };
128
+ var resetState = function (newMode, model, originalModel) {
129
+ setFlag({ newMode: newMode, originalModel: originalModel });
130
+ showModel(model);
131
+ };
132
+ var _handleNotFound = function (form) {
133
+ var msg = core_1.message(p1.resource.value, 'error_404', 'error');
134
+ if (form) {
135
+ formutil_1.setReadOnly(form);
136
+ }
137
+ p1.showError(msg.message, msg.title, undefined, function () { return window.history.back; });
138
+ };
139
+ var handleNotFound = (p && p.handleNotFound ? p.handleNotFound : _handleNotFound);
140
+ var _getModel = function () {
141
+ var n = getModelName(refForm.current);
142
+ if (props) {
143
+ return props[n] || state[n];
144
+ }
145
+ else {
146
+ return state[n];
147
+ }
148
+ };
149
+ var getModel = (p && p.getModel ? p.getModel : _getModel);
150
+ var back = function (event) {
151
+ if (event) {
152
+ event.preventDefault();
153
+ }
154
+ if (flag.newMode === true) {
155
+ navigate(-1);
156
+ }
157
+ else {
158
+ var obj = getModel();
159
+ var diffObj = reflect_1.makeDiff(flag.originalModel, obj);
160
+ var objKeys = Object.keys(diffObj);
161
+ if (objKeys.length === 0) {
107
162
  navigate(-1);
108
- };
109
- var _a = react_1.useState(), running = _a[0], setRunning = _a[1];
110
- var getModelName = function (f) {
111
- if (p && p.name && p.name.length > 0) {
112
- return p.name;
113
- }
114
- return core_1.getModelName(f);
115
- };
116
- var baseProps = update_1.useUpdate(initialState, getModelName, p1.getLocale);
117
- var state = baseProps.state, setState = baseProps.setState;
118
- var _b = merge_1.useMergeState({
119
- newMode: false,
120
- setBack: false,
121
- readOnly: p ? p.readOnly : undefined,
122
- originalModel: undefined
123
- }), flag = _b[0], setFlag = _b[1];
124
- var showModel = function (model) {
125
- var n = getModelName(refForm.current);
126
- var objSet = {};
127
- objSet[n] = model;
128
- setState(objSet);
129
- if (p && p.readOnly) {
130
- var f = refForm.current;
131
- formutil_1.setReadOnly(f);
132
- }
133
- };
134
- var resetState = function (newMode, model, originalModel) {
135
- setFlag({ newMode: newMode, originalModel: originalModel });
136
- showModel(model);
137
- };
138
- var _handleNotFound = function (form) {
139
- var msg = core_1.message(p1.resource.value, 'error_404', 'error');
140
- if (form) {
141
- formutil_1.setReadOnly(form);
142
- }
143
- p1.showError(msg.message, msg.title, undefined, function () { return window.history.back; });
144
- };
145
- var handleNotFound = (p && p.handleNotFound ? p.handleNotFound : _handleNotFound);
146
- var _getModel = function () {
147
- var n = getModelName(refForm.current);
148
- if (props) {
149
- return props[n] || state[n];
163
+ }
164
+ else {
165
+ var msg = core_1.message(p1.resource.value, 'msg_confirm_back', 'confirm', 'yes', 'no');
166
+ p1.confirm(msg.message, msg.title, function () {
167
+ navigate(-1);
168
+ }, msg.no, msg.yes);
169
+ }
170
+ }
171
+ };
172
+ var _createModel = function () {
173
+ var metadata = (p && p.metadata ? p.metadata : (service.metadata ? service.metadata() : undefined));
174
+ if (metadata) {
175
+ var obj = edit_1.createModel(metadata);
176
+ return obj;
177
+ }
178
+ else {
179
+ var obj = {};
180
+ return obj;
181
+ }
182
+ };
183
+ var createModel = (p && p.createModel ? p.createModel : _createModel);
184
+ var create = function (event) {
185
+ event.preventDefault();
186
+ var obj = createModel();
187
+ resetState(true, obj, undefined);
188
+ var u = p1.ui;
189
+ if (u) {
190
+ setTimeout(function () {
191
+ u.removeFormError(refForm.current);
192
+ }, 100);
193
+ }
194
+ };
195
+ var _onSave = function (isBack) {
196
+ if (flag.newMode === true) {
197
+ var m = core_1.message(p1.resource.value, 'error_permission_add', 'error_permission');
198
+ p1.showError(m.message, m.title);
199
+ return;
200
+ }
201
+ else if (p && flag.newMode === false && p.readOnly) {
202
+ var msg = core_1.message(p1.resource.value, 'error_permission_edit', 'error_permission');
203
+ p1.showError(msg.message, msg.title);
204
+ return;
205
+ }
206
+ else {
207
+ if (running === true) {
208
+ return;
209
+ }
210
+ var obj_1 = getModel();
211
+ var metadata = (p && p.metadata ? p.metadata : (service.metadata ? service.metadata() : undefined));
212
+ var keys = void 0;
213
+ var version_1;
214
+ if (p && metadata && (!p.keys || !p.version)) {
215
+ var meta = edit_1.build(metadata);
216
+ keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
217
+ version_1 = (p.version ? p.version : (meta ? meta.version : undefined));
218
+ }
219
+ if (flag.newMode) {
220
+ validate(obj_1, function () {
221
+ var msg = core_1.message(p1.resource.value, 'msg_confirm_save', 'confirm', 'yes', 'no');
222
+ p1.confirm(msg.message, msg.title, function () {
223
+ doSave(obj_1, undefined, version_1, isBack);
224
+ }, msg.no, msg.yes);
225
+ });
226
+ }
227
+ else {
228
+ var diffObj_1 = reflect_1.makeDiff(flag.originalModel, obj_1, keys, version_1);
229
+ var objKeys = Object.keys(diffObj_1);
230
+ if (objKeys.length === 0) {
231
+ p1.showMessage(p1.resource.value('msg_no_change'));
150
232
  }
151
233
  else {
152
- return state[n];
153
- }
154
- };
155
- var getModel = (p && p.getModel ? p.getModel : _getModel);
156
- var _createModel = function () {
157
- var metadata = (p && p.metadata ? p.metadata : (service.metadata ? service.metadata() : undefined));
158
- if (metadata) {
159
- var obj = edit_1.createModel(metadata);
160
- return obj;
234
+ validate(obj_1, function () {
235
+ var msg = core_1.message(p1.resource.value, 'msg_confirm_save', 'confirm', 'yes', 'no');
236
+ p1.confirm(msg.message, msg.title, function () {
237
+ doSave(obj_1, diffObj_1, version_1, isBack);
238
+ }, msg.no, msg.yes);
239
+ });
240
+ }
241
+ }
242
+ }
243
+ };
244
+ var onSave = (p && p.onSave ? p.onSave : _onSave);
245
+ var save = function (event) {
246
+ event.preventDefault();
247
+ event.persist();
248
+ onSave();
249
+ };
250
+ var _validate = function (obj, callback) {
251
+ if (p1.ui) {
252
+ var valid = p1.ui.validateForm(refForm.current, state_1.localeOf(undefined, p1.getLocale));
253
+ if (valid) {
254
+ callback(obj);
255
+ }
256
+ }
257
+ else {
258
+ callback(obj);
259
+ }
260
+ };
261
+ var validate = (p && p.validate ? p.validate : _validate);
262
+ var _succeed = function (msg, origin, version, isBack, model) {
263
+ if (model) {
264
+ setFlag({ newMode: false });
265
+ if (model && flag.setBack === true) {
266
+ resetState(false, model, reflect_1.clone(model));
267
+ }
268
+ else {
269
+ edit_1.handleVersion(origin, version);
270
+ }
271
+ }
272
+ else {
273
+ edit_1.handleVersion(origin, version);
274
+ }
275
+ p1.showMessage(msg);
276
+ if (isBack) {
277
+ back(undefined);
278
+ }
279
+ };
280
+ var succeed = (p && p.succeed ? p.succeed : _succeed);
281
+ var _fail = function (result) {
282
+ var f = refForm.current;
283
+ var u = p1.ui;
284
+ if (u && f) {
285
+ var unmappedErrors = u.showFormError(f, result);
286
+ formutil_1.focusFirstError(f);
287
+ if (unmappedErrors && unmappedErrors.length > 0) {
288
+ var t = p1.resource.value('error');
289
+ if (p1.ui && p1.ui.buildErrorMessage) {
290
+ var msg = p1.ui.buildErrorMessage(unmappedErrors);
291
+ p1.showError(msg, t);
161
292
  }
162
293
  else {
163
- var obj = {};
164
- return obj;
165
- }
166
- };
167
- var createModel = (p && p.createModel ? p.createModel : _createModel);
168
- var create = function (event) {
169
- event.preventDefault();
170
- var obj = createModel();
171
- resetState(true, obj, undefined);
172
- var u = p1.ui;
173
- if (u) {
174
- setTimeout(function () {
175
- u.removeFormError(refForm.current);
176
- }, 100);
177
- }
178
- };
179
- var _onSave = function (isBack) {
180
- if (flag.newMode === true) {
181
- var m = core_1.message(p1.resource.value, 'error_permission_add', 'error_permission');
182
- p1.showError(m.message, m.title);
183
- return;
184
- }
185
- else if (p && flag.newMode === false && p.readOnly) {
186
- var msg = core_1.message(p1.resource.value, 'error_permission_edit', 'error_permission');
187
- p1.showError(msg.message, msg.title);
188
- return;
294
+ p1.showError(unmappedErrors[0].field + ' ' + unmappedErrors[0].code + ' ' + unmappedErrors[0].message, t);
295
+ }
296
+ }
297
+ }
298
+ else {
299
+ var t = p1.resource.value('error');
300
+ if (result.length > 0) {
301
+ p1.showError(result[0].field + ' ' + result[0].code + ' ' + result[0].message, t);
302
+ }
303
+ else {
304
+ p1.showError(t, t);
305
+ }
306
+ }
307
+ };
308
+ var fail = (p && p.fail ? p.fail : _fail);
309
+ var _handleError = function (err) {
310
+ if (err) {
311
+ setRunning(false);
312
+ core_1.hideLoading(p1.loading);
313
+ var errMsg = p1.resource.value('error_internal');
314
+ var data = (err && err.response) ? err.response : err;
315
+ if (data.status === 400) {
316
+ var errMsg_1 = p1.resource.value('error_400');
317
+ p1.showError(errMsg_1, "Error");
318
+ }
319
+ else {
320
+ p1.showError(errMsg, "Error");
321
+ }
322
+ }
323
+ };
324
+ var handleError = (p && p.handleError ? p.handleError : _handleError);
325
+ var _postSave = function (r, origin, version, isPatch, backOnSave) {
326
+ setRunning(false);
327
+ core_1.hideLoading(p1.loading);
328
+ var x = r;
329
+ var successMsg = p1.resource.value('msg_save_success');
330
+ var newMod = flag.newMode;
331
+ if (Array.isArray(x)) {
332
+ fail(x);
333
+ }
334
+ else if (!isNaN(x)) {
335
+ if (x > 0) {
336
+ succeed(successMsg, origin, version, backOnSave);
337
+ }
338
+ else {
339
+ if (newMod && x <= 0) {
340
+ handleDuplicateKey();
341
+ }
342
+ else if (!newMod && x === 0) {
343
+ handleNotFound();
189
344
  }
190
345
  else {
191
- if (running === true) {
192
- return;
193
- }
194
- var obj_1 = getModel();
195
- var metadata = (p && p.metadata ? p.metadata : (service.metadata ? service.metadata() : undefined));
196
- var keys = void 0;
197
- var version_1;
198
- if (p && metadata && (!p.keys || !p.version)) {
199
- var meta = edit_1.build(metadata);
200
- keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
201
- version_1 = (p.version ? p.version : (meta ? meta.version : undefined));
202
- }
203
- if (flag.newMode) {
204
- validate(obj_1, function () {
205
- var msg = core_1.message(p1.resource.value, 'msg_confirm_save', 'confirm', 'yes', 'no');
206
- p1.confirm(msg.message, msg.title, function () {
207
- doSave(obj_1, undefined, version_1, isBack);
208
- }, msg.no, msg.yes);
209
- });
210
- }
211
- else {
212
- var diffObj_1 = reflect_1.makeDiff(edit_1.initPropertyNullInModel(flag.originalModel, metadata), obj_1, keys, version_1);
213
- var objKeys = Object.keys(diffObj_1);
214
- if (objKeys.length === 0) {
215
- p1.showMessage(p1.resource.value('msg_no_change'));
216
- }
217
- else {
218
- validate(obj_1, function () {
219
- var msg = core_1.message(p1.resource.value, 'msg_confirm_save', 'confirm', 'yes', 'no');
220
- p1.confirm(msg.message, msg.title, function () {
221
- doSave(obj_1, diffObj_1, version_1, isBack);
222
- }, msg.no, msg.yes);
223
- });
224
- }
225
- }
226
- }
227
- };
228
- var onSave = (p && p.onSave ? p.onSave : _onSave);
229
- var save = function (event) {
230
- event.preventDefault();
231
- event.persist();
232
- onSave();
233
- };
234
- var _validate = function (obj, callback) {
235
- if (p1.ui) {
236
- var valid = p1.ui.validateForm(refForm.current, state_1.localeOf(undefined, p1.getLocale));
237
- if (valid) {
238
- callback(obj);
239
- }
346
+ var title = p1.resource.value('error');
347
+ var err = p1.resource.value('error_version');
348
+ p1.showError(err, title);
349
+ }
350
+ }
351
+ }
352
+ else {
353
+ var result = r;
354
+ if (isPatch) {
355
+ var keys = Object.keys(result);
356
+ var a = origin;
357
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
358
+ var k = keys_1[_i];
359
+ a[k] = result[k];
360
+ }
361
+ succeed(successMsg, a, undefined, backOnSave, a);
362
+ }
363
+ else {
364
+ succeed(successMsg, origin, version, backOnSave, r);
365
+ }
366
+ p1.showMessage(successMsg);
367
+ }
368
+ };
369
+ var postSave = (p && p.postSave ? p.postSave : _postSave);
370
+ var _handleDuplicateKey = function (result) {
371
+ var msg = core_1.message(p1.resource.value, 'error_duplicate_key', 'error');
372
+ p1.showError(msg.message, msg.title);
373
+ };
374
+ var handleDuplicateKey = (p && p.handleDuplicateKey ? p.handleDuplicateKey : _handleDuplicateKey);
375
+ var _doSave = function (obj, body, version, isBack) {
376
+ setRunning(true);
377
+ core_1.showLoading(p1.loading);
378
+ var isBackO = (isBack != null && isBack !== undefined ? isBack : false);
379
+ var patchable = (p ? p.patchable : true);
380
+ if (flag.newMode === false) {
381
+ if (service.patch && patchable !== false && body && Object.keys(body).length > 0) {
382
+ service.patch(body).then(function (res) {
383
+ postSave(res, obj, version, true, isBackO);
384
+ }).catch(handleError);
385
+ }
386
+ else {
387
+ service.update(obj).then(function (res) { return postSave(res, obj, version, false, isBackO); }).catch(handleError);
388
+ }
389
+ }
390
+ else {
391
+ service.insert(obj).then(function (res) { return postSave(res, obj, version, false, isBackO); }).catch(handleError);
392
+ }
393
+ };
394
+ var doSave = (p && p.doSave ? p.doSave : _doSave);
395
+ var _load = function (_id, callback) {
396
+ var id = _id;
397
+ if (id != null && id !== '') {
398
+ setRunning(true);
399
+ core_1.showLoading(p1.loading);
400
+ service.load(id).then(function (obj) {
401
+ if (!obj) {
402
+ handleNotFound(refForm.current);
240
403
  }
241
404
  else {
242
- callback(obj);
405
+ setFlag({ newMode: false, originalModel: reflect_1.clone(obj) });
406
+ if (callback) {
407
+ callback(obj, showModel);
408
+ }
409
+ else {
410
+ showModel(obj);
411
+ }
243
412
  }
244
- };
245
- var validate = (p && p.validate ? p.validate : _validate);
246
- var _succeed = function (msg, origin, version, isBack, model) {
247
- if (model) {
248
- setFlag({ newMode: false });
249
- if (model && flag.setBack === true) {
250
- resetState(false, model, reflect_1.clone(model));
251
- }
252
- else {
253
- edit_1.handleVersion(origin, version);
254
- }
255
- }
256
- else {
257
- edit_1.handleVersion(origin, version);
258
- }
259
- p1.showMessage(msg);
260
- if (isBack) {
261
- back(undefined);
262
- }
263
- };
264
- var succeed = (p && p.succeed ? p.succeed : _succeed);
265
- var _fail = function (result) {
266
- var f = refForm.current;
267
- var u = p1.ui;
268
- if (u && f) {
269
- var unmappedErrors = u.showFormError(f, result);
270
- formutil_1.focusFirstError(f);
271
- if (unmappedErrors && unmappedErrors.length > 0) {
272
- var t = p1.resource.value('error');
273
- if (p1.ui && p1.ui.buildErrorMessage) {
274
- var msg = p1.ui.buildErrorMessage(unmappedErrors);
275
- p1.showError(msg, t);
276
- }
277
- else {
278
- p1.showError(unmappedErrors[0].field + ' ' + unmappedErrors[0].code + ' ' + unmappedErrors[0].message, t);
279
- }
280
- }
281
- }
282
- else {
283
- var t = p1.resource.value('error');
284
- if (result.length > 0) {
285
- p1.showError(result[0].field + ' ' + result[0].code + ' ' + result[0].message, t);
286
- }
287
- else {
288
- p1.showError(t, t);
289
- }
290
- }
291
- };
292
- var fail = (p && p.fail ? p.fail : _fail);
293
- var _handleError = function (err) {
294
- if (err) {
295
- setRunning(false);
296
- core_1.hideLoading(p1.loading);
297
- var errMsg = p1.resource.value('error_internal');
298
- var data = (err && err.response) ? err.response : err;
299
- if (data.status === 400) {
300
- var errMsg_1 = p1.resource.value('error_400');
301
- p1.showError(errMsg_1, "Error");
302
- }
303
- else {
304
- p1.showError(errMsg, "Error");
305
- }
306
- }
307
- };
308
- var handleError = (p && p.handleError ? p.handleError : _handleError);
309
- var _postSave = function (r, origin, version, isPatch, backOnSave) {
310
413
  setRunning(false);
311
414
  core_1.hideLoading(p1.loading);
312
- var x = r;
313
- var successMsg = p1.resource.value('msg_save_success');
314
- var newMod = flag.newMode;
315
- if (Array.isArray(x)) {
316
- fail(x);
317
- }
318
- else if (!isNaN(x)) {
319
- if (x > 0) {
320
- succeed(successMsg, origin, version, backOnSave);
321
- }
322
- else {
323
- if (newMod && x <= 0) {
324
- handleDuplicateKey();
325
- }
326
- else if (!newMod && x === 0) {
327
- handleNotFound();
328
- }
329
- else {
330
- var title = p1.resource.value('error');
331
- var err = p1.resource.value('error_version');
332
- p1.showError(err, title);
333
- }
334
- }
335
- }
336
- else {
337
- var result = r;
338
- if (isPatch) {
339
- var keys = Object.keys(result);
340
- var a = origin;
341
- for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
342
- var k = keys_1[_i];
343
- a[k] = result[k];
344
- }
345
- succeed(successMsg, a, undefined, backOnSave, a);
346
- }
347
- else {
348
- succeed(successMsg, origin, version, backOnSave, r);
349
- }
350
- p1.showMessage(successMsg);
351
- }
352
- };
353
- var postSave = (p && p.postSave ? p.postSave : _postSave);
354
- var _handleDuplicateKey = function (result) {
355
- var msg = core_1.message(p1.resource.value, 'error_duplicate_key', 'error');
356
- p1.showError(msg.message, msg.title);
357
- };
358
- var handleDuplicateKey = (p && p.handleDuplicateKey ? p.handleDuplicateKey : _handleDuplicateKey);
359
- var _doSave = function (obj, body, version, isBack) {
360
- setRunning(true);
361
- core_1.showLoading(p1.loading);
362
- var isBackO = (isBack != null && isBack !== undefined ? isBack : false);
363
- var patchable = (p ? p.patchable : true);
364
- if (flag.newMode === false) {
365
- if (service.patch && patchable !== false && body && Object.keys(body).length > 0) {
366
- service.patch(body).then(function (result) {
367
- postSave(result, obj, version, true, isBackO);
368
- }).catch(handleError);
369
- }
370
- else {
371
- service.update(obj).then(function (result) { return postSave(result, obj, version, false, isBackO); }).catch(handleError);
372
- }
415
+ }).catch(function (err) {
416
+ var _a, _b, _c;
417
+ var data = (err && err.response) ? err.response : err;
418
+ var r = p1.resource;
419
+ var title = r.value('error');
420
+ var msg = r.value('error_internal');
421
+ if (data && data.status === 422) {
422
+ fail((_a = err.response) === null || _a === void 0 ? void 0 : _a.data);
423
+ var obj = (_c = (_b = err.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.value;
424
+ if (obj) {
425
+ callback ? callback(obj, showModel) : showModel(obj);
426
+ }
373
427
  }
374
428
  else {
375
- service.insert(obj).then(function (result) { return postSave(result, obj, version, false, isBackO); }).catch(handleError);
376
- }
377
- };
378
- var doSave = (p && p.doSave ? p.doSave : _doSave);
379
- var _load = function (_id, callback) {
380
- var id = _id;
381
- if (id != null && id !== '') {
382
- setRunning(true);
383
- core_1.showLoading(p1.loading);
384
- service.load(id).then(function (obj) {
385
- if (!obj) {
386
- handleNotFound(refForm.current);
387
- }
388
- else {
389
- setFlag({ newMode: false, originalModel: reflect_1.clone(obj) });
390
- if (callback) {
391
- callback(obj, showModel);
392
- }
393
- else {
394
- showModel(obj);
395
- }
396
- }
397
- setRunning(false);
398
- core_1.hideLoading(p1.loading);
399
- }).catch(function (err) {
400
- var _a, _b, _c;
401
- var data = (err && err.response) ? err.response : err;
402
- var r = p1.resource;
403
- var title = r.value('error');
404
- var msg = r.value('error_internal');
405
- if (data && data.status === 422) {
406
- fail((_a = err.response) === null || _a === void 0 ? void 0 : _a.data);
407
- var obj = (_c = (_b = err.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.value;
408
- if (obj) {
409
- callback ? callback(obj, showModel) : showModel(obj);
410
- }
411
- }
412
- else {
413
- if (data && data.status === 404) {
414
- handleNotFound(refForm.current);
415
- }
416
- else {
417
- if (data.status && !isNaN(data.status)) {
418
- msg = core_1.messageByHttpStatus(data.status, r.value);
419
- }
420
- if (data && (data.status === 401 || data.status === 403)) {
421
- formutil_1.setReadOnly(refForm.current);
422
- }
423
- p1.showError(msg, title);
424
- }
425
- }
426
- setRunning(false);
427
- core_1.hideLoading(p1.loading);
428
- });
429
- }
430
- else {
431
- var obj = createModel();
432
- setFlag({ newMode: true, originalModel: undefined });
433
- if (callback) {
434
- callback(obj, showModel);
429
+ if (data && data.status === 404) {
430
+ handleNotFound(refForm.current);
431
+ }
432
+ else {
433
+ if (data.status && !isNaN(data.status)) {
434
+ msg = core_1.messageByHttpStatus(data.status, r.value);
435
435
  }
436
- else {
437
- showModel(obj);
436
+ if (data && (data.status === 401 || data.status === 403)) {
437
+ formutil_1.setReadOnly(refForm.current);
438
438
  }
439
+ p1.showError(msg, title);
440
+ }
439
441
  }
440
- };
441
- var load = (p && p.load ? p.load : _load);
442
- return __assign(__assign({}, baseProps), { back: back,
443
- refForm: refForm, ui: p1.ui, resource: p1.resource.resource(), flag: flag,
444
- running: running,
445
- setRunning: setRunning,
446
- showModel: showModel,
447
- getModelName: getModelName,
448
- resetState: resetState,
449
- handleNotFound: handleNotFound,
450
- getModel: getModel,
451
- createModel: createModel,
452
- create: create,
453
- save: save,
454
- onSave: onSave,
455
- confirm: confirm,
456
- validate: validate, showMessage: p1.showMessage, succeed: succeed,
457
- fail: fail,
458
- postSave: postSave,
459
- handleDuplicateKey: handleDuplicateKey,
460
- load: load,
461
- doSave: doSave });
442
+ setRunning(false);
443
+ core_1.hideLoading(p1.loading);
444
+ });
445
+ }
446
+ else {
447
+ var obj = createModel();
448
+ setFlag({ newMode: true, originalModel: undefined });
449
+ if (callback) {
450
+ callback(obj, showModel);
451
+ }
452
+ else {
453
+ showModel(obj);
454
+ }
455
+ }
456
+ };
457
+ var load = (p && p.load ? p.load : _load);
458
+ return __assign(__assign({}, baseProps), {
459
+ back: back,
460
+ refForm: refForm, ui: p1.ui, resource: p1.resource.resource(), flag: flag,
461
+ running: running,
462
+ setRunning: setRunning,
463
+ showModel: showModel,
464
+ getModelName: getModelName,
465
+ resetState: resetState,
466
+ handleNotFound: handleNotFound,
467
+ getModel: getModel,
468
+ createModel: createModel,
469
+ create: create,
470
+ save: save,
471
+ onSave: onSave,
472
+ confirm: confirm,
473
+ validate: validate, showMessage: p1.showMessage, succeed: succeed,
474
+ fail: fail,
475
+ postSave: postSave,
476
+ handleDuplicateKey: handleDuplicateKey,
477
+ load: load,
478
+ doSave: doSave
479
+ });
462
480
  };