From 941dca6b948893996a03f2d55b0901466c50b28a Mon Sep 17 00:00:00 2001 From: Jason Wheeler Date: Tue, 25 Apr 2023 09:58:59 -0400 Subject: [PATCH 01/14] partial --- src/global-methods.js | 6 ++ .../provider-preference.vue | 81 +++++++++++++++---- src/store/index.js | 34 ++++---- 3 files changed, 89 insertions(+), 32 deletions(-) diff --git a/src/global-methods.js b/src/global-methods.js index 3f7e75b8..9e9f7bd3 100644 --- a/src/global-methods.js +++ b/src/global-methods.js @@ -37,6 +37,12 @@ export default { }, error => { console.error(error); + + //implement if analytics service is down + if(endpoint.includes("analytics")){ + return resolve({data: ""}); + } + return reject(error.response); } ); diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index c9079718..1bef0a52 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -8,14 +8,22 @@ -
- -
+ + + + @@ -52,9 +60,11 @@ import { Form,defineRule } from "vee-validate"; import siteFooter from "@/iss-components/site-footer/site-footer.vue"; import siteHeader from "@/iss-components/site-header/site-header.vue"; import siteSubHeader from "@/iss-components/site-sub-header/site-sub-header.vue"; +import providerPrefRadio from "@/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue" // DEFINE VALIDATION RULES -defineRule("questions-required", required(errorMessages.OPTION_REQUIRED)); +defineRule('option-required', required(errorMessages.OPTION_REQUIRED)); + export default { name: "provider-preference", mixins: [baseFormMixin], @@ -66,11 +76,12 @@ export default { Form, buttonQuestion, contentGroupModal, - modal + modal, + providerPrefRadio }, data() { return { - SelectedshopLocation : null, + selectedProvider : null, }; }, async beforeRouteEnter(to, from, next) { @@ -89,31 +100,71 @@ export default { }, computed: { isForwardActionDisabled() { - return this.SelectedshopLocation === null; + return this.selectedProvider === null; }, + ProviderPreferenceHeaderText(){ return this.getCmsContent("ProviderPreference", "HeaderText"); }, questionText() { return this.getCmsContent("ProviderPreference", "SubHeaderText"); }, + + prefAnswers() { + const cmsAnswersContent = [ + { + cmsWidgetName: 'SafeliteOption' + }, + { + cmsWidgetName: 'TPAOption' + } + ]; + //if cms content has not yet loaded, skip + if (this.getCmsContent(cmsAnswersContent[0].cmsWidgetName, 'HeaderText') == '') { + return {}; + } + const modifiedAnswers = cmsAnswersContent.map((answer) => ({ + value: answer.cmsWidgetName, + buttonLabel: this.getHeaderTextFromCms(answer.cmsWidgetName), + buttonLabelSubCopy: this.getSubheaderTextFromCms(answer.cmsWidgetName), + buttonBodyCopy: this.getBodyTextFromCms(answer.cmsWidgetName), + buttonFooterCopy: this.getFooterTextFromCms(answer.cmsWidgetName) + } + )); + return modifiedAnswers; + }, + steeringModalHeader() { let header = this.getCmsContent("StateSteeringModal", "HeaderText"); return header.replace("{custom:state}", states[this.mainStore.order.customer.address.state]) }, steeringModalBody() { const bodyText = this.getCmsContent("StateSteeringModal", "BodyText"); -  return processIfStatements(bodyText, "custom", this.getStateSpecificText); + return processIfStatements(bodyText, "custom", this.getStateSpecificText); }, steeringModalBody2() { const bodyText = this.getCmsContent("StateSteeringModal", "BodyText2"); -  return processIfStatements(bodyText, "custom", this.getStateSpecificText); + return processIfStatements(bodyText, "custom", this.getStateSpecificText); }, steeringModalFooter() { return this.getCmsContent("StateSteeringModal", "FooterText"); } }, methods: { + getHeaderTextFromCms(cmsWidgetName) { + return this.getCmsContent(cmsWidgetName, 'HeaderText'); + }, + getSubheaderTextFromCms(cmsWidgetName) { + return this.getCmsContent(cmsWidgetName, 'SubheaderText'); + }, + getBodyTextFromCms(cmsWidgetName) { + const bodyText = this.getCmsContent(cmsWidgetName, "BodyText"); + return processIfStatements(bodyText, "custom", this.getCustomValueFromString); + }, + getFooterTextFromCms(cmsWidgetName) { + const footerText = this.getCmsContent(cmsWidgetName, "FooterText"); + return processIfStatements(footerText, "custom", this.getCustomValueFromString); + }, getStateSpecificText(value) { return this.mainStore.order.customer.address.state?.toLowerCase() == value?.toLowerCase(); }, @@ -129,7 +180,7 @@ export default { forwardButtonAction() { //todo this.$router.navigate(this.navigationScenarios.CLICKED_FORWARD_WITH_SAFELITE, this.$route); - //if(this.SelectedshopLocation == "Schedule with Safelite") + //if(this.selectedProvider == "Schedule with Safelite") //{ // this.$router.navigate(this.navigationScenarios.CLICKED_FORWARD_WITH_SAFELITE, this.$route); //} diff --git a/src/store/index.js b/src/store/index.js index eec2a8c4..9065c37e 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -956,24 +956,24 @@ export const useMainStore = defineStore({ }, logPageView({ userId, sessionKey, pageName, sessionId, action, event, shouldUseSessionId, experimentsForUser }) { - var payload = { - userId: userId, - sessionKey: sessionKey, - sessionId: sessionId, - pageName: pageName, - applicationName: applicationConfig.APPLICATION_NAME, - action: action, - event: event, - shouldUseSessionId: shouldUseSessionId, - experimentsForUser: experimentsForUser, - } + var payload = { + userId: userId, + sessionKey: sessionKey, + sessionId: sessionId, + pageName: pageName, + applicationName: applicationConfig.APPLICATION_NAME, + action: action, + event: event, + shouldUseSessionId: shouldUseSessionId, + experimentsForUser: experimentsForUser, + } - return globalMethods.callHttpClient({ - method: endpoints.LogPageView.method, - endpoint: endpoints.LogPageView.url, - payload: payload, - logApiCall: false - }); + return globalMethods.callHttpClient({ + method: endpoints.LogPageView.method, + endpoint: endpoints.LogPageView.url, + payload: payload, + logApiCall: false + }); }, logCustomEvent({ userId, sessionKey, pageName, sessionId, category, action, label, value, shouldUseSessionId, experimentsForUser}) { From 28c44e0a22538a3611f3c5a1f606d9a82815baac Mon Sep 17 00:00:00 2001 From: Jason Wheeler Date: Tue, 25 Apr 2023 16:48:51 -0400 Subject: [PATCH 02/14] end of day --- .../button-question/button-question.vue | 9 ++++++--- .../provider-preference/provider-preference.vue | 15 ++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/digital-components/button-question/button-question.vue b/src/digital-components/button-question/button-question.vue index d36cac83..dd8f07e6 100644 --- a/src/digital-components/button-question/button-question.vue +++ b/src/digital-components/button-question/button-question.vue @@ -67,10 +67,10 @@ -
+
+ >
@@ -81,6 +81,7 @@ import listButtonHorizontal from "@/ux-components/list-button-horizontal/list-bu import listCard from "@/ux-components/list-card/list-card"; import radio from "@/ux-components/radio/radio"; import { ErrorMessage } from "vee-validate"; +import providerPrefRadio from "@/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue" export default { name: "buttonQuestion", @@ -170,6 +171,7 @@ export default { classes = "ui-radio d-flex"; break; case "servicePackageRadio": + case "providerPrefRadio": classes = "package-main"; break; } @@ -182,7 +184,7 @@ export default { if (this.buttonTypeString == "radio") { classes += " radio-button-container"; - } else if (this.buttonTypeString == "servicePackageRadio") { + } else if (this.buttonTypeString == "servicePackageRadio" || this.buttonTypeString == "providerPrefRadio") { classes = "package-wrapper"; } @@ -228,6 +230,7 @@ export default { listCard, ErrorMessage, radio, + providerPrefRadio }, }; diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 1bef0a52..3dae9a3a 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -7,7 +7,7 @@
- + + :isRequired="isRequired" + class="mx-4" /> Date: Wed, 26 Apr 2023 15:45:45 -0400 Subject: [PATCH 03/14] added logo and subheader --- src/assets/img/icons/safelite-logo.svg | 11 +++++++++++ .../site-sub-header/site-sub-header.vue | 3 +-- .../provider-pref-radio.vue | 2 +- .../provider-preference.vue | 18 ++++++++++++++---- 4 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 src/assets/img/icons/safelite-logo.svg diff --git a/src/assets/img/icons/safelite-logo.svg b/src/assets/img/icons/safelite-logo.svg new file mode 100644 index 00000000..e4af742a --- /dev/null +++ b/src/assets/img/icons/safelite-logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/iss-components/site-sub-header/site-sub-header.vue b/src/iss-components/site-sub-header/site-sub-header.vue index 94510321..6f18f00b 100644 --- a/src/iss-components/site-sub-header/site-sub-header.vue +++ b/src/iss-components/site-sub-header/site-sub-header.vue @@ -14,8 +14,7 @@

- - {{ subText }} +

diff --git a/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue b/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue index c32dd9d3..847a4d78 100644 --- a/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue +++ b/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue @@ -60,7 +60,7 @@ import { doesCopyContainTextLink, } from '@/helpers/cms-content-helper'; export default { - name: 'servicePackageRadio', + name: 'providerPrefRadio', mixins: [inputButtonWrapperMixin], components: { baseInputButton, diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 3dae9a3a..9de24201 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -6,9 +6,7 @@
- - - +
-
- +
@@ -171,9 +171,11 @@ export default { classes = "ui-radio d-flex"; break; case "servicePackageRadio": - case "providerPrefRadio": classes = "package-main"; break; + case "providerPrefRadio": + classes = "option-main"; + break; } return classes; }, @@ -182,10 +184,17 @@ export default { classes += this.isWide ? "col-12" : "col"; - if (this.buttonTypeString == "radio") { - classes += " radio-button-container"; - } else if (this.buttonTypeString == "servicePackageRadio" || this.buttonTypeString == "providerPrefRadio") { - classes = "package-wrapper"; + switch(this.buttonTypeString) { + case "radio": + classes += " radio-button-container"; + break; + case "servicePackageRadio": + classes = "package-wrapper"; + break; + case "providerPrefRadio": + classes = "option-wrapper"; + break; + default: } return classes; diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 30477c3b..195274af 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -145,11 +145,14 @@ function findAndReplaceGlobalStateValues(widgetModel, widgetName) { function processWidgetItemForReplacement(widgetModel, key) { // If we have a string, and it needs to be replaced. if (typeof widgetModel[key] === 'string') { - widgetModel[key] = processIfStatements( - widgetModel[key], - dynamicStrings.GLOBAL_STATE, - getStoreValueFromString - ); + if (widgetModel[key].includes("{if:")) + { + widgetModel[key] = processIfStatements( + widgetModel[key], + dynamicStrings.GLOBAL_STATE, + getStoreValueFromString + ); + } if (widgetModel[key].includes(dynamicStrings.MODAL_LINK)) { widgetModel[key] = mapStringToModal(widgetModel[key]); @@ -205,7 +208,7 @@ function mapStringToLink(str) { const params = linkToReplace.substring((dynamicStrings.EXTERNAL_LINK).length + 2, linkToReplace.length - 1); const splitParams = params.split(','); - const bodyText = '' + splitParams[1] + ''; + const bodyText = '' + splitParams[1] + ''; let returnVal = str.replace(linkToReplace, bodyText); diff --git a/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue b/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue index 847a4d78..fd692a7c 100644 --- a/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue +++ b/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue @@ -1,12 +1,12 @@ - diff --git a/src/layouts/provider-preference/steering-modal/steering-modal.vue b/src/layouts/provider-preference/steering-modal/steering-modal.vue new file mode 100644 index 00000000..d08a03f9 --- /dev/null +++ b/src/layouts/provider-preference/steering-modal/steering-modal.vue @@ -0,0 +1,92 @@ + + + + + From 355c41f8e3a8944372280107e28d7a48a2c025dc Mon Sep 17 00:00:00 2001 From: Jason Wheeler Date: Tue, 2 May 2023 12:51:55 -0400 Subject: [PATCH 08/14] error styling and refactor of showing steering modal --- .../button-question/button-question.vue | 4 ++-- .../provider-pref-radio.vue | 18 +++++++++++++++++- .../provider-preference.vue | 18 +++++++++++------- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/digital-components/button-question/button-question.vue b/src/digital-components/button-question/button-question.vue index 0ff3c52e..5679e96c 100644 --- a/src/digital-components/button-question/button-question.vue +++ b/src/digital-components/button-question/button-question.vue @@ -67,8 +67,8 @@ -
- +
diff --git a/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue b/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue index fd692a7c..ac71e229 100644 --- a/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue +++ b/src/layouts/provider-preference/provider-pref-radio/provider-pref-radio.vue @@ -1,6 +1,6 @@