edit save error revert edit mode
This commit is contained in:
@@ -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()
|
||||
});
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user