From ae387b71daf26c43727ca92986959706f24a2dd9 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Tue, 1 Mar 2022 11:34:36 -0500 Subject: [PATCH 1/8] CSR-297 reponse.data empty object may be valid --- src/global-methods.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/global-methods.js b/src/global-methods.js index a0023ef4c..bb202de13 100644 --- a/src/global-methods.js +++ b/src/global-methods.js @@ -19,7 +19,7 @@ export default { }).then( (response) => { if (response.status == httpStatusCodes.OK) { - if(response.data == undefined || response.data == {}) { + if(response.data == undefined) { reject(response); }else{ resolve(response); From 9dc96ba9e857fe90b9b10dc7ac8bcd3e37aff202 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Thu, 3 Mar 2022 14:09:31 -0500 Subject: [PATCH 2/8] CSR-297 bug fixes --- src/layouts/vehicle-damage/vehicle-damage.vue | 16 +++++------- src/router/router-constants/routing-table.js | 26 +++---------------- src/store/index.js | 3 +++ 3 files changed, 14 insertions(+), 31 deletions(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 5a9eca92f..8f8ae1106 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -132,7 +132,7 @@ export default { }, async forwardButtonAction() { - var windshieldChipCount = this.selectedWindshieldOptions.selectedWindshieldChipCount && this.isWindshieldDamageLocation ? + const windshieldChipCount = this.selectedWindshieldOptions.selectedWindshieldChipCount && this.isWindshieldDamageLocation ? this.selectedWindshieldOptions.selectedWindshieldChipCount[0] : null; store.commit(this.storeMutations.UPDATE_IS_REPAIR, this.isWindshieldRepair); @@ -143,7 +143,7 @@ export default { store.commit(this.storeMutations.UPDATE_GLASS_TO_REPLACE, this.selectedGlassToReplace()); - var partsData = await baseMixin.methods.dispatchNonBlockingStoreAction(this.storeActions.GET_PARTS_OR_QUESTIONS, + const partsData = await baseMixin.methods.dispatchNonBlockingStoreAction(this.storeActions.GET_PARTS_OR_QUESTIONS, { carId: store.getters.vehicle.carId, glassArray: this.selectedGlassToReplace()}, false); this.navigateForward(partsData); @@ -158,14 +158,12 @@ export default { //found multiple parts for a single glass location (Windshield, Driver, Passenger, Rear) if (partsData.data.partsOrQuestions){ - var multiParts = false; - partsData.data.partsOrQuestions.forEach(pq => { - if (pq.parts != null && pq.parts.length > 1){ + for (var i = 0; i < partsData.data.partsOrQuestions.length; i++){ + if (partsData.data.partsOrQuestions[i].parts != null && partsData.data.partsOrQuestions[i].parts.length > 1){ this.$router.navigateAfterSave(this.navigationScenarios.SELECTED_DAMAGE_WITH_MULTIPLE_PARTS, this.$route, {}, {}, partsData.data); - multiParts = true; + return; } - }); - if (multiParts) return; + } } //if not a repair then there should only be 1 part and no problem questions at this point so save the part to the store. @@ -177,7 +175,7 @@ export default { }, selectedGlassToReplace() { - var selectedGlassToReplace = []; + const selectedGlassToReplace = []; if (this.isWindshieldDamageLocation && !this.isWindshieldRepair){ this.selectedWindshieldOptions.selectedWindshieldReplaceOptions.forEach(wsItem => { selectedGlassToReplace.push({ location: damageLocationsParts.WINDSHIELD, name: wsItem}); diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js index 3540d3bf8..58bd128a9 100644 --- a/src/router/router-constants/routing-table.js +++ b/src/router/router-constants/routing-table.js @@ -61,19 +61,14 @@ const routingTable = [ scenario: navigationScenarios.SELECTED_DAMAGE_WITH_SINGLE_PART, destinationFmgPageValue: fmgPageValues.REVEAL, }, - ], - }, - { - fmgPageValue: fmgPageValues.VEHICLE_DAMAGE, - maps: [ - { - scenario: navigationScenarios.CLICKED_BACK, - destinationFmgPageValue: fmgPageValues.VEHICLE_STYLE, - }, { scenario: navigationScenarios.SELECTED_DAMAGE_WITH_MULTIPLE_PARTS, destinationFmgPageValue: fmgPageValues.VEHICLE_PARTS, }, + { + scenario: navigationScenarios.SELECTED_DAMAGE_WITH_PART_QUESTIONS, + destinationFmgPageValue: fmgPageValues.PART_QUESTIONS, + }, ], }, { @@ -89,19 +84,6 @@ const routingTable = [ }, ], }, - { - fmgPageValue: fmgPageValues.VEHICLE_DAMAGE, - maps: [ - { - scenario: navigationScenarios.CLICKED_BACK, - destinationFmgPageValue: fmgPageValues.VEHICLE_STYLE, - }, - { - scenario: navigationScenarios.SELECTED_DAMAGE_WITH_PART_QUESTIONS, - destinationFmgPageValue: fmgPageValues.PART_QUESTIONS, - }, - ], - }, ]; export { routingTable }; diff --git a/src/store/index.js b/src/store/index.js index 41daf3955..d81d1c523 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -68,6 +68,9 @@ export const mutations = { }, updateIsRepair(state, isRepair){ state.order.damage.isRepair = isRepair; + if (!isRepair){ + this.commit(storeMutations.UPDATE_NUMBER_OF_CHIPS, null); + } }, updateNumberOfChips(state, numberOfChips){ state.order.damage.numberOfChips = numberOfChips; From 895bc5c43e57a85295bfaea1f0573dcccc6ae777 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Fri, 4 Mar 2022 12:35:05 -0500 Subject: [PATCH 3/8] CSR-297 WIP persist page selections --- src/constants/damage-locations-selected.js | 7 +++ src/layouts/reveal/reveal.vue | 2 +- src/layouts/vehicle-damage/vehicle-damage.vue | 61 ++++++++++++++++++- .../windshield-options/windshield-options.vue | 2 +- 4 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 src/constants/damage-locations-selected.js diff --git a/src/constants/damage-locations-selected.js b/src/constants/damage-locations-selected.js new file mode 100644 index 000000000..827bbf57b --- /dev/null +++ b/src/constants/damage-locations-selected.js @@ -0,0 +1,7 @@ +const damageLocationsSelected = { + WINDSHIELD: "Windshield", + SIDEDOOR: "SideDoor", + REARWINDOW: "RearWindow", + }; + + export { damageLocationsSelected }; \ No newline at end of file diff --git a/src/layouts/reveal/reveal.vue b/src/layouts/reveal/reveal.vue index 18f0e499d..fdd371e68 100644 --- a/src/layouts/reveal/reveal.vue +++ b/src/layouts/reveal/reveal.vue @@ -51,7 +51,7 @@ export default { ); }, arePagePrerequisitesValid() { - return store.getters.lineItems.glassParts !== null; + return true; }, resetDependentState() { // Set diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 006c87192..1fa6fe6c6 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -48,6 +48,7 @@ import store from "@/store"; import baseMixin from "@/mixins/base-mixin"; import { damageLocationsParts } from "@/constants/damage-locations-parts.js"; import { damageLocationsCms } from "@/constants/damage-locations-cms.js"; +import { damageLocationsSelected } from "@/constants/damage-locations-selected.js"; export default { @@ -106,13 +107,13 @@ export default { }, data(){ return { - selectedDamageLocations: [], + selectedDamageLocations: this.getDamageLocations(), sideDoorOptionsData: { selectedDoorSides: [], selectedDriverSideReplaceOptions: [], selectedPassengerSideReplaceOptions: [] }, - selectedWindshieldOptions: [], + selectedWindshieldOptions: this.getWindshieldOptions(), selectedRearReplaceOptions: [], } }, @@ -131,6 +132,60 @@ export default { ); }, + getDamageLocations() { + var glassSelections = []; + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.WINDSHIELD }) || + store.getters.damage.isRepair) { + glassSelections.push(damageLocationsSelected.WINDSHIELD); + } + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.DRIVER })) { + glassSelections.push(damageLocationsSelected.SIDEDOOR); + } + + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.PASSENGER })) { + glassSelections.push(damageLocationsSelected.SIDEDOOR); + } + + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.REAR })) { + glassSelections.push(damageLocationsSelected.REARWINDOW); + } + + return glassSelections; + }, + + getWindshieldOptions() { + 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.location === damageLocationsParts.WINDSHIELD && + glass.name === "Single" })) { + windShieldOptions.selectedWindshieldDamageType.push("Replace"); + windShieldOptions.selectedWindshieldReplaceOptions.push("Single"); + } + + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.WINDSHIELD && + glass.name === "Driver" })) { + windShieldOptions.selectedWindshieldDamageType.push("Replace"); + windShieldOptions.selectedWindshieldReplaceOptions.push("Driver"); + } + + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.WINDSHIELD && + glass.name === "Passenger" })) { + windShieldOptions.selectedWindshieldDamageType.push("Replace"); + windShieldOptions.selectedWindshieldReplaceOptions.push("Passenger"); + } + } + + if (store.getters.damage.isRepair) { + windShieldOptions.selectedWindshieldDamageType.push("Repair"); + windShieldOptions.selectedWindshieldChipCount.push(store.getters.damage.numberOfChips); + } + + return windShieldOptions; + }, + async forwardButtonAction() { const windshieldChipCount = this.selectedWindshieldOptions.selectedWindshieldChipCount && this.isWindshieldDamageLocation ? this.selectedWindshieldOptions.selectedWindshieldChipCount[0] : null; @@ -171,7 +226,7 @@ export default { store.commit(this.storeMutations.UPDATE_PARTS, partsData.data.partsOrQuestions[0].parts); } - this.$router.navigateAfterSave(this.navigationScenarios.SELECTED_DAMAGE_WITH_SINGLE_PART, this.$route); + this.$router.navigate(this.navigationScenarios.SELECTED_DAMAGE_WITH_SINGLE_PART, this.$route); }, selectedGlassToReplace() { diff --git a/src/layouts/vehicle-damage/windshield-options/windshield-options.vue b/src/layouts/vehicle-damage/windshield-options/windshield-options.vue index ed214158e..f0020de43 100644 --- a/src/layouts/vehicle-damage/windshield-options/windshield-options.vue +++ b/src/layouts/vehicle-damage/windshield-options/windshield-options.vue @@ -70,7 +70,7 @@ export default ({ }, selectedWindshieldChipCountValues: { get: function() { - return this.selectedValues.selectedChipCount; + return this.selectedValues.selectedWindshieldChipCount; }, set: function(newValue) { this.selectedValues = this.getWindshieldOptions(this.selectedWindshieldDamageTypeValues, newValue, null); From eead9f0ccd26233c5a771a53912461441d0b2724 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Sun, 6 Mar 2022 15:29:28 -0500 Subject: [PATCH 4/8] CSR-297 persist vehicle damage selections and tests --- src/constants/damage-locations-parts.js | 8 - src/constants/damage-locations-selected.js | 14 ++ .../vehicle-damage/vehicle-damage.spec.js | 172 +++++++++++++++++- src/layouts/vehicle-damage/vehicle-damage.vue | 117 ++++++++---- src/layouts/vehicle-year/vehicle-year.vue | 4 + 5 files changed, 268 insertions(+), 47 deletions(-) delete mode 100644 src/constants/damage-locations-parts.js diff --git a/src/constants/damage-locations-parts.js b/src/constants/damage-locations-parts.js deleted file mode 100644 index 465d58420..000000000 --- a/src/constants/damage-locations-parts.js +++ /dev/null @@ -1,8 +0,0 @@ -const damageLocationsParts = { - WINDSHIELD: "Windshield", - DRIVER: "Driver", - PASSENGER: "Passenger", - REAR: "Rear", - }; - - export { damageLocationsParts }; \ No newline at end of file diff --git a/src/constants/damage-locations-selected.js b/src/constants/damage-locations-selected.js index 827bbf57b..905d9c8c5 100644 --- a/src/constants/damage-locations-selected.js +++ b/src/constants/damage-locations-selected.js @@ -2,6 +2,20 @@ const damageLocationsSelected = { WINDSHIELD: "Windshield", SIDEDOOR: "SideDoor", REARWINDOW: "RearWindow", + REPAIR: "Repair", + REPLACE: "Replace", + DRIVER: "Driver", + PASSENGER: "Passenger", + FRONT: "Front", + REAR: "Rear", + BACK: "Back", + QUARTER: "Quarter", + VENT: "Vent", + SINGLE: "Single", + DRIVERSIDE: "DriverSide", + PASSENGERSIDE: "PassengerSide", + STATIONARY: "Stationary", + SLIDER: "Slider" }; export { damageLocationsSelected }; \ No newline at end of file diff --git a/src/layouts/vehicle-damage/vehicle-damage.spec.js b/src/layouts/vehicle-damage/vehicle-damage.spec.js index 39ee4beda..67d127d75 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.spec.js +++ b/src/layouts/vehicle-damage/vehicle-damage.spec.js @@ -19,6 +19,7 @@ import { nextTick } from "vue"; import { storeActions } from "@/constants/store-actions"; import { storeMutations } from "@/constants/store-mutations"; import store from "@/store"; +import { damageLocationsSelected } from "@/constants/damage-locations-selected.js"; // Mock our module for promises. jest.mock("@/helpers/layout-helper.js", () => ({ @@ -38,6 +39,9 @@ jest.mock("@/store", () => ({ vehicle: { carId: "C00000000", }, + damage: { + glassToReplace: [] + }, }, })); @@ -252,7 +256,7 @@ describe("vehicle-damage.vue", () => { }); describe("vehicle-damage.vue", () => { - test("Windshield replace with single part on ForwardButtonAction triggers a router.navigateAfterSave and saves selections to store", async () => { + test("Windshield replace with single part on ForwardButtonAction triggers a router.navigate and saves selections to store", async () => { //Arrange const partsData = { partsOrQuestions: [ { @@ -272,7 +276,7 @@ describe("vehicle-damage.vue", () => { const { wrapper } = setupMocks({ pageHeaderWidgetHeaderText: "", mountOptionsMockData: { - router: { navigateAfterSave: jest.fn(), }, + router: { navigate: jest.fn(), }, actionList: [{ actionName: storeActions.GET_PARTS_OR_QUESTIONS, data: partsData, },],}, }); @@ -296,7 +300,7 @@ describe("vehicle-damage.vue", () => { await wrapper.vm.forwardButtonAction(); //Assert - expect(wrapper.vm.$router.navigateAfterSave).toHaveBeenCalled(); + expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace); expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, false); expect(store.commit).toBeCalledWith(storeMutations.UPDATE_GLASS_TO_REPLACE, expectedGlassToReplace); @@ -389,13 +393,13 @@ describe("vehicle-damage.vue", () => { describe("vehicle-damage.vue", () => { - test("Windshield repair on ForwardButtonAction triggers a router.navigateAfterSave and saves selection to store", async () => { + test("Windshield repair on ForwardButtonAction triggers a router.navigate and saves selection to store", async () => { //Arrange const partsData = { partsOrQuestions: []}; const { wrapper } = setupMocks({ pageHeaderWidgetHeaderText: "", mountOptionsMockData: { - router: { navigateAfterSave: jest.fn(), }, + router: { navigate: jest.fn(), }, actionList: [{ actionName: storeActions.GET_PARTS_OR_QUESTIONS, data: partsData, },],}, }); @@ -416,7 +420,7 @@ describe("vehicle-damage.vue", () => { await wrapper.vm.forwardButtonAction(); //Assert - expect(wrapper.vm.$router.navigateAfterSave).toHaveBeenCalled(); + expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, true); expect(store.commit).toBeCalledWith(storeMutations.UPDATE_NUMBER_OF_CHIPS, 2); }); @@ -596,6 +600,162 @@ describe("vehicle-damage.vue", () => { }); }); +const damageLocations = [["Windshield", [damageLocationsSelected.WINDSHIELD]], + ["Driver", [damageLocationsSelected.SIDEDOOR]], + ["Passenger", [damageLocationsSelected.SIDEDOOR]], + ["Rear", [damageLocationsSelected.REARWINDOW]]]; +describe("vehicle-damage.vue", () => { + test.each(damageLocations)("getDamageLocationsFromStore for %s returns expected %s", async (damageLocation, expectedGlass) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { vehicle: { carId: "C0000000" }, damage: { glassToReplace: [{location: damageLocation}] }, isRepair: true}; + + var glassSelections = wrapper.vm.getDamageLocationsFromStore(); + + //Assert + expect(glassSelections).toEqual(expectedGlass); + + }); +}); + +const storeWindshieldOptions = [[1, false, "Windshield", "Single", { selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], + selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.SINGLE]}], + [2, false, "Windshield", "Driver", { selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], + selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.DRIVER]}], + [3, false, "Windshield", "Passenger", { selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], + selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.PASSENGER]}], + [4, true, "", "", { selectedWindshieldDamageType: [damageLocationsSelected.REPAIR], + selectedWindshieldChipCount: [2], selectedWindshieldReplaceOptions: []}] + ]; +describe("vehicle-damage.vue", () => { + test.each(storeWindshieldOptions)("getWindshieldOptionsFromStore test #%s", async (testNum, isRepair, damageLocation, damageName, expectedWindshieldOptions) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { + vehicle: + { carId: "C0000000" }, + damage: + { + glassToReplace: [{location: damageLocation, name: damageName}], + isRepair: isRepair, + numberOfChips: 2 + }, + }; + + var windshieldSelections = wrapper.vm.getWindshieldOptionsFromStore(); + + //Assert + expect(windshieldSelections).toEqual(expectedWindshieldOptions); + + }); +}); + +const driverDoorSides = [["Driver", "Front", [damageLocationsSelected.FRONT]], + ["Driver", "Back", [damageLocationsSelected.BACK]], + ["Driver", "Vent", [damageLocationsSelected.VENT]], + ["Driver", "Quarter", [damageLocationsSelected.QUARTER]] + ]; +describe("vehicle-damage.vue", () => { + test.each(driverDoorSides)("getDriverSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { vehicle: { carId: "C0000000" }, damage: { glassToReplace: [{location: damageLocation, name: damageName}] }, isRepair: true}; + + var glassSelections = wrapper.vm.getDriverSideReplaceOptionsFromStore(); + + //Assert + expect(glassSelections).toEqual(expectedGlass); + + }); +}); + +const passengerDoorSides = [["Passenger", "Front", [damageLocationsSelected.FRONT]], + ["Passenger", "Back", [damageLocationsSelected.BACK]], + ["Passenger", "Vent", [damageLocationsSelected.VENT]], + ["Passenger", "Quarter", [damageLocationsSelected.QUARTER]] + ]; +describe("vehicle-damage.vue", () => { + test.each(passengerDoorSides)("getPassengerSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { vehicle: { carId: "C0000000" }, damage: { glassToReplace: [{location: damageLocation, name: damageName}] }, isRepair: true}; + + var glassSelections = wrapper.vm.getPassengerSideReplaceOptionsFromStore(); + + //Assert + expect(glassSelections).toEqual(expectedGlass); + + }); +}); + +const rearReplaceOptions = [["Rear", "Stationary", [damageLocationsSelected.STATIONARY]], + ["Rear", "Slider", [damageLocationsSelected.SLIDER]] + ]; +describe("vehicle-damage.vue", () => { + test.each(rearReplaceOptions)("getRearReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { vehicle: { carId: "C0000000" }, damage: { glassToReplace: [{location: damageLocation, name: damageName}] }, isRepair: true}; + + var glassSelections = wrapper.vm.getRearReplaceOptionsFromStore(); + + //Assert + expect(glassSelections).toEqual(expectedGlass); + + }); +}); + + function setupMocks({ pageHeaderWidgetHeaderText = {}, mountOptionsMockData = { diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 1fa6fe6c6..f71fde437 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -46,7 +46,6 @@ import { settleAllPromises } from "@/helpers/layout-helper"; import { storeActions } from "@/constants/store-actions"; import store from "@/store"; import baseMixin from "@/mixins/base-mixin"; -import { damageLocationsParts } from "@/constants/damage-locations-parts.js"; import { damageLocationsCms } from "@/constants/damage-locations-cms.js"; import { damageLocationsSelected } from "@/constants/damage-locations-selected.js"; @@ -107,14 +106,14 @@ export default { }, data(){ return { - selectedDamageLocations: this.getDamageLocations(), + selectedDamageLocations: this.getDamageLocationsFromStore(), sideDoorOptionsData: { - selectedDoorSides: [], - selectedDriverSideReplaceOptions: [], - selectedPassengerSideReplaceOptions: [] + selectedDoorSides: this.getDoorSidesFromStore(), + selectedDriverSideReplaceOptions: this.getDriverSideReplaceOptionsFromStore(), + selectedPassengerSideReplaceOptions: this.getPassengerSideReplaceOptionsFromStore() }, - selectedWindshieldOptions: this.getWindshieldOptions(), - selectedRearReplaceOptions: [], + selectedWindshieldOptions: this.getWindshieldOptionsFromStore(), + selectedRearReplaceOptions: this.getRearReplaceOptionsFromStore(), } }, methods: { @@ -125,6 +124,10 @@ export default { store.dispatch(storeActions.RESET_PARTS_STATE_AND_DEPENDENCIES); }, backButtonAction() { + store.commit(this.storeMutations.UPDATE_IS_REPAIR, null); + store.commit(this.storeMutations.UPDATE_NUMBER_OF_CHIPS, null); + store.commit(this.storeMutations.UPDATE_GLASS_TO_REPLACE, []); + // route to move backwards this.$router.navigate( this.navigationScenarios.CLICKED_BACK, @@ -132,60 +135,108 @@ export default { ); }, - getDamageLocations() { + getDamageLocationsFromStore() { var glassSelections = []; - if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.WINDSHIELD }) || + + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsSelected.WINDSHIELD }) || store.getters.damage.isRepair) { glassSelections.push(damageLocationsSelected.WINDSHIELD); } - if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.DRIVER })) { + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsSelected.DRIVER || + glass.location === damageLocationsSelected.PASSENGER })) { glassSelections.push(damageLocationsSelected.SIDEDOOR); } - if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.PASSENGER })) { - glassSelections.push(damageLocationsSelected.SIDEDOOR); - } - - if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.REAR })) { + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsSelected.REAR })) { glassSelections.push(damageLocationsSelected.REARWINDOW); } return glassSelections; }, - getWindshieldOptions() { + getWindshieldOptionsFromStore() { 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.location === damageLocationsParts.WINDSHIELD && - glass.name === "Single" })) { - windShieldOptions.selectedWindshieldDamageType.push("Replace"); - windShieldOptions.selectedWindshieldReplaceOptions.push("Single"); + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsSelected.WINDSHIELD && + glass.name === damageLocationsSelected.SINGLE })) { + windShieldOptions.selectedWindshieldDamageType.push(damageLocationsSelected.REPLACE); + windShieldOptions.selectedWindshieldReplaceOptions.push(damageLocationsSelected.SINGLE); } - if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.WINDSHIELD && - glass.name === "Driver" })) { - windShieldOptions.selectedWindshieldDamageType.push("Replace"); - windShieldOptions.selectedWindshieldReplaceOptions.push("Driver"); + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsSelected.WINDSHIELD && + glass.name === damageLocationsSelected.DRIVER })) { + windShieldOptions.selectedWindshieldDamageType.push(damageLocationsSelected.REPLACE); + windShieldOptions.selectedWindshieldReplaceOptions.push(damageLocationsSelected.DRIVER); } - if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsParts.WINDSHIELD && - glass.name === "Passenger" })) { - windShieldOptions.selectedWindshieldDamageType.push("Replace"); - windShieldOptions.selectedWindshieldReplaceOptions.push("Passenger"); + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsSelected.WINDSHIELD && + glass.name === damageLocationsSelected.PASSENGER })) { + windShieldOptions.selectedWindshieldDamageType.push(damageLocationsSelected.REPLACE); + windShieldOptions.selectedWindshieldReplaceOptions.push(damageLocationsSelected.PASSENGER); } } if (store.getters.damage.isRepair) { - windShieldOptions.selectedWindshieldDamageType.push("Repair"); + windShieldOptions.selectedWindshieldDamageType.push(damageLocationsSelected.REPAIR); windShieldOptions.selectedWindshieldChipCount.push(store.getters.damage.numberOfChips); } return windShieldOptions; + + }, + + getDoorSidesFromStore() { + var doorSides = []; + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsSelected.DRIVER })){ + doorSides.push(damageLocationsSelected.DRIVERSIDE); + } + + if (store.getters.damage.glassToReplace.some(glass => { return glass.location === damageLocationsSelected.PASSENGER })){ + doorSides.push(damageLocationsSelected.PASSENGERSIDE); + } + + return doorSides; + }, + + getDriverSideReplaceOptionsFromStore() { + var driverSideReplaceOptions = []; + + store.getters.damage.glassToReplace.forEach(glass => { + if (glass.location === damageLocationsSelected.DRIVER){ + driverSideReplaceOptions.push(glass.name); + } + }); + + return driverSideReplaceOptions; }, + getPassengerSideReplaceOptionsFromStore() { + var passengerSideReplaceOptions = []; + + store.getters.damage.glassToReplace.forEach(glass => { + if (glass.location === damageLocationsSelected.PASSENGER){ + passengerSideReplaceOptions.push(glass.name); + } + }); + + return passengerSideReplaceOptions; + }, + + getRearReplaceOptionsFromStore(){ + var rearReplaceOptions = []; + + store.getters.damage.glassToReplace.forEach(glass => { + if (glass.location === damageLocationsSelected.REAR){ + rearReplaceOptions.push(glass.name); + } + }); + + return rearReplaceOptions; + }, + async forwardButtonAction() { const windshieldChipCount = this.selectedWindshieldOptions.selectedWindshieldChipCount && this.isWindshieldDamageLocation ? this.selectedWindshieldOptions.selectedWindshieldChipCount[0] : null; @@ -233,25 +284,25 @@ export default { const selectedGlassToReplace = []; if (this.isWindshieldDamageLocation && !this.isWindshieldRepair){ this.selectedWindshieldOptions.selectedWindshieldReplaceOptions.forEach(wsItem => { - selectedGlassToReplace.push({ location: damageLocationsParts.WINDSHIELD, name: wsItem}); + selectedGlassToReplace.push({ location: damageLocationsSelected.WINDSHIELD, name: wsItem}); }) } if (this.isDriverSideReplace){ this.sideDoorOptionsData.selectedDriverSideReplaceOptions.forEach(driverItem => { - selectedGlassToReplace.push({ location: damageLocationsParts.DRIVER, name: driverItem}); + selectedGlassToReplace.push({ location: damageLocationsSelected.DRIVER, name: driverItem}); }) } if (this.isPassengerSideReplace){ this.sideDoorOptionsData.selectedPassengerSideReplaceOptions.forEach(passengerItem => { - selectedGlassToReplace.push({ location: damageLocationsParts.PASSENGER, name: passengerItem}); + selectedGlassToReplace.push({ location: damageLocationsSelected.PASSENGER, name: passengerItem}); }) } if (this.isRearWindowDamageLocation) { this.selectedRearReplaceOptions.forEach(rearItem => { - selectedGlassToReplace.push({ location: damageLocationsParts.REAR, name: rearItem}); + selectedGlassToReplace.push({ location: damageLocationsSelected.REAR, name: rearItem}); }) } diff --git a/src/layouts/vehicle-year/vehicle-year.vue b/src/layouts/vehicle-year/vehicle-year.vue index 460c8ced4..869cd6acb 100644 --- a/src/layouts/vehicle-year/vehicle-year.vue +++ b/src/layouts/vehicle-year/vehicle-year.vue @@ -93,6 +93,10 @@ export default { store.commit(storeMutations.UPDATE_STYLE, null); store.commit(storeMutations.UPDATE_CAR_ID, null); store.commit(storeMutations.UPDATE_VEHICLE_CATEGORY, null); + store.commit(storeMutations.UPDATE_IS_REPAIR, null); + store.commit(storeMutations.UPDATE_NUMBER_OF_CHIPS, null); + store.commit(storeMutations.UPDATE_GLASS_TO_REPLACE, []); + // Invokes store.dispatch(storeActions.RESET_DAMAGE_STATE_AND_DEPENDENCIES); From a40600bba553a934719a5faa6a0dffe538cd232c Mon Sep 17 00:00:00 2001 From: CarlNation Date: Sun, 6 Mar 2022 15:42:47 -0500 Subject: [PATCH 5/8] CSR-297 - reset vehicle damage selections --- src/layouts/vehicle-style/vehicle-style.vue | 4 ++++ src/layouts/vehicle-year/vehicle-year.vue | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/layouts/vehicle-style/vehicle-style.vue b/src/layouts/vehicle-style/vehicle-style.vue index d7b37b4b0..c5aec920c 100644 --- a/src/layouts/vehicle-style/vehicle-style.vue +++ b/src/layouts/vehicle-style/vehicle-style.vue @@ -27,6 +27,7 @@ import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { settleAllPromises } from "@/helpers/layout-helper"; import { storeActions } from "@/constants/store-actions"; import store from "@/store"; +import { storeMutations } from "@/constants/store-mutations"; export default { name: "vehicle-style", @@ -101,6 +102,9 @@ export default { // Invokes store.dispatch(storeActions.RESET_DAMAGE_STATE_AND_DEPENDENCIES); store.dispatch(storeActions.RESET_REGISTRATION_STATE_AND_DEPENDENCIES); + store.commit(storeMutations.UPDATE_IS_REPAIR, null); + store.commit(storeMutations.UPDATE_NUMBER_OF_CHIPS, null); + store.commit(storeMutations.UPDATE_GLASS_TO_REPLACE, []); }, }, diff --git a/src/layouts/vehicle-year/vehicle-year.vue b/src/layouts/vehicle-year/vehicle-year.vue index 869cd6acb..563ecb31d 100644 --- a/src/layouts/vehicle-year/vehicle-year.vue +++ b/src/layouts/vehicle-year/vehicle-year.vue @@ -93,9 +93,6 @@ export default { store.commit(storeMutations.UPDATE_STYLE, null); store.commit(storeMutations.UPDATE_CAR_ID, null); store.commit(storeMutations.UPDATE_VEHICLE_CATEGORY, null); - store.commit(storeMutations.UPDATE_IS_REPAIR, null); - store.commit(storeMutations.UPDATE_NUMBER_OF_CHIPS, null); - store.commit(storeMutations.UPDATE_GLASS_TO_REPLACE, []); // Invokes From 2f88ac6daa82b842fa31cf00f63189fc0c794332 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Sun, 6 Mar 2022 20:56:03 -0500 Subject: [PATCH 6/8] CSR-297 this moved to style page --- src/layouts/vehicle-damage/vehicle-damage.vue | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index f71fde437..9a16b7a96 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -124,10 +124,6 @@ export default { store.dispatch(storeActions.RESET_PARTS_STATE_AND_DEPENDENCIES); }, backButtonAction() { - store.commit(this.storeMutations.UPDATE_IS_REPAIR, null); - store.commit(this.storeMutations.UPDATE_NUMBER_OF_CHIPS, null); - store.commit(this.storeMutations.UPDATE_GLASS_TO_REPLACE, []); - // route to move backwards this.$router.navigate( this.navigationScenarios.CLICKED_BACK, From 3e91d1dbee4a305618d0788c88588df368627d87 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Mon, 7 Mar 2022 08:51:13 -0500 Subject: [PATCH 7/8] CSR-297 tint mapper --- src/constants/tint-mapper.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/constants/tint-mapper.js b/src/constants/tint-mapper.js index 949ab19a7..516fc2a1e 100644 --- a/src/constants/tint-mapper.js +++ b/src/constants/tint-mapper.js @@ -35,7 +35,7 @@ const tintMap = { { name: "gray tint privacy", src: "Glass-NoShade-Privacy.svg" }, // No shade or tint - { name: "no shade, no tint", src: "Glass-NoShade-NoTint.svg" }, // ??? + { name: "clear", src: "Glass-NoShade-NoTint.svg" } ], windshield: [ @@ -70,7 +70,7 @@ const tintMap = { { name: "gray tint privacy", src: "Windshield-NoShade-Privacy.svg" }, // No shade or tint - { name: "no shade, no tint", src: "Windshield-NoShade-NoTint.svg" }, // ??? + { name: "clear", src: "Windshield-NoShade-NoTint.svg" }, ] } From acc7adcb4a29194182665269ac5c4d5efdc1e9e6 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Mon, 7 Mar 2022 09:56:31 -0500 Subject: [PATCH 8/8] CSR-297 chip count reset in page and not store --- src/layouts/vehicle-damage/vehicle-damage.vue | 4 +++- src/store/index.js | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 9a16b7a96..fc684ef63 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -239,8 +239,10 @@ export default { store.commit(this.storeMutations.UPDATE_IS_REPAIR, this.isWindshieldRepair); - if (windshieldChipCount){ + if (this.isWindshieldRepair && windshieldChipCount){ store.commit(this.storeMutations.UPDATE_NUMBER_OF_CHIPS, parseInt(windshieldChipCount)); + } else { + store.commit(this.storeMutations.UPDATE_NUMBER_OF_CHIPS, null); } store.commit(this.storeMutations.UPDATE_GLASS_TO_REPLACE, this.selectedGlassToReplace()); diff --git a/src/store/index.js b/src/store/index.js index a231dfabb..4b0e06eb4 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -68,9 +68,6 @@ export const mutations = { }, updateIsRepair(state, isRepair){ state.order.damage.isRepair = isRepair; - if (!isRepair){ - this.commit(storeMutations.UPDATE_NUMBER_OF_CHIPS, null); - } }, updateNumberOfChips(state, numberOfChips){ state.order.damage.numberOfChips = numberOfChips;