From d6e6b006aeca6daf8fc5e69e6bc070fde0fc2163 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 23 Apr 2019 18:02:48 +0000 Subject: [PATCH] --- ayanova/src/api/gzvalidate.js | 42 +++++++++++++++------ ayanova/src/views/inventory-widget-edit.vue | 12 ++++-- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/ayanova/src/api/gzvalidate.js b/ayanova/src/api/gzvalidate.js index e6ba5823..e94f328d 100644 --- a/ayanova/src/api/gzvalidate.js +++ b/ayanova/src/api/gzvalidate.js @@ -7,10 +7,29 @@ //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 // Add any new keys used to the block in locale.js=>commonKeysEditForm - +import Vue from "vue"; 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; @@ -143,7 +162,7 @@ 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); - vm.formValid = false; + setFormValid(vm, false); return err; }, /////////////////////////////// @@ -170,7 +189,7 @@ export default { var fieldName = getControlLabel(ctrl); err = vm.$_.replace(err, "{0}", fieldName); err = vm.$_.replace(err, "{1}", max); - vm.formValid = false; + setFormValid(vm, false); return err; } else { return false; @@ -224,7 +243,7 @@ export default { if (valueStart.isAfter(valueEnd)) { // "ErrorStartDateAfterEndDate": "Start date must be earlier than stop / end date", var err = vm.$gzlocale.get("ErrorStartDateAfterEndDate"); - vm.formValid = false; + setFormValid(vm, false); return err; } else { return false; @@ -256,7 +275,7 @@ export default { // "ErrorFieldValueNotInteger": "Value must be an integer" var err = vm.$gzlocale.get("ErrorFieldValueNotInteger"); - vm.formValid = false; + setFormValid(vm, false); return err; }, /////////////////////////////// @@ -289,7 +308,7 @@ export default { // "ErrorFieldValueNotDecimal": "Value must be a number" var err = vm.$gzlocale.get("ErrorFieldValueNotDecimal"); - vm.formValid = false; + setFormValid(vm, false); return err; }, /////////////////////////////// @@ -338,7 +357,7 @@ export default { if (vm.serverError.message) { err = err + "\r\n" + vm.serverError.message; } - vm.formValid = false; + setFormValid(vm, false); ret.push(err); } //DETAIL ERRORS @@ -363,7 +382,7 @@ export default { } ret.push(fldErr); }); - vm.formValid = false; + setFormValid(vm, false); return ret; } } @@ -384,7 +403,7 @@ export default { vm.appError = null; //clear out actual message box display vm.errorBoxMessage = null; - vm.formValid = true; + setFormValid(vm, true); }, /////////////////////////////// // setErrorBoxErrors @@ -430,7 +449,8 @@ export default { vm.obj[ref] = val; triggeringChange = false; } - vm.formDirty = true; - //vm.formValid = vm.$refs.form.validate(); + 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 } }; diff --git a/ayanova/src/views/inventory-widget-edit.vue b/ayanova/src/views/inventory-widget-edit.vue index 2a76e197..5b3bcceb 100644 --- a/ayanova/src/views/inventory-widget-edit.vue +++ b/ayanova/src/views/inventory-widget-edit.vue @@ -147,6 +147,8 @@