From 133bdf52a4dab343aeeacac50ce75b5083c2f55b Mon Sep 17 00:00:00 2001 From: Jason Wheeler Date: Thu, 27 Apr 2023 16:58:32 -0400 Subject: [PATCH] nightly --- src/constants/dynamic-strings.js | 3 +- src/helpers/cms-content-helper.js | 31 ++++++++++++++++--- .../provider-preference.vue | 2 +- src/store/index.js | 1 + 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/constants/dynamic-strings.js b/src/constants/dynamic-strings.js index 1cff1d26..58182bc4 100644 --- a/src/constants/dynamic-strings.js +++ b/src/constants/dynamic-strings.js @@ -3,7 +3,8 @@ const dynamicStrings = { CUSTOM: "custom", ROUTER_LINK: "routerLink:", MODAL_LINK: "modalLink", - TEXT_LINK: 'textLink' + TEXT_LINK: 'textLink', + EXTERNAL_LINK: 'externalLink', }; export { dynamicStrings }; \ No newline at end of file diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 46f4ffab..30477c3b 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -151,12 +151,15 @@ function processWidgetItemForReplacement(widgetModel, key) { getStoreValueFromString ); - if (widgetModel[key].includes(dynamicStrings.GLOBAL_STATE)) { - widgetModel[key] = mapStringToState(widgetModel[key]); - } if (widgetModel[key].includes(dynamicStrings.MODAL_LINK)) { widgetModel[key] = mapStringToModal(widgetModel[key]); } + if (widgetModel[key].includes(dynamicStrings.EXTERNAL_LINK)) { + widgetModel[key] = mapStringToLink(widgetModel[key]); + } + if (widgetModel[key].includes(dynamicStrings.GLOBAL_STATE)) { + widgetModel[key] = mapStringToState(widgetModel[key]); + } return widgetModel[key]; } @@ -194,6 +197,24 @@ function mapStringToModal(str) { return returnVal; } +function mapStringToLink(str) { + const startIndex = str.indexOf('{' + dynamicStrings.EXTERNAL_LINK); + let linkToReplace = str.substring(startIndex, str.length); + linkToReplace = linkToReplace.substring(0, linkToReplace.indexOf('}') + 1); + + const params = linkToReplace.substring((dynamicStrings.EXTERNAL_LINK).length + 2, linkToReplace.length - 1); + const splitParams = params.split(','); + + const bodyText = '' + splitParams[1] + ''; + + let returnVal = str.replace(linkToReplace, bodyText); + + if (returnVal.includes(dynamicStrings.EXTERNAL_LINK)) { + returnVal = mapStringToLink(returnVal); + } + return returnVal; +} + // Function to convert a string, into a matching global state item. function mapStringToState(str) { // Pull all matches out of the string. @@ -221,10 +242,10 @@ function mapStringToState(str) { } // Concatenate the string. - stringBuilder = `${stringBuilder} ${stringWithReplacement}`; + str = `${stringBuilder} ${stringWithReplacement}`; } - return stringBuilder.trimStart(); + return str.trimStart(); } function getStoreValueFromString(str) { diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 9de24201..cf3ca655 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -158,7 +158,7 @@ export default { return this.getCmsContent(cmsWidgetName, 'SubheaderText'); }, getBodyTextFromCms(cmsWidgetName) { - const bodyText = this.getCmsContent(cmsWidgetName, "BodyText"); + let bodyText = this.getCmsContent(cmsWidgetName, "BodyText"); return processIfStatements(bodyText, "custom", this.getCustomValueFromString); }, getFooterTextFromCms(cmsWidgetName) { diff --git a/src/store/index.js b/src/store/index.js index 27d8af1a..61e8151d 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -115,6 +115,7 @@ export const useMainStore = defineStore({ id: storeId, state: () => state, getters: { + hasRecalibrationPart: (state) => getHasRecalibrationPart(state), vehicle: (state) => state.order.vehicle, damage: (state) => state.order.damage, lineItems: (state) => state.order.lineItems,