diff --git a/src/layouts/vehicle-damage/vehicle-damage.spec.js b/src/layouts/vehicle-damage/vehicle-damage.spec.js index 778dcdef3..db5211a7b 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.spec.js +++ b/src/layouts/vehicle-damage/vehicle-damage.spec.js @@ -133,7 +133,7 @@ describe("vehicle-damage.vue", () => { wrapper.vm.selectedWindshieldOptions = { selectedWindshieldChipCount: null, selectedWindshieldReplaceOptions: ["Single"], - selectedWindshieldDamageType: ["Replace"] + selectedWindshieldDamageType: "Replace" }; wrapper.vm.sideDoorOptionsData = { @@ -232,7 +232,7 @@ describe("vehicle-damage.vue", () => { wrapper.vm.selectedWindshieldOptions = { selectedWindshieldChipCount: null, selectedWindshieldReplaceOptions: ["Single"], - selectedWindshieldDamageType: ["Replace"] + selectedWindshieldDamageType: "Replace" }; const expectedGlassToReplace = [{ glassLocation: "Windshield", glassName: "Single" },]; @@ -375,7 +375,7 @@ describe("vehicle-damage.vue", () => { ); wrapper.vm.selectedDamageLocations = ["Windshield"]; - wrapper.vm.selectedWindshieldOptions = { selectedWindshieldDamageType: ["Repair"] }; + wrapper.vm.selectedWindshieldOptions = { selectedWindshieldDamageType: "Repair" }; //Assert expect(wrapper.vm.isWindshieldRepair).toEqual(true); @@ -395,7 +395,7 @@ describe("vehicle-damage.vue", () => { ); wrapper.vm.selectedDamageLocations = ["SideDoor"]; - wrapper.vm.selectedWindshieldOptions = { selectedWindshieldDamageType: ["Repair"] }; + wrapper.vm.selectedWindshieldOptions = { selectedWindshieldDamageType: "Repair" }; //Assert expect(wrapper.vm.isWindshieldRepair).toEqual(false); @@ -518,19 +518,19 @@ describe("vehicle-damage.vue", () => { }); const storeWindshieldOptions = [[1, false, "Windshield", "Single", { - selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], + selectedWindshieldDamageType: damageLocationsSelected.REPLACE, selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.SINGLE] }], [2, false, "Windshield", "Driver", { - selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], + selectedWindshieldDamageType: damageLocationsSelected.REPLACE, selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.DRIVER] }], [3, false, "Windshield", "Passenger", { - selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], + selectedWindshieldDamageType: damageLocationsSelected.REPLACE, selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.PASSENGER] }], [4, true, "", "", { - selectedWindshieldDamageType: [damageLocationsSelected.REPAIR], + selectedWindshieldDamageType: damageLocationsSelected.REPAIR, selectedWindshieldChipCount: [2], selectedWindshieldReplaceOptions: [] }] ]; diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 8ce4f0574..b144ef2b3 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -197,32 +197,32 @@ export default { }, getWindshieldOptionsFromStore() { - var windShieldOptions = { selectedWindshieldDamageType: [], selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: []}; + var windShieldOptions = { selectedWindshieldDamageType: "", selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: []}; if (store.getters.damage.isRepair === undefined) return windshieldOptions; if (!store.getters.damage.isRepair) { if (store.getters.damage.glassToReplace?.some(glass => { return glass.glassLocation === damageLocationsSelected.WINDSHIELD && glass.glassName === damageLocationsSelected.SINGLE })) { - windShieldOptions.selectedWindshieldDamageType.push(damageLocationsSelected.REPLACE); + windShieldOptions.selectedWindshieldDamageType = damageLocationsSelected.REPLACE; windShieldOptions.selectedWindshieldReplaceOptions.push(damageLocationsSelected.SINGLE); } if (store.getters.damage.glassToReplace?.some(glass => { return glass.glassLocation === damageLocationsSelected.WINDSHIELD && glass.glassName === damageLocationsSelected.DRIVER })) { - windShieldOptions.selectedWindshieldDamageType.push(damageLocationsSelected.REPLACE); + windShieldOptions.selectedWindshieldDamageType = damageLocationsSelected.REPLACE; windShieldOptions.selectedWindshieldReplaceOptions.push(damageLocationsSelected.DRIVER); } if (store.getters.damage.glassToReplace?.some(glass => { return glass.glassLocation === damageLocationsSelected.WINDSHIELD && glass.glassName === damageLocationsSelected.PASSENGER })) { - windShieldOptions.selectedWindshieldDamageType.push(damageLocationsSelected.REPLACE); + windShieldOptions.selectedWindshieldDamageType = damageLocationsSelected.REPLACE; windShieldOptions.selectedWindshieldReplaceOptions.push(damageLocationsSelected.PASSENGER); } } if (store.getters.damage.isRepair) { - windShieldOptions.selectedWindshieldDamageType.push(damageLocationsSelected.REPAIR); + windShieldOptions.selectedWindshieldDamageType = damageLocationsSelected.REPAIR; windShieldOptions.selectedWindshieldChipCount.push(store.getters.damage.numberOfChips); } @@ -350,12 +350,7 @@ export default { }); }, isWindshieldRepair() { - if (!this.isWindshieldDamageLocation) return false; - - return this.selectedWindshieldOptions.selectedWindshieldDamageType && this.selectedWindshieldOptions.selectedWindshieldDamageType.some(selectedDamageType => - { - return selectedDamageType.toUpperCase() === "REPAIR"; - }); + return this.isWindshieldDamageLocation && this.selectedWindshieldOptions.selectedWindshieldDamageType === damageLocationsSelected.REPAIR; }, isDriverSideReplace() { if (!this.isSideDoorDamageLocation) return false; @@ -377,7 +372,7 @@ export default { return this.isWindshieldDamageLocation && this.selectedDamageLocations.length > 1 && this.isWindshieldRepair; }, hasSplitSingleConflict() { - if (!this.selectedDamageLocations || !this.selectedDamageLocations.includes("Windshield") || !this.selectedWindshieldOptions.selectedWindshieldDamageType || !this.selectedWindshieldOptions.selectedWindshieldDamageType.includes("Replace") || !this.selectedWindshieldOptions.selectedWindshieldReplaceOptions) return false; + if (!this.selectedDamageLocations?.includes("Windshield") || this.selectedWindshieldOptions.selectedWindshieldDamageType === damageLocationsSelected.REPAIR || !this.selectedWindshieldOptions.selectedWindshieldReplaceOptions) return false; return this.selectedWindshieldOptions.selectedWindshieldReplaceOptions.some(selectedSingleWindshield => { diff --git a/src/layouts/vehicle-damage/windshield-options/windshield-damage-type-question/windshield-damage-type-question.vue b/src/layouts/vehicle-damage/windshield-options/windshield-damage-type-question/windshield-damage-type-question.vue index 455c27361..ce162617d 100644 --- a/src/layouts/vehicle-damage/windshield-options/windshield-damage-type-question/windshield-damage-type-question.vue +++ b/src/layouts/vehicle-damage/windshield-options/windshield-damage-type-question/windshield-damage-type-question.vue @@ -22,7 +22,7 @@ import store from "@/store"; export default ({ name: "windshieldDamageTypeQuestion", props: { - modelValue: Array, + modelValue: String, groupName: String, isAvailable: Boolean, suppressError: Boolean, diff --git a/src/layouts/vehicle-damage/windshield-options/windshield-options.vue b/src/layouts/vehicle-damage/windshield-options/windshield-options.vue index bdbe25195..02670108c 100644 --- a/src/layouts/vehicle-damage/windshield-options/windshield-options.vue +++ b/src/layouts/vehicle-damage/windshield-options/windshield-options.vue @@ -4,7 +4,7 @@ :isAvailable=isWindshieldDamageLocation :suppressError="hasRepairReplaceConflict || showNoReplacementAvailableError" groupName="WindshieldDamageTypeQuestion" - v-model="selectedWindshieldDamageTypeValues" + v-model="selectedWindshieldDamageTypeValue" :validationRules="windshieldDamageTypeQuestionValidationRules" /> { - if (value.toString().toUpperCase().includes(damageLocationsSelected.REPAIR.toUpperCase()) && - otherFieldValue.toString().toUpperCase().includes(damageLocationsSelected.WINDSHIELD.toUpperCase()) && - Array.isArray(otherFieldValue) && - otherFieldValue.length > 1) - { - return false; - } - return true; +defineRule("check-for-repair-and-replace", (selectedWindshieldDamageType, [selectedDamageLocations]) => { + return selectedWindshieldDamageType.toString() != damageLocationsSelected.REPAIR || + !selectedDamageLocations.includes(damageLocationsSelected.WINDSHIELD) || + selectedDamageLocations.length === 1; }); defineRule("repair-only", (value) => { - if (value.toString().toUpperCase() === damageLocationsSelected.REPAIR.toUpperCase()) { - return true; - } - return false; + return value.toString() === damageLocationsSelected.REPAIR; }); defineRule("prevent-split-and-single-together", (value) => { if (value.toString().toUpperCase().includes(damageLocationsSelected.SINGLE.toUpperCase()) && @@ -91,7 +83,7 @@ export default ({ }, props: { - modelValue: Array, + modelValue: String, selectedDamageLocations: Array, hasRepairReplaceConflict: Boolean, hasSplitSingleConflict: Boolean, @@ -120,7 +112,7 @@ export default ({ this.$emit("update:modelValue", newValue); } }, - selectedWindshieldDamageTypeValues:{ + selectedWindshieldDamageTypeValue: { get: function() { return this.selectedValues.selectedWindshieldDamageType; }, @@ -133,7 +125,7 @@ export default ({ return this.selectedValues.selectedWindshieldChipCount; }, set: function(newValue) { - this.selectedValues = this.getWindshieldOptions(this.selectedWindshieldDamageTypeValues, newValue, null); + this.selectedValues = this.getWindshieldOptions(this.selectedWindshieldDamageTypeValue, newValue, null); } }, selectedWindshieldReplaceOptionsValues: { @@ -141,7 +133,7 @@ export default ({ return this.selectedValues.selectedWindshieldReplaceOptions; }, set: function(newValue) { - this.selectedValues = this.getWindshieldOptions(this.selectedWindshieldDamageTypeValues, null, newValue); + this.selectedValues = this.getWindshieldOptions(this.selectedWindshieldDamageTypeValue, null, newValue); } }, isWindshieldDamageLocation() { @@ -151,14 +143,10 @@ export default ({ }); }, isRepairOptionSelected(){ - if (!this.selectedWindshieldDamageTypeValues) return false; - - return this.selectedWindshieldDamageTypeValues.some(val => val.toUpperCase() === "REPAIR") && this.isWindshieldDamageLocation; + return this.selectedWindshieldDamageTypeValue === damageLocationsSelected.REPAIR && this.isWindshieldDamageLocation; }, isReplaceOptionSelected(){ - if (!this.selectedWindshieldDamageTypeValues) return false; - - return this.selectedWindshieldDamageTypeValues.some(val => val.toUpperCase() === "REPLACE") && this.isWindshieldDamageLocation; + return this.selectedWindshieldDamageTypeValue === damageLocationsSelected.REPLACE && this.isWindshieldDamageLocation; }, isWindshieldReplaceAvailable() { return !(Array.isArray(this.windshieldAvailableReplacementOptions) && this.windshieldAvailableReplacementOptions.length < 1); diff --git a/src/ux-components/list-card/list-card.vue b/src/ux-components/list-card/list-card.vue index 97bb9a1d6..de5a1a72f 100644 --- a/src/ux-components/list-card/list-card.vue +++ b/src/ux-components/list-card/list-card.vue @@ -63,6 +63,7 @@