edit save error revert edit mode

This commit is contained in:
yuri
2019-02-07 11:57:12 +02:00
parent ee52b8d4d9
commit edb52e253b
2 changed files with 28 additions and 15 deletions
+21 -14
View File
@@ -336,6 +336,15 @@ Espo.define('views/record/base', ['view', 'view-record-helper', 'dynamic-logic']
this.model.set(this.attributes);
},
setModelAttributes: function (setAttributes, options) {
for (var item in this.model.attributes) {
if (!(item in setAttributes)) {
this.model.unset(item);
}
}
this.model.set(setAttributes, options || {});
},
initDynamicLogic: function () {
this.dynamicLogicDefs = Espo.Utils.clone(this.dynamicLogicDefs || {});
this.dynamicLogicDefs.fields = Espo.Utils.clone(this.dynamicLogicDefs.fields);
@@ -427,7 +436,7 @@ Espo.define('views/record/base', ['view', 'view-record-helper', 'dynamic-logic']
this.notify('Not valid', 'error');
},
save: function (callback, skipExit) {
save: function (callback, skipExit, errorCallback) {
this.beforeBeforeSave();
var data = this.fetch();
@@ -441,25 +450,25 @@ Espo.define('views/record/base', ['view', 'view-record-helper', 'dynamic-logic']
data = _.extend(Espo.Utils.cloneDeep(beforeSaveAttributes), data);
var attrs = false;
var setAttributes = false;
if (model.isNew()) {
attrs = data;
setAttributes = data;
} else {
for (var name in data) {
if (_.isEqual(initialAttributes[name], data[name])) {
continue;
}
(attrs || (attrs = {}))[name] = data[name];
(setAttributes || (setAttributes = {}))[name] = data[name];
}
}
if (!attrs) {
if (!setAttributes) {
this.trigger('cancel:save');
this.afterNotModified();
return true;
}
model.set(attrs, {silent: true});
model.set(setAttributes, {silent: true});
if (this.validate()) {
model.attributes = beforeSaveAttributes;
@@ -473,7 +482,7 @@ Espo.define('views/record/base', ['view', 'view-record-helper', 'dynamic-logic']
this.trigger('before:save');
model.trigger('before:save');
model.save(attrs, {
model.save(setAttributes, {
success: function () {
this.afterSave();
var isNew = self.isNew;
@@ -510,12 +519,6 @@ Espo.define('views/record/base', ['view', 'view-record-helper', 'dynamic-logic']
}
}
if (xhr.status == 400) {
if (!this.isNew) {
this.resetModelChanges();
}
}
if (response && response.reason) {
var methodName = 'errorHandler' + Espo.Utils.upperCaseFirst(response.reason.toString());
if (methodName in this) {
@@ -526,9 +529,13 @@ Espo.define('views/record/base', ['view', 'view-record-helper', 'dynamic-logic']
this.afterSaveError();
model.attributes = beforeSaveAttributes;
this.setModelAttributes(beforeSaveAttributes);
self.trigger('cancel:save');
if (errorCallback) {
errorCallback.call(this, xhr);
}
}.bind(this),
patch: !model.isNew()
});
+7 -1
View File
@@ -147,7 +147,13 @@ Espo.define('views/record/detail', ['views/record/base', 'view-record-helper'],
},
actionSave: function () {
if (this.save(null, true)) {
var modeBeforeSave = this.mode;
var errorCallback = function () {
if (modeBeforeSave == 'edit') {
this.setEditMode();
}
}.bind(this);
if (this.save(null, true, errorCallback)) {
this.setDetailMode();
$(window).scrollTop(0)
}