From 3823ab8d7f82ddb5aa1a4c150e79b4b4e8991807 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Thu, 16 Jan 2025 16:15:31 -0500 Subject: [PATCH 1/2] CASH-77: update where saveQuote is called to allow for loading icon and delay until complete --- .../save-progress-modal-question.vue | 12 ++++++---- .../save-progress-popup-question.vue | 12 +++++----- src/layouts/quote/quote.vue | 22 ++++++++++--------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue b/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue index d0ac790f3..510f7bc3e 100644 --- a/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue +++ b/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue @@ -37,6 +37,7 @@ import modal from "@/digital-components/modal/modal"; import { storeActions } from "@/constants/store-actions.js"; import buttonMain from "@/ux-components/button-main/button-main"; import alert from "@/ux-components/alert/alert"; +import { saveQuote } from "@/helpers/heritage-integration/order-helper.js"; export default { name: "save-progress-modal-question", @@ -88,13 +89,16 @@ export default { // save email address to store await this.dispatchStoreAction(storeActions.SAVE_EMAIL, this.userInput, false); + // send store call to send to new API (that triggers an email send) + await saveQuote({ pageNameToLog: this.pageName }); + // hide save progress button; show success message alert this.isProgressSaved = true; - + + // communicate to parent the new status + this.$emit("save-progress-saved"); + this.modal.closeModal(); - - // send store call to send to new API (that triggers an email send) - this.$emit("save-progress"); }, }, diff --git a/src/fmg-components/save-progress-popup-question/save-progress-popup-question.vue b/src/fmg-components/save-progress-popup-question/save-progress-popup-question.vue index e87bc1f84..e23266a51 100644 --- a/src/fmg-components/save-progress-popup-question/save-progress-popup-question.vue +++ b/src/fmg-components/save-progress-popup-question/save-progress-popup-question.vue @@ -38,6 +38,7 @@ import modal from "@/digital-components/modal/modal"; import { storeActions } from "@/constants/store-actions.js"; import buttonMain from "@/ux-components/button-main/button-main"; import alert from "@/ux-components/alert/alert"; +import { saveQuote } from "@/helpers/heritage-integration/order-helper.js"; export default { name: "save-progress-popup-question", @@ -99,15 +100,14 @@ export default { // save email address to store await this.dispatchStoreAction(storeActions.SAVE_EMAIL, this.userInput, false); + // send store call to send to new API (that triggers an email send) + await saveQuote({ pageNameToLog: this.pageName }); + // hide save progress button; show success message alert this.isProgressSaved = true; - // send store call to send to new API (that triggers an email send) - this.$emit("save-progress"); - - // send call to close popup - this.closeModal(); - this.$emit("close-save-progress-popup"); + // communicate to parent the new status + this.$emit("save-progress-saved"); }, }, diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index f2176a529..f7f43731a 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -82,8 +82,9 @@ + v-if="showSaveProgressModal" + pageName="quote" + @save-progress-saved="updateSaveProgressAsSaved" /> @@ -209,6 +211,7 @@ export default { const emailFromStore = store.getters.order.customer.emailAddress; const isEmailInStoreOnPageLoad = emailFromStore?.length > 0; const showSaveProgressPopup = isEmailInStoreOnPageLoad ? false : true; + const showSaveProgressModal = isEmailInStoreOnPageLoad ? false : true; const lineItems = deepClone(store.getters.order.lineItems); lineItems.vaps = lineItems.vaps ?? []; @@ -290,8 +293,8 @@ export default { // Call the "next" function to complete the transition to this page. next(async (vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.isEmailInStoreOnPageLoad = isEmailInStoreOnPageLoad; vm.showSaveProgressPopup = showSaveProgressPopup; + vm.showSaveProgressModal = showSaveProgressModal; vm.addableVaps = addableVaps; vm.lineItems = lineItems; vm.availableLineItems = pricingResults; @@ -438,8 +441,9 @@ export default { servicePackage: null, holdParentAccountNumber: null, holdBillToAccountNumber: null, - isEmailInStoreOnPageLoad: null, showSaveProgressPopup: null, + showSaveProgressModal: null, + isSaveProgressComplete: null, }; }, mounted() { @@ -529,10 +533,8 @@ export default { backButtonAction() { vehicleQuestionsMixin.methods.navigateBack(this); }, - saveProgress() { - this.isEmailInStoreOnPageLoad = true; - this.showSaveProgressPopup = false; - saveQuote({ pageNameToLog: "quote" }); + updateSaveProgressAsSaved() { + this.showSaveProgressModal = false; }, closeSaveProgressPopup() { this.showSaveProgressPopup = false; From 986f526d842e6b925ec98526ba66c369599035e3 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Thu, 16 Jan 2025 16:26:35 -0500 Subject: [PATCH 2/2] CASH-77: update naming on questions pages --- .../capability-questions/capability-questions.vue | 12 ++++-------- src/layouts/molding-questions/molding-questions.vue | 12 ++++-------- src/layouts/part-questions/part-questions.vue | 12 ++++-------- src/layouts/vehicle-parts/vehicle-parts.vue | 12 ++++-------- 4 files changed, 16 insertions(+), 32 deletions(-) diff --git a/src/layouts/capability-questions/capability-questions.vue b/src/layouts/capability-questions/capability-questions.vue index 9d51ec2f7..1896513a1 100644 --- a/src/layouts/capability-questions/capability-questions.vue +++ b/src/layouts/capability-questions/capability-questions.vue @@ -16,8 +16,8 @@ + pageName="capability-questions" + v-if="showSaveProgressModal" /> @@ -38,7 +38,6 @@ import { required } from "@/helpers/validation-rules"; import { errorMessages } from "@/constants/error-messages"; import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; import baseMixin from "@/mixins/base-mixin.js"; -import { saveQuote } from "@/helpers/heritage-integration/order-helper.js"; // DEFINE VALIDATION RULES defineRule("questions-required", required(errorMessages.OPTION_REQUIRED)); @@ -65,7 +64,7 @@ export default { // Call the "next" function to complete the transition to this page. next(async (vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.isEmailInStoreOnPageLoad = emailFromStore?.length > 0; + vm.showSaveProgressModal = !(emailFromStore?.length > 0); if (store.getters.externalParameterState?.isExternalParameter) { if (store.getters.externalParameterServiceZip.zipCode) { await baseMixin.methods.dispatchStoreAction( @@ -87,7 +86,7 @@ export default { questionsData: null, selectedAnswers: {}, currentGlassIndex: 0, - isEmailInStoreOnPageLoad: null, + showSaveProgressModal: null, }; }, computed: { @@ -157,9 +156,6 @@ export default { this.questionsData ); }, - saveProgress() { - saveQuote({ pageNameToLog: "capability-questions" }); - }, async forwardButtonAction() { const questionAnswersArray = this.questionsData.map((glass) => { // get answerResult2 of returned answer diff --git a/src/layouts/molding-questions/molding-questions.vue b/src/layouts/molding-questions/molding-questions.vue index 2f2cc346c..1bcc3d7a8 100644 --- a/src/layouts/molding-questions/molding-questions.vue +++ b/src/layouts/molding-questions/molding-questions.vue @@ -16,8 +16,8 @@ + pageName="molding-questions" + v-if="showSaveProgressModal" /> @@ -38,7 +38,6 @@ import { required } from "@/helpers/validation-rules"; import { errorMessages } from "@/constants/error-messages"; import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; import baseMixin from "@/mixins/base-mixin.js"; -import { saveQuote } from "@/helpers/heritage-integration/order-helper.js"; // DEFINE VALIDATION RULES defineRule("questions-required", required(errorMessages.OPTION_REQUIRED)); @@ -65,7 +64,7 @@ export default { // Call the "next" function to complete the transition to this page. next(async (vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.isEmailInStoreOnPageLoad = emailFromStore?.length > 0; + vm.showSaveProgressModal = !(emailFromStore?.length > 0); if (store.getters.externalParameterState?.isExternalParameter) { if (store.getters.externalParameterServiceZip.zipCode) { await baseMixin.methods.dispatchStoreAction( @@ -88,7 +87,7 @@ export default { questionsData: null, selectedAnswers: {}, currentGlassIndex: 0, - isEmailInStoreOnPageLoad: null, + showSaveProgressModal: null, }; }, computed: { @@ -157,9 +156,6 @@ export default { this.questionsData ); }, - saveProgress() { - saveQuote({ pageNameToLog: "molding-questions" }); - }, async forwardButtonAction() { const questionAnswersArray = this.questionsData.map((glass) => { return { diff --git a/src/layouts/part-questions/part-questions.vue b/src/layouts/part-questions/part-questions.vue index a5441acd6..f905e86c7 100644 --- a/src/layouts/part-questions/part-questions.vue +++ b/src/layouts/part-questions/part-questions.vue @@ -16,8 +16,8 @@ + pageName="part-questions" + v-if="showSaveProgressModal" /> @@ -38,7 +38,6 @@ import { required } from "@/helpers/validation-rules"; import { errorMessages } from "@/constants/error-messages"; import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; import baseMixin from "@/mixins/base-mixin.js"; -import { saveQuote } from "@/helpers/heritage-integration/order-helper.js"; // DEFINE VALIDATION RULES defineRule("questions-required", required(errorMessages.OPTION_REQUIRED)); @@ -65,7 +64,7 @@ export default { // Call the "next" function to complete the transition to this page. next(async (vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.isEmailInStoreOnPageLoad = emailFromStore?.length > 0; + vm.showSaveProgressModal = !(emailFromStore?.length > 0); if (store.getters.externalParameterState?.isExternalParameter) { if (store.getters.externalParameterServiceZip.zipCode) { const serviceState = store.getters.order.serviceLocation.state; @@ -89,7 +88,7 @@ export default { questionsData: null, selectedAnswers: {}, currentGlassIndex: 0, - isEmailInStoreOnPageLoad: null, + showSaveProgressModal: null, }; }, computed: { @@ -156,9 +155,6 @@ export default { this.questionsData ); }, - saveProgress() { - saveQuote({ pageNameToLog: "part-questions" }); - }, async forwardButtonAction() { const questionAnswersArray = this.questionsData.map((glass) => { return { diff --git a/src/layouts/vehicle-parts/vehicle-parts.vue b/src/layouts/vehicle-parts/vehicle-parts.vue index b0a1ffcd9..fd9b90b79 100644 --- a/src/layouts/vehicle-parts/vehicle-parts.vue +++ b/src/layouts/vehicle-parts/vehicle-parts.vue @@ -48,8 +48,8 @@ + pageName="vehicle-parts" + v-if="showSaveProgressModal" /> @@ -75,7 +75,6 @@ import store from "@/store"; import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; import baseMixin from "@/mixins/base-mixin.js"; import { partTypeStrings } from "@/constants/part-type-strings"; -import { saveQuote } from "@/helpers/heritage-integration/order-helper.js"; export default { name: "vehicle-parts", @@ -95,7 +94,7 @@ export default { // Call the "next" function to complete the transition to this page. next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.isEmailInStoreOnPageLoad = emailFromStore?.length > 0; + vm.showSaveProgressModal = !(emailFromStore?.length > 0); // Glass Part Question dynamic component Object.keys(vm.$refs) .filter((r) => r.includes(vm.RefPrefix) && vm.$refs[r][0] !== undefined) @@ -115,7 +114,7 @@ export default { selectedGlassParts: {}, alertWidgetData: Object, alreadyPopulatedPartsData: [], - isEmailInStoreOnPageLoad: null, + showSaveProgressModal: null, }; }, computed: { @@ -234,9 +233,6 @@ export default { }); }); }, - saveProgress() { - saveQuote({ pageNameToLog: "vehicle-parts" }); - }, }, mounted() { this.LoadInitialPartsData();