This commit is contained in:
2019-04-04 17:05:33 +00:00
parent 35f2757e94
commit 8f6887d5f3
3 changed files with 45 additions and 25 deletions

View File

@@ -11,6 +11,8 @@
//import _ from "../libs/lodash.min.js";
import errorHandler from "./errorhandler";
var triggeringChange = false;
function isEmpty(o) {
if (typeof o == "number" && o == 0) {
return false;
@@ -472,24 +474,44 @@ Here are all the API level error codes that can be returned by the API server:
// On Change handler
// This is required so that server errors can be cleared when input is changed
Change(v, ref) {
if (triggeringChange) {
return;
}
//If ref appears in the servererrors details collection, remove each one
var m = v.$_.remove(v.serverError.details, function(o) {
return o.target == ref;
});
// //if a target was hit then need to trigger validate again for it to remove the error message
//NOTHING SEEMS TO BE ABLE TO TRIGGER THIS
// if (m.length > 0) {
// var ctrl = getControl(v, ref);
// //ctrl.validate(true);
// // ctrl.errorMessages.length=0;
// // var frm=getControl(v,"form");
// // frm.validate();
// }
//If there are no more errors in details then remove the whole thing as it's no longer required
if (v.serverError.details && v.serverError.details.length < 1) {
if (v.serverError.code == "2200") {
this.RemoveAllProperties(v.serverError);
}
}
//Clear out old validation display in form by forcing the control's data to change
//I tried calling form validate and reset and all that bullshit but it did nothing
//probably because it has safeguards to prevent excess validation, this works though so far
//I added the triggering change guard but it actually doesn't seem to be required here, more investigation is required
if (m.length > 0) {
triggeringChange = true;
var val = v.obj[ref];
v.obj[ref] = null;
v.obj[ref] = val;
triggeringChange = false;
}
},
///////////////////////////////
// Clean out server errors
// This is called both from the form immediately before submit and here in Change handler
// It's purpose is to more efficiently clear out the object even though I could set it to an empty object, this way it just keeps the same object
// avoiding some potential issues
RemoveAllProperties(o) {
//clear any errors that might be around from previous submit
for (var variableKey in o) {
if (o.hasOwnProperty(variableKey)) {
delete o[variableKey];
}
}
}
};

View File

@@ -184,6 +184,9 @@ export default {
//debugger;
//console.log("CHANGE - " + ref);
this.$gzv.Change(this, ref);
//Make form re-validate here and if it works then make it do it only if gzv.change returns true or something indicating it's required to re-validate or clear that input's errors
// this.$refs.form.resetValidation();
// this.$refs.form.validate();
},
getDataFromApi() {
var url = "Widget/" + this.$route.params.id;
@@ -198,13 +201,9 @@ export default {
var that = this;
var url = "Widget/" + this.$route.params.id;
//clear any errors that might be around from previous submit
for (var variableKey in this.serverError) {
if (this.serverError.hasOwnProperty(variableKey)) {
delete this.serverError[variableKey];
}
}
//clear any errors that might be around from previous submit
this.$gzv.RemoveAllProperties(this.serverError);
this.$gzapi
.upsert(url, this.obj)
@@ -215,8 +214,6 @@ export default {
that.serverError = res.error;
// that.$refs.form.resetValidation();
// that.$refs.form.validate();
//example error when submit when there are no roles set at all (blank)
//{"error":{"code":"2200","details":[{"code":"2200","message":"","target":"roles","error":"VALIDATION_FAILED"}],"message":"Object did not pass validation"}}
} else {
//Logic for detecting if a post or put: if id then it was a post, if no id then it was a put
if (res.id) {