{"version":3,"file":"5670.3f42221cb8cbd689e567.js","mappings":"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","sources":["webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/cw.pages.dashboard.js","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/cw.dtTools.js","webpack://shipley-du-lib/./node_modules/js-cookie/src/js.cookie.js","webpack://shipley-du-lib/./common/js/du/utility/storageHelpers.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/Dashboard.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/InvoiceHistory.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/PaymentHistory.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/AccountSettings.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/DocumentHistory.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/PendingDeliveries.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/Rewards.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/BudgetManager.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/DeliveryHistory.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/composables/pageManager.ts","webpack://shipley-du-lib/./common/js/du/components/form/checkbox.vue?be2d","webpack://shipley-du-lib/./common/js/du/components/form/checkbox.vue","webpack://shipley-du-lib/./common/js/du/components/form/checkbox.vue?f028","webpack://shipley-du-lib/./common/js/du/components/utility/pdfViewer.vue?5d6e","webpack://shipley-du-lib/./common/js/du/components/utility/pdfViewer.vue?9576","webpack://shipley-du-lib/./common/js/du/components/utility/pdfViewer.vue"],"sourcesContent":["import moment from \"moment\";\r\nimport Mustache from \"mustache\";\r\nimport \"../lib/bootstrap-datetimepicker/bootstrap-datetime-4.7.14\";\r\nimport \"flot\";\r\nimport \"flot/jquery.flot.time\";\r\nimport \"flot/jquery.flot.stack\";\r\nimport \"flot/jquery.flot.categories\";\r\nimport \"flot/jquery.flot.pie\";\r\nimport \"jquery.flot.tooltip\";\r\nimport \"chosen-js\";\r\nimport \"bootstrap/dist/js/bootstrap\";\r\nimport * as Cookies from \"js-cookie\";\r\nimport * as BootstrapDialog from \"bootstrap3-dialog\";\r\nimport \"../cw/lib/cw.dtTools\";\r\nimport { createNonRoutedApp } from \"@du/AppStartup\";\r\nimport pdfViewer from \"@components/utility/pdfViewer.vue\";\r\nimport notificationWidget from \"@du/masterTemplates/components/templates/notificationWidget.vue\";\r\nimport { switchPage } from \"../cw/lib/pageManagement/composables/pageManager\";\r\n\r\n(function (cw, $) {\r\n \"use strict\";\r\n $.extend(true, cw, {\r\n pages: {\r\n dashboard: {\r\n args: null,\r\n selectedS1AccountId: null,\r\n phoneEditDataTable: null,\r\n phoneTypeList: null,\r\n locationData: null,\r\n $viewport: null,\r\n url: \"/account\",\r\n title: \"Account Overview\",\r\n $wrapperEl: null,\r\n sigRconn: null,\r\n notificationWidget: null,\r\n autopayConfigComponenent: null,\r\n init: function (args) {\r\n const self = this;\r\n self.args = args;\r\n self.$wrapperEl = $(\".customer-dashboard-page-wrapper\");\r\n self.bindApplicationEvents(args);\r\n self.setAutoPaymentStatus(args.AccountBalances);\r\n\r\n /* Menu */\r\n\r\n //Rewards\r\n const $menuItemReward = $('a[href=\"/account/rewards\"]').closest(\"li\");\r\n if ($menuItemReward.length > 0) {\r\n if (args.CanViewRewards) {\r\n $menuItemReward.removeClass(\"hidden\");\r\n } else {\r\n $menuItemReward.addClass(\"hidden\");\r\n }\r\n }\r\n\r\n //Add Product\r\n const $menuItemAddProd = $('a[href=\"#add-product\"]').closest(\"li\");\r\n if ($menuItemAddProd.length > 0 && args.WholesaleCustomerPortal) {\r\n $menuItemAddProd.addClass(\"hidden\");\r\n }\r\n\r\n //Request Delivery\r\n const $reqDeliveryBtn = $(\".request-delivery\").closest(\"a\");\r\n if ($reqDeliveryBtn.length > 0 && args.WholesaleCustomerPortal) {\r\n $reqDeliveryBtn.addClass(\"hidden\");\r\n }\r\n\r\n /* Handle our Bindings last*/\r\n self.bindInteractions(args);\r\n self.bindRewardsAndCarouselItems(args.RewardsPoints);\r\n setTimeout(function () {\r\n import(\"@components/customer/payment/autopayConfig.vue\").then(function (x) {\r\n self.autopayConfigComponenent = x.default;\r\n });\r\n }, 100);\r\n },\r\n switchPage: function (url) {\r\n const self = this;\r\n\r\n if (\r\n $(\".edit-s1-account\").length > 0 &&\r\n $(\".edit-s1-account\").data(\"s1AccountId\") !== self.selectedS1AccountId\r\n ) {\r\n Cookies.set(self.args.selectedS1AccountCookieKey, self.selectedS1AccountId);\r\n self.refreshS1AccountSelector(self.selectedS1AccountId);\r\n }\r\n\r\n cw.analytics(function () {\r\n _hsq.push([\"setPath\", url]);\r\n _hsq.push([\"trackPageView\"]);\r\n });\r\n\r\n const { Title } = switchPage(url, self);\r\n\r\n if (window.history && location.pathname.toLowerCase() !== url) {\r\n window.history.pushState({ url: url, title: Title }, Title, url);\r\n }\r\n\r\n $(\".menu-left li, .mobile-menu li\").removeClass(\"active\");\r\n $(\".mobile-menu\").removeClass(\"open\");\r\n $('.menu-left a[href=\"' + url + '\"], .mobile-menu a[href=\"' + url + '\"]')\r\n .closest(\"li\")\r\n .addClass(\"active\");\r\n },\r\n bindApplicationEvents: function (args) {\r\n const self = this;\r\n this.selectedS1AccountId = args.selectedS1AccountId;\r\n let vueAddProductApp;\r\n let $vueAddProductDiv;\r\n let vueAddProductAppMounted = false;\r\n const mobileMenuAnchorSelector = \".mobile-menu a\";\r\n const vueAppMenuClickFunc = function (e) {\r\n const $this = $(this);\r\n if ($this.closest(\".mobile-menu\").length > 0 && vueAddProductApp && vueAddProductAppMounted) {\r\n vueAddProductAppMounted = false;\r\n vueAddProductApp?.unmount();\r\n $vueAddProductDiv?.remove();\r\n $(\"body\").off(\"click\", mobileMenuAnchorSelector, vueAppMenuClickFunc);\r\n }\r\n };\r\n\r\n self.$viewport = $(\".dashboard-viewport\");\r\n\r\n $(\"body\").off(\"click\", mobileMenuAnchorSelector, vueAppMenuClickFunc);\r\n $(\"body\").on(\"click\", mobileMenuAnchorSelector, vueAppMenuClickFunc);\r\n\r\n $(\"body\").on(\"click\", \".breadcrumb a\", function (e) {\r\n e.preventDefault();\r\n const url = $(this).attr(\"href\");\r\n self.switchPage(url);\r\n });\r\n\r\n window.addEventListener(\"popstate\", function (oEvent) {\r\n let url = location.pathname.toLowerCase();\r\n if (oEvent.state?.url) {\r\n url = oEvent.state.url;\r\n }\r\n\r\n self.switchPage(url);\r\n });\r\n\r\n if (args.S1AccountNotificationToken) {\r\n self.rebindNotificationListener(args.S1AccountNotificationToken);\r\n }\r\n\r\n $(\".billing-account-selector\").off(\"click\");\r\n $(\".billing-account-selector\").on(\"click\", self.s1AccountSelectorClickHandler);\r\n\r\n // close custom dropdowns\r\n $(document).on(\"click\", function () {\r\n $(\".billing-account-selector, .billing-account-selector-wrapper\").removeClass(\"active\");\r\n });\r\n\r\n $('a[href^=\"/account\"]').off(\"click\");\r\n $('a[href^=\"/account\"]').on(\"click\", function (e) {\r\n const $this = $(this);\r\n if ($this.attr(\"target\") !== \"_blank\") {\r\n e.preventDefault();\r\n self.switchPage($this.attr(\"href\"));\r\n }\r\n });\r\n\r\n $('a[href=\"#add-product\"], a.add-product').off(\"click\");\r\n $('a[href=\"#add-product\"], a.add-product').on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const dpMap = $this.data(\"deliveryPointMap\");\r\n const custTypes = $(\".s1-customer-type\").data(\"customerTypeIds\");\r\n const selZipCode = $this.attr(\"data-dp-zip\"); //.data('dpZip') was turning this into a number\r\n const selProductCode = $this.data(\"productCode\");\r\n const productAddId = \"s1-product-add-wizard-wrapper\";\r\n\r\n $vueAddProductDiv = document.getElementById(productAddId);\r\n if ($vueAddProductDiv) {\r\n $vueAddProductDiv.replaceChildren();\r\n } else {\r\n $vueAddProductDiv = document.createElement(\"div\");\r\n $vueAddProductDiv.id = productAddId;\r\n document.body.appendChild($vueAddProductDiv);\r\n }\r\n $(\".hamburger-menu.open\").trigger(\"click\"); //really bro? Why I gotta close you?\r\n\r\n import(\"@components/products/productAddWizard.vue\").then((productAddWizard) => {\r\n vueAddProductApp = createNonRoutedApp(productAddWizard.default, {\r\n brandTypeId: self.args.brandObj.BrandTypeId,\r\n s1AcctId: self.selectedS1AccountId,\r\n customerTypeIds: custTypes,\r\n selectedDeliveryPointMap: dpMap,\r\n selectedZipCode: selZipCode,\r\n selectedProductCode: selProductCode,\r\n minimumGallonDelivery: self.args.minimumGallonDelivery,\r\n onMounted() {\r\n vueAddProductAppMounted = true;\r\n },\r\n onWizardClosed() {\r\n vueAddProductApp.unmount();\r\n $vueAddProductDiv?.remove();\r\n $(\"body\").off(\"click\", mobileMenuAnchorSelector, vueAppMenuClickFunc);\r\n vueAddProductAppMounted = false;\r\n },\r\n onProductAddedSuccessfully(productAddRequest, productAddResponse) {\r\n self.loadDashboard(self.selectedS1AccountId);\r\n },\r\n onHvacAppointmentSuccessfullyScheduled() {\r\n self.loadDashboard(self.selectedS1AccountId);\r\n },\r\n });\r\n vueAddProductApp.mount(`#${productAddId}`);\r\n });\r\n });\r\n\r\n $(\"body\").off(\"click\", \".notification-detail\");\r\n $(\"body\").on(\"click\", \".notification-detail\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const href = $this.data(\"href\");\r\n const hasHref = href && href !== window.location.href;\r\n cw.modal.Open({\r\n title: $this.html(),\r\n modalBody: $(\r\n '<div class=\"clearfix notification-item' +\r\n (hasHref ? \" clickable-notification\" : \"\") +\r\n '\" ' +\r\n (hasHref ? 'data-notification-url=\"' + href + '\"' : \"\") +\r\n \">\" +\r\n ' <div class=\"date-sent fs-xs-12\" > ' +\r\n moment($this.data(\"dateSent\")).format(\"L LT\") +\r\n ' <a href=\"#\" class=\"dismiss-notification\" data-user-notification-id=\"' +\r\n $this.data(\"userNotificationId\") +\r\n '\"><i class=\"fa fa-trash\"></i></a></div> ' +\r\n ' <div class=\"message fs-xs-12 pt5\">' +\r\n $this.data(\"notificationBody\").replace(/\\n+$/g, \"\").replaceAll(\"\\n\", \"<br />\") +\r\n \"</div>\" +\r\n \"</div>\"\r\n ),\r\n onShownCallback: function (mr) {\r\n mr.$modalBody.find(\".clickable-notification\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n window.location.href = $(this).data(\"notificationUrl\");\r\n });\r\n\r\n mr.$modalBody.find(\".dismiss-notification\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n cw.webservices.getJson(\r\n \"S1AccountManager/dismiss-notification/\" + self.selectedS1AccountId,\r\n [$this.data(\"userNotificationId\")],\r\n function (wasDismissed) {},\r\n function () {}\r\n );\r\n mr.close();\r\n });\r\n },\r\n });\r\n });\r\n self.rebindS1AccountSelector();\r\n },\r\n rebindNotificationListener: function (s1AccountNotificationToken) {\r\n this.getNotificationWidget(this.args.selectedS1AccountId);\r\n },\r\n bindInteractions: function (args) {\r\n const self = this;\r\n\r\n //budget menu\r\n const $menuItem = $('a[href=\"/account/manage-budget\"]').closest(\"li\");\r\n if (\r\n args.AccountBalances?.some(function (x) {\r\n return x.OnBudget;\r\n }) ||\r\n args.CustomerBudgetResponse?.HasPendingBudget\r\n ) {\r\n $menuItem.removeClass(\"hidden\");\r\n } else if (args.CustomerBudgetResponse?.IsEligible) {\r\n $menuItem\r\n .empty()\r\n .append(\r\n '<a href=\"#\" title=\"Enroll in a Budget\" class=\"budget-signup\"> <i class=\"fa fa-fw fa-regular fa-square-check\"></i> <span class=\"nav-label\">Enroll in a Budget</span> </a>'\r\n );\r\n } else {\r\n $menuItem.addClass(\"hidden\");\r\n }\r\n\r\n if (args.analyticsFireLoginEvent) {\r\n const analyticsObj = {\r\n event: \"customerWebLogin\",\r\n };\r\n\r\n if (args.analyticsCustomerType) {\r\n analyticsObj.customerType = args.analyticsCustomerType;\r\n }\r\n\r\n if (args.analyticsUserId) {\r\n analyticsObj.userId = args.analyticsUserId;\r\n }\r\n\r\n analyticsObj.hasRewardsAccess = args.anaylyticsIsRewardsUser;\r\n analyticsObj.isRewardsRedeemer = args.anaylyticsIsRewardsRedeemer;\r\n\r\n cw.analytics(function () {\r\n dataLayer.push(analyticsObj);\r\n });\r\n\r\n if (args.email) {\r\n cw.analytics(function () {\r\n _hsq.push([\r\n \"identify\",\r\n {\r\n email: args.email,\r\n last_customer_web_login_date: args.loginTime,\r\n },\r\n ]);\r\n });\r\n }\r\n\r\n args.analyticsFireLoginEvent = false;\r\n }\r\n\r\n self.$viewport = $(\".dashboard-viewport\");\r\n\r\n $(\".service-location-filter\").each(function () {\r\n $(this)\r\n .removeClass(\"hidden\")\r\n .chosen({\r\n width: \"100%\",\r\n \".chosen-select\": {},\r\n \".chosen-select-deselect\": { allow_single_deselect: false },\r\n \".chosen-select-no-single\": { disable_search_threshold: 10 },\r\n \".chosen-select-no-results\": { no_results_text: \"Nothing found.\" },\r\n });\r\n });\r\n\r\n $(\".service-location-filter\").on(\"change\", function () {\r\n self.updateLocationFilter($(this).val());\r\n });\r\n\r\n $('[data-toggle=\"tooltip\"]').tooltip(\"destroy\");\r\n $('[data-toggle=\"tooltip\"]').tooltip({ html: true });\r\n $('[data-toggle=\"dropdown\"]').dropdown();\r\n\r\n $(\"a.view-latest-invoice\").off(\"click\");\r\n $(\"a.view-latest-invoice\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const docId = $this.data(\"documentId\");\r\n const invoiceId = $this.data(\"invoiceId\");\r\n\r\n if (docId && invoiceId) {\r\n if (window.innerWidth <= 991) {\r\n window.open(\"/gen-asset/document-viewer/\" + docId);\r\n } else {\r\n cw.modal.Open({\r\n data: { docId: docId },\r\n title: \"Invoice #\" + invoiceId,\r\n modalBody: $('<div id=\"pdf-target\"></div>'),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n successCallback: function (modalRef) {\r\n modalRef.close();\r\n },\r\n onShownCallback: function (modalRef) {\r\n const doc = modalRef.getData(\"docId\");\r\n\r\n createNonRoutedApp(pdfViewer, {\r\n pdfUrl: \"/gen-asset/document-viewer/\" + doc,\r\n allowDownload: true,\r\n onPdfLoaded() {\r\n cw.loadingIndicator.stop();\r\n },\r\n }).mount(\"#pdf-target\");\r\n },\r\n });\r\n }\r\n }\r\n });\r\n $(\"a.budget-signup, button.budget-signup\").off(\"click\");\r\n $(\"a.budget-signup, button.budget-signup\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n cw.loadingIndicator.start();\r\n cw.pages.budgetManager.budgetEnroll({\r\n CustomerBudgetResponse: self.args.CustomerBudgetResponse,\r\n ServiceLocations: self.args.ServiceLocations,\r\n AccountBalances: self.args.AccountBalances,\r\n S1AccountId: self.selectedS1AccountId,\r\n successCallback: function () {\r\n self.loadDashboard(self.selectedS1AccountId);\r\n },\r\n cancelCallback: function (rtnData) {\r\n self.args.CustomerBudgetResponse = rtnData;\r\n },\r\n });\r\n });\r\n\r\n $(\"a.request-delivery\").off(\"click\");\r\n $(\"a.request-delivery\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n if ($(this).data(\"isLitigationStatus\")) {\r\n cw.modal.Alert({\r\n title: \"Unable to Request Delivery\",\r\n text: `<div>\r\n <div class=\"after-hours-message error-wrapper alert alert-info mb10 p10 full-width flex\">\r\n <div><i class=\"fa fa-info-circle fs-xs-34 mr15 ml5\" aria-hidden=\"true\"></i></div>\r\n <div>If this is an emergency, you are out of oil, or need a restart, please call Customer Service at ${self.args.brandObj.CustomerService800NumberFormatted}, they can offer additional expedited delivery options.</div>\r\n </div>\r\n <div>Your account is not able to request delivery due to being in litigation.</div>\r\n </div>`,\r\n });\r\n } else {\r\n cw.widget.deliveryRequest.init({\r\n brandObj: self.args.brandObj,\r\n s1AccountId: self.selectedS1AccountId,\r\n productCode: $this.data(\"productCode\"),\r\n productSubclass: $this.data(\"productSubclass\"),\r\n isWinterBlend: $this.data(\"isWinterBlend\"),\r\n deliveryPointMap: $this.data(\"deliveryPointMap\"),\r\n tankSize: $this.data(\"tankCapacity\"),\r\n usableTankSize: $this.data(\"usableTankSize\"),\r\n deliverySchedule: $this.data(\"deliverySchedule\"),\r\n customerType: $this.data(\"customerTypeId\"),\r\n paymentTerms: $this.data(\"paymentTerms\"),\r\n existingBalance: $this.data(\"billingAccountBalance\"),\r\n minimumGallonDelivery: self.args.minimumGallonDelivery,\r\n minimumGallonDeliveryFee: self.args.minimumGallonDeliveryFee,\r\n creditStatusOk: $this.data(\"creditStatusOk\"),\r\n equipmentId: $this.data(\"equipmentId\"),\r\n paymentUpfrontRequired: $this.data(\"paymentUpfrontRequired\"),\r\n division: $this.data(\"division\"),\r\n successCallback: function () {\r\n self.loadDashboard(self.selectedS1AccountId);\r\n },\r\n });\r\n }\r\n });\r\n\r\n $(\"a.view-usage-history\").off(\"click\");\r\n $(\"a.view-usage-history\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const dpMap = $this.data(\"deliveryPointMap\");\r\n const productCode = $this.data(\"productCode\");\r\n const equipmentId = $this.data(\"equipmentId\");\r\n self.viewUsageHistory(productCode, dpMap, equipmentId);\r\n });\r\n\r\n $(\"a.view-pending-delivery\").off(\"click\");\r\n $(\"a.view-pending-delivery\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const dpMap = $this.data(\"deliveryPointMap\");\r\n self.viewPendingDelivery(dpMap);\r\n });\r\n\r\n $(\"a.edit-location\").off(\"click\");\r\n $(\"a.edit-location\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n cw.loadingIndicator.start();\r\n const $this = $(this);\r\n const $dpHash = $this.data(\"deliveryPointHash\");\r\n const dpMap = $this.data(\"deliveryPointMap\");\r\n\r\n //refresh backend data to get an updated DeliveryPointHash\r\n self.updateServiceLocationData(self.selectedS1AccountId, function () {\r\n let servLocHash;\r\n for (const element of self.args.ServiceLocations) {\r\n if (element.DeliveryPointHash === $dpHash) {\r\n servLocHash = element.ServiceLocationHash;\r\n }\r\n }\r\n\r\n self.editServiceLocation(dpMap, self.selectedS1AccountId, servLocHash);\r\n });\r\n });\r\n\r\n $(\"a.view-delivery-history\").off(\"click\");\r\n $(\"a.view-delivery-history\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const dpMap = $this.data(\"deliveryPointMap\");\r\n const productCode = $this.data(\"productCode\");\r\n cw.pages.deliveryHistory.init({\r\n deliveryPointMap: dpMap,\r\n productCode: productCode,\r\n selectedS1AccountId: self.selectedS1AccountId,\r\n $viewport: self.$viewport,\r\n });\r\n });\r\n\r\n $(\"a.view-pending-delivery-alert\").off(\"click\");\r\n $(\"a.view-pending-delivery-alert\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n cw.pages.pendingDeliveries.init({\r\n selectedS1AccountId: self.selectedS1AccountId,\r\n $viewport: self.$viewport,\r\n });\r\n });\r\n\r\n let panelCollapse = false;\r\n $(\".panel-group .panel-collapse\").on(\"show.bs.collapse\", function () {\r\n $(this).siblings(\".panel-heading\").addClass(\"active\");\r\n $(\".expand-collapse-all-btn\").html('<i class=\"fa fa-compress\"></i> Collapse All');\r\n panelCollapse = false;\r\n });\r\n\r\n $(\".panel-group .panel-collapse\").on(\"hide.bs.collapse\", function () {\r\n $(this).siblings(\".panel-heading\").removeClass(\"active\");\r\n $(\".expand-collapse-all-btn\").html('<i class=\"fa fa-up-right-and-down-left-from-center\"></i> Expand All');\r\n panelCollapse = true;\r\n });\r\n\r\n $(\".expand-collapse-all-btn\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n if (panelCollapse) {\r\n $(\".panel-group .panel-collapse\").collapse(\"show\");\r\n } else {\r\n $(\".panel-group .panel-collapse\").collapse(\"hide\");\r\n }\r\n });\r\n\r\n if ($(\".panel-group\").length <= 3) {\r\n $(\".panel-group .panel-collapse\").collapse(\"show\");\r\n }\r\n\r\n $(\"a.view-delivery-ticket\").off(\"click\");\r\n $(\"a.view-delivery-ticket\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const docId = $this.data(\"documentId\");\r\n const ticketNumber = $this.data(\"ticketNumber\");\r\n if (docId) {\r\n if (window.innerWidth <= 991) {\r\n window.open(\"/gen-asset/document-viewer/\" + docId);\r\n } else {\r\n cw.modal.Open({\r\n data: { docId: docId },\r\n title: \"Delivery Ticket #\" + ticketNumber,\r\n modalBody: $('<div id=\"pdf-target\"></div>'),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n successCallback: function (modalRef) {\r\n modalRef.close();\r\n },\r\n onShownCallback: function (modalRef) {\r\n const doc = modalRef.getData(\"docId\");\r\n createNonRoutedApp(pdfViewer, {\r\n pdfUrl: \"/gen-asset/document-viewer/\" + doc,\r\n allowDownload: true,\r\n onPdfLoaded() {\r\n cw.loadingIndicator.stop();\r\n },\r\n }).mount(\"#pdf-target\");\r\n },\r\n });\r\n }\r\n }\r\n });\r\n\r\n $(\"a.view-service-call-invoice\").off(\"click\");\r\n $(\"a.view-service-call-invoice\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const docId = $this.data(\"documentId\");\r\n const invoiceId = $this.data(\"invoiceId\");\r\n if (docId) {\r\n if (window.innerWidth <= 991) {\r\n window.open(\"/gen-asset/document-viewer/\" + docId);\r\n } else {\r\n cw.modal.Open({\r\n data: { docId: docId },\r\n title: \"Invoice #\" + invoiceId,\r\n modalBody: $('<div id=\"pdf-target\"></div>'),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n successCallback: function (modalRef) {\r\n modalRef.close();\r\n },\r\n onShownCallback: function (modalRef) {\r\n const doc = modalRef.getData(\"docId\");\r\n createNonRoutedApp(pdfViewer, {\r\n pdfUrl: \"/gen-asset/document-viewer/\" + doc,\r\n allowDownload: true,\r\n onPdfLoaded() {\r\n cw.loadingIndicator.stop();\r\n },\r\n }).mount(\"#pdf-target\");\r\n },\r\n });\r\n }\r\n }\r\n });\r\n\r\n $(\"a.make-a-payment\").off(\"click\");\r\n $(\"a.make-a-payment\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n if (!$(this).hasClass(\"disabled\")) {\r\n let customerBudgetResp;\r\n if (self.args.CustomerBudgetResponse) {\r\n customerBudgetResp = self.args.CustomerBudgetResponse;\r\n self.args.CustomerBudgetResponse.MonthlyPaymentAmountFormatted =\r\n \"$\" + (Math.ceil(self.args.CustomerBudgetResponse.MonthlyPaymentAmount / 5) * 5).toFixed(2);\r\n customerBudgetResp.ServiceLocations = self.args.ServiceLocations.filter(function (x) {\r\n return x.LocationBudgetEligibility.IsEligible;\r\n });\r\n }\r\n\r\n cw.widget.payment.init(\r\n self.selectedS1AccountId,\r\n null,\r\n null,\r\n function () {\r\n self.loadDashboard(self.selectedS1AccountId);\r\n },\r\n customerBudgetResp\r\n );\r\n }\r\n });\r\n\r\n $(\"a.invoice-history\").off(\"click\");\r\n $(\"a.invoice-history\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n cw.pages.invoiceHistory.init({\r\n selectedS1AccountId: self.selectedS1AccountId,\r\n $viewport: self.$viewport,\r\n });\r\n });\r\n\r\n $(\"a.payment-history\").off(\"click\");\r\n $(\"a.payment-history\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n cw.pages.paymentHistory.init({\r\n selectedS1AccountId: self.selectedS1AccountId,\r\n $viewport: self.$viewport,\r\n });\r\n });\r\n\r\n $(\"a.payment-profile, label.payment-profile, button.payment-profile\").off(\"click\");\r\n $(\"a.payment-profile, label.payment-profile, button.payment-profile\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n if (!$(this).hasClass(\"disabled\")) {\r\n self.launchPaymentProfile();\r\n $(this).tooltip(\"hide\");\r\n }\r\n });\r\n\r\n $(\".view-pending-service-req\").off(\"click\");\r\n $(\".view-pending-service-req\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n self.showPendingServiceRequest($this.data(\"workerOrderDocId\"), $this.data(\"serviceTicketId\"));\r\n });\r\n\r\n $(\".view-contract-coverage\").off(\"click\");\r\n $(\".view-contract-coverage\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const $title = $this.closest(\".product-wrapper\").find(\".product-title\").clone();\r\n $title.find(\"br\").remove();\r\n $title.find(\".shipley-blue\").each(function () {\r\n $(this).removeClass(\"shipley-blue\").addClass(\"inline-block\");\r\n });\r\n self.showContractEquipment(\r\n $this.data(\"contractId\"),\r\n $this.data(\"remoteAccountMap\"),\r\n $title.html()\r\n );\r\n });\r\n\r\n $(\".view-pricing-terms\").off(\"click\");\r\n $(\".view-pricing-terms\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n if (window.innerWidth <= 991) {\r\n window.open($this.data(\"tosUrl\"));\r\n } else {\r\n cw.modal.Open({\r\n title: \"Terms of Service\",\r\n modalBody: $('<div id=\"pdf-target\"></div>'),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n successCallback: function (modalRef) {\r\n modalRef.close();\r\n },\r\n onShownCallback: function (modalRef) {\r\n createNonRoutedApp(pdfViewer, {\r\n pdfUrl: $this.data(\"tosUrl\"),\r\n allowDownload: true,\r\n onPdfLoaded() {\r\n cw.loadingIndicator.stop();\r\n },\r\n }).mount(\"#pdf-target\");\r\n },\r\n });\r\n }\r\n });\r\n\r\n $(\".make-billing-account-payment\").off(\"click\");\r\n $(\".make-billing-account-payment\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n cw.widget.payment.init(\r\n self.selectedS1AccountId,\r\n null,\r\n $this.data(\"remoteAccountMap\"),\r\n function () {\r\n self.loadDashboard(self.selectedS1AccountId);\r\n }\r\n );\r\n });\r\n\r\n $(\".update-billing-account-settings\").off(\"click\");\r\n $(\".update-billing-account-settings\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const remoteAccountMap = $(this).data(\"remoteAccountMap\");\r\n\r\n cw.pages.accountSettingsEdit.init({\r\n shipleyOneNumberId: self.selectedS1AccountId,\r\n remoteSystemId: remoteAccountMap.RemoteSystemId,\r\n remoteSystemAccountId: remoteAccountMap.RemoteSystemAccountId,\r\n remoteSystemAccountNumber: remoteAccountMap.RemoteSystemAccountNumber,\r\n $viewport: self.$viewport,\r\n brandObj: self.args.brandObj,\r\n });\r\n\r\n if (window.history) {\r\n window.history.pushState(\r\n { url: cw.pages.accountSettings.url, title: cw.pages.accountSettings.title },\r\n cw.pages.accountSettings.title,\r\n cw.pages.accountSettings.url\r\n );\r\n }\r\n });\r\n\r\n $(\".view-notes\").off(\"click\");\r\n $(\".view-notes\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n self.viewNotes(self.selectedS1AccountId);\r\n });\r\n\r\n $(\".view-service-call-history\").off(\"click\");\r\n $(\".view-service-call-history\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n self.showServiceCallHistory(\r\n $this.data(\"deliveryPointMap\"),\r\n $this.closest(\".panel\").find(\".location-address\").html()\r\n );\r\n });\r\n\r\n $(\"body\").off(\"click\", \".get-renewal-offers\");\r\n $(\"body\").on(\"click\", \".get-renewal-offers\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n self.showRenewalOffers(\r\n $this.data(\"customerCorrespondenceQueueId\"),\r\n $this.data(\"billingAccountId\"),\r\n $this.data(\"deliveryPointId\"),\r\n $this.data(\"renewalPin\")\r\n );\r\n });\r\n\r\n self.loadDashboardQuickActionButtons();\r\n self.loadSpecialOffers();\r\n },\r\n bindRewardsAndCarouselItems: function (rewardObj) {\r\n const self = this;\r\n const $car = $(\".acct-summary #rewards-carousel\");\r\n const $rewardWapper = $(\".rewards-target\");\r\n const $menuItem = $('a[href=\"/account/rewards\"]').closest(\"li\");\r\n let $graphTarget;\r\n $rewardWapper.empty();\r\n let graphData;\r\n const options = {\r\n legend: {\r\n show: false,\r\n },\r\n series: {\r\n pie: {\r\n show: true,\r\n innerRadius: 0.92,\r\n radius: 1,\r\n },\r\n },\r\n grid: {\r\n hoverable: false,\r\n },\r\n label: {\r\n show: false,\r\n formatter: function () {\r\n return \"\";\r\n },\r\n },\r\n tooltip: false,\r\n tooltipOpts: {\r\n cssClass: \"flotTip\",\r\n content: \"%p pts. %s\",\r\n defaultTheme: false,\r\n },\r\n };\r\n if (rewardObj && !rewardObj.IsOptedOut) {\r\n const $href = $(\r\n '<a href=\"' +\r\n cw.pages.rewards.url +\r\n '\" title=\"' +\r\n (rewardObj.UnusedPointTotal ? rewardObj.UnusedPointTotal : \"\") +\r\n ' Rewards Points\" >' +\r\n (rewardObj.UnusedPointTotal\r\n ? '<span class=\"notification-badge rewards-badge\">' + rewardObj.UnusedPointTotal + \"</span>\"\r\n : \"\") +\r\n '<i class=\"fa fa-fw fa-star shipley-blue fs-xs-24\"></i></a>'\r\n );\r\n $href.on(\"click\", function (e) {\r\n e.preventDefault();\r\n self.switchPage(cw.pages.rewards.url);\r\n });\r\n\r\n $rewardWapper.append($href);\r\n $rewardWapper.removeClass(\"hidden\");\r\n $menuItem.removeClass(\"hidden\");\r\n\r\n $graphTarget = $(\".graph-target\");\r\n graphData = [\r\n {\r\n label: \"\", //\"New this billing period\",\r\n data: rewardObj.RecentlyAddedPointAmount,\r\n color: cw.constants.shipleyGreen,\r\n },\r\n {\r\n label: \"\", // \"Existing\",\r\n data: rewardObj.ExistingPoints,\r\n color: cw.constants.shipleyBlue,\r\n },\r\n ];\r\n\r\n if (rewardObj.PendingTransactionPoints) {\r\n graphData.push({\r\n label: \"\", // \"Pending Transaction\",\r\n data: rewardObj.PendingTransactionPoints,\r\n color: cw.constants.ctaOrange,\r\n });\r\n }\r\n\r\n if (\r\n rewardObj.PendingTransactionPoints === 0 ||\r\n (rewardObj.ExpiringIn30DaysPointTotal > 0 && rewardObj.PendingTransactionPoints > 0)\r\n ) {\r\n graphData.unshift({\r\n label: \"\", //\"Expiring within 30 days\",\r\n data: rewardObj.ExpiringIn30DaysPointTotal,\r\n color: cw.constants.ctaYellow,\r\n });\r\n }\r\n\r\n //make it look pretty when we have no data\r\n if (rewardObj.UnusedPointTotal === 0 && rewardObj.PendingTransactionPoints <= 0) {\r\n graphData = [\r\n {\r\n label: \"\",\r\n data: 1,\r\n color: cw.constants.shipleyBlue,\r\n },\r\n ];\r\n }\r\n } else if (!$car || $car.length < 1) {\r\n $rewardWapper.addClass(\"hidden\");\r\n $menuItem.addClass(\"hidden\");\r\n }\r\n\r\n if ($car.length > 0) {\r\n const $existingItems = $car.find(\".carousel-inner\").find(\".item\");\r\n const $energyRewards = $car\r\n .find(\".carousel-inner\")\r\n .find(\".item\")\r\n .has(\"a img[alt*='Frequently'] \");\r\n const $budgetPlan = $car.find(\".carousel-inner\").find(\".item\").has(\".budget-item\");\r\n $energyRewards.addClass(\"energyRewards\");\r\n $budgetPlan.addClass(\"budgetPlan\");\r\n const mq = window.matchMedia(\"screen and (max-width: 768px)\");\r\n\r\n $existingItems.removeClass(\"active\");\r\n if ($graphTarget && $graphTarget.length > 0) {\r\n $car\r\n .find(\".carousel-inner\")\r\n .prepend($graphTarget.addClass(\"item active responsive-card\").removeClass(\"hidden\"));\r\n\r\n if (mq.matches) {\r\n $graphTarget.css({ height: \"183.92px\" });\r\n $energyRewards.height($graphTarget.height());\r\n $budgetPlan.height($graphTarget.height());\r\n } else {\r\n $graphTarget.css({ height: \"260px\" });\r\n $energyRewards.height($graphTarget.height());\r\n $budgetPlan.height($graphTarget.height());\r\n }\r\n\r\n const $inner = $graphTarget.find(\".graph-inner\");\r\n if ($inner.height() < $graphTarget.height()) {\r\n $inner.height($graphTarget.height());\r\n }\r\n\r\n $.plot($inner, graphData, options);\r\n\r\n $graphTarget\r\n .find(\".points-amount\")\r\n .html(\r\n ' <span class=\"points-amount-val fs-xxs-24 fs-xs-32 fs-sm-24 fs-md-24 fs-lg-34\">' +\r\n rewardObj.UnusedPointTotal +\r\n '</span><span class=\"fs-xs-14 pos-rel\">pts</span>'\r\n );\r\n\r\n $graphTarget.on(\"click\", function (e) {\r\n self.switchPage(cw.pages.rewards.url);\r\n });\r\n }\r\n\r\n $car.find(\".carousel-inner .item\").each(function (idx) {\r\n const $me = $(this);\r\n if ($me.height() == 0) {\r\n $me.css({ height: \"267px\" });\r\n }\r\n\r\n if (idx === 0) {\r\n $me.addClass(\"active\");\r\n }\r\n });\r\n\r\n $car.carousel();\r\n }\r\n },\r\n showRenewalOffers: function (customerCorrespondenceQueueId) {\r\n const self = this;\r\n\r\n cw.loadingIndicator.start();\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-pending-renewals/\" +\r\n self.selectedS1AccountId +\r\n \"/\" +\r\n customerCorrespondenceQueueId,\r\n null,\r\n function (rtnObj) {\r\n if (rtnObj) {\r\n const openModal = function (renewalOptions, productTmpl) {\r\n let autoRenewHtml = \"\";\r\n let altOffer1Html = \"\";\r\n let altOffer2Html = \"\";\r\n let columns = 0;\r\n\r\n const mangePricePlanAndRender = function (pp, isBestOffer) {\r\n pp.PricingPlan = pp.PricePlan;\r\n pp.PriceFormatted = pp.PriceHtmlFormatted;\r\n pp.RenderedTosUrl = pp.TermsAndConditionsUrl;\r\n pp.BestOffer = isBestOffer;\r\n pp.PriceToCompareFormatted = null;\r\n pp.PriceToCompare = null;\r\n return Mustache.to_html(productTmpl, pp).replace(\r\n /col-(xxs|xs|sm|md|lg)-([1-9]|1[0-2])/gi,\r\n \"\"\r\n );\r\n };\r\n\r\n if (renewalOptions.AutoRenewalOffer) {\r\n columns++;\r\n autoRenewHtml = mangePricePlanAndRender(renewalOptions.AutoRenewalOffer, false);\r\n }\r\n\r\n if (renewalOptions.AltRenewalOffer1) {\r\n columns++;\r\n altOffer1Html = mangePricePlanAndRender(renewalOptions.AltRenewalOffer1, true);\r\n }\r\n\r\n if (renewalOptions.AltRenewalOffer2) {\r\n columns++;\r\n altOffer2Html = mangePricePlanAndRender(renewalOptions.AltRenewalOffer2, false);\r\n }\r\n\r\n let colClass = \"col-xs-12\";\r\n if (columns === 2) {\r\n colClass = \"col-xs-12 col-sm-6\";\r\n } else if (columns === 3) {\r\n colClass = \"col-xs-12 col-sm-4\";\r\n }\r\n\r\n let mSrc =\r\n '<div class=\"auto-renewal-modal-wrapper\"><div class=\"row\"><div class=\"col-xs-12 hidden err-pnl\"></div></div><div class=\"row\">';\r\n\r\n if (renewalOptions.AutoRenewalOffer) {\r\n mSrc += '<div class=\"form-group ' + colClass + '\">' + autoRenewHtml + \"</div>\";\r\n } else {\r\n mSrc +=\r\n '<div class=\"form-group col-xs-12\">No renewal plans can be found at this time.</div>';\r\n }\r\n\r\n if (renewalOptions.AltRenewalOffer1) {\r\n mSrc += '<div class=\"form-group ' + colClass + '\">' + altOffer1Html + \"</div>\";\r\n }\r\n\r\n if (renewalOptions.AltRenewalOffer2) {\r\n mSrc += '<div class=\"form-group ' + colClass + '\">' + altOffer2Html + \"</div>\";\r\n }\r\n\r\n mSrc += \"</div></div>\";\r\n\r\n cw.modal.Open({\r\n title: \" Renewal\",\r\n data: { renewalOpts: renewalOptions },\r\n modalBody: $(mSrc),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Close',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (m) {\r\n m.close();\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-refresh\"></i> Renew Account',\r\n cssClass: \"btn-primary btn-xs-block disabled btn-renew\",\r\n action: function (m) {\r\n const $errPnl = m.$modalBody.find(\".err-pnl\");\r\n cw.alert.ClearAlert($errPnl);\r\n if (m.$modalBody.find('input[type=\"radio\"]:checked').length > 0) {\r\n const rOpts = m.getData(\"renewalOpts\");\r\n cw.loadingIndicator.start();\r\n cw.webservices.getJson(\r\n \"S1AccountManager/renew-account\",\r\n {\r\n BillingAccountId: rOpts.BillingAccountId,\r\n LdcAccountId: rOpts.LdcAccountId,\r\n RenewalPriceSheetLineId: m.$modalBody\r\n .find('input[type=\"radio\"]:checked')\r\n .data(\"priceSheetLineId\"),\r\n CustomerCorrespondenceSendQueueId: rOpts.CustomerCorrespondenceSendQueueId,\r\n RenewalPin: rOpts.RenewalPin,\r\n },\r\n function (renewalResp) {\r\n const alertTitle = \"Error\";\r\n const alertMsg = \"An unknown error occurred processing your renewal\";\r\n cw.loadingIndicator.stop();\r\n\r\n if (renewalResp && renewalResp.RenewalStatus === 1) {\r\n //1 is a magic number here and means SUCCESS!!!! (Hana.AppEnum.CustomerCorrespondenceRenewalStatus)\r\n cw.modal.Alert({\r\n title: \"Renewal Processed\",\r\n text: \"Your renewal has been processed.\",\r\n });\r\n m.close();\r\n self.loadDashboard(self.selectedS1AccountId);\r\n return;\r\n }\r\n\r\n cw.modal.Alert({ title: alertTitle, text: alertMsg });\r\n }\r\n );\r\n } else {\r\n cw.alert.Alert(\"Please select a renewal plan,\", $errPnl);\r\n }\r\n },\r\n },\r\n ],\r\n onShownCallback: function (m) {\r\n cw.loadingIndicator.stop();\r\n const $btnRenew = m.$modalFooter.find(\".btn-renew\");\r\n m.$modalBody.find('input[type=\"radio\"]').on(\"change\", function (e) {\r\n if (m.$modalBody.find('input[type=\"radio\"]:checked').length > 0) {\r\n $btnRenew.removeClass(\"disabled\");\r\n } else {\r\n $btnRenew.addClass(\"disabled\");\r\n }\r\n });\r\n },\r\n });\r\n };\r\n\r\n cw.templating.DownloadTemplateHtml(\r\n \"ApplicationPricePlan.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n function (tmplSrc) {\r\n openModal(rtnObj, tmplSrc);\r\n }\r\n );\r\n } else {\r\n cw.modal.Alert({\r\n title: \"No Pending Renewal Offers\",\r\n text: \"An unknown error occurred while retreiving pending renewal offers.\",\r\n });\r\n }\r\n }\r\n );\r\n },\r\n showServiceCallHistory: function (dpMap, locationName) {\r\n const self = this;\r\n if (dpMap) {\r\n cw.loadingIndicator.start();\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-location-service-call-history/\" + self.selectedS1AccountId,\r\n [dpMap],\r\n function (srvCallHistoryItems) {\r\n cw.modal.Open({\r\n title: \"Service History - \" + locationName,\r\n size: BootstrapDialog.SIZE_WIDE,\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Close',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n ],\r\n modalBody: $('<div class=\"srv-history-tbl-target\"></div>'),\r\n onShownCallback: function (mr) {\r\n const $targetEl = mr.$modalBody.find(\".srv-history-tbl-target\");\r\n\r\n const cols = [\r\n {\r\n title: \"Service Call Date\",\r\n data: function (row, type, val, meta) {\r\n return cw.utility.tableSortByDate(row.ServiceCallCreatedDate, type, \"L\");\r\n },\r\n },\r\n {\r\n title: \"Scheduled Service Time\",\r\n data: function (row, type, val, meta) {\r\n return cw.utility.tableSortByDate(row.ServiceCallCreatedDate, type, \"L LT\");\r\n },\r\n },\r\n {\r\n title: \"Service Issue\",\r\n data: function (row, type, val, meta) {\r\n return row.ServiceCode;\r\n },\r\n },\r\n {\r\n title: \"Equipment\",\r\n data: function (row, type, val, meta) {\r\n return (\r\n row.EquipmentType +\r\n (row.EquipmentDescription\r\n ? '<br /><small class=\"text-muted\">' + row.EquipmentDescription + \"</small>\"\r\n : \"\")\r\n );\r\n },\r\n },\r\n {\r\n title: \"Invoice\",\r\n sortable: false,\r\n className: \"text-center\",\r\n data: function (row, type, val, meta) {\r\n return row.WebDocsDocumentId\r\n ? '<a href=\"#\" data-doc-num=\"' +\r\n row.InvoiceNumber +\r\n '\" data-web-doc-id=\"' +\r\n row.WebDocsDocumentId +\r\n '\" class=\"btn btn-sm btn-secondary view-document\"><i class=\"fa fa-eye\"></i> View</a>'\r\n : \"--\";\r\n },\r\n },\r\n ];\r\n\r\n const $tblHtml = $(\r\n cw.utility.getTableMarkup(\r\n cols.map(function (c) {\r\n return c.title;\r\n }),\r\n [\"srv-history-tbl\"]\r\n )\r\n );\r\n $targetEl.append($tblHtml);\r\n\r\n const tableOpts = {\r\n data: srvCallHistoryItems,\r\n lengthMenu: [\r\n [10, 25, 50, -1],\r\n [10, 25, 50, \"All\"],\r\n ],\r\n iDisplayLength: 10,\r\n responsive: true,\r\n deferRender: true,\r\n dom: \"lrtip\",\r\n language: {\r\n search: \"Filter:\",\r\n },\r\n order: [[0, \"desc\"]],\r\n columns: cols,\r\n };\r\n\r\n const dt = $tblHtml.DataTable(tableOpts);\r\n mr.setData(\"dataTable\", dt);\r\n\r\n mr.$modalBody.on(\"click\", \".view-document\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const docGuid = $this.data(\"webDocId\");\r\n cw.loadingIndicator.start();\r\n cw.modal.Open({\r\n data: { docGuid: docGuid },\r\n title: \"Invoice #\" + $this.data(\"docNum\"),\r\n modalBody: $('<div id=\"pdf-target\"></div>'),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n successCallback: function (modalRef) {\r\n modalRef.close();\r\n },\r\n onShownCallback: function (modalRef) {\r\n const dGuid = modalRef.getData(\"docGuid\");\r\n\r\n createNonRoutedApp(pdfViewer, {\r\n pdfUrl: \"/gen-asset/document-viewer/\" + dGuid,\r\n allowDownload: true,\r\n onPdfLoaded() {\r\n cw.loadingIndicator.stop();\r\n },\r\n }).mount(\"#pdf-target\");\r\n },\r\n });\r\n });\r\n\r\n cw.loadingIndicator.stop();\r\n },\r\n });\r\n }\r\n );\r\n }\r\n },\r\n\r\n setAutoPaymentStatus: function (acctBalances) {\r\n let $profileEl = $(\".autopay-profile-wrapper\");\r\n let $profileElSelection = $(\".payment-profile-selection\");\r\n const $statusBtn = $(\"button.payment-selection.payment-profile\");\r\n const $statusText = $(\".payment-selection.payment-profile .auto-pay-status-text\");\r\n const $statusIcon = $(\".payment-selection.payment-profile .auto-pay-status-icon\");\r\n let profile = {};\r\n const titleTooltip = [];\r\n\r\n $statusBtn.prop(\"title\", \"\");\r\n $statusBtn.tooltip(\"destroy\");\r\n $profileEl.addClass(\"hidden\");\r\n\r\n const eftConfig = acctBalances\r\n .filter(function (acctBal) {\r\n return acctBal.EftMaskedConfig;\r\n })\r\n .map(function (x) {\r\n return x.EftMaskedConfig;\r\n });\r\n\r\n const ccConfig = acctBalances\r\n .filter(function (acctBal) {\r\n return acctBal.CreditCardProfile;\r\n })\r\n .map(function (x) {\r\n return x.CreditCardProfile;\r\n });\r\n\r\n //tooltips - eft\r\n if (eftConfig && eftConfig.length > 0) {\r\n eftConfig.forEach(function (eft) {\r\n if (eft.RemoteSystemAccountNumber) {\r\n titleTooltip.push(\r\n `#${eft.RemoteSystemAccountNumber} ${eft.AccountTypeFormatted}: ${eft.AccountNumber}`\r\n );\r\n }\r\n });\r\n }\r\n //tooltips - cc\r\n if (ccConfig && ccConfig.length > 0) {\r\n ccConfig.forEach(function (cc) {\r\n const acctNum = acctBalances\r\n .map(function (x) {\r\n if (\r\n typeof x.CreditCardPaymentProfileId !== \"undefined\" &&\r\n x.CreditCardPaymentProfileId !== null &&\r\n x.CreditCardPaymentProfileId === cc.CreditCardPaymentProfile\r\n ) {\r\n return x.RemoteSystemAccountNumber;\r\n }\r\n })\r\n .filterSingle(function (a) {\r\n return a;\r\n });\r\n\r\n if (cc.CardTypeFormatted && cc.MaskedAccountNumber && acctNum) {\r\n titleTooltip.push(`#${acctNum} ${cc.CardTypeFormatted}: ${cc.MaskedAccountNumber}`);\r\n }\r\n });\r\n }\r\n\r\n if (\r\n acctBalances &&\r\n acctBalances.length === 1 &&\r\n ((eftConfig && eftConfig.length > 0) || (ccConfig && ccConfig.length > 0))\r\n ) {\r\n profile = {\r\n Type:\r\n eftConfig && eftConfig.length > 0\r\n ? eftConfig[0].AccountTypeFormatted + \": \"\r\n : ccConfig[0].CardTypeFormatted + \": \",\r\n Config:\r\n eftConfig && eftConfig.length > 0\r\n ? eftConfig[0].AccountNumber\r\n : ccConfig[0].MaskedAccountNumber,\r\n };\r\n\r\n $profileEl.removeClass(\"hidden\");\r\n $profileElSelection.html(profile.Type + \" \" + profile.Config);\r\n $statusIcon.addClass(\"fa-toggle-on\");\r\n $statusText.html(\" Enabled\");\r\n } else if (\r\n acctBalances &&\r\n acctBalances.length > 1 &&\r\n ((eftConfig && eftConfig.length > 0) || (ccConfig && ccConfig.length > 0))\r\n ) {\r\n $profileEl.addClass(\"hidden\");\r\n $statusIcon.addClass(\"fa-toggle-on\");\r\n $statusBtn.removeClass(\"btn-white\");\r\n $statusText.html(\" Enabled\");\r\n } else {\r\n if ($(\".btn.payment-profile\").hasClass(\"disabled\")) {\r\n titleTooltip.push(\"This account is billed directly by your utility.\");\r\n $statusBtn.removeClass(\"btn-white\");\r\n } else {\r\n titleTooltip.push(\"No profile set for AutoPay\");\r\n $statusBtn.addClass(\"btn-white\");\r\n }\r\n $profileEl.addClass(\"hidden\");\r\n $statusIcon.addClass(\"fa-toggle-off\");\r\n $statusIcon.removeClass(\"fa-toggle-on\");\r\n $statusText.html(\" Disabled\");\r\n }\r\n\r\n $statusBtn.prop(\"title\", titleTooltip.join(\"<br />\"));\r\n $statusBtn.tooltip();\r\n },\r\n updateServiceLocationData: function (s1AccountId, callback) {\r\n if (s1AccountId) {\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-service-locations/\",\r\n s1AccountId,\r\n function (rtnData) {\r\n if (rtnData?.ServiceLocations) {\r\n cw.pages.dashboard.args.ServiceLocations = rtnData.ServiceLocations;\r\n callback();\r\n }\r\n }\r\n );\r\n }\r\n },\r\n\r\n rebindS1AccountSelector: function () {\r\n const self = this;\r\n\r\n $(\".billing-account-item\").off(\"click\");\r\n $(\".billing-account-item\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const s1AccountId = $this.data(\"s1AccountId\");\r\n $(\".selected-acct-name-lbl\").html($this.html());\r\n self.selectedS1AccountId = s1AccountId;\r\n cw.loadingIndicator.start();\r\n //this is outside the viewport\r\n cw.pages.rewards.getDashSummaryData(self.selectedS1AccountId, function (dashSummary) {\r\n self.args.RewardsPoints = dashSummary && dashSummary.length > 0 ? dashSummary[0] : {};\r\n\r\n self.switchPage(location.pathname.toLowerCase());\r\n });\r\n });\r\n\r\n $(\"a.favorite-account\").off(\"click\");\r\n $(\"a.favorite-account\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const $this = $(this);\r\n\r\n //set any other favorites to unfavorited\r\n $(\"a.unfavorite-account\").each(function () {\r\n const $me = $(this);\r\n $me.removeClass(\"unfavorite-account\");\r\n $me.addClass(\"favorite-account\");\r\n $me.find(\"i\").removeClass(\"fa-star\").addClass(\"fa-regular fa-star\");\r\n });\r\n\r\n $this.removeClass(\"favorite-account\");\r\n $this.addClass(\"unfavorite-account\");\r\n $this.find(\"i\").removeClass(\"fa-regular fa-star\").addClass(\"fa-star\");\r\n\r\n cw.webservices.getJson(\r\n \"S1AccountManager/favorite-s1-account\",\r\n $this.data(\"s1AccountId\"),\r\n function (wasFavorited) {}\r\n );\r\n });\r\n\r\n $(\"a.unfavorite-account\").off(\"click\");\r\n $(\"a.unfavorite-account\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const $this = $(this);\r\n\r\n $this.removeClass(\"unfavorite-account\");\r\n $this.addClass(\"favorite-account\");\r\n $this.find(\"i\").removeClass(\"fa-star\").addClass(\"fa-regular fa-star\");\r\n\r\n cw.webservices.getJson(\r\n \"S1AccountManager/unfavorite-s1-account\",\r\n $this.data(\"s1AccountId\"),\r\n function (wasUnfavorited) {}\r\n );\r\n });\r\n\r\n $(\"a.edit-s1-account\").off(\"click\");\r\n $(\"a.edit-s1-account\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const $this = $(this);\r\n self.showS1AccountEditModal(\r\n self.selectedS1AccountId,\r\n $this.data(\"s1AccountNumber\"),\r\n $this.data(\"account-nickname\"),\r\n $this.data(\"isFavorite\")\r\n );\r\n });\r\n },\r\n s1AccountSelectorClickHandler: function (e) {\r\n $(this).toggleClass(\"active\");\r\n $(\".billing-account-selector-wrapper\").toggleClass(\"active\");\r\n e.stopPropagation();\r\n },\r\n refreshS1AccountSelector: function (selectedS1Account) {\r\n const self = this;\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-s1-accounts\",\r\n selectedS1Account,\r\n function (s1Accounts) {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwDashboardS1AccountSelector.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n { S1Accounts: s1Accounts },\r\n function (renderedTmpl) {\r\n const $newMenu = $(renderedTmpl);\r\n $newMenu.on(\"click\", self.s1AccountSelectorClickHandler);\r\n $(\".billing-account-selector\").replaceWith($newMenu);\r\n self.rebindS1AccountSelector();\r\n }\r\n );\r\n }\r\n );\r\n },\r\n viewNotes: function (s1AcctId) {\r\n cw.loadingIndicator.start();\r\n cw.webservices.getJson(\"S1AccountManager/get-notes\", s1AcctId, function (notes) {\r\n const cols = [\r\n {\r\n title: \"Note\",\r\n width: \"75%\",\r\n data: function (row, type, val, meta) {\r\n return (\r\n row.NoteType +\r\n '<div class=\"text-muted text-truncate\" title=\"' +\r\n row.NoteText.replace('\"', \""\") +\r\n '\"><small>' +\r\n row.NoteText +\r\n \"</small></div>\"\r\n );\r\n },\r\n },\r\n {\r\n title: \"Date Created\",\r\n width: \"25%\",\r\n className: \"text-center\",\r\n data: function (row, type, val, meta) {\r\n return cw.utility.tableSortByDate(row.NoteDate, type, \"L\");\r\n },\r\n },\r\n ];\r\n\r\n let html = cw.utility.getTableMarkup(\r\n cols.map(function (x) {\r\n return x.title;\r\n }),\r\n [\"note-table\"]\r\n );\r\n\r\n html = '<div class=\"note-modal-wrapper\">' + html + \"</div>\";\r\n\r\n cw.modal.Open({\r\n data: { notes: notes, cols: cols },\r\n title: \"Notes\",\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Close',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n ],\r\n size: BootstrapDialog.SIZE_WIDE,\r\n modalBody: $(html),\r\n onShownCallback: function (mr) {\r\n const $tbl = mr.$modalBody.find(\"table.note-table\");\r\n $tbl.css({ tableLayout: \"fixed\" });\r\n $tbl.find(\"tbody\").on(\"click\", \"tr\", function () {\r\n $(this).find(\"div\").toggleClass(\"text-truncate\");\r\n });\r\n\r\n cw.loadingIndicator.stop();\r\n },\r\n });\r\n });\r\n },\r\n showContractEquipment: function (contractId, deliveryPointMap, modalTitle) {\r\n const self = this;\r\n cw.loadingIndicator.start();\r\n\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-service-contract-details\",\r\n {\r\n S1AccountId: self.selectedS1AccountId,\r\n ContractId: contractId,\r\n RemoteSystemId: deliveryPointMap.RemoteSystemId,\r\n RemoteSystemAccountId: deliveryPointMap.RemoteSystemAccountId,\r\n RemoteSystemAccountNumber: deliveryPointMap.RemoteSystemAccountNumber,\r\n },\r\n function (contract) {\r\n if (contract) {\r\n contract.StartDateFormatted = moment(contract.StartDate).format(\"L\");\r\n contract.EndDateFormatted = moment(contract.EndDate).format(\"L\");\r\n contract.BillIntervalUOMFormatted = \"\";\r\n if (contract.BillIntervalUOM === \"Y\") {\r\n contract.BillIntervalUOMFormatted = \"Yearly\";\r\n } else if (contract.BillIntervalUOM === \"M\") {\r\n contract.BillIntervalUOMFormatted = \"Monthly\";\r\n }\r\n\r\n if (contract.ContractedEquipment && contract.ContractedEquipment.length > 0) {\r\n contract.ContractedEquipment.forEach(function (e) {\r\n if (e.CoverageFrom === contract.StartDate && e.CoverageTo === contract.EndDate) {\r\n e.EquipmentCoverageDateFormatted = \"Contract Term\";\r\n } else {\r\n e.EquipmentCoverageDateFormatted =\r\n moment(contract.CoverageFrom).format(\"L\") +\r\n \" - \" +\r\n moment(contract.CoverageTo).format(\"L\");\r\n }\r\n });\r\n }\r\n\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"ServiceContractDetails.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n contract,\r\n function (renderedTmpl) {\r\n cw.modal.Open({\r\n title: modalTitle,\r\n size: BootstrapDialog.SIZE_WIDE,\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> OK',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n ],\r\n modalBody: $(renderedTmpl),\r\n onShownCallback: function (mr) {\r\n cw.loadingIndicator.stop();\r\n\r\n mr.$modalBody.find(\".view-pricing-terms\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n cw.modal.Open({\r\n data: { docUrl: $(this).data(\"tosUrl\") },\r\n title: \"Terms of Service\",\r\n modalBody: $('<div id=\"pdf-target\"></div>'),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n successCallback: function (modalRef) {\r\n modalRef.close();\r\n },\r\n onShownCallback: function (modalRef) {\r\n const docUrl = modalRef.getData(\"docUrl\");\r\n\r\n createNonRoutedApp(pdfViewer, {\r\n pdfUrl: docUrl,\r\n allowDownload: true,\r\n onPdfLoaded() {\r\n cw.loadingIndicator.stop();\r\n },\r\n }).mount(\"#pdf-target\");\r\n },\r\n });\r\n });\r\n },\r\n });\r\n }\r\n );\r\n } else {\r\n cw.loadingIndicator.stop();\r\n }\r\n }\r\n );\r\n },\r\n loadDashboard: function (s1AccountId) {\r\n const self = this;\r\n cw.loadingIndicator.start();\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-dashboard-s1-account/\" + s1AccountId,\r\n self.url,\r\n function (newBillAccount) {\r\n if (newBillAccount) {\r\n if (!self.args) {\r\n self.args = {};\r\n }\r\n const brandObj = self.args.brandObj;\r\n const hasV2AddProdRight = self.args.useV2addProductExperience;\r\n self.args = $.extend(true, {}, newBillAccount);\r\n self.selectedS1AccountId = s1AccountId;\r\n self.args.selectedS1AccountId = s1AccountId;\r\n self.args.brandObj = brandObj;\r\n self.args.CanViewRewards = newBillAccount.CanViewRewards;\r\n self.args.CanRedeemNewRewards = newBillAccount.CanRedeemNewRewards;\r\n self.args.useV2addProductExperience = hasV2AddProdRight;\r\n\r\n Cookies.set(self.args.selectedS1AccountCookieKey, s1AccountId); //save this for later incase we reload the page\r\n self.bindRewardsAndCarouselItems(newBillAccount.RewardsPoints);\r\n\r\n self.rebindNotificationListener(newBillAccount.S1AccountNotificationToken);\r\n\r\n //this was fixed on the backend, but broke it here...mangling to fix from this end\r\n newBillAccount.S1CustomerTypeIds = JSON.stringify(newBillAccount.S1CustomerTypeIds);\r\n\r\n const $s1CustType = $(\".s1-customer-type\");\r\n $s1CustType.data(\"customerTypeIds\", newBillAccount.CustomerTypes);\r\n $s1CustType.html(newBillAccount.CustomerType);\r\n if (newBillAccount.CustomerJoinYear) {\r\n $(\".customer-since\").html(newBillAccount.CustomerJoinYear);\r\n $(\".customer-join-year\").removeClass(\"hidden\");\r\n } else {\r\n $(\".customer-join-year\").addClass(\"hidden\");\r\n }\r\n\r\n newBillAccount.ServiceLocations.forEach(function (sl) {\r\n sl.CustomerTypeIds = JSON.stringify(sl.CustomerTypeIds);\r\n sl.RemoteSystemMap = JSON.stringify(sl.RemoteSystemMap);\r\n sl.ProductRows.forEach(function (pr) {\r\n pr.forEach(function (p) {\r\n p.DeliveryPointMap = JSON.stringify(p.DeliveryPointMap);\r\n });\r\n });\r\n });\r\n\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"DashboardInterior.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n { Dashboard: newBillAccount },\r\n function (renderedTmpl) {\r\n self.$viewport.empty();\r\n self.$viewport.append(renderedTmpl);\r\n $(\"html, body\").scrollTop(0);\r\n self.setAutoPaymentStatus(newBillAccount.AccountBalances);\r\n self.bindInteractions(self.args);\r\n self.bindRewardsAndCarouselItems(self.args.RewardsPoints);\r\n cw.loadingIndicator.stop();\r\n }\r\n );\r\n } else {\r\n cw.loadingIndicator.stop();\r\n }\r\n }\r\n );\r\n },\r\n showS1AccountEditModal: function (s1AccountId, s1AccountNumber, accountNickname, isFavorite) {\r\n const self = this;\r\n cw.loadingIndicator.start();\r\n const d = {\r\n s1AccountId: s1AccountId,\r\n s1AccountNumber: s1AccountNumber,\r\n accountNickname: accountNickname,\r\n isFavorite: isFavorite,\r\n };\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"EditS1Account.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n d,\r\n function (renderedTmpl) {\r\n cw.modal.Open({\r\n data: { mdata: d },\r\n title: \"Account Preferences\",\r\n modalBody: $(renderedTmpl),\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-fw fa-unlink\"></i> Unlink Account',\r\n cssClass: \"btn-red btn-xs-block pull-left\",\r\n action: function (modal) {\r\n cw.modal.Open({\r\n title: \"Confirm Unlink\",\r\n modalBody: $(\r\n \"<p>Are you sure you would like to unlink this account from your login?</p><p>You will no longer be able to manage this account once you confirm this action.</p>\"\r\n ),\r\n data: {\r\n s1AccountId: modal.getData(\"mdata\").s1AccountId,\r\n parentModal: modal,\r\n },\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-fw fa-times\"></i> Cancel',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-fw fa-unlink\"></i> Yes Unlink Account',\r\n cssClass: \"btn-red btn-xs-block\",\r\n action: function (m) {\r\n cw.loadingIndicator.start();\r\n cw.webservices.getJson(\r\n \"S1AccountManager/unlink-s1-account\",\r\n m.getData(\"s1AccountId\"),\r\n function (wasSuccess) {\r\n if (wasSuccess) {\r\n cw.modal.Alert({\r\n title: \"Success\",\r\n text: \"This account has successfully been unlinked from your login.\",\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-fw fa-check\"></i> Ok',\r\n cssClass: \"btn-primary btn-xs-block\",\r\n action: function (d) {\r\n cw.loadingIndicator.start();\r\n BootstrapDialog.closeAll();\r\n location.reload();\r\n },\r\n },\r\n ],\r\n });\r\n } else {\r\n cw.modal.Alert({\r\n title: \"Unknown Error\",\r\n text: \"An unknown error occurred while unlinking this account.\",\r\n });\r\n }\r\n\r\n cw.loadingIndicator.stop();\r\n }\r\n );\r\n },\r\n },\r\n ],\r\n });\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Cancel',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-check\"></i> Ok',\r\n cssClass: \"btn-primary btn-xs-block\",\r\n action: function (mr) {\r\n const nickname = mr.$modalBody.find(\".account-nickname\").val().trim();\r\n const isFavorite = mr.$modalBody.find(\"#is-account-favorite:checked\").length > 0;\r\n cw.loadingIndicator.start();\r\n cw.webservices.getJson(\r\n \"S1AccountManager/set-account-nickname\",\r\n {\r\n S1AccountId: mr.getData(\"mdata\").s1AccountId,\r\n Nickname: nickname,\r\n isFavorite: isFavorite,\r\n },\r\n function (wasSuccess) {\r\n if (wasSuccess) {\r\n self.loadDashboard(mr.getData(\"mdata\").s1AccountId);\r\n } else {\r\n cw.modal.Alert({\r\n title: \"Unknown Error\",\r\n text: \"An unknown error occurred while updating your information.\",\r\n });\r\n cw.loadingIndicator.stop();\r\n }\r\n }\r\n );\r\n\r\n mr.close();\r\n },\r\n },\r\n ],\r\n onShownCallback: function (mr) {\r\n cw.loadingIndicator.stop();\r\n },\r\n });\r\n }\r\n );\r\n },\r\n editServiceLocation: function (deliveryPointMap, s1AccountId, servLocHash) {\r\n const self = this;\r\n\r\n const dpMap = deliveryPointMap.map(function (x) {\r\n return {\r\n RemoteSystemDeliveryPointId: x.RemoteSystemDeliveryPointId,\r\n RemoteSystemId: x.RemoteSystemId,\r\n RemoteSystemAccountId: x.RemoteSystemAccountId,\r\n RemoteSystemAccountNumber: x.RemoteSystemAccountNumber,\r\n };\r\n });\r\n\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-delivery-point-info/\" + s1AccountId,\r\n dpMap,\r\n function (selectedLocationRtn) {\r\n cw.loadingIndicator.stop();\r\n if (selectedLocationRtn) {\r\n let selectedLocation = [];\r\n\r\n for (const element of selectedLocationRtn) {\r\n if (element.ServiceLocationHash === servLocHash) {\r\n selectedLocation = element;\r\n }\r\n }\r\n\r\n selectedLocation.EveningPhone = cw.utility.FormatAsPhone({\r\n number: selectedLocation.EveningPhone,\r\n });\r\n selectedLocation.DaytimePhone = cw.utility.FormatAsPhone({\r\n number: selectedLocation.DaytimePhone,\r\n });\r\n selectedLocation.RemoteSystemMap = deliveryPointMap;\r\n\r\n self.phoneTypeList = selectedLocation.GetPhoneTypeList;\r\n self.locationData = selectedLocationRtn;\r\n self.locationData.selectedLocation = selectedLocation;\r\n self.args.ServiceLocations = selectedLocationRtn;\r\n\r\n const myDp = selectedLocation.RemoteSystemMap.map(function (x) {\r\n return x.RemoteSystemId;\r\n });\r\n selectedLocation.RemoteSystemId = myDp[0];\r\n let modalSize;\r\n\r\n switch (myDp[0]) {\r\n case cw.appEnum.S1RemoteSystem.As400:\r\n case cw.appEnum.S1RemoteSystem.Nexant:\r\n modalSize = BootstrapDialog.SIZE_NORMAL;\r\n break;\r\n case cw.appEnum.S1RemoteSystem.Cargas:\r\n modalSize = BootstrapDialog.SIZE_WIDE;\r\n break;\r\n }\r\n\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwEditLocation.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n selectedLocation,\r\n function (renderedTemplate) {\r\n cw.modal.Open({\r\n data: {},\r\n title: \"Edit Location\",\r\n size: modalSize,\r\n modalBody: $(renderedTemplate),\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Cancel',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-save\"></i> Save',\r\n cssClass: \"btn-primary btn-xs-block\",\r\n action: function (dialogRef) {\r\n const self = cw.pages.dashboard;\r\n\r\n switch (selectedLocation.RemoteSystemId) {\r\n case cw.appEnum.S1RemoteSystem.As400:\r\n case cw.appEnum.S1RemoteSystem.Nexant:\r\n self.saveServiceLocation(selectedLocation, dialogRef);\r\n break;\r\n case cw.appEnum.S1RemoteSystem.Cargas:\r\n const rowData = cw.utility.getDataTableAllRowData(\r\n dialogRef.$modalBody.find(\".location-phone-table-target\").DataTable()\r\n );\r\n\r\n const saveObj = {\r\n DeliveryLocationDescription: dialogRef.$modalBody\r\n .find(\".location-name\")\r\n .val(),\r\n ContactName: dialogRef.$modalBody.find(\".contact-name\").val(),\r\n IsBillToAddress: dialogRef.$modalBody\r\n .find(\".billing-address-checkbox\")\r\n .is(\":checked\"),\r\n Directions: dialogRef.$modalBody.find(\".directions-cargas\").val(),\r\n GetCustomerPhoneNumberList: rowData,\r\n LocationId: dialogRef.$modalBody\r\n .find(\".location-address-info\")\r\n .data(\"locationId\"),\r\n CustomerLocationId: dialogRef.$modalBody\r\n .find(\".location-address-info\")\r\n .data(\"entityLocationId\"), //entityLocationId -- You've been CarGassed!\r\n RemoteSystemId: selectedLocation.RemoteSystemId,\r\n RemoteSystemMap: selectedLocation.RemoteSystemMap,\r\n };\r\n\r\n self.saveServiceLocation(saveObj, dialogRef);\r\n break;\r\n }\r\n },\r\n },\r\n ],\r\n onShownCallback: function (mr) {\r\n const self = cw.pages.dashboard;\r\n const $locationEl = mr.$modalBody.find(\".edit-location-wrapper\");\r\n\r\n for (const element of selectedLocation.RemoteSystemMap) {\r\n switch (element.RemoteSystemId) {\r\n case cw.appEnum.S1RemoteSystem.As400:\r\n $locationEl.find(\".as400-account-form\").removeClass(\"hidden\");\r\n break;\r\n case cw.appEnum.S1RemoteSystem.Nexant:\r\n $locationEl.find(\".nexant-account-form\").removeClass(\"hidden\");\r\n break;\r\n case cw.appEnum.S1RemoteSystem.Cargas:\r\n $locationEl.find(\".cargas-account-form\").removeClass(\"hidden\");\r\n break;\r\n }\r\n }\r\n\r\n cw.loadingIndicator.stop();\r\n cw.pages.dashboard.buildPhoneNumberDataTable(selectedLocation);\r\n\r\n self.bindEditLocationButtons(mr, selectedLocation, selectedLocationRtn);\r\n },\r\n });\r\n }\r\n );\r\n }\r\n }\r\n );\r\n },\r\n bindEditLocationButtons: function (mr, selectedLocation, selectedLocationRtn) {\r\n const self = cw.pages.dashboard;\r\n\r\n mr.$modalBody.find(\".add-phone\").off(\"click\");\r\n mr.$modalBody.find(\".add-phone\").on(\"click\", function (e) {\r\n const $this = $(this);\r\n const PhoneData = selectedLocation;\r\n\r\n PhoneData.LocationId = $this.data(\"locationId\");\r\n PhoneData.Location = PhoneData.StreetAddress;\r\n\r\n PhoneData.PhoneTypeList = self.phoneTypeList.map(function (x) {\r\n return {\r\n PhoneTypeId: x.PhoneTypeID,\r\n PhoneType: x.PhoneTypeID === 0 ? \"--Select--\" : x.PhoneType,\r\n PhoneTypeSelected: false,\r\n };\r\n });\r\n\r\n self.getPhoneDetailModal(PhoneData, mr);\r\n });\r\n\r\n mr.$modalBody.find(\".delete-phone\").off(\"click\");\r\n mr.$modalBody.find(\".delete-phone\").on(\"click\", function (e) {\r\n const $this = $(this);\r\n const phoneId = $this.data(\"phoneId\");\r\n const phoneNumber = $this.data(\"phoneNumber\");\r\n\r\n cw.modal.Open({\r\n data: {},\r\n title: \"Delete Phone Confirmation\",\r\n modalBody: \"Are you sure you would like to remove \" + phoneNumber + \"?\",\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Cancel',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-trash\"></i> Delete',\r\n cssClass: \"btn-red btn-xs-block\",\r\n action: function (dialogRef) {\r\n const dt = mr.$modalBody.find(\".location-phone-table-target\").DataTable();\r\n cw.utility.deleteDataTableListing(dt, phoneId, \"PhoneID\", true);\r\n dialogRef.close();\r\n },\r\n },\r\n ],\r\n onShownCallback: function (mr) {},\r\n });\r\n });\r\n\r\n mr.$modalBody.find(\".edit-phone\").off(\"click\");\r\n mr.$modalBody.find(\".edit-phone\").on(\"click\", function (e) {\r\n const $this = $(this);\r\n const $dt = self.phoneEditDataTable;\r\n const phoneId = $this.data(\"phoneId\");\r\n const rowData = cw.utility.getDataTableRowData($dt, phoneId, \"PhoneID\");\r\n const customerLocationData = selectedLocationRtn;\r\n\r\n cw.loadingIndicator.start();\r\n self.getPhoneEditData(rowData, customerLocationData, mr);\r\n });\r\n\r\n mr.$modalBody.find(\".billing-address-checkbox\").off(\"change\");\r\n mr.$modalBody.find(\".billing-address-checkbox\").on(\"change\", function (e) {\r\n const $this = $(this);\r\n const warning =\r\n '<div class=\"pl10 pr10 pt20\">' +\r\n '<p><i class=\"fa fa-warning\"></i> Only 1 Location may be used as the Billing Address.</p>' +\r\n \"<p>If you check this field, it will uncheck any other Locations currently set to be used as the Billing Address.</p>\" +\r\n \"</div>\";\r\n const error =\r\n '<div class=\"pl10 pr10 pt20\">' +\r\n '<p><i class=\"fa fa-ban\"></i> There must be at least 1 Service Location configured as the Billing Address.</p>' +\r\n \"</div>\";\r\n if (!$this.is(\":checked\")) {\r\n cw.modal.Open({\r\n data: {},\r\n title: \"Error!\",\r\n modalBody: error,\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-check\"></i> Ok',\r\n cssClass: \"btn-secondary btn-xs-block\",\r\n action: function (dialogRef) {\r\n $(\".billing-address-checkbox\").prop(\"checked\", true);\r\n dialogRef.close();\r\n },\r\n },\r\n ],\r\n onShownCallback: function (mr) {},\r\n });\r\n } else {\r\n cw.modal.Open({\r\n data: {},\r\n title: \"Warning!\",\r\n modalBody: warning,\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-check\"></i> Ok',\r\n cssClass: \"btn-secondary btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n ],\r\n onShownCallback: function (mr) {},\r\n });\r\n }\r\n });\r\n },\r\n getPhoneDetailModal: function (PhoneData, mRef) {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwEditLocationPhoneDetail.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n PhoneData,\r\n function (renderedTemplate) {\r\n cw.modal.Open({\r\n data: {},\r\n title: \"Edit Location Phone Number\",\r\n modalBody: $(renderedTemplate),\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Cancel',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-save\"></i> Save',\r\n cssClass: \"btn-primary btn-xs-block\",\r\n action: function (mr) {\r\n const self = cw.pages.dashboard;\r\n const $errPnl = mr.$modalBody.find(\".error-panel\");\r\n const $dt = self.phoneEditDataTable;\r\n const err = [];\r\n let phoneId = mr.$modalBody.find(\".update-phone-number\").data(\"phoneId\");\r\n\r\n cw.alert.ClearAlert($errPnl);\r\n\r\n if (phoneId === \"\" || typeof phoneId === \"undefined\") {\r\n phoneId = -1;\r\n\r\n const getUniqueNumber = function (phoneId) {\r\n const list = cw.utility.getDataTableAllRowData(\r\n mRef.$modalBody.find(\".location-phone-table-target\").DataTable()\r\n );\r\n let i = 0;\r\n\r\n for (i; i < list.length; i++) {\r\n const PhoneId = list[i].PhoneID;\r\n if (phoneId === PhoneId) {\r\n return phoneId - 4;\r\n }\r\n }\r\n return phoneId;\r\n };\r\n\r\n phoneId = getUniqueNumber(phoneId);\r\n }\r\n\r\n const phoneObj = {\r\n Contact: mr.$modalBody.find(\".update-phone-contact\").val().trim(),\r\n IsPrimary: PhoneData.IsPrimary,\r\n Location: PhoneData.Location,\r\n LocationId: PhoneData.LocationId,\r\n EntityLocationId: PhoneData.EntityLocationId,\r\n PhoneExtension: mr.$modalBody.find(\".update-phone-extension\").val().trim(),\r\n PhoneID: phoneId,\r\n PhoneNumber: mr.$modalBody.find(\".update-phone-number\").val().trim(),\r\n PhoneNumberFormatted: mr.$modalBody.find(\".update-phone-number\").val().trim(),\r\n PhoneType: mr.$modalBody.find(\".phone-type-select option:selected\").text().trim(),\r\n PhoneTypeId: mr.$modalBody.find(\".phone-type-select\").val().trim(),\r\n };\r\n const phoneIsFormatted =\r\n phoneObj.PhoneNumber.indexOf(\"(\") === -1 ||\r\n phoneObj.PhoneNumber.indexOf(\")\") === -1 ||\r\n phoneObj.PhoneNumber.indexOf(\"-\") > -1;\r\n\r\n if (typeof phoneObj.PhoneNumber === \"undefined\" || phoneObj.PhoneNumber === \"\") {\r\n err.push({\r\n text: \"Phone number cannot be blank.\",\r\n el: mr.$modalBody.find(\".update-phone-number\"),\r\n });\r\n }\r\n if (phoneIsFormatted && phoneObj.PhoneNumber.length !== 12) {\r\n err.push({\r\n text: \"Phone Number must be in the following format. Example: xxx-xxx-xxxx\",\r\n el: mr.$modalBody.find(\".update-phone-number\"),\r\n });\r\n }\r\n if (!phoneIsFormatted) {\r\n err.push({\r\n text: \"Please enter a valid phone number. Example: xxx-xxx-xxxx\",\r\n el: mr.$modalBody.find(\".update-phone-number\"),\r\n });\r\n }\r\n if (phoneObj.PhoneExtension && !parseInt(phoneObj.PhoneExtension)) {\r\n err.push({\r\n text: \"Phone Extension must be a numeric value\",\r\n el: mr.$modalBody.find(\".update-phone-extension\"),\r\n });\r\n }\r\n if (phoneObj.PhoneExtension && phoneObj.PhoneExtension.length > 5) {\r\n err.push({\r\n text: \"Phone Extension cannot be over 5 characters in length.\",\r\n el: mr.$modalBody.find(\".update-phone-extension\"),\r\n });\r\n }\r\n\r\n if (err.length < 1) {\r\n if (phoneId && PhoneData !== null) {\r\n //edit existing phone - update datatable in background only\r\n cw.utility.addUpdateDataTableListing($dt, phoneObj, \"PhoneID\", false);\r\n $dt.draw(true);\r\n } else {\r\n //add new phone number to datatable in background\r\n cw.utility.addUpdateDataTableListing($dt, phoneObj, \"\", false);\r\n }\r\n\r\n mr.close();\r\n self.bindEditLocationButtons(\r\n mRef,\r\n self.locationData.selectedLocation,\r\n self.locationData\r\n );\r\n } else {\r\n cw.alert.Alert(err, $errPnl);\r\n $errPnl.find(\"ul\").addClass(\"list-unstyled\");\r\n }\r\n },\r\n },\r\n ],\r\n onShownCallback: function (mr) {\r\n const self = cw.pages.dashboard;\r\n\r\n mr.$modalBody.find(\".update-phone-number\").on(\"change input keyup paste\", function (e) {\r\n const $this = $(this);\r\n const phone = self.formatPhoneNumberForDisplay($this.val());\r\n $this.val(phone);\r\n });\r\n },\r\n });\r\n }\r\n );\r\n },\r\n getPhoneEditData: function (rowData, locationData, mr) {\r\n const self = cw.pages.dashboard;\r\n const PhoneData = rowData;\r\n\r\n PhoneData.PhoneTypeList = self.phoneTypeList.map(function (x) {\r\n return {\r\n PhoneTypeId: x.PhoneTypeID,\r\n PhoneType: x.PhoneTypeID === 0 ? \"--Select--\" : x.PhoneType,\r\n PhoneTypeSelected: parseInt(x.PhoneTypeID) === parseInt(rowData.PhoneTypeId),\r\n };\r\n });\r\n PhoneData.LocationList = locationData.map(function (x) {\r\n return {\r\n LocationId: x.RemoteSystemMap[0].RemoteSystemDeliveryPointId,\r\n EntityLocationId: x.EntityLocationId,\r\n LocationAddress: x.StreetAddress,\r\n LocationSelected:\r\n x.RemoteSystemMap[0].RemoteSystemDeliveryPointId === rowData.LocationId ||\r\n rowData.Location === null,\r\n };\r\n });\r\n\r\n cw.loadingIndicator.stop();\r\n\r\n if (PhoneData && typeof PhoneData !== \"undefined\") {\r\n self.getPhoneDetailModal(PhoneData, mr);\r\n }\r\n },\r\n buildPhoneNumberDataTable: function (phoneData) {\r\n const self = this;\r\n\r\n const columnDefs = [\r\n {\r\n orderable: true,\r\n visible: false,\r\n className: \"text-left\",\r\n data: function (row, type, val, meta) {\r\n return row.PhoneID;\r\n },\r\n },\r\n {\r\n orderable: true,\r\n className: \"text-left\",\r\n data: function (row, type, val, meta) {\r\n return row.PhoneNumberFormatted;\r\n },\r\n },\r\n {\r\n orderable: true,\r\n className: \"text-left\",\r\n data: function (row, type, val, meta) {\r\n return row.PhoneExtension;\r\n },\r\n },\r\n {\r\n orderable: true,\r\n className: \"text-left\",\r\n data: function (row, type, val, meta) {\r\n return row.PhoneType;\r\n },\r\n },\r\n {\r\n orderable: true,\r\n className: \"text-left\",\r\n data: function (row, type, val, meta) {\r\n return row.Contact;\r\n },\r\n },\r\n {\r\n orderable: true,\r\n className: \"text-center\",\r\n data: function (row, type, val, meta) {\r\n if (row.IsPrimary) {\r\n return '<div class=\"shipley-checkbox\"><i class=\"fa fa-regular fa-square-check\"></i></div>';\r\n } else {\r\n return '<div class=\"shipley-checkbox\"><i class=\"fa fa-regular fa-square\"></i></div>';\r\n }\r\n },\r\n },\r\n {\r\n orderable: true,\r\n className: \"text-left\",\r\n data: function (row, type, val, meta) {\r\n return row.Location;\r\n },\r\n },\r\n {\r\n orderable: false,\r\n className: \"text-left\",\r\n data: function (row, type, val, meta) {\r\n return `<div class=\"flex\" style=\"height:30px;\">\r\n <span data-phone-id=\"${row.PhoneID}\" data-entity-location-id=\"${row.EntityLocationId}\" data-phone-number=\"${row.PhoneNumber}\" class=\"btn btn-xs pl10 pr10 pt5 pb5 btn-secondary edit-phone\" style=\"cursor: pointer;\"><i class=\"fa fa-edit\"></i> Edit</span>\r\n <span data-phone-id=\"${row.PhoneID}\" data-entity-location-id=\"${row.EntityLocationId}\" data-phone-number=\"${row.PhoneNumber}\" class=\"btn btn-xs pl10 pr10 pt5 pb5 btn-red delete-phone ml5\" style=\"cursor: pointer;\"><i class=\"fa fa-trash\"></i></span>\r\n </div>`;\r\n },\r\n },\r\n ];\r\n\r\n const tableOptions = {\r\n iDisplayLength: 5,\r\n processing: true,\r\n responsive: true,\r\n deferRender: false,\r\n bSortClasses: false,\r\n dom: \"<t>p\",\r\n data: phoneData.GetCustomerPhoneNumberList,\r\n columns: columnDefs,\r\n };\r\n\r\n self.phoneEditDataTable = $(\".location-phone-table-target\").DataTable(tableOptions);\r\n\r\n const thx = $(\"table.location-phone-table-target\").find(\"th\");\r\n const tdx = $(\"table.location-phone-table-target\").find(\"td\");\r\n\r\n $.each(tdx, function (i, j) {\r\n $(this).css(\"font-size\", \"14px\");\r\n });\r\n\r\n $.each(thx, function (i, j) {\r\n $(this).css(\"background-color\", \"#D9E4F3\");\r\n });\r\n },\r\n saveServiceLocation: function (selectedLocation, dialogRef) {\r\n const self = this;\r\n const remoteId = selectedLocation.RemoteSystemId;\r\n const $locationEl = $(\".edit-location-wrapper\");\r\n const $email = $locationEl.find(\".email-address-nexant\").val();\r\n const $attention = $locationEl.find(\".attention\").val();\r\n const $description = $locationEl.find(\".delivery-location-description\").val();\r\n const $eveningPhone = cw.utility.FormatAsPhone({\r\n number: $locationEl.find(\".evening-phone\").val(),\r\n });\r\n const $directions = $locationEl.find(\".directions\").val();\r\n const $contactName =\r\n remoteId === cw.appEnum.S1RemoteSystem.Nexant\r\n ? $locationEl.find(\".contact-name-nexant\").val().trim()\r\n : $locationEl.find(\".contact-name-as400\").val().trim();\r\n let orgData = {};\r\n //Setup orgData\r\n switch (remoteId) {\r\n case cw.appEnum.S1RemoteSystem.As400:\r\n orgData.Attention = $attention;\r\n orgData.Directions = $directions;\r\n orgData.DeliveryLocationDescription = $description;\r\n orgData.EveningPhone = $eveningPhone;\r\n break;\r\n case cw.appEnum.S1RemoteSystem.Nexant:\r\n if ($email) {\r\n orgData.Email = $email;\r\n }\r\n break;\r\n case cw.appEnum.S1RemoteSystem.Cargas:\r\n orgData = selectedLocation;\r\n break;\r\n }\r\n\r\n orgData.DayPhone = cw.utility.FormatAsPhone({\r\n number:\r\n remoteId === cw.appEnum.S1RemoteSystem.Nexant\r\n ? $locationEl.find(\".daytime-phone-nexant\").val()\r\n : $locationEl.find(\".daytime-phone-as400\").val(),\r\n });\r\n orgData.S1AccountId = self.selectedS1AccountId;\r\n orgData.RemoteSystemMap = selectedLocation.RemoteSystemMap;\r\n\r\n const validateServiceLocation = function (orgData) {\r\n cw.loadingIndicator.start();\r\n const $errPnl = $locationEl.find(\".err-pnl\");\r\n cw.alert.ClearAlert($errPnl);\r\n const errs = [];\r\n\r\n switch (remoteId) {\r\n case cw.appEnum.S1RemoteSystem.As400:\r\n case cw.appEnum.S1RemoteSystem.Nexant:\r\n if (orgData.DayPhone && orgData.DayPhone.length !== 12) {\r\n errs.push({\r\n text: \"Please enter a valid daytime phone number\",\r\n $el: $locationEl.find(\".daytime-phone\"),\r\n });\r\n }\r\n if (orgData.EveningPhone && orgData.EveningPhone.length !== 12) {\r\n errs.push({\r\n text: \"Please enter a valid evening phone number\",\r\n $el: $locationEl.find(\".evening-phone\"),\r\n });\r\n }\r\n if (orgData.Email && !orgData.Email.isValidEmail()) {\r\n errs.push({\r\n text: \"Please enter a valid email.\",\r\n $el: $locationEl.find(\".email-address\"),\r\n });\r\n }\r\n if (orgData.Directions && orgData.Directions.length > 200) {\r\n errs.push({\r\n text: \"Directions may not exceed 200 Characters.\",\r\n $el: $locationEl.find(\".directions\"),\r\n });\r\n }\r\n if (!validateContactName($contactName)) {\r\n const errMsg =\r\n \"Please enter a valid Contact Name. \" +\r\n \"Please be sure a First and Last name are specified.\";\r\n errs.push({\r\n text: errMsg,\r\n $el:\r\n remoteId === cw.appEnum.S1RemoteSystem.Nexant\r\n ? $locationEl.find(\".contact-name-nexant\")\r\n : $locationEl.find(\".contact-name-as400\"),\r\n });\r\n } else {\r\n orgData.ContactName = $contactName;\r\n }\r\n break;\r\n\r\n case cw.appEnum.S1RemoteSystem.Cargas:\r\n for (const element of orgData.GetCustomerPhoneNumberList) {\r\n const phoneList = element;\r\n const phone = self.stripPhoneNumberFormatting(phoneList.PhoneNumberFormatted);\r\n const ext = self.stripPhoneNumberFormatting(phoneList.PhoneExtension);\r\n phoneList.PhoneNumber = phone + \" \" + ext;\r\n if (phoneList.PhoneNumber.length < 1) {\r\n errs.push({\r\n text: \"Phone numbers cannot be blank.\",\r\n $el: \"\",\r\n });\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (errs.length > 0) {\r\n cw.loadingIndicator.stop();\r\n cw.alert.Alert(errs, $errPnl);\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n const validateContactName = function ($contactName) {\r\n const contactArr = $contactName.split(\"\");\r\n const space = contactArr.includes(\" \");\r\n return !(!space || contactArr.length === 0);\r\n };\r\n\r\n if (validateServiceLocation(orgData)) {\r\n //do save\r\n cw.webservices.getJson(\r\n \"S1AccountManager/update-service-location-contact-details\",\r\n orgData,\r\n function (saveResp) {\r\n cw.loadingIndicator.stop();\r\n if (saveResp === true) {\r\n cw.modal.Alert({\r\n title: \"Success\",\r\n text: '<i class=\"fa fa-check-circle fa-2x\" style=\"color: #66bc29\" aria-hidden=\"true\"></i> Location has been successfully updated.',\r\n });\r\n self.loadDashboard(self.selectedS1AccountId);\r\n dialogRef.close();\r\n } else {\r\n cw.modal.Alert({\r\n title: \"Failed Save\",\r\n text: \"There was an error trying to save your changes.\",\r\n });\r\n }\r\n }\r\n );\r\n }\r\n },\r\n\r\n stripPhoneNumberFormatting: function (phone) {\r\n const pCheck = /[^0-9x]+/;\r\n\r\n const returnInt = phone.replace(pCheck, \"\");\r\n\r\n if (parseInt(returnInt) > 0) {\r\n return returnInt;\r\n }\r\n },\r\n formatPhoneNumberForDisplay: function (phone) {\r\n const self = cw.pages.dashboard;\r\n let phoneFormatted = phone;\r\n const phoneStripped = self.stripPhoneNumberFormatting(phone);\r\n\r\n if (phoneStripped && phoneStripped.length > 0) {\r\n if (phoneStripped.length === 10) {\r\n //add - after 3rd and value - if it looks like 7177717777\r\n phoneFormatted = phoneStripped.replace(/(\\d{3})(\\d{3})(\\d{4})/, \"$1-$2-$3\");\r\n }\r\n return phoneFormatted;\r\n }\r\n return phone;\r\n },\r\n viewUsageHistory: function (productCode, deliveryPointMap, equipmentId) {\r\n const self = this;\r\n cw.loadingIndicator.start();\r\n let req = {};\r\n $.extend(req, deliveryPointMap, { ProductCode: productCode, EquipmentId: equipmentId });\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-usage-history/\" + self.selectedS1AccountId,\r\n req,\r\n function (usageResp) {\r\n if (usageResp?.UsageHistory && usageResp.UsageHistory.length > 0) {\r\n cw.modal.Open({\r\n data: {\r\n usageData: usageResp,\r\n productCode: productCode,\r\n equipmentId: equipmentId,\r\n deliveryPointMap: deliveryPointMap,\r\n },\r\n title: \"Usage History\",\r\n size: BootstrapDialog.SIZE_WIDE,\r\n modalBody: $('<div class=\"usage-target\" style=\"width:100%;height:400px;\"></div>'),\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-check\"></i> Ok',\r\n cssClass: \"mb10 btn-white ok-button btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n ],\r\n onShownCallback: function (mr) {\r\n const $usageTarget = mr.$modalBody.find(\".usage-target\");\r\n const ngEl = [cw.appEnum.ProductCode.Electricity, cw.appEnum.ProductCode.NaturalGas];\r\n const usage = mr.getData(\"usageData\");\r\n\r\n if (usage.WasEstimated || usage.HasForcastedFutureData) {\r\n let msg = \"\";\r\n if (usage.WasEstimated) {\r\n msg =\r\n \"* Usage is estimated \" +\r\n (usage.HasForcastedFutureData\r\n ? \" and contains future forecasted usage based on weather\"\r\n : \"\");\r\n } else if (usage.HasForcastedFutureData) {\r\n msg = \"* Usage contains future forecasted usage based on weather\";\r\n }\r\n\r\n mr.$modalFooter\r\n .find(\".bootstrap-dialog-footer-buttons\")\r\n .append(\r\n '<div class=\"pull-left ' +\r\n (window.innerWidth <= 768 ? \"pt2\" : \"pt10\") +\r\n ' fs-xs-11\">' +\r\n msg +\r\n \"</div>\"\r\n );\r\n }\r\n\r\n self.drawUsageGraph(\r\n $usageTarget,\r\n usage.UsageHistory,\r\n ngEl.includes(mr.getData(\"productCode\")) ? \"monthly\" : \"daily\"\r\n );\r\n\r\n cw.loadingIndicator.stop();\r\n },\r\n });\r\n } else {\r\n cw.loadingIndicator.stop();\r\n cw.modal.Alert({ title: \"No Usage\", text: \"No usage on file to display.\" });\r\n }\r\n }\r\n );\r\n },\r\n drawUsageGraph: function ($targetEl, usageData, timeSeries) {\r\n const graphData = [];\r\n let seriesData = [];\r\n let uom;\r\n\r\n if (usageData && usageData.length > 0) {\r\n seriesData = usageData.map(function (x, idx) {\r\n let val;\r\n if (timeSeries === \"monthly\") {\r\n val = moment(x.Date).format(\"MMM YYYY\");\r\n } else if (timeSeries === \"daily\") {\r\n val = parseInt(moment(x.Date).format(\"x\"));\r\n }\r\n\r\n return [val, x.Value];\r\n });\r\n uom = cw.utility.UOMToText(usageData[0].UnitOfMeasure);\r\n }\r\n\r\n let barwidth;\r\n let xMode;\r\n switch (timeSeries) {\r\n case \"daily\":\r\n barwidth = 86400000;\r\n xMode = \"time\";\r\n break;\r\n case \"monthly\":\r\n default:\r\n barwidth = 0.6;\r\n xMode = \"categories\";\r\n break;\r\n }\r\n\r\n const s = {\r\n label: uom,\r\n data: seriesData,\r\n bars: {\r\n show: true,\r\n barWidth: barwidth,\r\n fill: true,\r\n align: \"center\",\r\n },\r\n };\r\n\r\n graphData.push(s);\r\n\r\n if (graphData.length > 0) {\r\n let xAxis = {};\r\n let toolTipFunc;\r\n if (xMode === \"time\") {\r\n xAxis = {\r\n mode: xMode,\r\n timeformat: \"%m/%d/%y\",\r\n };\r\n\r\n toolTipFunc = function (label, xval, yval, flotItem) {\r\n return (\r\n $.plot.formatDate(new Date(xval), \"%m/%d/%Y\") +\r\n \" | \" +\r\n (yval % 1 !== 0 ? yval.toFixed(2) : yval) +\r\n \" \" +\r\n label.replace(\"Number of\", \"\")\r\n );\r\n };\r\n } else {\r\n xAxis = {\r\n mode: xMode,\r\n };\r\n\r\n toolTipFunc = function (label, xval, yval, flotItem) {\r\n return (yval % 1 !== 0 ? yval.toFixed(2) : yval) + \" \" + label;\r\n };\r\n }\r\n\r\n $.plot($targetEl, graphData, {\r\n grid: {\r\n color: \"#999999\",\r\n hoverable: true,\r\n clickable: true,\r\n tickColor: \"#D4D4D4\",\r\n borderWidth: 0,\r\n },\r\n colors: cw.constants.colors,\r\n hoverable: true,\r\n xaxis: xAxis,\r\n tooltip: {\r\n show: true,\r\n cssClass: \"usage-graph-tooltip\",\r\n content: toolTipFunc,\r\n },\r\n legend: {\r\n show: true,\r\n position: \"nw\",\r\n labelFormatter: function (label, series) {\r\n return \" \" + label;\r\n },\r\n },\r\n });\r\n\r\n if (timeSeries === \"monthly\") {\r\n $targetEl.find(\".flot-tick-label\").each(function (idx) {\r\n if (idx % 4 !== 0) {\r\n $(this).addClass(\"hidden\");\r\n }\r\n });\r\n }\r\n }\r\n },\r\n getExistingServiceRequest: function (s1AccountId, RemoteSystemMap) {\r\n cw.webservices.getJson(\r\n \"S1AccountManager/existing-service-request-check\",\r\n {\r\n s1AccountId: s1AccountId,\r\n RemoteSystemMap: RemoteSystemMap.RemoteSystemId,\r\n },\r\n function (rtnData) {\r\n if (rtnData) {\r\n return rtnData;\r\n }\r\n }\r\n );\r\n },\r\n showPendingServiceRequest: function (documentId, s1TicketId) {\r\n const self = this;\r\n const elemId = \"s1-hvac-appt-summary-wrapper\";\r\n let $div = document.getElementById(elemId);\r\n if ($div) {\r\n $div.replaceChildren();\r\n } else {\r\n $div = document.createElement(\"div\");\r\n $div.id = elemId;\r\n document.body.appendChild($div);\r\n }\r\n\r\n import(\"@components/products/service/hvacScheduledAppointmentSummaryModal.vue\").then(\r\n (hvacScheduledApptSummaryModalComp) => {\r\n const app = createNonRoutedApp(hvacScheduledApptSummaryModalComp.default, {\r\n s1AcctId: self.selectedS1AccountId,\r\n serviceTicketId: s1TicketId,\r\n workOrderDocumentId: documentId,\r\n onHvacAppointmentSummaryClosed() {\r\n app.unmount();\r\n $div?.remove();\r\n },\r\n });\r\n app.mount(`#${elemId}`);\r\n }\r\n );\r\n },\r\n getBreadcrumbMarkup: function (links) {\r\n let rtn = '<ol class=\"breadcrumb\">';\r\n links.forEach(function (x) {\r\n const isActive = typeof x.isActive !== \"undefined\" && x.isActive;\r\n if (isActive) {\r\n rtn += '<li class=\"active\">' + x.Title + \"</li>\";\r\n } else {\r\n rtn += '<li><a href=\"' + x.url + '\">' + x.Title + \"</a></li>\";\r\n }\r\n });\r\n\r\n rtn += \"</ol>\";\r\n return rtn;\r\n },\r\n viewPendingDelivery: function (deliveryPointMap) {\r\n const self = this;\r\n\r\n cw.loadingIndicator.start();\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-pending-deliveries-by-delivery-point\",\r\n {\r\n DeliveryPointMap: [deliveryPointMap],\r\n S1AccountId: self.selectedS1AccountId,\r\n PendingDeliveryHash: null,\r\n DeliveryLink: null,\r\n },\r\n function (PendingDeliveryItemResp) {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"PendingDeliveryDetail.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n PendingDeliveryItemResp,\r\n function (renderedTmpl) {\r\n cw.modal.Open({\r\n data: { DeliveryData: PendingDeliveryItemResp },\r\n title: \"Pending Delivery Details\",\r\n modalBody: $(renderedTmpl),\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-check\"></i> OK',\r\n cssClass: \"btn-primary btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n ],\r\n onShownCallback: function () {\r\n cw.loadingIndicator.stop();\r\n },\r\n });\r\n }\r\n );\r\n }\r\n );\r\n },\r\n updateLocationFilter: function (locationList) {\r\n if (locationList !== null) {\r\n $(\".panel-group\").hide();\r\n $.each(locationList, function () {\r\n $(\"#\" + this + \"-panel\").show();\r\n $(\"#\" + this + \"-panel\")\r\n .find(\".panel-collapse\")\r\n .collapse(\"show\");\r\n });\r\n } else {\r\n $(\".panel-group\").show();\r\n }\r\n },\r\n getNotificationWidget: function (s1AccountId) {\r\n const self = this;\r\n if (self.notificationWidget) {\r\n self.notificationWidget.unmount();\r\n }\r\n\r\n self.notificationWidget = createNonRoutedApp(notificationWidget, {\r\n s1AcctId: s1AccountId,\r\n userId: cw.appStartArgs.CurrentUserObj.UserId,\r\n });\r\n\r\n self.notificationWidget.mount(\"#s1-notification-widget\");\r\n },\r\n loadSpecialOffers: function () {\r\n if (!document.getElementById(\"special-offers-wrapper\")) {\r\n return;\r\n }\r\n const self = this;\r\n const custTypes = $(\".s1-customer-type\").data(\"customerTypeIds\");\r\n import(\"@components/customer/specialOfferListing.vue\").then((specialOffersComp) => {\r\n const specialOffersApp = createNonRoutedApp(specialOffersComp.default, {\r\n brandTypeId: self.args.brandObj.BrandTypeId,\r\n s1AcctId: self.selectedS1AccountId,\r\n customerTypeIds: custTypes,\r\n minimumGallonDelivery: self.args.minimumGallonDelivery,\r\n onSpecialOfferAddedToAccount() {\r\n self.loadDashboard(self.selectedS1AccountId);\r\n },\r\n });\r\n specialOffersApp.mount(`#special-offers-wrapper`);\r\n });\r\n },\r\n loadDashboardQuickActionButtons: function () {\r\n const self = this;\r\n if (!document.getElementById(\"quick-actions\")) {\r\n return;\r\n }\r\n const custTypes = $(\".s1-customer-type\").data(\"customerTypeIds\");\r\n const delLocIds = [];\r\n $(\"a.request-delivery\").each(function () {\r\n const $this = $(this);\r\n const $parent = $this.closest(\".product-wrapper\");\r\n const delMap = $this.data(\"delivery-point-map\");\r\n if ((delMap?.RemoteSystemDeliveryPointId ?? 0) > 0) {\r\n delLocIds.push({\r\n remoteSystemDeliveryPointId: delMap.RemoteSystemDeliveryPointId,\r\n icon: $parent\r\n .find(\".product-icon\")\r\n .attr(\"class\")\r\n .split(\" \")\r\n .filter((f) => f.startsWith(\"icon-\"))\r\n .join(\" \"),\r\n text: $parent.find(\".product-label\").html(),\r\n });\r\n }\r\n });\r\n import(\"@components/products/quickActionButtons.vue\").then((quickActionBtnsComp) => {\r\n const quickActionsApp = createNonRoutedApp(quickActionBtnsComp.default, {\r\n brandTypeId: self.args.brandObj.BrandTypeId,\r\n s1AcctId: self.selectedS1AccountId,\r\n customerTypeIds: custTypes,\r\n deliveryProductLocationIds: delLocIds,\r\n minimumGallonDelivery: self.args.minimumGallonDelivery,\r\n });\r\n quickActionsApp.mount(`#quick-actions`);\r\n });\r\n },\r\n launchPaymentProfile: function () {\r\n const self = cw.pages.dashboard;\r\n if (self.autopayConfigComponenent) {\r\n const autoPayId = \"autopay-config-modal-root\";\r\n let $autopayDiv = document.getElementById(autoPayId);\r\n if (self.autopayConfigApp) {\r\n self.autopayConfigApp.unmount();\r\n }\r\n if ($autopayDiv) {\r\n $autopayDiv.replaceChildren();\r\n } else {\r\n $autopayDiv = document.createElement(\"div\");\r\n $autopayDiv.id = autoPayId;\r\n document.body.appendChild($autopayDiv);\r\n }\r\n self.autopayConfigApp = createNonRoutedApp(self.autopayConfigComponenent, {\r\n s1AccountId: self.selectedS1AccountId,\r\n brandTypeId: self.args.brandObj.BrandTypeId,\r\n onAutoPayConfigured(rtnObj) {\r\n self.setAutoPaymentStatus(rtnObj.AccountBalances);\r\n self.autopayConfigApp.unmount();\r\n },\r\n });\r\n self.autopayConfigApp.mount(`#${autoPayId}`);\r\n } else {\r\n setTimeout(function () {\r\n self.launchPaymentProfile();\r\n }, 250);\r\n }\r\n },\r\n },\r\n },\r\n });\r\n})((window.cw = window.cw || {}), jQuery);\r\n","import * as dt from \"datatables.net-bs\";\r\nimport * as dtResponsive from \"datatables.net-responsive-bs\";\r\nimport * as dtBtnBs from \"datatables.net-buttons-bs\";\r\nimport * as dtBtnHtml5 from \"datatables.net-buttons/js/buttons.html5\";\r\nimport * as dtBtnHtmlPrnt from \"datatables.net-buttons/js/buttons.print\";\r\n\r\n//some overrides to customize datatables\r\n$.fn.dataTable.Buttons.defaults.dom.button.className = \"btn btn-sm btn-white\";\r\n$.fn.dataTable.ext.buttons.copyHtml5.text = function () {\r\n return '<i class=\"fa fa-clipboard\" title=\"Copy\"></i>';\r\n};\r\n$.fn.dataTable.ext.buttons.csvHtml5.text = function () {\r\n return '<i class=\"fa fa-regular fa-file-excel\" title=\"Export\"></i>';\r\n};\r\n$.fn.dataTable.ext.buttons.print.text = function () {\r\n return '<i class=\"fa fa-print\" title=\"Print\"></i>';\r\n};\r\n\r\n(function (cw, $, undefined) {\r\n cw.dtTools = {\r\n /**\r\n * Creates html table markup\r\n *\r\n * @param {[string] | [any]} columns Table columns, can be a datatables.net.columns array\r\n *\r\n * @return {string}\r\n */\r\n getTableMarkup: function (columns, tableClasses) {\r\n return cw.utility.getTableMarkup(columns, tableClasses);\r\n },\r\n /**\r\n * Handles sorting a date column and display\r\n *\r\n * @return {any} expected by datatables.net column.data\r\n */\r\n tableSortByDate: function (date, sortType, displayFormat) {\r\n return cw.utility.tableSortByDate(date, sortType, displayFormat);\r\n },\r\n /**\r\n * Update's referenced datatable's row based on matchingColumnName(assuming a flat object as rowData)\r\n *\r\n * @return {void}\r\n */\r\n addUpdateDataTableListing: function (dataTable, newObject, matchingColumnName, redrawTable) {\r\n return cw.utility.addUpdateDataTableListing(dataTable, newObject, matchingColumnName, redrawTable);\r\n },\r\n /**\r\n * Delete referenced datatable's row based on matchingColumnName(assuming a flat object as rowData)\r\n *\r\n * @return {void}\r\n */\r\n deleteDataTableListing: function (dataTable, matchingKeyValue, matchingColumnName, redrawTable) {\r\n return cw.utility.deleteDataTableListing(dataTable, matchingKeyValue, matchingColumnName, redrawTable);\r\n },\r\n /**\r\n * Get's referenced datatable's row based on matchingColumnName(assuming a flat object as rowData)\r\n *\r\n * @return {void}\r\n */\r\n getDataTableRowData: function (dataTable, matchingKeyValue, matchingColumnName) {\r\n return cw.utility.getDataTableRowData(dataTable, matchingKeyValue, matchingColumnName);\r\n },\r\n /**\r\n * Get all rows from referenced datatable\r\n *\r\n * @return {void}\r\n */\r\n getDataTableAllRowData: function (dataTable) {\r\n return cw.utility.getDataTableAllRowData(dataTable);\r\n },\r\n /**\r\n * Returns the next row after the one passed in (based on the current sort of the table)\r\n *\r\n * @return {any}\r\n */\r\n getDataTableNextRowData: function (dataTable, matchingKeyValue, matchingColumnName) {\r\n return cw.utility.getDataTableNextRowData(dataTable, matchingKeyValue, matchingColumnName);\r\n },\r\n /**\r\n * Returns the previous row after the one passed in (based on the current sort of the table)\r\n *\r\n * @return {any}\r\n */\r\n getDataTablePreviousRowData: function (dataTable, matchingKeyValue, matchingColumnName) {\r\n return cw.utility.getDataTablePreviousRowData(dataTable, matchingKeyValue, matchingColumnName);\r\n },\r\n };\r\n})((window.cw = window.cw || {}), jQuery);\r\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","type storageType = 'localStorage'|'sessionStorage';\r\n\r\nconst getObject = <T>(key:string, storageType:storageType='localStorage'):T|null => {\r\n\tif(key.trim()){\r\n\t\tconst d = window[storageType].getItem(key.trim());\r\n\t\tif (d) {\r\n\t\t\treturn JSON.parse(d);\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nconst setObject = <T>(obj: T, key: string, storageType: storageType='localStorage'): boolean => {\r\n\tif(key.trim()){\r\n\t\ttry {\r\n\t\t\twindow[storageType].setItem(key.trim(), JSON.stringify(obj));\r\n\t\t\treturn true;\r\n\t\t}catch(e){\r\n\t\t\tconsole.error(`Failed to set local storage for key ${key.trim()} - ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nconst deleteObject = (key: string, storageType: storageType='localStorage'): boolean => {\r\n\tif(key.trim()){\r\n\t\ttry {\r\n\t\t\twindow[storageType].removeItem(key.trim());\r\n\t\t\treturn true;\r\n\t\t}catch(e){\r\n\t\t\tconsole.error(`Failed to delete local storage for key ${key.trim()} - ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nconst isStorageAvailable = (storageType:storageType='localStorage'):boolean =>{\r\n\tlet storage;\r\n\ttry {\r\n\t\tconst x = '__s1_storage_test__';\r\n\t\tstorage = window[storageType];\r\n\t\tstorage.setItem(x, x);\r\n\t\tstorage.removeItem(x);\r\n\t\treturn true;\r\n\t}\r\n\tcatch (e) {\r\n\t\treturn e instanceof DOMException && (\r\n\t\t\t\t// everything except Firefox\r\n\t\t\t\te.code === 22 ||\r\n\t\t\t\t// Firefox\r\n\t\t\t\te.code === 1014 ||\r\n\t\t\t\t// test name field too, because code might not be present\r\n\t\t\t\t// everything except Firefox\r\n\t\t\t\te.name === 'QuotaExceededError' ||\r\n\t\t\t\t// Firefox\r\n\t\t\t\te.name === 'NS_ERROR_DOM_QUOTA_REACHED'\r\n\t\t\t) &&\r\n\t\t\t// acknowledge QuotaExceededError only if there's something already stored\r\n\t\t\tstorage.length !== 0;\r\n\t}\r\n}\r\n\r\nexport{\r\n\tisStorageAvailable,\r\n\tgetObject,\r\n\tsetObject,\r\n\tdeleteObject\r\n}","import IPage from \"../interfaces/page\";\r\n\r\nexport class Dashboard implements IPage {\r\n constructor(self) {\r\n this.$viewPort = self.$viewport;\r\n this.PageRenderFunction = self.loadDashboard(self.selectedS1AccountId);\r\n }\r\n Title: string = \"Account Overview\";\r\n Url: \"/account\";\r\n $viewPort: any;\r\n PageRenderFunction: () => void;\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n interface Window {\r\n cw: any;\r\n }\r\n}\r\n\r\nexport class InvoiceHistory implements IPage {\r\n Title: \"Invoice/Statement History\";\r\n Url: string = \"/account/invoice-history\";\r\n $viewPort: any;\r\n PageRenderFunction: () => void;\r\n\r\n constructor(self) {\r\n this.$viewPort = self.$viewport;\r\n this.PageRenderFunction = function () {\r\n window.cw.pages.invoiceHistory.init({\r\n selectedS1AccountId: self.selectedS1AccountId,\r\n $viewport: self.$viewport,\r\n brandObj: self.args?.brandObj ?? self.brandObj,\r\n });\r\n };\r\n }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n interface Window {\r\n cw: any;\r\n }\r\n}\r\n\r\nexport class PaymentHistory implements IPage {\r\n Title: \"Payment History\";\r\n Url: string = \"/account/payment-history\";\r\n $viewPort: any;\r\n PageRenderFunction: () => void;\r\n\r\n constructor(self) {\r\n this.$viewPort = self.$viewport;\r\n this.PageRenderFunction = function () {\r\n window.cw.pages.paymentHistory.init({\r\n selectedS1AccountId: self.selectedS1AccountId,\r\n $viewport: self.$viewport,\r\n brandObj: self.args?.brandObj ?? self.brandObj,\r\n });\r\n };\r\n }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\nimport { createNonRoutedApp } from \"@du/AppStartup\";\r\nimport { ref } from \"vue\";\r\n\r\nconst accountSettingsApp: any = ref(null);\r\nconst dataReference = ref<any>(null);\r\n\r\ndeclare global {\r\n interface Window {\r\n cw: any;\r\n }\r\n}\r\n\r\nexport class AccountSettings implements IPage {\r\n Title: string = \"Account Settings\";\r\n Url: string = \"/account/account-settings\";\r\n $viewPort: any;\r\n PageRenderFunction: () => void;\r\n\r\n constructor(self: any) {\r\n dataReference.value = self;\r\n this.$viewPort = self.$viewport;\r\n\r\n if (this.$viewPort) {\r\n window.cw.templating.GetRenderedTemplateHTML(\r\n \"CwAccountSettings.html\",\r\n window.cw.appEnum.TemplateType.CwWidget,\r\n {\r\n breadCrumbs: window.cw.pages.dashboard.getBreadcrumbMarkup([\r\n { Title: \"Account Summary\", url: \"/account\" },\r\n { Title: \"Account Settings\", url: \"/account/account-settings\", isActive: true },\r\n ]),\r\n },\r\n function (renderedTmpl) {\r\n self.$viewport.empty().append(renderedTmpl);\r\n }\r\n );\r\n }\r\n\r\n this.PageRenderFunction = () => {\r\n import(\"@du/components/customerPortal/portal/pages/accountSettingsListing.vue\").then(function (\r\n accountSettingsListing\r\n ) {\r\n const rootElement = document.querySelector(\".billing-accounts-target\");\r\n\r\n if (accountSettingsApp.value) {\r\n accountSettingsApp.value.unmount();\r\n }\r\n accountSettingsApp.value = createNonRoutedApp(accountSettingsListing.default, {\r\n s1AccountId: dataReference.value.selectedS1AccountId,\r\n brandType: dataReference.value.args?.brandObj ?? dataReference.value.brandObj,\r\n });\r\n accountSettingsApp.value.mount(rootElement);\r\n });\r\n };\r\n }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n interface Window {\r\n cw: any;\r\n }\r\n}\r\n\r\nexport class DocumentHistory implements IPage {\r\n Title: string = \"Document History\";\r\n Url: string = \"/account/document\";\r\n $viewPort: any;\r\n PageRenderFunction: () => void;\r\n\r\n constructor(self: any) {\r\n this.$viewPort = self.$viewport;\r\n this.PageRenderFunction = function () {\r\n window.cw.pages.documentHistory.init({\r\n selectedS1AccountId: self.selectedS1AccountId,\r\n $viewport: self.$viewport,\r\n brandObj: self.args?.brandObj ?? self.brandObj,\r\n });\r\n };\r\n }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\nexport class PendingDeliveries implements IPage {\r\n constructor(self: any) {}\r\n\r\n Title: string;\r\n Url: string;\r\n $viewPort: any;\r\n PageRenderFunction: () => void;\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n interface Window {\r\n cw: any;\r\n }\r\n}\r\n\r\nexport class Rewards implements IPage {\r\n Title: string = \"Rewards\";\r\n Url: string = \"/account/rewards\";\r\n $viewPort: any;\r\n PageRenderFunction: () => void;\r\n\r\n constructor(self: any) {\r\n this.$viewPort = self.$viewport;\r\n this.PageRenderFunction = function () {\r\n window.cw.pages.rewards.init({\r\n selectedS1AccountId: self.selectedS1AccountId,\r\n $viewport: self.$viewport,\r\n dashboardSummary: self.args?.RewardsPoints ?? self.RewardsPoints,\r\n brandObj: self.args?.brandObj ?? self.brandObj,\r\n CanRedeemNewRewards: self.args?.CanRedeemNewRewards ?? self.CanRedeemNewRewards,\r\n CanViewRewards: self.args?.CanViewRewards ?? self.CanViewRewards,\r\n });\r\n };\r\n }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n interface Window {\r\n cw: any;\r\n }\r\n}\r\n\r\nexport class BudgetManager implements IPage {\r\n Title: string = \"Budget Manager\";\r\n Url: string = \"/account/manage-budget\";\r\n $viewPort: any;\r\n PageRenderFunction: () => void;\r\n\r\n constructor(self: any) {\r\n this.$viewPort = self.$viewport;\r\n this.PageRenderFunction = function () {\r\n window.cw.pages.budgetManager.init({\r\n $viewport: self.$viewport,\r\n budgetData: {\r\n CustomerBudgetResponse: self.args?.CustomerBudgetResponse ?? self.CustomerBudgetResponse,\r\n ServiceLocations: self.args?.ServiceLocations ?? self.ServiceLocations,\r\n AccountBalances: self.args?.AccountBalances ?? self.AccountBalances,\r\n S1AccountId: self.selectedS1AccountId,\r\n successCallback: function () {\r\n self.loadDashboard(self.selectedS1AccountId);\r\n },\r\n },\r\n brandObj: self.args?.brandObj ?? self.brandObj,\r\n });\r\n };\r\n }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n interface Window {\r\n cw: any;\r\n }\r\n}\r\n\r\nexport class DeliveryHistory implements IPage {\r\n Title: string = \"Delivery History\";\r\n Url: string = \"/account/delivery-history\";\r\n $viewPort: any;\r\n PageRenderFunction: () => void;\r\n constructor(self: any) {\r\n this.$viewPort = self.$viewPort;\r\n\r\n this.PageRenderFunction = function () {\r\n window.cw.pages?.deliveryHistory?.init({\r\n selectedS1AccountId: self.selectedS1AccountId,\r\n $viewport: self.$viewport,\r\n brandObj: self.args?.brandObj ?? self.brandObj,\r\n });\r\n };\r\n }\r\n}\r\n","import { ref } from \"vue\";\r\nimport IPage from \"../interfaces/page\";\r\nimport { Dashboard } from \"../pageInstances/Dashboard\";\r\nimport { InvoiceHistory } from \"../pageInstances/InvoiceHistory\";\r\nimport { PaymentHistory } from \"../pageInstances/PaymentHistory\";\r\nimport { AccountSettings } from \"../pageInstances/AccountSettings\";\r\nimport { DocumentHistory } from \"../pageInstances/DocumentHistory\";\r\nimport { PendingDeliveries } from \"../pageInstances/PendingDeliveries\";\r\nimport { Rewards } from \"../pageInstances/Rewards\";\r\nimport { BudgetManager } from \"../pageInstances/BudgetManager\";\r\nimport { DeliveryHistory } from \"../pageInstances/DeliveryHistory\";\r\n\r\nconst pageHistory = ref<IPage[]>([]);\r\n\r\ntype func = (self: any) => IPage;\r\n\r\n/**\r\n * New pages get added here -\r\n * 1. Add new Page Instance in ../pageInstances\r\n * 1. Add the url and the page instance to the map\r\n */\r\nconst pageMap = new Map<string, func>([\r\n [\"/account\", (self) => new Dashboard(self)],\r\n [\"/account/invoice-history\", (self) => new InvoiceHistory(self)],\r\n [\"/account/payment-history\", (self) => new PaymentHistory(self)],\r\n [\"/account/account-settings\", (self) => new AccountSettings(self)],\r\n [\"/account/document\", (self) => new DocumentHistory(self)],\r\n [\"/account/pending-deliveries\", (self) => new PendingDeliveries(self)],\r\n [\"/account/rewards\", (self) => new Rewards(self)],\r\n [\"/account/manage-budget\", (self) => new BudgetManager(self)],\r\n [\"/account/delivery-history\", (self) => new DeliveryHistory(self)],\r\n]);\r\n\r\n/**\r\n * Main function used to switch between pages\r\n * @param url\r\n * @param self\r\n * @returns\r\n */\r\nexport const switchPage = (url: string, self: any): IPage => {\r\n const page = setPage(url, self);\r\n if (!page) {\r\n console.error(\"Invalid url for Page\");\r\n return {} as IPage;\r\n }\r\n return page;\r\n};\r\n\r\nconst setPage = (url: string, self: any): IPage | null => {\r\n // Check if the url is valid and fetch the page instance\r\n const createPage: func | undefined = pageMap.get(url);\r\n if (!createPage) {\r\n return null;\r\n }\r\n\r\n try {\r\n //Create our page instance\r\n const pageInstance = createPage(self);\r\n if (!pageInstance) {\r\n throw new Error(\"Page instance is null\");\r\n }\r\n\r\n //Add the page instance to the history\r\n pageHistory.value.push(pageInstance);\r\n\r\n //Render\r\n if (pageInstance && pageInstance.PageRenderFunction) {\r\n pageInstance.PageRenderFunction();\r\n }\r\n\r\n return pageInstance;\r\n } catch (err) {\r\n console.error(err);\r\n return null;\r\n }\r\n};\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, renderSlot as _renderSlot, normalizeStyle as _normalizeStyle, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"for\"]\nconst _hoisted_2 = [\"id\", \"checked\", \"readonly\", \"disabled\"]\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = {\n key: 0,\n class: \"pl5\"\n}\nconst _hoisted_5 = [\"innerHTML\"]\n\nimport { computed, ref, watch, StyleValue } from \"vue\";\r\nimport Icon from \"@compUtility/icon.vue\";\r\nimport { trueFalseString, boxBool } from \"@utility/boolUtils\";\r\nimport { genComponentId } from \"@components/componentHelpers\";\r\n\r\ninterface Props {\r\n checked?: trueFalseString;\r\n disabled?: trueFalseString;\r\n readonly?: trueFalseString;\r\n label?: string;\r\n hover?: trueFalseString;\r\n variant?: \"small\" | \"normal\";\r\n inputClass?: string | string[];\r\n alignLabel?: \"start\" | \"center\" | \"end\";\r\n loading?: trueFalseString;\r\n loadingText?: string;\r\n labelClass?: string;\r\n labelStyle?: StyleValue;\r\n}\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'checkbox',\n props: {\n checked: { type: [Boolean, String], default: false },\n disabled: { type: [Boolean, String], default: false },\n readonly: { type: [Boolean, String], default: false },\n label: { default: \" \" },\n hover: { type: [Boolean, String] },\n variant: { default: \"normal\" },\n inputClass: { default: \"\" },\n alignLabel: { default: \"start\" },\n loading: { type: [Boolean, String], default: false },\n loadingText: {},\n labelClass: { default: undefined },\n labelStyle: { type: [Boolean, null, String, Object, Array], default: undefined }\n },\n emits: [\"checked\", \"unchecked\", \"updated\", \"input\"],\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\n\r\nconst emit = __emit;\r\n\r\nconst componentId = genComponentId(\"cbx\");\r\nconst isChecked = ref<boolean>(boxBool(props.checked));\r\n\r\nconst lblClasses = computed<string[]>(() => {\r\n const labels = [\"s1-cbx-label\"];\r\n if (boxBool(props.disabled)) {\r\n labels.push(\"s1-cbx-label-disabled\");\r\n }\r\n if ([\" \", \"\"].indexOf(props.label?.trim() ?? \" \") >= 0) {\r\n labels.push(\"lbl-no-txt\");\r\n }\r\n if (props.labelClass) {\r\n labels.push(props.labelClass);\r\n }\r\n return labels;\r\n});\r\n\r\nconst checkVal = function (newVal: Event) {\r\n if (newVal != null && newVal.target && newVal.target instanceof HTMLInputElement) {\r\n const target = newVal.target;\r\n isChecked.value = boxBool(target.checked);\r\n }\r\n};\r\n\r\nwatch(\r\n () => props.checked,\r\n (newVal) => {\r\n isChecked.value = boxBool(newVal);\r\n }\r\n);\r\n\r\nwatch(isChecked, (newVal) => {\r\n if (newVal) {\r\n emit(\"checked\");\r\n } else {\r\n emit(\"unchecked\");\r\n }\r\n\r\n emit(\"updated\", newVal);\r\n emit(\"input\", newVal);\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['s1-cbx', props.variant !== 'normal' ? props.variant : ''])\n }, [\n _createElementVNode(\"label\", {\n class: _normalizeClass(lblClasses.value),\n for: _unref(componentId),\n style: _normalizeStyle(props.labelStyle)\n }, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n id: _unref(componentId),\n checked: isChecked.value,\n readonly: _ctx.readonly,\n disabled: _unref(boxBool)(props.disabled),\n class: _normalizeClass(_ctx.inputClass),\n onChange: checkVal\n }, null, 42, _hoisted_2),\n _renderSlot(_ctx.$slots, \"default\", {}, () => [\n _createElementVNode(\"span\", {\n class: _normalizeClass(`s1-cbx-lbl-${props.alignLabel}`),\n innerHTML: _ctx.label\n }, null, 10, _hoisted_3)\n ])\n ], 14, _hoisted_1),\n (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, [\n _createVNode(Icon, {\n animate: \"spin\",\n icon: \"fa-spinner\"\n }),\n _cache[0] || (_cache[0] = _createTextVNode(\" \")),\n _createElementVNode(\"small\", null, [\n _createElementVNode(\"span\", { innerHTML: _ctx.loadingText }, null, 8, _hoisted_5)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","<template>\r\n <div :class=\"['s1-cbx', props.variant !== 'normal' ? props.variant : '']\">\r\n <label\r\n :class=\"lblClasses\"\r\n :for=\"componentId\"\r\n :style=\"props.labelStyle\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n :id=\"componentId\"\r\n :checked=\"isChecked\"\r\n :readonly=\"readonly\"\r\n :disabled=\"boxBool(props.disabled)\"\r\n :class=\"inputClass\"\r\n @change=\"checkVal\"\r\n />\r\n <slot\r\n ><span\r\n :class=\"`s1-cbx-lbl-${props.alignLabel}`\"\r\n v-html=\"label\"\r\n /></slot>\r\n </label>\r\n <span\r\n v-if=\"loading\"\r\n class=\"pl5\"\r\n ><Icon\r\n animate=\"spin\"\r\n icon=\"fa-spinner\" /> <small><span v-html=\"loadingText\"> </span></small\r\n ></span>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed, ref, watch, StyleValue } from \"vue\";\r\nimport Icon from \"@compUtility/icon.vue\";\r\nimport { trueFalseString, boxBool } from \"@utility/boolUtils\";\r\nimport { genComponentId } from \"@components/componentHelpers\";\r\n\r\ninterface Props {\r\n checked?: trueFalseString;\r\n disabled?: trueFalseString;\r\n readonly?: trueFalseString;\r\n label?: string;\r\n hover?: trueFalseString;\r\n variant?: \"small\" | \"normal\";\r\n inputClass?: string | string[];\r\n alignLabel?: \"start\" | \"center\" | \"end\";\r\n loading?: trueFalseString;\r\n loadingText?: string;\r\n labelClass?: string;\r\n labelStyle?: StyleValue;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n checked: false,\r\n disabled: false,\r\n readonly: false,\r\n label: \" \",\r\n variant: \"normal\",\r\n inputClass: \"\",\r\n alignLabel: \"start\",\r\n loading: false,\r\n labelClass: undefined,\r\n labelStyle: undefined,\r\n});\r\n\r\nconst emit = defineEmits<{\r\n (e: \"checked\"): void;\r\n (e: \"unchecked\"): void;\r\n (e: \"updated\", val: boolean): void;\r\n (e: \"input\", val: boolean): void;\r\n}>();\r\n\r\nconst componentId = genComponentId(\"cbx\");\r\nconst isChecked = ref<boolean>(boxBool(props.checked));\r\n\r\nconst lblClasses = computed<string[]>(() => {\r\n const labels = [\"s1-cbx-label\"];\r\n if (boxBool(props.disabled)) {\r\n labels.push(\"s1-cbx-label-disabled\");\r\n }\r\n if ([\" \", \"\"].indexOf(props.label?.trim() ?? \" \") >= 0) {\r\n labels.push(\"lbl-no-txt\");\r\n }\r\n if (props.labelClass) {\r\n labels.push(props.labelClass);\r\n }\r\n return labels;\r\n});\r\n\r\nconst checkVal = function (newVal: Event) {\r\n if (newVal != null && newVal.target && newVal.target instanceof HTMLInputElement) {\r\n const target = newVal.target;\r\n isChecked.value = boxBool(target.checked);\r\n }\r\n};\r\n\r\nwatch(\r\n () => props.checked,\r\n (newVal) => {\r\n isChecked.value = boxBool(newVal);\r\n }\r\n);\r\n\r\nwatch(isChecked, (newVal) => {\r\n if (newVal) {\r\n emit(\"checked\");\r\n } else {\r\n emit(\"unchecked\");\r\n }\r\n\r\n emit(\"updated\", newVal);\r\n emit(\"input\", newVal);\r\n});\r\n</script>\r\n<style lang=\"less\" scoped>\r\n@import \"@css/constants.less\";\r\n.s1-cbx-label {\r\n font-size: 2rem;\r\n display: grid;\r\n grid-template-columns: 1em auto;\r\n gap: 0.5em;\r\n}\r\n\r\n.lbl-no-txt {\r\n gap: 0;\r\n margin-bottom: 0;\r\n}\r\n\r\n.s1-cbx-label span {\r\n font-size: 1.33rem;\r\n}\r\n\r\n.s1-cbx-label + .s1-cbx-label {\r\n margin-top: 1em;\r\n}\r\n\r\n.s1-cbx-label-disabled {\r\n color: var(--form-control-disabled);\r\n cursor: not-allowed;\r\n}\r\n\r\n.s1-cbx input {\r\n /* Remove most all native input styles */\r\n appearance: none;\r\n /* For iOS < 15 */\r\n background-color: @white;\r\n /* Not removed via appearance */\r\n margin: 0;\r\n\r\n font: inherit;\r\n color: var(--form-control-border);\r\n width: 1.15em;\r\n height: 1.15em;\r\n border: 0.075em solid var(--form-control-border);\r\n border-radius: 0;\r\n transform: translateY(-0.075em);\r\n padding-right: 0 !important;\r\n display: grid !important;\r\n place-content: center;\r\n}\r\n\r\n.s1-cbx input::before {\r\n content: \"\";\r\n width: 0.65em;\r\n height: 0.65em;\r\n clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); //this looks like a checkmark\r\n transform: scale(0);\r\n transform-origin: bottom left;\r\n transition: 120ms transform ease-in-out;\r\n box-shadow: inset 1em 1em var(--form-control-color);\r\n background-color: @white;\r\n}\r\n\r\n.s1-cbx input:checked {\r\n background-color: var(--secondary-cta-color);\r\n}\r\n\r\n.s1-cbx-label-disabled input:checked {\r\n background-color: var(--form-control-disabled);\r\n color: @white;\r\n}\r\n\r\n.s1-cbx-label-disabled input::before {\r\n box-shadow: inset 1em 1em @white;\r\n}\r\n\r\n.s1-cbx input:checked::before {\r\n transform: scale(1);\r\n}\r\n\r\n.s1-cbx input:focus {\r\n outline: ~\"max(2px, 0.15em) solid currentColor\";\r\n outline-offset: ~\"max(2px, 0.15em)\";\r\n}\r\n\r\n.s1-cbx input:disabled {\r\n --form-control-color: var(--form-control-disabled);\r\n color: var(--form-control-disabled);\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Variant overrides */\r\n.s1-cbx.small .s1-cbx-label {\r\n font-size: 1.75rem;\r\n gap: 0.25em;\r\n grid-template-columns: 0.75em auto;\r\n}\r\n\r\n.s1-cbx.small input {\r\n width: 0.75em !important;\r\n height: 0.75em !important;\r\n}\r\n\r\n.s1-cbx.small input::before {\r\n width: 0.45em;\r\n height: 0.45em;\r\n}\r\n\r\n.s1-cbx.small .s1-cbx-label span {\r\n font-size: 0.9rem;\r\n line-height: 1.2em;\r\n}\r\n/* End Variants */\r\n\r\n.s1-cbx-lbl-start {\r\n align-self: flex-start;\r\n}\r\n.s1-cbx-lbl-center {\r\n align-self: center;\r\n}\r\n.s1-cbx-lbl-end {\r\n align-self: flex-end;\r\n}\r\n</style>\r\n","import script from \"./checkbox.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./checkbox.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./checkbox.vue?vue&type=style&index=0&id=61d0d658&lang=less&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-61d0d658\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, withModifiers as _withModifiers, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"pdf-viewer-root\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"flex full-width align-items-center page-tools-wrapper\",\n style: {\"justify-content\":\"space-between\"}\n}\nconst _hoisted_3 = { class: \"flex\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"ml10\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"ml10\"\n}\nconst _hoisted_6 = [\"href\"]\nconst _hoisted_7 = { class: \"flex align-items-center\" }\nconst _hoisted_8 = { class: \"btn-group ml10\" }\nconst _hoisted_9 = { class: \"ml10\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = { class: \"pr10 pl10\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { class: \"row mt10\" }\nconst _hoisted_14 = {\n key: 0,\n class: \"col-xs-12 text-center\"\n}\nconst _hoisted_15 = [\"width\", \"height\"]\nconst _hoisted_16 = {\n key: 1,\n class: \"col-xs-12\"\n}\n\nimport { ref, watch, onMounted } from \"vue\";\r\nimport * as pdfJsLib from \"pdfjs-dist\";\r\nimport icon from \"./icon.vue\";\r\nimport alert from \"./alert.vue\";\r\nimport checkbox from \"../form/checkbox.vue\";\r\nimport { createGuid } from \"../../utility/utility\";\r\nimport { PDFDocumentProxy } from \"pdfjs-dist/types/display/api\";\r\n\r\ninterface Props {\r\n pdfUrl: string;\r\n allowDownload?: boolean;\r\n startPageNumber?: number;\r\n showSelectCheckbox?: boolean;\r\n selected?: boolean;\r\n selectCheckboxText?: string;\r\n}\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'pdfViewer',\n props: {\n pdfUrl: { default: \"\" },\n allowDownload: { type: Boolean, default: false },\n startPageNumber: { default: 1 },\n showSelectCheckbox: { type: Boolean, default: false },\n selected: { type: Boolean, default: false },\n selectCheckboxText: { default: \"\" }\n },\n emits: [\r\n \"pdf-loaded\",\r\n \"pdf-load-failed\",\r\n \"pdf-doc-downloaded\",\r\n \"navigated-to-pagenumber\",\r\n \"pdf-selected\",\r\n \"pdf-unselected\",\r\n \"pdf-selection-change\",\r\n \"mounted\",\r\n],\n setup(__props: any, { emit: __emit }) {\n\r\npdfJsLib.GlobalWorkerOptions.workerSrc = new URL(\r\n \"pdfjs-dist/build/pdf.worker.js\",\r\n import.meta.url\r\n).toString();\r\n\r\nconst props = __props;\r\n\r\nconst emit = __emit;\r\n\r\nconst componentId = `du-pdf-viewer-${createGuid()}`;\r\nconst downloadUrl = (): string => {\r\n if (props.pdfUrl !== null && props.pdfUrl.trim() !== \"\") {\r\n const forceDownload = props.pdfUrl.indexOf(\"?\") > -1 ? \"&fdl=1\" : \"?fdl=1\";\r\n return `${props.pdfUrl}${forceDownload}`;\r\n }\r\n\r\n return \"\";\r\n};\r\n\r\nconst totalPages = ref<number | null>(null);\r\nconst currentPage = ref<number>(props.startPageNumber);\r\nconst canvasHeight = ref<number | null>(792);\r\nconst canvasWidth = ref<number | null>(612);\r\nlet pdfDoc: PDFDocumentProxy | null = null;\r\nconst loadFailed = ref(false);\r\nconst pageRendering = ref<Boolean>(false);\r\nconst scale = ref<number>(1.0);\r\nconst pageNumPending = ref<number | null>(null);\r\n\r\nconst loadPdf = () => {\r\n const canvasEl = document.getElementById(componentId) as HTMLCanvasElement;\r\n if (canvasEl) {\r\n if (canvasEl.height && canvasEl.width) {\r\n canvasHeight.value = canvasEl.height;\r\n canvasWidth.value = canvasEl.width;\r\n }\r\n\r\n const loadingTask = pdfJsLib.getDocument(props.pdfUrl);\r\n loadingTask.promise\r\n .then((pdf) => {\r\n totalPages.value = pdf.numPages;\r\n pdfDoc = pdf;\r\n emit(\"pdf-loaded\");\r\n renderPage(currentPage.value);\r\n })\r\n .catch(() => {\r\n loadFailed.value = true;\r\n emit(\"pdf-load-failed\");\r\n });\r\n }\r\n};\r\n\r\nonMounted(() => {\r\n loadPdf();\r\n emit(\"mounted\");\r\n});\r\n\r\nconst pdfSelectionChange = function (selected: boolean): void {\r\n emit(\"pdf-selection-change\", selected);\r\n};\r\n\r\nconst renderPage = (pageNum: number): void => {\r\n pageRendering.value = true;\r\n pageNumPending.value = pageNum;\r\n if (pdfDoc && pageNum > 0 && pageNum <= (totalPages.value ?? 1)) {\r\n pdfDoc.getPage(pageNum).then((page) => {\r\n var viewport = page.getViewport({ scale: scale.value });\r\n const canvasEl = document.getElementById(componentId) as HTMLCanvasElement;\r\n if (canvasEl !== null) {\r\n const canvasCtx = canvasEl.getContext(\"2d\");\r\n if (canvasCtx != null) {\r\n canvasEl.height = viewport.height;\r\n canvasEl.width = viewport.width;\r\n currentPage.value = pageNum;\r\n\r\n // Render PDF page into canvas context\r\n var renderTask = page.render({\r\n canvasContext: canvasCtx,\r\n viewport: viewport,\r\n });\r\n\r\n // Wait for rendering to finish\r\n renderTask.promise.then(() => {\r\n pageRendering.value = false;\r\n if (pageNumPending.value !== null && pageNumPending.value !== pageNum) {\r\n renderPage(pageNumPending.value);\r\n pageNumPending.value = null;\r\n } else {\r\n emit(\"navigated-to-pagenumber\", pageNum);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n};\r\n\r\nconst movePage = (currentPageOffset: number): void => {\r\n renderPage(currentPage.value + currentPageOffset);\r\n};\r\n\r\nconst pageDisplay = (): string => {\r\n return totalPages.value != null ? `${currentPage.value} of ${totalPages.value}` : \"\";\r\n};\r\n\r\nconst showPageTools = (): boolean => {\r\n return totalPages.value !== null && totalPages.value > 0;\r\n};\r\n\r\nconst zoom = (zoomPercent: number): void => {\r\n if (zoomPercent !== 0) {\r\n scale.value = scale.value + zoomPercent;\r\n renderPage(currentPage.value);\r\n }\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (showPageTools())\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.showSelectCheckbox)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(checkbox, {\n checked: _ctx.selected,\n label: _ctx.selectCheckboxText,\n onUpdated: pdfSelectionChange\n }, null, 8, [\"checked\", \"label\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.allowDownload && downloadUrl() !== '')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"a\", {\n href: downloadUrl(),\n title: \"Download document\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('pdf-doc-downloaded'))),\n target: \"_blank\"\n }, [\n _createVNode(icon, { icon: \"fa-download\" }),\n _cache[5] || (_cache[5] = _createTextVNode(\"Download \"))\n ], 8, _hoisted_6)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"a\", {\n href: \"#\",\n class: \"btn btn-white btn-xs\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (zoom(0.1)), [\"prevent\"]))\n }, [\n _createVNode(icon, { icon: \"fa-search-plus\" })\n ]),\n _createElementVNode(\"a\", {\n href: \"#\",\n class: \"btn btn-white btn-xs\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (zoom(-0.1)), [\"prevent\"]))\n }, [\n _createVNode(icon, { icon: \"fa-search-minus\" })\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _cache[6] || (_cache[6] = _createTextVNode(\" Page: \")),\n _createElementVNode(\"a\", {\n href: \"#\",\n class: \"pdf-preview-prev\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (movePage(-1)), [\"prevent\"])),\n disabled: currentPage.value === 1 ? true : null\n }, [\n _createVNode(icon, { icon: \"fa-backward\" })\n ], 8, _hoisted_10),\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(pageDisplay()), 1),\n _createElementVNode(\"a\", {\n href: \"#\",\n class: \"pdf-preview-next\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (movePage(1)), [\"prevent\"])),\n disabled: currentPage.value === totalPages.value ? true : null\n }, [\n _createVNode(icon, { icon: \"fa-forward\" })\n ], 8, _hoisted_12)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_13, [\n (!loadFailed.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"canvas\", {\n class: \"pdf-preview-canvas\",\n id: componentId,\n width: canvasWidth.value,\n height: canvasHeight.value,\n style: {\"background\":\"#fff\"}\n }, null, 8, _hoisted_15)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createVNode(alert, { message: \"Could not get document.\" })\n ]))\n ])\n ]))\n}\n}\n\n})","import script from \"./pdfViewer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./pdfViewer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./pdfViewer.vue?vue&type=style&index=0&id=43db1d9e&lang=less\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\r\n <div class=\"pdf-viewer-root\">\r\n <div\r\n v-if=\"showPageTools()\"\r\n class=\"flex full-width align-items-center page-tools-wrapper\"\r\n style=\"justify-content: space-between\"\r\n >\r\n <div class=\"flex\">\r\n <div\r\n v-if=\"showSelectCheckbox\"\r\n class=\"ml10\"\r\n >\r\n <checkbox\r\n :checked=\"selected\"\r\n :label=\"selectCheckboxText\"\r\n @updated=\"pdfSelectionChange\"\r\n />\r\n </div>\r\n <div\r\n v-if=\"allowDownload && downloadUrl() !== ''\"\r\n class=\"ml10\"\r\n >\r\n <a\r\n :href=\"downloadUrl()\"\r\n title=\"Download document\"\r\n v-on:click=\"emit('pdf-doc-downloaded')\"\r\n target=\"_blank\"\r\n >\r\n <icon icon=\"fa-download\" />Download\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"flex align-items-center\">\r\n <div class=\"btn-group ml10\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-white btn-xs\"\r\n v-on:click.prevent=\"zoom(0.1)\"\r\n >\r\n <icon icon=\"fa-search-plus\" />\r\n </a>\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-white btn-xs\"\r\n v-on:click.prevent=\"zoom(-0.1)\"\r\n >\r\n <icon icon=\"fa-search-minus\" />\r\n </a>\r\n </div>\r\n <div class=\"ml10\">\r\n Page:\r\n <a\r\n href=\"#\"\r\n class=\"pdf-preview-prev\"\r\n v-on:click.prevent=\"movePage(-1)\"\r\n :disabled=\"currentPage === 1 ? true : null\"\r\n >\r\n <icon icon=\"fa-backward\" />\r\n </a>\r\n <span class=\"pr10 pl10\">{{ pageDisplay() }}</span>\r\n <a\r\n href=\"#\"\r\n class=\"pdf-preview-next\"\r\n v-on:click.prevent=\"movePage(1)\"\r\n :disabled=\"currentPage === totalPages ? true : null\"\r\n >\r\n <icon icon=\"fa-forward\" />\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mt10\">\r\n <div\r\n v-if=\"!loadFailed\"\r\n class=\"col-xs-12 text-center\"\r\n >\r\n <canvas\r\n class=\"pdf-preview-canvas\"\r\n :id=\"componentId\"\r\n :width=\"canvasWidth\"\r\n :height=\"canvasHeight\"\r\n style=\"background: #fff\"\r\n ></canvas>\r\n </div>\r\n <div\r\n v-else\r\n class=\"col-xs-12\"\r\n >\r\n <alert message=\"Could not get document.\" />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch, onMounted } from \"vue\";\r\nimport * as pdfJsLib from \"pdfjs-dist\";\r\nimport icon from \"./icon.vue\";\r\nimport alert from \"./alert.vue\";\r\nimport checkbox from \"../form/checkbox.vue\";\r\nimport { createGuid } from \"../../utility/utility\";\r\nimport { PDFDocumentProxy } from \"pdfjs-dist/types/display/api\";\r\n\r\npdfJsLib.GlobalWorkerOptions.workerSrc = new URL(\r\n \"pdfjs-dist/build/pdf.worker.js\",\r\n import.meta.url\r\n).toString();\r\n\r\ninterface Props {\r\n pdfUrl: string;\r\n allowDownload?: boolean;\r\n startPageNumber?: number;\r\n showSelectCheckbox?: boolean;\r\n selected?: boolean;\r\n selectCheckboxText?: string;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n pdfUrl: \"\",\r\n allowDownload: false,\r\n startPageNumber: 1,\r\n showSelectCheckbox: false,\r\n selected: false,\r\n selectCheckboxText: \"\",\r\n});\r\n\r\nconst emit = defineEmits([\r\n \"pdf-loaded\",\r\n \"pdf-load-failed\",\r\n \"pdf-doc-downloaded\",\r\n \"navigated-to-pagenumber\",\r\n \"pdf-selected\",\r\n \"pdf-unselected\",\r\n \"pdf-selection-change\",\r\n \"mounted\",\r\n]);\r\n\r\nconst componentId = `du-pdf-viewer-${createGuid()}`;\r\nconst downloadUrl = (): string => {\r\n if (props.pdfUrl !== null && props.pdfUrl.trim() !== \"\") {\r\n const forceDownload = props.pdfUrl.indexOf(\"?\") > -1 ? \"&fdl=1\" : \"?fdl=1\";\r\n return `${props.pdfUrl}${forceDownload}`;\r\n }\r\n\r\n return \"\";\r\n};\r\n\r\nconst totalPages = ref<number | null>(null);\r\nconst currentPage = ref<number>(props.startPageNumber);\r\nconst canvasHeight = ref<number | null>(792);\r\nconst canvasWidth = ref<number | null>(612);\r\nlet pdfDoc: PDFDocumentProxy | null = null;\r\nconst loadFailed = ref(false);\r\nconst pageRendering = ref<Boolean>(false);\r\nconst scale = ref<number>(1.0);\r\nconst pageNumPending = ref<number | null>(null);\r\n\r\nconst loadPdf = () => {\r\n const canvasEl = document.getElementById(componentId) as HTMLCanvasElement;\r\n if (canvasEl) {\r\n if (canvasEl.height && canvasEl.width) {\r\n canvasHeight.value = canvasEl.height;\r\n canvasWidth.value = canvasEl.width;\r\n }\r\n\r\n const loadingTask = pdfJsLib.getDocument(props.pdfUrl);\r\n loadingTask.promise\r\n .then((pdf) => {\r\n totalPages.value = pdf.numPages;\r\n pdfDoc = pdf;\r\n emit(\"pdf-loaded\");\r\n renderPage(currentPage.value);\r\n })\r\n .catch(() => {\r\n loadFailed.value = true;\r\n emit(\"pdf-load-failed\");\r\n });\r\n }\r\n};\r\n\r\nonMounted(() => {\r\n loadPdf();\r\n emit(\"mounted\");\r\n});\r\n\r\nconst pdfSelectionChange = function (selected: boolean): void {\r\n emit(\"pdf-selection-change\", selected);\r\n};\r\n\r\nconst renderPage = (pageNum: number): void => {\r\n pageRendering.value = true;\r\n pageNumPending.value = pageNum;\r\n if (pdfDoc && pageNum > 0 && pageNum <= (totalPages.value ?? 1)) {\r\n pdfDoc.getPage(pageNum).then((page) => {\r\n var viewport = page.getViewport({ scale: scale.value });\r\n const canvasEl = document.getElementById(componentId) as HTMLCanvasElement;\r\n if (canvasEl !== null) {\r\n const canvasCtx = canvasEl.getContext(\"2d\");\r\n if (canvasCtx != null) {\r\n canvasEl.height = viewport.height;\r\n canvasEl.width = viewport.width;\r\n currentPage.value = pageNum;\r\n\r\n // Render PDF page into canvas context\r\n var renderTask = page.render({\r\n canvasContext: canvasCtx,\r\n viewport: viewport,\r\n });\r\n\r\n // Wait for rendering to finish\r\n renderTask.promise.then(() => {\r\n pageRendering.value = false;\r\n if (pageNumPending.value !== null && pageNumPending.value !== pageNum) {\r\n renderPage(pageNumPending.value);\r\n pageNumPending.value = null;\r\n } else {\r\n emit(\"navigated-to-pagenumber\", pageNum);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n};\r\n\r\nconst movePage = (currentPageOffset: number): void => {\r\n renderPage(currentPage.value + currentPageOffset);\r\n};\r\n\r\nconst pageDisplay = (): string => {\r\n return totalPages.value != null ? `${currentPage.value} of ${totalPages.value}` : \"\";\r\n};\r\n\r\nconst showPageTools = (): boolean => {\r\n return totalPages.value !== null && totalPages.value > 0;\r\n};\r\n\r\nconst zoom = (zoomPercent: number): void => {\r\n if (zoomPercent !== 0) {\r\n scale.value = scale.value + zoomPercent;\r\n renderPage(currentPage.value);\r\n }\r\n};\r\n</script>\r\n<style lang=\"less\">\r\n@import \"@css/utilityClasses/boxUtils.less\";\r\n@import \"@css/utilityClasses/flexUtils.less\";\r\n</style>\r\n"],"names":["cw","$","window","jQuery","extend","pages","dashboard","args","selectedS1AccountId","phoneEditDataTable","phoneTypeList","locationData","$viewport","url","title","$wrapperEl","sigRconn","notificationWidget","autopayConfigComponenent","init","self","this","bindApplicationEvents","setAutoPaymentStatus","AccountBalances","$menuItemReward","closest","length","CanViewRewards","removeClass","addClass","$menuItemAddProd","WholesaleCustomerPortal","$reqDeliveryBtn","bindInteractions","bindRewardsAndCarouselItems","RewardsPoints","setTimeout","then","x","default","switchPage","data","selectedS1AccountCookieKey","refreshS1AccountSelector","analytics","_hsq","push","Title","history","location","pathname","toLowerCase","pushState","vueAddProductApp","$vueAddProductDiv","vueAddProductAppMounted","mobileMenuAnchorSelector","vueAppMenuClickFunc","e","unmount","remove","off","on","preventDefault","attr","addEventListener","oEvent","state","S1AccountNotificationToken","rebindNotificationListener","s1AccountSelectorClickHandler","document","$this","dpMap","custTypes","selZipCode","selProductCode","productAddId","getElementById","replaceChildren","createElement","id","body","appendChild","trigger","productAddWizard","brandTypeId","brandObj","BrandTypeId","s1AcctId","customerTypeIds","selectedDeliveryPointMap","selectedZipCode","selectedProductCode","minimumGallonDelivery","onMounted","onWizardClosed","onProductAddedSuccessfully","productAddRequest","productAddResponse","loadDashboard","onHvacAppointmentSuccessfullyScheduled","mount","href","hasHref","modal","Open","html","modalBody","format","replace","replaceAll","onShownCallback","mr","$modalBody","find","webservices","getJson","wasDismissed","close","rebindS1AccountSelector","s1AccountNotificationToken","getNotificationWidget","$menuItem","some","OnBudget","CustomerBudgetResponse","HasPendingBudget","IsEligible","empty","append","analyticsFireLoginEvent","analyticsObj","event","analyticsCustomerType","customerType","analyticsUserId","userId","hasRewardsAccess","anaylyticsIsRewardsUser","isRewardsRedeemer","anaylyticsIsRewardsRedeemer","dataLayer","email","last_customer_web_login_date","loginTime","each","chosen","width","allow_single_deselect","disable_search_threshold","no_results_text","updateLocationFilter","val","tooltip","dropdown","docId","invoiceId","innerWidth","open","size","successCallback","modalRef","doc","getData","pdfUrl","allowDownload","onPdfLoaded","loadingIndicator","stop","start","budgetManager","budgetEnroll","ServiceLocations","S1AccountId","cancelCallback","rtnData","Alert","text","CustomerService800NumberFormatted","widget","deliveryRequest","s1AccountId","productCode","productSubclass","isWinterBlend","deliveryPointMap","tankSize","usableTankSize","deliverySchedule","paymentTerms","existingBalance","minimumGallonDeliveryFee","creditStatusOk","equipmentId","paymentUpfrontRequired","division","viewUsageHistory","viewPendingDelivery","$dpHash","updateServiceLocationData","servLocHash","element","DeliveryPointHash","ServiceLocationHash","editServiceLocation","deliveryHistory","pendingDeliveries","panelCollapse","siblings","collapse","ticketNumber","hasClass","customerBudgetResp","MonthlyPaymentAmountFormatted","Math","ceil","MonthlyPaymentAmount","toFixed","filter","LocationBudgetEligibility","payment","invoiceHistory","paymentHistory","launchPaymentProfile","showPendingServiceRequest","$title","clone","showContractEquipment","remoteAccountMap","accountSettingsEdit","shipleyOneNumberId","remoteSystemId","RemoteSystemId","remoteSystemAccountId","RemoteSystemAccountId","remoteSystemAccountNumber","RemoteSystemAccountNumber","accountSettings","viewNotes","showServiceCallHistory","showRenewalOffers","loadDashboardQuickActionButtons","loadSpecialOffers","rewardObj","$car","$rewardWapper","$graphTarget","graphData","options","legend","show","series","pie","innerRadius","radius","grid","hoverable","label","formatter","tooltipOpts","cssClass","content","defaultTheme","IsOptedOut","$href","rewards","UnusedPointTotal","RecentlyAddedPointAmount","color","constants","shipleyGreen","ExistingPoints","shipleyBlue","PendingTransactionPoints","ctaOrange","ExpiringIn30DaysPointTotal","unshift","ctaYellow","$existingItems","$energyRewards","has","$budgetPlan","mq","matchMedia","prepend","matches","css","height","$inner","plot","idx","$me","carousel","customerCorrespondenceQueueId","rtnObj","openModal","renewalOptions","productTmpl","autoRenewHtml","altOffer1Html","altOffer2Html","columns","mangePricePlanAndRender","pp","isBestOffer","PricingPlan","PricePlan","PriceFormatted","PriceHtmlFormatted","RenderedTosUrl","TermsAndConditionsUrl","BestOffer","PriceToCompareFormatted","PriceToCompare","AutoRenewalOffer","AltRenewalOffer1","AltRenewalOffer2","colClass","mSrc","renewalOpts","buttons","action","m","$errPnl","alert","ClearAlert","rOpts","BillingAccountId","LdcAccountId","RenewalPriceSheetLineId","CustomerCorrespondenceSendQueueId","RenewalPin","renewalResp","RenewalStatus","$btnRenew","$modalFooter","templating","DownloadTemplateHtml","appEnum","TemplateType","CwWidget","tmplSrc","locationName","srvCallHistoryItems","dialogRef","$targetEl","cols","row","type","meta","utility","tableSortByDate","ServiceCallCreatedDate","ServiceCode","EquipmentType","EquipmentDescription","sortable","className","WebDocsDocumentId","InvoiceNumber","$tblHtml","getTableMarkup","map","c","tableOpts","lengthMenu","iDisplayLength","responsive","deferRender","dom","language","search","order","dt","DataTable","setData","docGuid","dGuid","acctBalances","$profileEl","$profileElSelection","$statusBtn","$statusText","$statusIcon","profile","titleTooltip","prop","eftConfig","acctBal","EftMaskedConfig","ccConfig","CreditCardProfile","forEach","eft","AccountTypeFormatted","AccountNumber","cc","acctNum","CreditCardPaymentProfileId","CreditCardPaymentProfile","filterSingle","a","CardTypeFormatted","MaskedAccountNumber","Type","Config","join","callback","getDashSummaryData","dashSummary","stopPropagation","wasFavorited","wasUnfavorited","showS1AccountEditModal","toggleClass","selectedS1Account","s1Accounts","GetRenderedTemplateHTML","S1Accounts","renderedTmpl","$newMenu","replaceWith","notes","NoteType","NoteText","NoteDate","$tbl","tableLayout","contractId","modalTitle","ContractId","contract","StartDateFormatted","StartDate","EndDateFormatted","EndDate","BillIntervalUOMFormatted","BillIntervalUOM","ContractedEquipment","CoverageFrom","CoverageTo","EquipmentCoverageDateFormatted","docUrl","newBillAccount","hasV2AddProdRight","useV2addProductExperience","CanRedeemNewRewards","S1CustomerTypeIds","JSON","stringify","$s1CustType","CustomerTypes","CustomerType","CustomerJoinYear","sl","CustomerTypeIds","RemoteSystemMap","ProductRows","pr","p","DeliveryPointMap","Dashboard","scrollTop","s1AccountNumber","accountNickname","isFavorite","d","mdata","parentModal","wasSuccess","reload","nickname","trim","Nickname","RemoteSystemDeliveryPointId","selectedLocationRtn","selectedLocation","EveningPhone","FormatAsPhone","number","DaytimePhone","GetPhoneTypeList","myDp","modalSize","S1RemoteSystem","As400","Nexant","Cargas","renderedTemplate","saveServiceLocation","rowData","getDataTableAllRowData","saveObj","DeliveryLocationDescription","ContactName","IsBillToAddress","is","Directions","GetCustomerPhoneNumberList","LocationId","CustomerLocationId","$locationEl","buildPhoneNumberDataTable","bindEditLocationButtons","PhoneData","Location","StreetAddress","PhoneTypeList","PhoneTypeId","PhoneTypeID","PhoneType","PhoneTypeSelected","getPhoneDetailModal","phoneId","phoneNumber","deleteDataTableListing","$dt","getDataTableRowData","customerLocationData","getPhoneEditData","mRef","err","getUniqueNumber","list","i","PhoneID","phoneObj","Contact","IsPrimary","EntityLocationId","PhoneExtension","PhoneNumber","PhoneNumberFormatted","phoneIsFormatted","indexOf","el","parseInt","addUpdateDataTableListing","draw","phone","formatPhoneNumberForDisplay","LocationList","LocationAddress","LocationSelected","phoneData","tableOptions","processing","bSortClasses","orderable","visible","thx","tdx","j","remoteId","$email","$attention","$description","$eveningPhone","$directions","$contactName","orgData","Attention","Email","DayPhone","errs","$el","isValidEmail","contactArr","split","includes","validateContactName","errMsg","phoneList","stripPhoneNumberFormatting","ext","validateServiceLocation","saveResp","returnInt","phoneFormatted","phoneStripped","req","ProductCode","EquipmentId","usageResp","UsageHistory","usageData","$usageTarget","ngEl","Electricity","NaturalGas","usage","WasEstimated","HasForcastedFutureData","msg","drawUsageGraph","timeSeries","uom","barwidth","xMode","seriesData","Date","Value","UOMToText","UnitOfMeasure","s","bars","barWidth","fill","align","toolTipFunc","xAxis","mode","timeformat","xval","yval","flotItem","formatDate","clickable","tickColor","borderWidth","colors","xaxis","position","labelFormatter","getExistingServiceRequest","documentId","s1TicketId","elemId","$div","hvacScheduledApptSummaryModalComp","app","serviceTicketId","workOrderDocumentId","onHvacAppointmentSummaryClosed","getBreadcrumbMarkup","links","rtn","isActive","PendingDeliveryHash","DeliveryLink","PendingDeliveryItemResp","DeliveryData","locationList","hide","appStartArgs","CurrentUserObj","UserId","specialOffersComp","onSpecialOfferAddedToAccount","delLocIds","$parent","delMap","remoteSystemDeliveryPointId","icon","f","startsWith","quickActionBtnsComp","deliveryProductLocationIds","autoPayId","$autopayDiv","autopayConfigApp","onAutoPayConfigured","fn","dataTable","Buttons","defaults","button","copyHtml5","csvHtml5","print","dtTools","tableClasses","date","sortType","displayFormat","newObject","matchingColumnName","redrawTable","matchingKeyValue","getDataTableNextRowData","getDataTablePreviousRowData","factory","result","arguments","attributes","key","decode","decodeURIComponent","converter","api","set","value","path","expires","toUTCString","test","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","cookie","get","json","jar","cookies","parts","slice","charAt","name","read","parse","getJSON","withConverter","module","exports","getObject","storageType","getItem","setObject","obj","setItem","console","error","isStorageAvailable","storage","removeItem","DOMException","code","constructor","$viewPort","PageRenderFunction","Url","InvoiceHistory","PaymentHistory","accountSettingsApp","dataReference","AccountSettings","breadCrumbs","accountSettingsListing","rootElement","querySelector","brandType","DocumentHistory","documentHistory","PendingDeliveries","Rewards","dashboardSummary","BudgetManager","budgetData","DeliveryHistory","pageHistory","pageMap","Map","setPage","createPage","pageInstance","Error","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","class","_hoisted_5","__name","props","checked","Boolean","disabled","readonly","hover","variant","inputClass","alignLabel","loading","loadingText","labelClass","undefined","labelStyle","Object","Array","emits","setup","__props","emit","__emit","componentId","isChecked","lblClasses","labels","checkVal","newVal","target","HTMLInputElement","_ctx","_cache","for","style","onChange","$slots","innerHTML","animate","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","startPageNumber","showSelectCheckbox","selected","selectCheckboxText","pdf","workerSrc","URL","toString","downloadUrl","forceDownload","totalPages","currentPage","canvasHeight","canvasWidth","pdfDoc","loadFailed","pageRendering","scale","pageNumPending","canvasEl","promise","numPages","renderPage","catch","loadPdf","pdfSelectionChange","pageNum","getPage","page","viewport","getViewport","canvasCtx","getContext","render","canvasContext","movePage","currentPageOffset","zoom","zoomPercent","onUpdated","onClick","$event","message"],"sourceRoot":""}