From 67ead531042d36915d542de2e0975bb5ff0eb166 Mon Sep 17 00:00:00 2001 From: erikbocks Date: Thu, 29 May 2025 17:54:46 -0300 Subject: [PATCH] Fixed and enhanced vlan field validation in the UI --- .../infra/zone/AdvancedGuestTrafficForm.vue | 59 +++++++++++++++---- 1 file changed, 46 insertions(+), 13 deletions(-) diff --git a/ui/src/views/infra/zone/AdvancedGuestTrafficForm.vue b/ui/src/views/infra/zone/AdvancedGuestTrafficForm.vue index 4c0d2c137e60..caf690efcc93 100644 --- a/ui/src/views/infra/zone/AdvancedGuestTrafficForm.vue +++ b/ui/src/views/infra/zone/AdvancedGuestTrafficForm.vue @@ -39,6 +39,7 @@ { const values = toRaw(this.form) - if (!values.vlanRangeStart || (values.vlanRangeEnd && !this.checkFromTo(values.vlanRangeStart, values.vlanRangeEnd))) { + if (!this.checkFromTo(values.vlanRangeStart, values.vlanRangeEnd)) { this.validStatus = 'error' this.validMessage = this.$t('message.error.vlan.range') return @@ -185,19 +207,30 @@ export default { toVal = value fromVal = this.form[rule.compare] } - if (fromVal && toVal && !this.checkFromTo(fromVal, toVal)) { + if (!this.checkFromTo(fromVal, toVal)) { this.validStatus = 'error' this.validMessage = this.$t('message.error.vlan.range') } return Promise.resolve() }, checkFromTo (fromVal, toVal) { - if (!fromVal) fromVal = 0 - if (!toVal) toVal = 0 - if (fromVal > toVal) { - return false + const vlanRange = this.rangeLimits[this.isolationMethod] ? this.rangeLimits[this.isolationMethod] : this.rangeLimits.VLAN + switch (true) { + case ((fromVal === null) || (toVal === null)): + case fromVal === toVal: + case fromVal > toVal: + case toVal > vlanRange.max: + case fromVal < vlanRange.min: + return false + default: + this.validStatus = 'success' + this.validMessage = '' + return true } - return true + }, + getIsolationMethod () { + const phyNetworks = this.getPrefilled('physicalNetworks') + this.isolationMethod = phyNetworks[phyNetworks.length - 1].isolationMethod } } }