import { mapStores } from 'pinia'; import { useMainStore } from '@/store'; import navigationScenarios from '@/router/router-constants/navigation-scenarios'; import vehicleCategories from '@/constants/vehicle-categories.js'; import queryStrings from '@/constants/query-strings'; import dynamicStrings from '@/constants/dynamic-strings'; import routerParams from '@/router/router-constants/router-params'; import widgetFields from '@/constants/cms-widget-fields.js'; import partTypeStrings from '@/constants/part-type-strings'; export default { data() { return { cmsContentByWidget: {} }; }, methods: { setCmsContent(cmsContent) { this.$root.cmsContentByWidget = cmsContent; }, getCmsContent(widgetName, fieldName) { return this.$root.cmsContentByWidget?.[widgetName]?.[fieldName] ? this.$root.cmsContentByWidget[widgetName][fieldName] : ''; }, getInputQuestionWidgetAnswersNullSafe(widgetName) { const rawAnswers = this.getCmsContent(widgetName, widgetFields.INPUT_QUESTION_WIDGET.ANSWERS); return rawAnswers || []; }, getFooterInfoBoxHeight() { const footerInfoBox = document.querySelector('.footer#infoBox'); return footerInfoBox ? footerInfoBox.offsetHeight : 0; }, navigateBack(vm) { const self = vm ?? this; self.$router.navigateWithSpinner(this.navigationScenarios.CLICKED_BACK, self.$route); }, savePageDataToStore(page, data) { useMainStore().updatePageData({ page, data }); }, // TODO confirm this is not what we want // getTierOnePackagePrice(lineItems) { // const lineItemsToPrice = lineItems.filter((lineItem) => ( // lineItem.partType !== partTypeStrings.FRONT_WIPER // && lineItem.partType !== partTypeStrings.REAR_WIPER // && lineItem.partType !== partTypeStrings.RAIN_DEFENSE // )); // return this.getTotalPriceOfAllLineItemsAndChildParts(lineItemsToPrice, false); // }, getTotalPriceOfAllLineItemsAndChildParts(lineItems, includeTax) { let totalPrice = 0; lineItems.forEach((lineItem) => { totalPrice += this.getTotalLineItemPrice(lineItem, includeTax); if (lineItem.childParts) { totalPrice += this.getTotalPriceOfAllLineItemsAndChildParts( lineItem.childParts, includeTax ); } }); return totalPrice; }, getTotalLineItemPrice(lineItem, includeTax) { if (includeTax) { return ( lineItem.kitPrice + lineItem.laborAmount + lineItem.sellingPrice + lineItem.salesTax ); } return lineItem.kitPrice + lineItem.laborAmount + lineItem.sellingPrice; }, getDisplayAmountDue(lineItems) { return this.getAmountDue(lineItems).toLocaleString('en-US', { style: 'currency', currency: 'USD' }); }, getAmountDue(lineItems) { if (!useMainStore().isNoComp && !useMainStore().isITAC) { return useMainStore().order.currentDeductible; } let amountDue = 0; if (lineItems.glassParts) { amountDue += this.getTotalPriceOfAllLineItemsAndChildParts( lineItems.glassParts, false ); } if (lineItems.supportingItems) { amountDue += this.getTotalPriceOfAllLineItemsAndChildParts( lineItems.supportingItems, false ); } if (lineItems.vaps) { amountDue += this.getTotalPriceOfAllLineItemsAndChildParts(lineItems.vaps, false); } if (lineItems.promos) { amountDue += this.getTotalPriceOfAllLineItemsAndChildParts(lineItems.promos, false); } return ((amountDue * 100) / 100).toFixed(2); }, scrollToPageTop() { const container = document.getElementsByClassName('page-container-grouped-styles')[0]; container.scrollTo({ top: 0, left: 0, behavior: 'smooth' }); }, scrollToPageBottom() { const container = document.getElementsByClassName('page-container-grouped-styles')[0]; container.scrollTo({ top: container.scrollHeight, left: 0, behavior: 'smooth' }); } }, computed: { // store will be accessible globally as its id + 'Store' ...mapStores(useMainStore), navigationScenarios() { return navigationScenarios; }, vehicleCategories() { return vehicleCategories; }, queryStrings() { return queryStrings; }, dynamicStrings() { return dynamicStrings; }, cssClassNameForCmsWidget() { return `widget-name-${this.cmsWidgetName}`; }, routerParams() { return routerParams; } } };