This commit is contained in:
@@ -30,7 +30,7 @@ function dealWithError(msg, form) {
|
||||
}
|
||||
}
|
||||
form.appError = msg;
|
||||
form.$gzv.setErrorBoxErrors(form);
|
||||
form.$gzform.setErrorBoxErrors(form);
|
||||
}
|
||||
}
|
||||
export default {
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/* Xeslint-disable */
|
||||
///////////////////////////////
|
||||
// GZVALIDATE
|
||||
// gzform
|
||||
//
|
||||
// provides form validation services
|
||||
// provides form services and utilities
|
||||
// validation services
|
||||
// dirty and change tracking
|
||||
// and also general error display in forms
|
||||
//probably should be broken up more
|
||||
// All locale keys for validation *MUST* be fetched prior to this being used as it assumes all keys are fetched first
|
||||
@@ -12,24 +14,6 @@ import errorHandler from "./errorhandler";
|
||||
|
||||
var triggeringChange = false;
|
||||
|
||||
////////////////////////////////////
|
||||
// set calling form Dirty state
|
||||
//
|
||||
function setFormDirty(vm, isDirty) {
|
||||
Vue.nextTick(function() {
|
||||
vm.formDirty = isDirty;
|
||||
});
|
||||
}
|
||||
|
||||
////////////////////////////////////
|
||||
// set calling form Valid state
|
||||
//
|
||||
function setFormValid(vm, isValid) {
|
||||
Vue.nextTick(function() {
|
||||
vm.formValid = isValid;
|
||||
});
|
||||
}
|
||||
|
||||
function isEmpty(o) {
|
||||
if (typeof o == "number" && o == 0) {
|
||||
return false;
|
||||
@@ -82,7 +66,7 @@ function getControlValue(ctrl) {
|
||||
function getControlLabel(ctrl) {
|
||||
if (errorHandler.developmentModeShowErrorsImmediately) {
|
||||
if (!ctrl.label) {
|
||||
throw "GZValidate:getControlLabel - the control has no label " + ctrl;
|
||||
throw "gzform:getControlLabel - the control has no label " + ctrl;
|
||||
}
|
||||
}
|
||||
return ctrl.label;
|
||||
@@ -162,7 +146,11 @@ export default {
|
||||
err = vm.$_.replace(err, "{0}", fieldName);
|
||||
//lodash replace only replaces first instance so need to do it twice
|
||||
err = vm.$_.replace(err, "{0}", fieldName);
|
||||
setFormValid(vm, false);
|
||||
//Update the form status
|
||||
this.setFormState({
|
||||
vm: vm,
|
||||
formValid: false
|
||||
});
|
||||
return err;
|
||||
},
|
||||
///////////////////////////////
|
||||
@@ -189,7 +177,11 @@ export default {
|
||||
var fieldName = getControlLabel(ctrl);
|
||||
err = vm.$_.replace(err, "{0}", fieldName);
|
||||
err = vm.$_.replace(err, "{1}", max);
|
||||
setFormValid(vm, false);
|
||||
//Update the form status
|
||||
this.setFormState({
|
||||
vm: vm,
|
||||
formValid: false
|
||||
});
|
||||
return err;
|
||||
} else {
|
||||
return false;
|
||||
@@ -243,7 +235,11 @@ export default {
|
||||
if (valueStart.isAfter(valueEnd)) {
|
||||
// "ErrorStartDateAfterEndDate": "Start date must be earlier than stop / end date",
|
||||
var err = vm.$gzlocale.get("ErrorStartDateAfterEndDate");
|
||||
setFormValid(vm, false);
|
||||
//Update the form status
|
||||
this.setFormState({
|
||||
vm: vm,
|
||||
formValid: false
|
||||
});
|
||||
return err;
|
||||
} else {
|
||||
return false;
|
||||
@@ -275,7 +271,11 @@ export default {
|
||||
|
||||
// "ErrorFieldValueNotInteger": "Value must be an integer"
|
||||
var err = vm.$gzlocale.get("ErrorFieldValueNotInteger");
|
||||
setFormValid(vm, false);
|
||||
//Update the form status
|
||||
this.setFormState({
|
||||
vm: vm,
|
||||
formValid: false
|
||||
});
|
||||
return err;
|
||||
},
|
||||
///////////////////////////////
|
||||
@@ -308,7 +308,11 @@ export default {
|
||||
|
||||
// "ErrorFieldValueNotDecimal": "Value must be a number"
|
||||
var err = vm.$gzlocale.get("ErrorFieldValueNotDecimal");
|
||||
setFormValid(vm, false);
|
||||
//Update the form status
|
||||
this.setFormState({
|
||||
vm: vm,
|
||||
formValid: false
|
||||
});
|
||||
return err;
|
||||
},
|
||||
///////////////////////////////
|
||||
@@ -320,24 +324,24 @@ export default {
|
||||
if (vm.$gzdevmode()) {
|
||||
//make sure serverErrors is defined on data
|
||||
if (!vm.$_.has(vm, "serverError")) {
|
||||
throw "DEV ERROR gzvalidate::serverErrors -> serverError seems to be missing from form's vue data object";
|
||||
throw "DEV ERROR gzform::serverErrors -> serverError seems to be missing from form's vue data object";
|
||||
}
|
||||
|
||||
//make sure appError is defined on data
|
||||
if (!vm.$_.has(vm, "appError")) {
|
||||
throw "DEV ERROR gzvalidate::serverErrors -> appError seems to be missing from form's vue data object";
|
||||
throw "DEV ERROR gzform::serverErrors -> appError seems to be missing from form's vue data object";
|
||||
}
|
||||
|
||||
//make sure errorBoxMessage is defined on data
|
||||
if (!vm.$_.has(vm, "errorBoxMessage")) {
|
||||
throw "DEV ERROR gzvalidate::serverErrors -> errorBoxMessage seems to be missing from form's vue data object";
|
||||
throw "DEV ERROR gzform::serverErrors -> errorBoxMessage seems to be missing from form's vue data object";
|
||||
}
|
||||
|
||||
//ensure the error returned is in an expected format to catch coding errors at the server end
|
||||
if (!vm.$_.isEmpty(vm.serverError)) {
|
||||
//Make sure there is an error code if there is an error collection
|
||||
if (!vm.serverError.code) {
|
||||
throw "DEV ERROR gzvalidate::serverErrors -> server returned error without code";
|
||||
throw "DEV ERROR gzform::serverErrors -> server returned error without code";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -357,7 +361,11 @@ export default {
|
||||
if (vm.serverError.message) {
|
||||
err = err + "\r\n" + vm.serverError.message;
|
||||
}
|
||||
setFormValid(vm, false);
|
||||
//Update the form status
|
||||
this.setFormState({
|
||||
vm: vm,
|
||||
formValid: false
|
||||
});
|
||||
ret.push(err);
|
||||
}
|
||||
//DETAIL ERRORS
|
||||
@@ -382,7 +390,12 @@ export default {
|
||||
}
|
||||
ret.push(fldErr);
|
||||
});
|
||||
setFormValid(vm, false);
|
||||
|
||||
//Update the form status
|
||||
this.setFormState({
|
||||
vm: vm,
|
||||
formValid: false
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -403,7 +416,11 @@ export default {
|
||||
vm.appError = null;
|
||||
//clear out actual message box display
|
||||
vm.errorBoxMessage = null;
|
||||
setFormValid(vm, true);
|
||||
//Update the form status
|
||||
this.setFormState({
|
||||
vm: vm,
|
||||
formValid: true
|
||||
});
|
||||
},
|
||||
///////////////////////////////
|
||||
// setErrorBoxErrors
|
||||
@@ -449,8 +466,34 @@ export default {
|
||||
vm.obj[ref] = val;
|
||||
triggeringChange = false;
|
||||
}
|
||||
setFormDirty(vm, true);
|
||||
setFormValid(vm, vm.$refs.form.validate());
|
||||
//TODO: shouldn't it check for any dirty here and set the isdirty to false if none since each rule can set it dirty
|
||||
|
||||
//Update the form status
|
||||
this.setFormState({
|
||||
vm: vm,
|
||||
formDirty: true,
|
||||
formValid: vm.$refs.form.validate()
|
||||
});
|
||||
},
|
||||
////////////////////////////////////
|
||||
// set calling form Valid state
|
||||
//
|
||||
// {vm:vm,formDirty:bool | undefined,
|
||||
// formValid:bool | undefined,
|
||||
// formLoading:bool | undefined}
|
||||
//
|
||||
setFormState(theState) {
|
||||
Vue.nextTick(function() {
|
||||
if (theState.formValid != undefined) {
|
||||
theState.vm.formValid = theState.formValid;
|
||||
}
|
||||
|
||||
if (theState.formDirty != undefined) {
|
||||
theState.vm.formDirty = theState.formDirty;
|
||||
}
|
||||
|
||||
if (theState.formLoading != undefined) {
|
||||
theState.vm.formLoading = theState.formLoading;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user