{"version":3,"sources":["/home/glowdeploymentscripts/websites/picard-javascript/lib/binary.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/carbon.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/index.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/resource.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/server.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/timeseries.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/types.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/utils/aggregate.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/utils/binary.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/utils/index.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/utils/object.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/utils/search.js","/home/glowdeploymentscripts/websites/picard-javascript/lib/utils/string.js","./$_lazy_route_resource lazy namespace object","./src/app/app.component.html","./src/app/components/account-no-data-card/account-no-data-card.component.html","./src/app/components/account-side-menu/account-side-menu.component.html","./src/app/components/add-heating-system-modal/add-heating-system-modal.component.html","./src/app/components/add-radiator-modal/add-radiator-modal.component.html","./src/app/components/add-room-modal/add-room-modal.component.html","./src/app/components/article-card/article-card.component.html","./src/app/components/article-content/article-content.component.html","./src/app/components/blockquote/blockquote.component.html","./src/app/components/blog-card/blog-card.component.html","./src/app/components/blog-content/blog-content.component.html","./src/app/components/breadcrumb/breadcrumb.component.html","./src/app/components/case-study-card/case-study-card.component.html","./src/app/components/case-study-filter/case-study-filter.component.html","./src/app/components/case-study-form-stepper/case-study-form-stepper.component.html","./src/app/components/case-study/building-form/building-form.component.html","./src/app/components/case-study/case-study-details/case-study-details.component.html","./src/app/components/case-study/case-study-feedback/case-study-feedback.component.html","./src/app/components/case-study/case-study-header/case-study-header.component.html","./src/app/components/case-study/case-study-installaton-heating-system-technical/case-study-installaton-heating-system-technical.component.html","./src/app/components/case-study/case-study-other-content/case-study-other-content.component.html","./src/app/components/case-study/case-study-outcome/case-study-outcome.component.html","./src/app/components/case-study/case-study-relation-table/case-study-relation-table.component.html","./src/app/components/case-study/case-study-summary/case-study-summary.component.html","./src/app/components/case-study/energy-storage-form/energy-storage-form.component.html","./src/app/components/case-study/form-template/form-template.component.html","./src/app/components/case-study/heating-system-form/heating-system-form.component.html","./src/app/components/case-study/installation-form/installation-form.component.html","./src/app/components/case-study/microgenerator-form/microgenerator-form.component.html","./src/app/components/case-study/other-info-form/other-info-form.component.html","./src/app/components/case-study/outcomes-form/outcomes-form.component.html","./src/app/components/coming-soon-card/coming-soon-card.component.html","./src/app/components/community-card/community-card.component.html","./src/app/components/community-homepage-content/community-homepage-content.component.html","./src/app/components/confirmation-modal/confirmation-modal.component.html","./src/app/components/consent-meter-card/consent-meter-card.component.html","./src/app/components/consent-modal/consent-modal.component.html","./src/app/components/content-card/content-card.component.html","./src/app/components/cookie-policy/cookie-policy.component.html","./src/app/components/dashboard/dashboard.component.html","./src/app/components/epc-certificate/epc-certificate.component.html","./src/app/components/epc-info-modal/epc-info-modal.component.html","./src/app/components/estimate-request-card/estimate-request-card.component.html","./src/app/components/faq-detailed-content/faq-detailed-content.component.html","./src/app/components/faq-feedback-form/faq-feedback-form.component.html","./src/app/components/faq-question-form/faq-question-form.component.html","./src/app/components/faqs-searchbar/faqs-searchbar.component.html","./src/app/components/faqs-subtopic-non-faq-content/faqs-subtopic-non-faq-content.component.html","./src/app/components/faqs-subtopics/faqs-subtopics.component.html","./src/app/components/faqs-topics/faqs-topics.component.html","./src/app/components/file-upload/file-upload.component.html","./src/app/components/floor/floor.component.html","./src/app/components/footer/footer.component.html","./src/app/components/form-validation-message/form-validation-message.component.html","./src/app/components/glossary-card/glossary-card.component.html","./src/app/components/glossary-searchbar/glossary-searchbar.component.html","./src/app/components/glossary-sidebar/glossary-sidebar.component.html","./src/app/components/glossary-term/glossary-term.component.html","./src/app/components/header/header.component.html","./src/app/components/heat-loss-parameter-scale/heat-loss-parameter-scale.component.html","./src/app/components/heat-pump-cost-estimation-params-form/heat-pump-cost-estimation-params-form.component.html","./src/app/components/help-modal/help-modal.component.html","./src/app/components/hp-journey-modal/hp-journey-modal.component.html","./src/app/components/hp-journey-stepper/hp-journey-stepper.component.html","./src/app/components/htc-card/htc-card.component.html","./src/app/components/htc-full-info/htc-full-info.component.html","./src/app/components/htc-modal/htc-modal.component.html","./src/app/components/image-modal/image-modal.component.html","./src/app/components/infographic-card/infographic-card.component.html","./src/app/components/infographics/hpj-infographic/hpj-infographic.component.html","./src/app/components/infographics/installer-journey-infographic/installer-journey-infographic.component.html","./src/app/components/installer-card/installer-card.component.html","./src/app/components/installer-invitation-modal/installer-invitation-modal.component.html","./src/app/components/installer-register-form/installer-register-form.component.html","./src/app/components/installer-support-modal/installer-support-modal.component.html","./src/app/components/invitation-modal/invitation-modal.component.html","./src/app/components/landing-banner/landing-banner.component.html","./src/app/components/landing-carousel-card/landing-carousel-card.component.html","./src/app/components/landing-carousel/landing-carousel.component.html","./src/app/components/landing-communities-content/landing-communities-content.component.html","./src/app/components/landing-community-layouts/left-horizontal-hero/left-horizontal-hero.component.html","./src/app/components/landing-community-layouts/left-vertical-hero/left-vertical-hero.component.html","./src/app/components/landing-community-layouts/right-horizontal-hero/right-horizontal-hero.component.html","./src/app/components/landing-searchbar/landing-searchbar.component.html","./src/app/components/landing-sidebar/landing-sidebar.component.html","./src/app/components/local-authority-register-form/local-authority-register-form.component.html","./src/app/components/login-modal/login-modal.component.html","./src/app/components/notification/notification.component.html","./src/app/components/professional-account-side-menu/professional-account-side-menu.component.html","./src/app/components/professional-register-stepper/professional-register-stepper.component.html","./src/app/components/profile-modal/profile-modal.component.html","./src/app/components/quote-modal/quote-modal.component.html","./src/app/components/radiator-schematic-card/radiator-schematic-card.component.html","./src/app/components/radiator-schematic-selector-modal/radiator-schematic-selector-modal.component.html","./src/app/components/radiator-schematic/radiator-schematic.component.html","./src/app/components/related-faqs-sidebar/related-faqs-sidebar.component.html","./src/app/components/resources-list-card/resources-list-card.component.html","./src/app/components/resources-list-content/resources-list-content.component.html","./src/app/components/response-modal/response-modal.component.html","./src/app/components/schematic-tool/schematic-tool.component.html","./src/app/components/schematics-homepage-status/schematics-homepage-status.component.html","./src/app/components/scroll-progress-bar/scroll-progress-bar.component.html","./src/app/components/setup-smart-meter-modal/setup-smart-meter-modal.component.html","./src/app/components/setup-smart-meter/setup-smart-meter.component.html","./src/app/components/side-bar/side-bar.component.html","./src/app/components/sidebar-content-card/sidebar-content-card.component.html","./src/app/components/social-media-buttons/social-media-buttons.component.html","./src/app/components/spinner/spinner.component.html","./src/app/components/star-rating/star-rating.component.html","./src/app/components/stripe-card-form/stripe-card-form.component.html","./src/app/components/success-modal/success-modal.component.html","./src/app/components/system-incident-subscription-management/system-incident-subscription-management.component.html","./src/app/components/system-incidents-content/system-incidents-content.component.html","./src/app/components/system-incidents-mail-subscription-modal/system-incidents-mail-subscription-modal.component.html","./src/app/components/tag/tag.component.html","./src/app/components/temperature-sensor-data-table/temperature-sensor-data-table.component.html","./src/app/components/terms-and-conditions/terms-and-conditions.component.html","./src/app/components/termsconditions-modal/termsconditions-modal.component.html","./src/app/components/tutorial-card/tutorial-card.component.html","./src/app/components/tutorial-content/tutorial-content.component.html","./src/app/components/user-story-card/user-story-card.component.html","./src/app/components/user-story-detailed-content/user-story-detailed-content.component.html","./src/app/pages-professional/account-pages/account-pages.component.html","./src/app/pages-professional/account-pages/invitations/invitations.component.html","./src/app/pages-professional/account-pages/invitations/received-invitations/received-invitations.component.html","./src/app/pages-professional/account-pages/invitations/sent-invitations/sent-invitations.component.html","./src/app/pages-professional/account-pages/notifications/all-notifications/all-notifications.component.html","./src/app/pages-professional/account-pages/notifications/notifications.component.html","./src/app/pages-professional/account-pages/professional-settings/personal-details/personal-details.component.html","./src/app/pages-professional/account-pages/professional-settings/professional-settings.component.html","./src/app/pages-professional/account-pages/professional-settings/profile/profile.component.html","./src/app/pages-professional/landing/landing.component.html","./src/app/pages-professional/pages-professional.component.html","./src/app/pages-professional/property/home-energy-data/home-energy-data.component.html","./src/app/pages-professional/property/property.component.html","./src/app/pages-professional/property/quotes/quotes.component.html","./src/app/pages/account-pages/account-pages.component.html","./src/app/pages/bookmarks/bookmarks.component.html","./src/app/pages/case-study-account-page/case-study-account-page.component.html","./src/app/pages/case-study-account-page/heat-pump-case-study-account/heat-pump-case-study-account.component.html","./src/app/pages/case-study-creator-tool/case-study-creator-tool.component.html","./src/app/pages/case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.component.html","./src/app/pages/energy-data/energy-data.component.html","./src/app/pages/energy-overview/energy-overview.component.html","./src/app/pages/energy-overview/tariff/tariff.component.html","./src/app/pages/general-attributes/building-fabric/building-fabric.component.html","./src/app/pages/general-attributes/general-attributes.component.html","./src/app/pages/general-attributes/general/general.component.html","./src/app/pages/heat-pump-cost-estimation-tool/heat-pump-cost-estimation-tool.component.html","./src/app/pages/heat-pump-journey/heat-pump-journey.component.html","./src/app/pages/heating-system/heating-by-room/heating-by-room.component.html","./src/app/pages/heating-system/heating-system.component.html","./src/app/pages/htc/htc.component.html","./src/app/pages/invitations/invitations.component.html","./src/app/pages/invitations/received-invitations/received-invitations.component.html","./src/app/pages/invitations/sent-invitations/sent-invitations.component.html","./src/app/pages/notifications/all-notifications/all-notifications.component.html","./src/app/pages/notifications/notifications.component.html","./src/app/pages/pages.component.html","./src/app/pages/property-pages/property-pages.component.html","./src/app/pages/property-passport/property-passport.component.html","./src/app/pages/schematics/schematics.component.html","./src/app/pages/settings/account-settings/account-settings.component.html","./src/app/pages/settings/settings.component.html","./src/app/pages/settings/sites/sites.component.html","./src/app/pages/settings/subscriptions/subscriptions.component.html","./src/app/pages/temperature-sensors/temperature-sensors.component.html","./src/app/pages/tools-pages/tools-pages.component.html","./src/app/public/about-community/about-community.component.html","./src/app/public/about-us/about-us.component.html","./src/app/public/article/article.component.html","./src/app/public/blog/blog.component.html","./src/app/public/bright/bright.component.html","./src/app/public/case-studies-landing/case-studies-landing.component.html","./src/app/public/community-home/community-home.component.html","./src/app/public/contact-us/contact-us.component.html","./src/app/public/delight-event-participation/delight-event-participation.component.html","./src/app/public/faq-detailed/faq-detailed.component.html","./src/app/public/faq-topic/faqs-topic.component.html","./src/app/public/faqs-landing/faqs-landing.component.html","./src/app/public/find-a-professional/find-a-professional.component.html","./src/app/public/generate-password-token/generate-password-token.component.html","./src/app/public/glossary/glossary.component.html","./src/app/public/infographic/infographic.component.html","./src/app/public/installer-page/installer-page.component.html","./src/app/public/landing/landing.component.html","./src/app/public/login/login.component.html","./src/app/public/not-found-page/not-found-page.component.html","./src/app/public/privacy-policy/privacy-policy.component.html","./src/app/public/professional-register-form/professional-register-form.component.html","./src/app/public/professionals-register/professionals-register.component.html","./src/app/public/register/register-home/register-home.component.html","./src/app/public/register/register.component.html","./src/app/public/reset-password/reset-password.component.html","./src/app/public/resources-list/resources-list.component.html","./src/app/public/search-results/search-results.component.html","./src/app/public/successful-register/successful-register.component.html","./src/app/public/tag-page/tag-page.component.html","./src/app/public/top-glossary-terms/top-glossary-terms.component.html","./src/app/public/tutorial/tutorial.component.html","./src/app/public/unsubscribe-page/unsubscribe-page.component.html","./src/app/public/user-story-detailed/user-story-detailed.component.html","./src/app/public/verify-email/verify-email.component.html","./src/app/app-routing.module.ts","./src/app/app.component.scss","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/components/account-no-data-card/account-no-data-card.component.scss","./src/app/components/account-no-data-card/account-no-data-card.component.ts","./src/app/components/account-no-data-card/account-no-data-card.module.ts","./src/app/components/account-side-menu/account-side-menu.component.scss","./src/app/components/account-side-menu/account-side-menu.component.ts","./src/app/components/account-side-menu/account-side-menu.module.ts","./src/app/components/add-heating-system-modal/add-heating-system-modal.component.scss","./src/app/components/add-heating-system-modal/add-heating-system-modal.component.ts","./src/app/components/add-heating-system-modal/add-heating-system-modal.module.ts","./src/app/components/add-radiator-modal/add-radiator-modal.component.scss","./src/app/components/add-radiator-modal/add-radiator-modal.component.ts","./src/app/components/add-radiator-modal/add-radiator-modal.module.ts","./src/app/components/add-room-modal/add-room-modal.component.scss","./src/app/components/add-room-modal/add-room-modal.component.ts","./src/app/components/add-room-modal/add-room-modal.module.ts","./src/app/components/article-card/article-card.component.scss","./src/app/components/article-card/article-card.component.ts","./src/app/components/article-content/article-content.component.scss","./src/app/components/article-content/article-content.component.ts","./src/app/components/blockquote/blockquote.component.scss","./src/app/components/blockquote/blockquote.component.ts","./src/app/components/blog-card/blog-card.component.scss","./src/app/components/blog-card/blog-card.component.ts","./src/app/components/blog-content/blog-content.component.scss","./src/app/components/blog-content/blog-content.component.ts","./src/app/components/breadcrumb/breadcrumb.component.scss","./src/app/components/breadcrumb/breadcrumb.component.ts","./src/app/components/case-study-card/case-study-card.component.scss","./src/app/components/case-study-card/case-study-card.component.ts","./src/app/components/case-study-filter/case-study-filter.component.scss","./src/app/components/case-study-filter/case-study-filter.component.ts","./src/app/components/case-study-filter/case-study-filter.module.ts","./src/app/components/case-study-form-stepper/case-study-form-stepper.component.scss","./src/app/components/case-study-form-stepper/case-study-form-stepper.component.ts","./src/app/components/case-study-form-stepper/case-study-form-stepper.module.ts","./src/app/components/case-study/building-form/building-form.component.scss","./src/app/components/case-study/building-form/building-form.component.ts","./src/app/components/case-study/building-form/building-form.module.ts","./src/app/components/case-study/case-study-details/case-study-details.component.scss","./src/app/components/case-study/case-study-details/case-study-details.component.ts","./src/app/components/case-study/case-study-details/case-study-details.module.ts","./src/app/components/case-study/case-study-feedback/case-study-feedback.component.scss","./src/app/components/case-study/case-study-feedback/case-study-feedback.component.ts","./src/app/components/case-study/case-study-header/case-study-header.component.scss","./src/app/components/case-study/case-study-header/case-study-header.component.ts","./src/app/components/case-study/case-study-header/case-study-header.module.ts","./src/app/components/case-study/case-study-installaton-heating-system-technical/case-study-installaton-heating-system-technical.component.scss","./src/app/components/case-study/case-study-installaton-heating-system-technical/case-study-installaton-heating-system-technical.component.ts","./src/app/components/case-study/case-study-installaton-heating-system-technical/case-study-installaton-heating-system-technical.module.ts","./src/app/components/case-study/case-study-other-content/case-study-other-content.component.scss","./src/app/components/case-study/case-study-other-content/case-study-other-content.component.ts","./src/app/components/case-study/case-study-other-content/case-study-other-content.module.ts","./src/app/components/case-study/case-study-outcome/case-study-outcome.component.scss","./src/app/components/case-study/case-study-outcome/case-study-outcome.component.ts","./src/app/components/case-study/case-study-outcome/case-study-outcome.module.ts","./src/app/components/case-study/case-study-relation-table/case-study-relation-table.component.scss","./src/app/components/case-study/case-study-relation-table/case-study-relation-table.component.ts","./src/app/components/case-study/case-study-relation-table/case-study-relation-table.module.ts","./src/app/components/case-study/case-study-summary/case-study-summary.component.scss","./src/app/components/case-study/case-study-summary/case-study-summary.component.ts","./src/app/components/case-study/case-study-summary/case-study-summary.module.ts","./src/app/components/case-study/energy-storage-form/energy-storage-form.component.scss","./src/app/components/case-study/energy-storage-form/energy-storage-form.component.ts","./src/app/components/case-study/energy-storage-form/energy-storage-form.module.ts","./src/app/components/case-study/form-template/form-template.component.scss","./src/app/components/case-study/form-template/form-template.component.ts","./src/app/components/case-study/form-template/form-template.module.ts","./src/app/components/case-study/heating-system-form/heating-system-form.component.scss","./src/app/components/case-study/heating-system-form/heating-system-form.component.ts","./src/app/components/case-study/heating-system-form/heating-system-form.module.ts","./src/app/components/case-study/installation-form/installation-form.component.scss","./src/app/components/case-study/installation-form/installation-form.component.ts","./src/app/components/case-study/installation-form/installation-form.module.ts","./src/app/components/case-study/microgenerator-form/microgenerator-form.component.scss","./src/app/components/case-study/microgenerator-form/microgenerator-form.component.ts","./src/app/components/case-study/microgenerator-form/microgenerator-form.module.ts","./src/app/components/case-study/other-info-form/other-info-form.component.scss","./src/app/components/case-study/other-info-form/other-info-form.component.ts","./src/app/components/case-study/other-info-form/other-info-form.module.ts","./src/app/components/case-study/outcomes-form/outcomes-form.component.scss","./src/app/components/case-study/outcomes-form/outcomes-form.component.ts","./src/app/components/case-study/outcomes-form/outcomes-form.module.ts","./src/app/components/coming-soon-card/coming-soon-card.component.scss","./src/app/components/coming-soon-card/coming-soon-card.component.ts","./src/app/components/community-card/community-card.component.scss","./src/app/components/community-card/community-card.component.ts","./src/app/components/community-homepage-content/community-homepage-content.component.scss","./src/app/components/community-homepage-content/community-homepage-content.component.ts","./src/app/components/confirmation-modal/confirmation-modal.component.scss","./src/app/components/confirmation-modal/confirmation-modal.component.ts","./src/app/components/confirmation-modal/confirmation-modal.module.ts","./src/app/components/consent-meter-card/consent-meter-card.component.scss","./src/app/components/consent-meter-card/consent-meter-card.component.ts","./src/app/components/consent-meter-card/consent-meter-card.module.ts","./src/app/components/consent-modal/consent-modal.component.scss","./src/app/components/consent-modal/consent-modal.component.ts","./src/app/components/consent-modal/consent-modal.module.ts","./src/app/components/content-card/content-card.component.scss","./src/app/components/content-card/content-card.component.ts","./src/app/components/content-card/content-card.module.ts","./src/app/components/cookie-policy/cookie-policy.component.scss","./src/app/components/cookie-policy/cookie-policy.component.ts","./src/app/components/dashboard/dashboard.component.scss","./src/app/components/dashboard/dashboard.component.ts","./src/app/components/dashboard/dashboard.module.ts","./src/app/components/epc-certificate/epc-certificate.component.scss","./src/app/components/epc-certificate/epc-certificate.component.ts","./src/app/components/epc-certificate/epc-certificate.module.ts","./src/app/components/epc-info-modal/epc-info-modal.component.scss","./src/app/components/epc-info-modal/epc-info-modal.component.ts","./src/app/components/epc-info-modal/epc-info-modal.module.ts","./src/app/components/estimate-request-card/estimate-request-card.component.scss","./src/app/components/estimate-request-card/estimate-request-card.component.ts","./src/app/components/estimate-request-card/estimate-request-card.module.ts","./src/app/components/faq-detailed-content/faq-detailed-content.component.scss","./src/app/components/faq-detailed-content/faq-detailed-content.component.ts","./src/app/components/faq-feedback-form/faq-feedback-form.component.scss","./src/app/components/faq-feedback-form/faq-feedback-form.component.ts","./src/app/components/faq-question-form/faq-question-form.component.scss","./src/app/components/faq-question-form/faq-question-form.component.ts","./src/app/components/faqs-searchbar/faqs-searchbar.component.scss","./src/app/components/faqs-searchbar/faqs-searchbar.component.ts","./src/app/components/faqs-subtopic-non-faq-content/faqs-subtopic-non-faq-content.component.scss","./src/app/components/faqs-subtopic-non-faq-content/faqs-subtopic-non-faq-content.component.ts","./src/app/components/faqs-subtopics/faqs-subtopics.component.scss","./src/app/components/faqs-subtopics/faqs-subtopics.component.ts","./src/app/components/faqs-topics/faqs-topics.component.scss","./src/app/components/faqs-topics/faqs-topics.component.ts","./src/app/components/file-upload/file-upload.component.scss","./src/app/components/file-upload/file-upload.component.ts","./src/app/components/file-upload/file-upload.module.ts","./src/app/components/floor/floor.component.scss","./src/app/components/floor/floor.component.ts","./src/app/components/floor/floor.module.ts","./src/app/components/footer/footer.component.scss","./src/app/components/footer/footer.component.ts","./src/app/components/footer/footer.module.ts","./src/app/components/form-validation-message/form-validation-message.component.scss","./src/app/components/form-validation-message/form-validation-message.component.ts","./src/app/components/form-validation-message/form-validation-message.module.ts","./src/app/components/glossary-card/glossary-card.component.scss","./src/app/components/glossary-card/glossary-card.component.ts","./src/app/components/glossary-searchbar/glossary-searchbar.component.scss","./src/app/components/glossary-searchbar/glossary-searchbar.component.ts","./src/app/components/glossary-sidebar/glossary-sidebar.component.scss","./src/app/components/glossary-sidebar/glossary-sidebar.component.ts","./src/app/components/glossary-term/glossary-term.component.scss","./src/app/components/glossary-term/glossary-term.component.ts","./src/app/components/header/header.component.scss","./src/app/components/header/header.component.ts","./src/app/components/header/header.module.ts","./src/app/components/heat-loss-parameter-scale/heat-loss-parameter-scale.component.scss","./src/app/components/heat-loss-parameter-scale/heat-loss-parameter-scale.component.ts","./src/app/components/heat-loss-parameter-scale/heat-loss-parameter-scale.module.ts","./src/app/components/heat-pump-cost-estimation-params-form/heat-pump-cost-estimation-params-form.component.scss","./src/app/components/heat-pump-cost-estimation-params-form/heat-pump-cost-estimation-params-form.component.ts","./src/app/components/heat-pump-cost-estimation-params-form/heat-pump-cost-estimation-params-form.module.ts","./src/app/components/help-modal/help-modal.component.scss","./src/app/components/help-modal/help-modal.component.ts","./src/app/components/help-modal/help-modal.module.ts","./src/app/components/hp-journey-modal/hp-journey-modal.component.scss","./src/app/components/hp-journey-modal/hp-journey-modal.component.ts","./src/app/components/hp-journey-modal/hp-journey-modal.module.ts","./src/app/components/hp-journey-stepper/hp-journey-stepper.component.scss","./src/app/components/hp-journey-stepper/hp-journey-stepper.component.ts","./src/app/components/hp-journey-stepper/hp-journey-stepper.module.ts","./src/app/components/htc-card/htc-card.component.scss","./src/app/components/htc-card/htc-card.component.ts","./src/app/components/htc-card/htc-card.module.ts","./src/app/components/htc-full-info/htc-full-info.component.scss","./src/app/components/htc-full-info/htc-full-info.component.ts","./src/app/components/htc-full-info/htc-full-info.module.ts","./src/app/components/htc-modal/htc-modal.component.scss","./src/app/components/htc-modal/htc-modal.component.ts","./src/app/components/htc-modal/htc-modal.module.ts","./src/app/components/image-modal/image-modal.component.scss","./src/app/components/image-modal/image-modal.component.ts","./src/app/components/infographic-card/infographic-card.component.scss","./src/app/components/infographic-card/infographic-card.component.ts","./src/app/components/infographics/hpj-infographic/hpj-infographic.component.scss","./src/app/components/infographics/hpj-infographic/hpj-infographic.component.ts","./src/app/components/infographics/hpj-infographic/hpj-infographic.module.ts","./src/app/components/infographics/installer-journey-infographic/installer-journey-infographic.component.scss","./src/app/components/infographics/installer-journey-infographic/installer-journey-infographic.component.ts","./src/app/components/infographics/installer-journey-infographic/installer-journey-infographic.module.ts","./src/app/components/installer-card/installer-card.component.scss","./src/app/components/installer-card/installer-card.component.ts","./src/app/components/installer-card/installer-card.module.ts","./src/app/components/installer-invitation-modal/installer-invitation-modal.component.scss","./src/app/components/installer-invitation-modal/installer-invitation-modal.component.ts","./src/app/components/installer-invitation-modal/installer-invitation-modal.module.ts","./src/app/components/installer-register-form/installer-register-form.component.scss","./src/app/components/installer-register-form/installer-register-form.component.ts","./src/app/components/installer-register-form/installer-register-form.module.ts","./src/app/components/installer-support-modal/installer-support-modal.component.scss","./src/app/components/installer-support-modal/installer-support-modal.component.ts","./src/app/components/installer-support-modal/installer-support-modal.module.ts","./src/app/components/invitation-modal/invitation-modal.component.scss","./src/app/components/invitation-modal/invitation-modal.component.ts","./src/app/components/invitation-modal/invitation-modal.module.ts","./src/app/components/landing-banner/landing-banner.component.scss","./src/app/components/landing-banner/landing-banner.component.ts","./src/app/components/landing-carousel-card/landing-carousel-card.component.scss","./src/app/components/landing-carousel-card/landing-carousel-card.component.ts","./src/app/components/landing-carousel/landing-carousel.component.scss","./src/app/components/landing-carousel/landing-carousel.component.ts","./src/app/components/landing-communities-content/landing-communities-content.component.scss","./src/app/components/landing-communities-content/landing-communities-content.component.ts","./src/app/components/landing-community-layouts/left-horizontal-hero/left-horizontal-hero.component.scss","./src/app/components/landing-community-layouts/left-horizontal-hero/left-horizontal-hero.component.ts","./src/app/components/landing-community-layouts/left-vertical-hero/left-vertical-hero.component.scss","./src/app/components/landing-community-layouts/left-vertical-hero/left-vertical-hero.component.ts","./src/app/components/landing-community-layouts/right-horizontal-hero/right-horizontal-hero.component.scss","./src/app/components/landing-community-layouts/right-horizontal-hero/right-horizontal-hero.component.ts","./src/app/components/landing-searchbar/landing-searchbar.component.scss","./src/app/components/landing-searchbar/landing-searchbar.component.ts","./src/app/components/landing-searchbar/landing-searchbar.module.ts","./src/app/components/landing-sidebar/landing-sidebar.component.scss","./src/app/components/landing-sidebar/landing-sidebar.component.ts","./src/app/components/local-authority-register-form/local-authority-register-form.component.scss","./src/app/components/local-authority-register-form/local-authority-register-form.component.ts","./src/app/components/local-authority-register-form/local-authority-register-form.module.ts","./src/app/components/login-modal/login-modal.component.scss","./src/app/components/login-modal/login-modal.component.ts","./src/app/components/notification/notification.component.scss","./src/app/components/notification/notification.component.ts","./src/app/components/notification/notification.module.ts","./src/app/components/professional-account-side-menu/professional-account-side-menu.component.scss","./src/app/components/professional-account-side-menu/professional-account-side-menu.component.ts","./src/app/components/professional-account-side-menu/professional-account-side-menu.module.ts","./src/app/components/professional-register-stepper/professional-register-stepper.component.scss","./src/app/components/professional-register-stepper/professional-register-stepper.component.ts","./src/app/components/professional-register-stepper/professional-register-stepper.module.ts","./src/app/components/profile-modal/profile-modal.component.scss","./src/app/components/profile-modal/profile-modal.component.ts","./src/app/components/profile-modal/profile-modal.module.ts","./src/app/components/quote-modal/quote-modal.component.scss","./src/app/components/quote-modal/quote-modal.component.ts","./src/app/components/quote-modal/quote-modal.module.ts","./src/app/components/radiator-schematic-card/radiator-schematic-card.component.scss","./src/app/components/radiator-schematic-card/radiator-schematic-card.component.ts","./src/app/components/radiator-schematic-card/radiator-schematic-card.module.ts","./src/app/components/radiator-schematic-selector-modal/radiator-schematic-selector-modal.component.scss","./src/app/components/radiator-schematic-selector-modal/radiator-schematic-selector-modal.component.ts","./src/app/components/radiator-schematic-selector-modal/radiator-schematic-selector-modal.module.ts","./src/app/components/radiator-schematic/radiator-schematic.component.scss","./src/app/components/radiator-schematic/radiator-schematic.component.ts","./src/app/components/radiator-schematic/radiator-schematic.module.ts","./src/app/components/radiator-schematic/raditator-schematic.utils.ts","./src/app/components/related-faqs-sidebar/related-faqs-sidebar.component.scss","./src/app/components/related-faqs-sidebar/related-faqs-sidebar.component.ts","./src/app/components/resources-list-card/resources-list-card.component.scss","./src/app/components/resources-list-card/resources-list-card.component.ts","./src/app/components/resources-list-content/resources-list-content.component.scss","./src/app/components/resources-list-content/resources-list-content.component.ts","./src/app/components/response-modal/response-modal.component.scss","./src/app/components/response-modal/response-modal.component.ts","./src/app/components/response-modal/response-modal.module.ts","./src/app/components/schematic-tool/schematic-tool.component.scss","./src/app/components/schematic-tool/schematic-tool.component.ts","./src/app/components/schematic-tool/schematic-tool.module.ts","./src/app/components/schematics-homepage-status/schematics-homepage-status.component.scss","./src/app/components/schematics-homepage-status/schematics-homepage-status.component.ts","./src/app/components/schematics-homepage-status/schematics-homepage-status.module.ts","./src/app/components/scroll-progress-bar/scroll-progress-bar.component.scss","./src/app/components/scroll-progress-bar/scroll-progress-bar.component.ts","./src/app/components/setup-smart-meter-modal/setup-smart-meter-modal.component.scss","./src/app/components/setup-smart-meter-modal/setup-smart-meter-modal.component.ts","./src/app/components/setup-smart-meter-modal/setup-smart-meter-modal.module.ts","./src/app/components/setup-smart-meter/setup-smart-meter.component.scss","./src/app/components/setup-smart-meter/setup-smart-meter.component.ts","./src/app/components/setup-smart-meter/setup-smart-meter.module.ts","./src/app/components/side-bar/side-bar.component.scss","./src/app/components/side-bar/side-bar.component.ts","./src/app/components/sidebar-content-card/sidebar-content-card.component.scss","./src/app/components/sidebar-content-card/sidebar-content-card.component.ts","./src/app/components/sidebar-content-card/sidebar-content-card.module.ts","./src/app/components/social-media-buttons/social-media-buttons.component.scss","./src/app/components/social-media-buttons/social-media-buttons.component.ts","./src/app/components/spinner/spinner.component.scss","./src/app/components/spinner/spinner.component.ts","./src/app/components/spinner/spinner.module.ts","./src/app/components/star-rating/star-rating.component.scss","./src/app/components/star-rating/star-rating.component.ts","./src/app/components/star-rating/star-rating.module.ts","./src/app/components/stripe-card-form/stripe-card-form.component.scss","./src/app/components/stripe-card-form/stripe-card-form.component.ts","./src/app/components/stripe-card-form/stripe-card-form.module.ts","./src/app/components/success-modal/success-modal.component.scss","./src/app/components/success-modal/success-modal.component.ts","./src/app/components/success-modal/success-modal.module.ts","./src/app/components/system-incident-subscription-management/system-incident-subscription-management.component.scss","./src/app/components/system-incident-subscription-management/system-incident-subscription-management.component.ts","./src/app/components/system-incident-subscription-management/system-incident-subscription-management.module.ts","./src/app/components/system-incidents-content/system-incidents-content.component.scss","./src/app/components/system-incidents-content/system-incidents-content.component.ts","./src/app/components/system-incidents-mail-subscription-modal/system-incidents-mail-subscription-modal.component.scss","./src/app/components/system-incidents-mail-subscription-modal/system-incidents-mail-subscription-modal.component.ts","./src/app/components/tag/tag.component.scss","./src/app/components/tag/tag.component.ts","./src/app/components/tag/tag.module.ts","./src/app/components/temperature-sensor-data-table/temperature-sensor-data-table.component.scss","./src/app/components/temperature-sensor-data-table/temperature-sensor-data-table.component.ts","./src/app/components/temperature-sensor-data-table/temperature-sensor-data-table.module.ts","./src/app/components/terms-and-conditions/terms-and-conditions.component.scss","./src/app/components/terms-and-conditions/terms-and-conditions.component.ts","./src/app/components/termsconditions-modal/termsconditions-modal.component.scss","./src/app/components/termsconditions-modal/termsconditions-modal.component.ts","./src/app/components/tutorial-card/tutorial-card.component.scss","./src/app/components/tutorial-card/tutorial-card.component.ts","./src/app/components/tutorial-content/tutorial-content.component.scss","./src/app/components/tutorial-content/tutorial-content.component.ts","./src/app/components/user-story-card/user-story-card.component.scss","./src/app/components/user-story-card/user-story-card.component.ts","./src/app/components/user-story-detailed-content/user-story-detailed-content.component.scss","./src/app/components/user-story-detailed-content/user-story-detailed-content.component.ts","./src/app/guards/heat-pump-cs-form.guard.ts","./src/app/pages-professional/account-pages/account-pages.component.scss","./src/app/pages-professional/account-pages/account-pages.component.ts","./src/app/pages-professional/account-pages/account-pages.module.ts","./src/app/pages-professional/account-pages/invitations/invitations.component.scss","./src/app/pages-professional/account-pages/invitations/invitations.component.ts","./src/app/pages-professional/account-pages/invitations/invitations.module.ts","./src/app/pages-professional/account-pages/invitations/received-invitations/received-invitations.component.scss","./src/app/pages-professional/account-pages/invitations/received-invitations/received-invitations.component.ts","./src/app/pages-professional/account-pages/invitations/received-invitations/received-invitations.module.ts","./src/app/pages-professional/account-pages/invitations/sent-invitations/sent-invitations.component.scss","./src/app/pages-professional/account-pages/invitations/sent-invitations/sent-invitations.component.ts","./src/app/pages-professional/account-pages/invitations/sent-invitations/sent-invitations.module.ts","./src/app/pages-professional/account-pages/notifications/all-notifications/all-notifications.component.scss","./src/app/pages-professional/account-pages/notifications/all-notifications/all-notifications.component.ts","./src/app/pages-professional/account-pages/notifications/all-notifications/all-notifications.module.ts","./src/app/pages-professional/account-pages/notifications/notifications.component.scss","./src/app/pages-professional/account-pages/notifications/notifications.component.ts","./src/app/pages-professional/account-pages/notifications/notifications.module.ts","./src/app/pages-professional/account-pages/professional-settings/personal-details/personal-details.component.scss","./src/app/pages-professional/account-pages/professional-settings/personal-details/personal-details.component.ts","./src/app/pages-professional/account-pages/professional-settings/personal-details/personal-details.module.ts","./src/app/pages-professional/account-pages/professional-settings/professional-settings.component.scss","./src/app/pages-professional/account-pages/professional-settings/professional-settings.component.ts","./src/app/pages-professional/account-pages/professional-settings/professional-settings.module.ts","./src/app/pages-professional/account-pages/professional-settings/profile/profile.component.scss","./src/app/pages-professional/account-pages/professional-settings/profile/profile.component.ts","./src/app/pages-professional/account-pages/professional-settings/profile/profile.module.ts","./src/app/pages-professional/landing/landing.component.scss","./src/app/pages-professional/landing/landing.component.ts","./src/app/pages-professional/landing/landing.module.ts","./src/app/pages-professional/pages-professional.component.scss","./src/app/pages-professional/pages-professional.component.ts","./src/app/pages-professional/pages-professional.module.ts","./src/app/pages-professional/pages-professional.routing.ts","./src/app/pages-professional/property/home-energy-data/home-energy-data.component.scss","./src/app/pages-professional/property/home-energy-data/home-energy-data.component.ts","./src/app/pages-professional/property/home-energy-data/home-energy-data.module.ts","./src/app/pages-professional/property/property.component.scss","./src/app/pages-professional/property/property.component.ts","./src/app/pages-professional/property/property.module.ts","./src/app/pages-professional/property/quotes/quotes.component.scss","./src/app/pages-professional/property/quotes/quotes.component.ts","./src/app/pages-professional/property/quotes/quotes.module.ts","./src/app/pages/account-pages/account-pages.component.scss","./src/app/pages/account-pages/account-pages.component.ts","./src/app/pages/account-pages/account-pages.module.ts","./src/app/pages/bookmarks/bookmarks.component.scss","./src/app/pages/bookmarks/bookmarks.component.ts","./src/app/pages/bookmarks/bookmarks.module.ts","./src/app/pages/case-study-account-page/case-study-account-page.component.scss","./src/app/pages/case-study-account-page/case-study-account-page.component.ts","./src/app/pages/case-study-account-page/case-study-account-page.module.ts","./src/app/pages/case-study-account-page/heat-pump-case-study-account/heat-pump-case-study-account.component.scss","./src/app/pages/case-study-account-page/heat-pump-case-study-account/heat-pump-case-study-account.component.ts","./src/app/pages/case-study-account-page/heat-pump-case-study-account/heat-pump-case-study-account.module.ts","./src/app/pages/case-study-creator-tool/case-study-creator-tool.component.scss","./src/app/pages/case-study-creator-tool/case-study-creator-tool.component.ts","./src/app/pages/case-study-creator-tool/case-study-creator-tool.module.ts","./src/app/pages/case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.component.scss","./src/app/pages/case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.component.ts","./src/app/pages/case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.module.ts","./src/app/pages/case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.routing.ts","./src/app/pages/energy-data/energy-data.component.scss","./src/app/pages/energy-data/energy-data.component.ts","./src/app/pages/energy-data/energy-data.module.ts","./src/app/pages/energy-overview/energy-overview.component.scss","./src/app/pages/energy-overview/energy-overview.component.ts","./src/app/pages/energy-overview/energy-overview.module.ts","./src/app/pages/energy-overview/tariff/tariff.component.scss","./src/app/pages/energy-overview/tariff/tariff.component.ts","./src/app/pages/energy-overview/tariff/tariff.module.ts","./src/app/pages/general-attributes/building-fabric/building-fabric.component.scss","./src/app/pages/general-attributes/building-fabric/building-fabric.component.ts","./src/app/pages/general-attributes/building-fabric/building-fabric.module.ts","./src/app/pages/general-attributes/general-attributes.component.scss","./src/app/pages/general-attributes/general-attributes.component.ts","./src/app/pages/general-attributes/general-attributes.module.ts","./src/app/pages/general-attributes/general/general.component.scss","./src/app/pages/general-attributes/general/general.component.ts","./src/app/pages/general-attributes/general/general.module.ts","./src/app/pages/heat-pump-cost-estimation-tool/heat-pump-cost-estimation-tool.component.scss","./src/app/pages/heat-pump-cost-estimation-tool/heat-pump-cost-estimation-tool.component.ts","./src/app/pages/heat-pump-cost-estimation-tool/heat-pump-cost-estimation-tool.module.ts","./src/app/pages/heat-pump-journey/heat-pump-journey.component.scss","./src/app/pages/heat-pump-journey/heat-pump-journey.component.ts","./src/app/pages/heat-pump-journey/heat-pump-journey.module.ts","./src/app/pages/heating-system/heating-by-room/heating-by-room.component.scss","./src/app/pages/heating-system/heating-by-room/heating-by-room.component.ts","./src/app/pages/heating-system/heating-by-room/heating-by-room.module.ts","./src/app/pages/heating-system/heating-system.component.scss","./src/app/pages/heating-system/heating-system.component.ts","./src/app/pages/heating-system/heating-system.module.ts","./src/app/pages/htc/htc.component.scss","./src/app/pages/htc/htc.component.ts","./src/app/pages/htc/htc.module.ts","./src/app/pages/invitations/invitations.component.scss","./src/app/pages/invitations/invitations.component.ts","./src/app/pages/invitations/invitations.module.ts","./src/app/pages/invitations/received-invitations/received-invitations.component.scss","./src/app/pages/invitations/received-invitations/received-invitations.component.ts","./src/app/pages/invitations/received-invitations/received-invitations.module.ts","./src/app/pages/invitations/sent-invitations/sent-invitations.component.scss","./src/app/pages/invitations/sent-invitations/sent-invitations.component.ts","./src/app/pages/invitations/sent-invitations/sent-invitations.module.ts","./src/app/pages/notifications/all-notifications/all-notifications.component.scss","./src/app/pages/notifications/all-notifications/all-notifications.component.ts","./src/app/pages/notifications/all-notifications/all-notifications.module.ts","./src/app/pages/notifications/notifications.component.scss","./src/app/pages/notifications/notifications.component.ts","./src/app/pages/notifications/notifications.module.ts","./src/app/pages/pages.component.scss","./src/app/pages/pages.component.ts","./src/app/pages/pages.module.ts","./src/app/pages/pages.routing.ts","./src/app/pages/property-pages/property-pages.component.scss","./src/app/pages/property-pages/property-pages.component.ts","./src/app/pages/property-pages/property-pages.module.ts","./src/app/pages/property-passport/property-passport.component.scss","./src/app/pages/property-passport/property-passport.component.ts","./src/app/pages/property-passport/property-passport.module.ts","./src/app/pages/schematics/schematics.component.scss","./src/app/pages/schematics/schematics.component.ts","./src/app/pages/schematics/schematics.module.ts","./src/app/pages/schematics/schematics.routing.ts","./src/app/pages/settings/account-settings/account-settings.component.scss","./src/app/pages/settings/account-settings/account-settings.component.ts","./src/app/pages/settings/account-settings/account-settings.module.ts","./src/app/pages/settings/settings.component.scss","./src/app/pages/settings/settings.component.ts","./src/app/pages/settings/settings.module.ts","./src/app/pages/settings/sites/sites.component.scss","./src/app/pages/settings/sites/sites.component.ts","./src/app/pages/settings/sites/sites.module.ts","./src/app/pages/settings/subscriptions/subscriptions.component.scss","./src/app/pages/settings/subscriptions/subscriptions.component.ts","./src/app/pages/settings/subscriptions/subscriptions.module.ts","./src/app/pages/temperature-sensors/temperature-sensors.component.scss","./src/app/pages/temperature-sensors/temperature-sensors.component.ts","./src/app/pages/temperature-sensors/temperature-sensors.module.ts","./src/app/pages/tools-pages/tools-pages.component.scss","./src/app/pages/tools-pages/tools-pages.component.ts","./src/app/pages/tools-pages/tools-pages.module.ts","./src/app/public/about-community/about-community.component.scss","./src/app/public/about-community/about-community.component.ts","./src/app/public/about-us/about-us.component.scss","./src/app/public/about-us/about-us.component.ts","./src/app/public/article/article.component.scss","./src/app/public/article/article.component.ts","./src/app/public/blog/blog.component.scss","./src/app/public/blog/blog.component.ts","./src/app/public/bright/bright.component.scss","./src/app/public/bright/bright.component.ts","./src/app/public/case-studies-landing/case-studies-landing.component.scss","./src/app/public/case-studies-landing/case-studies-landing.component.ts","./src/app/public/community-home/community-home.component.scss","./src/app/public/community-home/community-home.component.ts","./src/app/public/contact-us/contact-us.component.scss","./src/app/public/contact-us/contact-us.component.ts","./src/app/public/delight-event-participation/delight-event-participation.component.scss","./src/app/public/delight-event-participation/delight-event-participation.component.ts","./src/app/public/faq-detailed/faq-detailed.component.scss","./src/app/public/faq-detailed/faq-detailed.component.ts","./src/app/public/faq-topic/faqs-topic.component.scss","./src/app/public/faq-topic/faqs-topic.component.ts","./src/app/public/faqs-landing/faqs-landing.component.scss","./src/app/public/faqs-landing/faqs-landing.component.ts","./src/app/public/find-a-professional/find-a-professional.component.scss","./src/app/public/find-a-professional/find-a-professional.component.ts","./src/app/public/find-a-professional/find-a-professional.module.ts","./src/app/public/generate-password-token/generate-password-token.component.scss","./src/app/public/generate-password-token/generate-password-token.component.ts","./src/app/public/glossary/glossary.component.scss","./src/app/public/glossary/glossary.component.ts","./src/app/public/infographic/infographic.component.scss","./src/app/public/infographic/infographic.component.ts","./src/app/public/infographic/infographic.module.ts","./src/app/public/installer-page/installer-page.component.scss","./src/app/public/installer-page/installer-page.component.ts","./src/app/public/installer-page/installer-page.module.ts","./src/app/public/landing/landing.component.scss","./src/app/public/landing/landing.component.ts","./src/app/public/login/login.component.scss","./src/app/public/login/login.component.ts","./src/app/public/not-found-page/not-found-page.component.scss","./src/app/public/not-found-page/not-found-page.component.ts","./src/app/public/not-found-page/not-found-page.module.ts","./src/app/public/privacy-policy/privacy-policy.component.scss","./src/app/public/privacy-policy/privacy-policy.component.ts","./src/app/public/professional-register-form/professional-register-form.component.scss","./src/app/public/professional-register-form/professional-register-form.component.ts","./src/app/public/professional-register-form/professional-register-form.module.ts","./src/app/public/professionals-register/professionals-register.component.scss","./src/app/public/professionals-register/professionals-register.component.ts","./src/app/public/public-components.scss","./src/app/public/public.module.ts","./src/app/public/register/register-home/register-home.component.scss","./src/app/public/register/register-home/register-home.component.ts","./src/app/public/register/register-home/register-home.module.ts","./src/app/public/register/register.component.scss","./src/app/public/register/register.component.ts","./src/app/public/reset-password/reset-password.component.scss","./src/app/public/reset-password/reset-password.component.ts","./src/app/public/resources-list/resources-list.component.scss","./src/app/public/resources-list/resources-list.component.ts","./src/app/public/search-results/search-results.component.scss","./src/app/public/search-results/search-results.component.ts","./src/app/public/successful-register/successful-register.component.scss","./src/app/public/successful-register/successful-register.component.ts","./src/app/public/successful-register/successful-register.module.ts","./src/app/public/tag-page/tag-page.component.scss","./src/app/public/tag-page/tag-page.component.ts","./src/app/public/top-glossary-terms/top-glossary-terms.component.scss","./src/app/public/top-glossary-terms/top-glossary-terms.component.ts","./src/app/public/tutorial/tutorial.component.scss","./src/app/public/tutorial/tutorial.component.ts","./src/app/public/unsubscribe-page/unsubscribe-page.component.scss","./src/app/public/unsubscribe-page/unsubscribe-page.component.ts","./src/app/public/user-story-detailed/user-story-detailed.component.scss","./src/app/public/user-story-detailed/user-story-detailed.component.ts","./src/app/public/verify-email/verify-email.component.scss","./src/app/public/verify-email/verify-email.component.ts","./src/app/services/app-config.service.ts","./src/app/services/app-privileges.service.ts","./src/app/services/auth-guard.service.ts","./src/app/services/authentication.service.ts","./src/app/services/cache.service.ts","./src/app/services/case-study-form.service.ts","./src/app/services/case-study.service.ts","./src/app/services/configuration.service.ts","./src/app/services/content.service.ts","./src/app/services/custom-ui-config.service.ts","./src/app/services/data.service.ts","./src/app/services/date-format.service.ts","./src/app/services/error-handler.service.ts","./src/app/services/event.service.ts","./src/app/services/faqs.service.ts","./src/app/services/form-validation.service.ts","./src/app/services/form.guard.ts","./src/app/services/glow-config.service.ts","./src/app/services/glow.module.ts","./src/app/services/glow.service.ts","./src/app/services/glow.typings.ts","./src/app/services/heating-system.service.ts","./src/app/services/hp-journey.service.ts","./src/app/services/invitations.service.ts","./src/app/services/json-ld.service.ts","./src/app/services/landing.service.ts","./src/app/services/meta-tags.service.ts","./src/app/services/meter-point-verification-consent-management.service.ts","./src/app/services/oidc-auth-guard.service.ts","./src/app/services/pdf.service.ts","./src/app/services/picard.service.ts","./src/app/services/postcode-checker.service.ts","./src/app/services/professional-glow.service.ts","./src/app/services/schematics.service.ts","./src/app/services/search.service.ts","./src/app/services/seo.service.ts","./src/app/services/service-agent.service.ts","./src/app/services/service-selector.service.ts","./src/app/services/statehandler-processor.service.ts","./src/app/services/statehandler.service.ts","./src/app/services/stats-service.ts","./src/app/services/storage.service.ts","./src/app/services/strapi.service.ts","./src/app/services/tariff.service.ts","./src/app/services/termsconditions.service.ts","./src/app/services/user-validators.ts","./src/app/services/usergroup-selector.service.ts","./src/app/services/virtual-entity-group.service.ts","./src/app/services/virtual-entity.service.ts","./src/app/shared/ng2-smart-table/custom-date-editor.component.ts","./src/app/shared/ng2-smart-table/custom-download-button.ts","./src/app/shared/ng2-smart-table/custom-group-tag-buttons.ts","./src/app/shared/ng2-smart-table/custom-number-children.ts","./src/app/shared/ng2-smart-table/custom-number-digits.ts","./src/app/shared/ng2-smart-table/custom-property-attribute-buttons.ts","./src/app/shared/ng2-smart-table/custom-tickbox-icon.ts","./src/app/shared/ng2-smart-table/custom-view-property-button.ts","./src/app/shared/pipes/absolute-pipe.ts","./src/app/shared/pipes/date-sort-pipe.ts","./src/app/shared/pipes/obj-to-key.pipe.ts","./src/app/shared/pipes/pipes.module.ts","./src/app/shared/pipes/range-pipe.ts","./src/app/shared/pipes/reverse-array.pipe.ts","./src/app/shared/pipes/sanitise-html.pipe.ts","./src/app/shared/pipes/sanitise-url.pipe.ts","./src/app/shared/pipes/typeof.pipe.ts","./src/app/shared/shared.module.ts","./src/environments/environment.ts","./src/main.ts","./src/utils.ts"],"names":[],"mappings":";;;;;;;;;;AAAa;AACb;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D;AACA,mCAAmC,mBAAO,CAAC,2DAAY;AACvD,iBAAiB,mBAAO,CAAC,mEAAgB;AACzC;AACA;AACA;AACA,sCAAsC,WAAW,IAAI,IAAI;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,WAAW,IAAI,IAAI;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,YAAY,aAAa,KAAK;AAC1G;AACA;AACA;AACA,2EAA2E,kBAAkB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,GAAG,aAAa,kBAAkB;AAC5H;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA,kC;;;;;;;;;;;;ACvFa;AACb,8CAA8C,cAAc;AAC5D;AACA,iBAAiB,mBAAO,CAAC,mEAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kC;;;;;;;;;;;;ACjBa;AACb;AACA;AACA;AACA;AACA,cAAc,oCAAoC,aAAa,EAAE;AACjE;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D;AACA,aAAa,mBAAO,CAAC,uDAAU;AAC/B,aAAa,mBAAO,CAAC,uDAAU;AAC/B,iBAAiB,mBAAO,CAAC,2DAAY;AACrC,4CAA4C,qCAAqC,4CAA4C,EAAE,EAAE;AACjI,aAAa,mBAAO,CAAC,qDAAS;AAC9B,aAAa,mBAAO,CAAC,uDAAU;AAC/B,aAAa,mBAAO,CAAC,+DAAc;AACnC,aAAa,mBAAO,CAAC,iEAAe;AACpC,iC;;;;;;;;;;;;AC5Ba;AACb,8CAA8C,cAAc;AAC5D,iBAAiB,mBAAO,CAAC,mEAAgB;AACzC,iBAAiB,mBAAO,CAAC,uDAAU;AACnC,qBAAqB,mBAAO,CAAC,+DAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;;;;;;AC9Da;AACb;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D;AACA,iBAAiB,mBAAO,CAAC,uDAAU;AACnC,mCAAmC,mBAAO,CAAC,2DAAY;AACvD,gBAAgB,mBAAO,CAAC,qDAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe,YAAY,WAAW;AACzD;AACA,6DAA6D,2BAA2B,sCAAsC,oBAAoB,sBAAsB,4BAA4B,yBAAyB,qBAAqB,GAAG;AACrP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,kC;;;;;;;;;;;;AC9Ea;AACb;AACA,4CAA4C;AAC5C;AACA,8CAA8C,cAAc;AAC5D;AACA,mBAAmB,mBAAO,CAAC,4EAAU;AACrC,gBAAgB,mBAAO,CAAC,qDAAS;AACjC,iBAAiB,mBAAO,CAAC,mEAAgB;AACzC,iCAAiC,mBAAO,CAAC,mEAAgB;AACzD,oBAAoB,mBAAO,CAAC,yEAAmB;AAC/C,iBAAiB,mBAAO,CAAC,mEAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY,4GAA4G,EAAE;AAC9J;AACA;AACA,oCAAoC,YAAY,4GAA4G,EAAE;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,aAAa,yEAAyE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,wGAAwG;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA,YAAY,kDAAkD,KAAK;AACnE;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;;;;;;;AClYa;AACb,8CAA8C,cAAc;AAC5D;AACA,gBAAgB,mBAAO,CAAC,2DAAS;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,uDAAuD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,6DAA6D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;;;;;;;AC7Ka;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;;;;;;AC1Fa;AACb,8CAA8C,cAAc;AAC5D;AACA,gBAAgB,mBAAO,CAAC,sDAAU;AAClC,iBAAiB,mBAAO,CAAC,6DAAU;AACnC;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kC;;;;;;;;;;;;ACxHa;AACb;AACA;AACA;AACA;AACA,cAAc,oCAAoC,aAAa,EAAE;AACjE;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,aAAa,mBAAO,CAAC,mEAAa;AAClC,aAAa,mBAAO,CAAC,6DAAU;AAC/B,aAAa,mBAAO,CAAC,6DAAU;AAC/B,aAAa,mBAAO,CAAC,6DAAU;A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","file":"main.04d62adb173bb49eee7f.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = exports.decode = exports.EncodeError = exports.DecodeError = exports.HEADER_SIZE = void 0;\nconst resource_1 = __importDefault(require(\"./resource\"));\nconst binary_1 = require(\"./utils/binary\");\nexports.HEADER_SIZE = 28;\nclass DecodeError extends Error {\n constructor(resourceId, msg) {\n super(`Error while decoding ${resourceId}: ${msg}`);\n Object.setPrototypeOf(this, DecodeError.prototype);\n }\n}\nexports.DecodeError = DecodeError;\nclass EncodeError extends Error {\n constructor(resourceId, msg) {\n super(`Error while encoding ${resourceId}: ${msg}`);\n Object.setPrototypeOf(this, EncodeError.prototype);\n }\n}\nexports.EncodeError = EncodeError;\n/**\n * Decode a Picard resource binary from provided ArrayBuffer\n * @param resourceId Resource Id used to check if the decoded binary is correct\n * @param arrayBuffer ArrayBuffer to decode\n * @returns Decoded resource\n */\nfunction decode(resourceId, arrayBuffer) {\n if (arrayBuffer.byteLength < exports.HEADER_SIZE) {\n throw new DecodeError(resourceId, \"Binary file is missing header\");\n }\n const dataView = new DataView(arrayBuffer);\n // Check magic number first\n const magicNumber = dataView.getUint8(0);\n if (magicNumber !== 0x1f) {\n throw new DecodeError(resourceId, `Magic Number is wrong. Decoded ${magicNumber}, expected ${0x1f}`);\n }\n const decodedResourceId = (0, binary_1.decodeResourceId)(dataView);\n if (decodedResourceId !== resourceId) {\n throw new DecodeError(resourceId, `Decoded incorrect resourceId, ${decodedResourceId}`);\n }\n const classifier = (0, binary_1.decodeClassifier)(dataView);\n const interval = dataView.getInt32(18) * 1000;\n const startTime = dataView.getInt32(22) * 1000;\n const dataType = (0, binary_1.decodeDataType)(dataView);\n // Remaining data represents the data array\n const binaryData = arrayBuffer.slice(exports.HEADER_SIZE, arrayBuffer.byteLength);\n // Construct the resource from attributes and data\n return new resource_1.default(resourceId, classifier, interval, startTime, dataType, binaryData);\n}\nexports.decode = decode;\n/**\n * Encode a resource into the Picard resource binary format\n * @param resource Resource to encode\n * @returns ArrayBuffer with encoded binary data\n */\nfunction encode(resource) {\n // Retrieve the data type of the resource's data\n const dataType = resource.dataType;\n // Allocate space\n const dataBuffer = new ArrayBuffer(exports.HEADER_SIZE + resource.count * dataType.bytes);\n const dataView = new DataView(dataBuffer);\n // Set magic number\n dataView.setUint8(0, 0x1f);\n (0, binary_1.encodeResourceId)(dataView, resource.resourceId);\n (0, binary_1.encodeClassifier)(dataView, resource.classifier);\n dataView.setInt32(18, resource.interval / 1000);\n dataView.setInt32(22, resource.startTime / 1000);\n dataView.setUint8(26, dataType.bytes); // TODO: Not currently used\n (0, binary_1.encodeDataType)(dataView, dataType);\n // Create an offset view for encoding points\n const readingsDataView = new DataView(dataBuffer, exports.HEADER_SIZE);\n const points = resource.points();\n // Perform extra checks to ensure that data is sequential and in order\n let expectedTimestamp = resource.firstReadingTime;\n for (const [i, [ts, value]] of points.entries()) {\n if (ts !== expectedTimestamp) {\n throw new EncodeError(resource.resourceId, `Unexpected timestamp. Encoding: ${ts} Expected: ${expectedTimestamp}`);\n }\n (0, binary_1.encodeReading)(readingsDataView, dataType, i, value); // Encode nulls as 0\n expectedTimestamp += resource.interval;\n }\n return dataBuffer;\n}\nexports.encode = encode;\n//# sourceMappingURL=binary.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.carbonRegionResourceId = void 0;\nconst string_1 = require(\"./utils/string\");\n/**\n * Construct the resourceId for selected carbon data\n * @param carbonRegion Region code\n * @param carbonMix Mix (select energy source)\n * @returns resourceId for selected carbon data\n */\nfunction carbonRegionResourceId(carbonRegion, carbonMix) {\n return (\"20211101-a1a1-0001-\" +\n (0, string_1.padStart)(carbonRegion.toString(16), 4, \"0\") +\n \"-\" +\n (0, string_1.padStart)(carbonMix.toString(16), 12, \"0\"));\n}\nexports.carbonRegionResourceId = carbonRegionResourceId;\n//# sourceMappingURL=carbon.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Resource = void 0;\n__exportStar(require(\"./binary\"), exports);\n__exportStar(require(\"./carbon\"), exports);\nvar resource_1 = require(\"./resource\");\nObject.defineProperty(exports, \"Resource\", { enumerable: true, get: function () { return __importDefault(resource_1).default; } });\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./server\"), exports);\n__exportStar(require(\"./timeseries\"), exports);\n__exportStar(require(\"./utils/index\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst object_1 = require(\"./utils/object\");\nconst binary_1 = require(\"./binary\");\nconst timeseries_1 = require(\"./timeseries\");\n/**\n * Resources can be saved as Picard binaries and must have a startTime, classifier and fixed interval\n */\nclass Resource extends timeseries_1.Timeseries {\n /**\n * Create an instance of Resource\n * @param resourceId Resource Id\n * @param classifier Data classifier\n * @param interval Fixed interval\n * @param startTime Time of first reading\n * @param dataType DataType to encode readings\n * @param data ArrayBuffer or JavaScript array\n */\n constructor(resourceId, classifier, interval, startTime, dataType, data = []) {\n // Determine the provided data length and timestamps\n const length = (0, object_1.isArrayBuffer)(data)\n ? data.byteLength / dataType.bytes\n : data.length;\n const timestamps = [];\n for (let i = 0; i < length; i++) {\n timestamps.push(startTime + interval * i);\n }\n // Initialise Timeseries with single Series\n super(timestamps, [new timeseries_1.Series(resourceId, dataType, data)], interval);\n this.classifier = classifier;\n this.startTime = startTime;\n this.resourceId = resourceId;\n this.classifier = classifier;\n }\n /**\n * Change the Resource's Timeseries data\n * @param timestamps New list of timestamps\n * @param series New series\n */\n updateTimeseries(timestamps, series) {\n this._init(timestamps, [series]);\n }\n get interval() {\n if (this._interval === null) {\n throw new Error(\"Resource should have fixed interval\");\n }\n return this._interval;\n }\n get dataType() {\n return this.series().dataType;\n }\n get endTime() {\n return this.startTime + this.count * this.interval;\n }\n static fromArrayBuffer(resourceId, arrayBuffer) {\n return (0, binary_1.decode)(resourceId, arrayBuffer);\n }\n toArrayBuffer() {\n return (0, binary_1.encode)(this);\n }\n}\nexports.default = Resource;\n//# sourceMappingURL=resource.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadAndApplyCarbon = exports.loadCarbon = exports.loadResource = exports.useConfig = void 0;\nconst carbon_1 = require(\"./carbon\");\nconst resource_1 = __importDefault(require(\"./resource\"));\nconst types_1 = require(\"./types\");\nlet config = {\n baseURL: \"\",\n};\n/**\n * Set the global Config object to use for API calls\n * @param newConfig Config object\n */\nfunction useConfig(newConfig) {\n config = newConfig;\n}\nexports.useConfig = useConfig;\n/**\n * Fetch a Resource\n * @param resourceId Resource identifier\n * @returns Resource\n */\nfunction loadResource(resourceId) {\n const url = `${config.baseURL}/resource/${resourceId}/glowbinary`;\n return fetch(url, {\n headers: Object.assign(Object.assign(Object.assign({}, config.applicationId && { applicationId: config.applicationId }), config.token && { token: config.token }), config.basicAuthKeys && { Authorization: `Basic ${config.basicAuthKeys}` }),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.arrayBuffer();\n }\n else {\n throw response;\n }\n })\n .then((response) => {\n return resource_1.default.fromArrayBuffer(resourceId, response);\n });\n}\nexports.loadResource = loadResource;\n/**\n * Fetch the specified carbon resource\n * @param carbonRegion Region code\n * @param carbonMix Mix (select energy source)\n * @returns Resource with carbon data\n */\nfunction loadCarbon(carbonRegion, carbonMix = types_1.CarbonMix.INTENSITY) {\n return loadResource((0, carbon_1.carbonRegionResourceId)(carbonRegion, carbonMix));\n}\nexports.loadCarbon = loadCarbon;\n/**\n * Fetch and immediately apply specified carbon to a resource\n * @param carbonRegion Region code\n * @param carbonMix Mix (select energy source)\n * @returns Resource with carbon data\n */\nfunction loadAndApplyCarbon(existingResource, carbonRegion, carbonMix = types_1.CarbonMix.INTENSITY) {\n return __awaiter(this, void 0, void 0, function* () {\n const carbon = yield loadCarbon(carbonRegion, carbonMix);\n return existingResource.apply({\n baseline: carbon,\n func: types_1.ApplyFunction.MULTIPLY,\n });\n });\n}\nexports.loadAndApplyCarbon = loadAndApplyCarbon;\n//# sourceMappingURL=server.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Timeseries = exports.TimeseriesInitialisationError = exports.WindowError = exports.Series = void 0;\nconst date_fns_1 = require(\"date-fns\");\nconst types_1 = require(\"./types\");\nconst binary_1 = require(\"./utils/binary\");\nconst search_1 = __importDefault(require(\"./utils/search\"));\nconst aggregate_1 = require(\"./utils/aggregate\");\nconst object_1 = require(\"./utils/object\");\nclass Series {\n constructor(id, dataType, data, length, offset = 0, attributes) {\n this.id = id;\n this.dataType = dataType;\n this.offset = offset;\n this.attributes = attributes;\n if (data !== undefined) {\n // Create DataView from data\n if ((0, object_1.isDataView)(data)) {\n this.dataView = data;\n }\n else if ((0, object_1.isArrayBuffer)(data)) {\n this.dataView = new DataView(data);\n }\n else if (Array.isArray(data)) {\n this.dataView = new DataView(new ArrayBuffer(data.length * this.dataType.bytes));\n this.length = this.offset + this.dataViewLength;\n this.fromArray(data, this.offset);\n }\n else {\n this.dataView = new DataView(new ArrayBuffer(data * this.dataType.bytes));\n for (let i = 0; i < data; i++) {\n (0, binary_1.encodeReading)(this.dataView, this.dataType, i, null);\n }\n }\n if (attributes) {\n this.attributes = attributes;\n }\n }\n // Length can be longer than the dataView and offset\n this.length = length !== null && length !== void 0 ? length : this.offset + this.dataViewLength;\n }\n get dataViewLength() {\n if (this.dataView === undefined) {\n return 0;\n }\n return this.dataView.byteLength / this.dataType.bytes;\n }\n extend(length, offset) {\n // Return extended series with nulls\n if (length - offset < this.dataViewLength) {\n throw new Error(\"Trying to shrink series\");\n }\n // console.log(this.attributes)\n return new Series(this.id, this.dataType, this.dataView, length, offset, this.attributes);\n }\n asArray() {\n if (this.dataView === undefined) {\n return [];\n }\n let result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(this.get(i));\n }\n return result;\n }\n fromArray(data, offset = 0) {\n if (this.dataView === undefined) {\n throw RangeError(\"DataView is undefined\");\n }\n if (this.length < data.length + offset) {\n throw RangeError(\"Data array too large\");\n }\n this.offset = offset;\n for (let j = 0; j < data.length; j++) {\n (0, binary_1.encodeReading)(this.dataView, this.dataType, j, data[j]);\n }\n }\n set(index, value) {\n if (this.dataView === undefined) {\n throw RangeError(\"DataView is undefined\");\n }\n (0, binary_1.encodeReading)(this.dataView, this.dataType, index - this.offset, value);\n }\n get(index) {\n if (this.dataView === undefined) {\n throw RangeError(\"Series is empty\");\n }\n index -= this.offset;\n if (index < 0) {\n return null;\n }\n if (index >= this.dataViewLength) {\n return null;\n }\n return (0, binary_1.decodeReading)(this.dataView, this.dataType, index);\n }\n slice(begin, end) {\n if (this.dataView === undefined) {\n throw RangeError(\"Series is empty\");\n }\n begin = Math.max(begin - this.offset, 0);\n let offset = Math.max(this.offset - begin, 0);\n end = Math.min(end - this.offset, this.dataViewLength);\n let length = end - begin;\n return new Series(this.id, this.dataType, this.dataView.buffer.slice(begin * this.dataType.bytes, (end + 1) * this.dataType.bytes), length, offset, this.attributes);\n }\n nzmin() {\n return (0, aggregate_1.nzmin)(this.asArray());\n }\n min() {\n return (0, aggregate_1.min)(this.asArray());\n }\n max() {\n return (0, aggregate_1.max)(this.asArray());\n }\n sum() {\n return (0, aggregate_1.sum)(this.asArray());\n }\n mean() {\n return (0, aggregate_1.mean)(this.asArray());\n }\n median() {\n return (0, aggregate_1.median)(this.asArray());\n }\n stddev() {\n return (0, aggregate_1.standardDeviation)(this.asArray());\n }\n var() {\n return (0, aggregate_1.variance)(this.asArray());\n }\n}\nexports.Series = Series;\nclass WindowError extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, WindowError.prototype);\n }\n}\nexports.WindowError = WindowError;\nclass TimeseriesInitialisationError extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, TimeseriesInitialisationError.prototype);\n }\n}\nexports.TimeseriesInitialisationError = TimeseriesInitialisationError;\nfunction findFirstLastTimeAndInterval(timeseries) {\n const interval = timeseries[0].interval;\n if (interval === null) {\n throw new TimeseriesInitialisationError(\"Timeseries with unfixed intervals are not supported\");\n }\n let earliest = Infinity;\n let latest = 0;\n for (const ts of timeseries) {\n if (ts.interval !== interval) {\n throw new TimeseriesInitialisationError(\"Timeseries have mismatching intervals\");\n }\n if ((ts.firstReadingTime - earliest) % interval) {\n throw new TimeseriesInitialisationError(\"Intervals are not aligned\");\n }\n earliest = Math.min(earliest, ts.firstReadingTime);\n latest = Math.max(latest, ts.lastReadingTime);\n }\n return [earliest, latest, interval];\n}\nclass Timeseries {\n static combine(...timeseries) {\n const [firstTime, lastTime, interval] = findFirstLastTimeAndInterval(timeseries);\n const timestamps = [];\n let timestamp = firstTime;\n while (timestamp <= lastTime) {\n timestamps.push(timestamp);\n timestamp += interval;\n }\n const records = timeseries.map((member) => {\n return member\n .series()\n .extend(timestamps.length, (member.firstReadingTime - firstTime) / interval);\n });\n return new Timeseries(timestamps, records, interval);\n }\n get interval() {\n return this._interval;\n }\n constructor(timestamps, data, _interval = null) {\n this._interval = _interval;\n this.columns = new Map();\n this.timestamps = [];\n this._init(timestamps, data);\n }\n _init(timestamps, data) {\n this.timestamps = timestamps;\n for (const d of data) {\n this.columns.set(d.id, d);\n }\n if (this.columns.size !== data.length) {\n console.warn(\"Duplicate series id\");\n }\n }\n get firstReadingTime() {\n if (this.count == 0) {\n return 0;\n }\n return this.timestamps[0];\n }\n get lastReadingTime() {\n if (this.count == 0) {\n return 0;\n }\n return this.timestamps[this.count - 1];\n }\n get count() {\n return this.timestamps.length;\n }\n series(id) {\n if (id !== undefined) {\n const series = this.columns.get(id);\n if (series == null) {\n throw new Error(\"Series not found\");\n }\n return series;\n }\n else if (this.isGroup) {\n throw new Error(\"Series id must be specified\");\n }\n else {\n return this.columns.values().next().value;\n }\n }\n points(id) {\n id = id !== null && id !== void 0 ? id : this.columns.keys().next().value;\n if (id === undefined) {\n throw new Error(\"No columns\");\n }\n const column = this.columns.get(id);\n if (column === undefined) {\n throw new Error(\"Column not found\");\n }\n const result = [];\n for (let i = 0; i < this.count; i++) {\n result.push([this.timestamps[i], column.get(i)]);\n }\n return result;\n }\n get isGroup() {\n return this.columns.size > 1;\n }\n getRowAtIndex(i, options) {\n let row = [];\n for (let [id, column] of this.columns.entries()) {\n row.push([id, column.get(i)]);\n }\n if ((options === null || options === void 0 ? void 0 : options.sortBy) && this.isGroup) {\n if (options.sortBy === \"asc\") {\n row.sort((a, b) => { var _a, _b; return ((_a = a[1]) !== null && _a !== void 0 ? _a : 0) - ((_b = b[1]) !== null && _b !== void 0 ? _b : 0); });\n }\n else if (options.sortBy === \"desc\") {\n row.sort((a, b) => { var _a, _b; return ((_a = b[1]) !== null && _a !== void 0 ? _a : 0) - ((_b = a[1]) !== null && _b !== void 0 ? _b : 0); });\n }\n }\n return row;\n }\n getRow(timestamp, options) {\n const index = this.indexOf(timestamp);\n if (index === null)\n return [];\n return this.getRowAtIndex(index, options);\n }\n indexOf(timestamp) {\n const index = (0, search_1.default)(this.timestamps, timestamp, \"exact\");\n if (index < 0)\n return null;\n return index;\n }\n window(options = {}) {\n if (this.count === 0) {\n // Nothing has changed\n return this;\n }\n let { from = this.firstReadingTime, to = this.lastReadingTime, clip = false, } = options;\n if (from > to) {\n throw new WindowError(\"Start cannot be later than end\");\n }\n if (from < this.firstReadingTime) {\n if (!clip)\n throw new WindowError(\"Start is before firstReadingTime\");\n from = this.firstReadingTime;\n }\n if (to > this.lastReadingTime) {\n if (!clip)\n throw new WindowError(\"End is after lastReadingTime\");\n to = this.lastReadingTime;\n }\n if (from === to) {\n // Window contains no time, so return an empty timeseries\n return new Timeseries([], Array.from(this.columns, ([id, column]) => new Series(id, types_1.DataType.fromKey(2 /* DataTypeKey.UInt16 */))));\n }\n // Start element is the first reading >= from\n // End element is the last reading <= to\n const startElement = (0, search_1.default)(this.timestamps, from, \"ceil\");\n const endElement = (0, search_1.default)(this.timestamps, to, \"floor\") + 1;\n return new Timeseries(this.timestamps.slice(startElement, endElement), Array.from(this.columns, ([id, column]) => {\n return column.slice(startElement, endElement);\n }), this.interval);\n }\n rollUp({ duration, aggregate = types_1.Aggregate.SUM, from = this.firstReadingTime, to = this.lastReadingTime, }) {\n const resultDataType = types_1.DataType.fromKey(9 /* DataTypeKey.Float64 */);\n const timestamps = [];\n const columns = Array.from(this.columns, ([id, column]) => column);\n const result = columns.map((column) => []);\n let durationStart = from;\n while (durationStart < to) {\n const durationEnd = (0, date_fns_1.add)(durationStart, duration).getTime();\n const window = this.window({\n from: durationStart,\n to: durationEnd,\n clip: true,\n });\n timestamps.push(durationStart);\n for (const [seriesIndex, series] of columns.entries()) {\n result[seriesIndex].push(aggregate(window.series(series.id).asArray()));\n }\n durationStart = durationEnd;\n }\n return new Timeseries(timestamps, result.map((data, i) => {\n const series = new Series(columns[i].id, resultDataType, data, data.length, 0, columns[i].attributes);\n return series;\n }, false));\n }\n _aggregateColumns(ids, aggregateFunction) {\n // Filter by ids\n const columns = [];\n for (const [id, series] of this.columns.entries()) {\n if (ids.includes(id)) {\n columns.push(series);\n }\n }\n const result = [];\n for (let i = 0; i < this.count; i++) {\n result.push(aggregateFunction(columns.map((col) => col.get(i))));\n }\n return result;\n }\n rollIn({ aggregate = types_1.Aggregate.SUM, id = \"data\", } = {}) {\n const resultDataType = types_1.DataType.fromKey(9 /* DataTypeKey.Float64 */);\n return new Timeseries(this.timestamps, [\n new Series(id, resultDataType, this._aggregateColumns([...this.columns.keys()], aggregate)),\n ], this.interval);\n }\n apply({ baseline, func }) {\n const resultDataType = types_1.DataType.fromKey(9 /* DataTypeKey.Float64 */);\n const all = Timeseries.combine(baseline, this);\n const columns = [...this.columns.keys()];\n return new Timeseries(all.timestamps, columns.map((id) => {\n return new Series(id, resultDataType, all._aggregateColumns([baseline.series().id, id], (values) => func(values[0], values[1])));\n }), all.interval);\n }\n nzmin() {\n return this.series().nzmin();\n }\n min() {\n return this.series().min();\n }\n max() {\n return this.series().max();\n }\n sum() {\n return this.series().sum();\n }\n mean() {\n return this.series().mean();\n }\n median() {\n return this.series().median();\n }\n stddev() {\n return this.series().stddev();\n }\n var() {\n return this.series().var();\n }\n}\nexports.Timeseries = Timeseries;\n//# sourceMappingURL=timeseries.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ApplyFunction = exports.Aggregate = exports.CarbonMix = exports.CarbonRegion = exports.Classifier = exports.DataType = exports.DATATYPE_DETAILS = void 0;\nconst utils_1 = require(\"./utils\");\nexports.DATATYPE_DETAILS = [\n {\n key: 0 /* DataTypeKey.UInt8 */,\n bytes: 1,\n nullValue: 255,\n },\n {\n key: 1 /* DataTypeKey.Int8 */,\n bytes: 1,\n nullValue: 127,\n },\n {\n key: 2 /* DataTypeKey.UInt16 */,\n bytes: 2,\n nullValue: 65535,\n },\n {\n key: 3 /* DataTypeKey.Int16 */,\n bytes: 2,\n nullValue: 32767,\n },\n {\n key: 4 /* DataTypeKey.UInt32 */,\n bytes: 4,\n nullValue: 4294967295,\n },\n {\n key: 5 /* DataTypeKey.Int32 */,\n bytes: 4,\n nullValue: 2147483647,\n },\n {\n key: 6 /* DataTypeKey.UInt64 */,\n bytes: 8,\n nullValue: NaN,\n },\n {\n key: 7 /* DataTypeKey.Int64 */,\n bytes: 8,\n nullValue: NaN,\n },\n {\n key: 8 /* DataTypeKey.Float32 */,\n bytes: 4,\n nullValue: NaN,\n },\n {\n key: 9 /* DataTypeKey.Float64 */,\n bytes: 8,\n nullValue: NaN,\n },\n];\nvar DataType;\n(function (DataType) {\n function fromKey(key) {\n return exports.DATATYPE_DETAILS[key];\n }\n DataType.fromKey = fromKey;\n})(DataType = exports.DataType || (exports.DataType = {}));\n// Decoding occurs more than encoding, so use number as key\nconst CLASSIFIER = {\n 0: \"electricity.export\",\n 1: \"gas.consumption\",\n 2: \"oil.level\",\n 3: \"relative_humidity\",\n 4: \"electricity.consumption\",\n 5: \"temperature\",\n 6: \"electricity.import\",\n 7: \"electricity.consumption.cost\",\n 8: \"gas.consumption.cost\",\n 9: \"electricity.diversion\",\n 10: \"electricity.generation\",\n 11: \"battery\",\n 12: \"illuminance\",\n 13: \"points.competition\",\n 14: \"wellness.activity.hourly\",\n 15: \"heat.energy\",\n 16: \"heat.energy.cost\",\n 17: \"group.heat.summary\",\n 18: \"group.heat.consumption\",\n 19: \"group.energy.consumption\",\n 20: \"group.energy.summary\",\n 21: \"groups.energy.summary\",\n 22: \"cool.energy\",\n 23: \"cool.energy.cost\",\n 24: \"group.meter-read.count\",\n 25: \"balance.heat\",\n 26: \"balance.electricity\",\n 27: \"balance.cooling\",\n 28: \"heat.forecast\",\n 29: \"cooling.forecast\",\n 30: \"electricity.forecast\",\n 31: \"signal_strength\",\n 32: \"battery_level\",\n 127: \"carbon_intensity\",\n};\nvar Classifier;\n(function (Classifier) {\n function decode(num) {\n const result = CLASSIFIER[num];\n if (result === undefined) {\n throw RangeError(\"Could not decode classifier\");\n }\n return result;\n }\n Classifier.decode = decode;\n function encode(str) {\n const result = Object.entries(CLASSIFIER).find(([key, value]) => value === str);\n if (result === undefined) {\n throw RangeError(\"Could not encode classifier\");\n }\n return Number(result[0]); //key\n }\n Classifier.encode = encode;\n function isClassifier(str) {\n const result = Object.entries(CLASSIFIER).find(([key, value]) => value === str);\n return result !== undefined;\n }\n Classifier.isClassifier = isClassifier;\n})(Classifier = exports.Classifier || (exports.Classifier = {}));\nexports.CarbonRegion = {\n F: 1,\n N: 2,\n A: 3,\n G: 4,\n C: 5,\n D: 6,\n P: 7,\n J: 8,\n L: 9,\n E: 10,\n M: 11,\n H: 12,\n B: 13,\n K: 14,\n EN: 15,\n SC: 16,\n WL: 17,\n GB: 18,\n};\nexports.CarbonMix = {\n INTENSITY: 1,\n BIOMASS: 2,\n COAL: 3,\n IMPORTS: 4,\n GAS: 5,\n NUCLEAR: 6,\n OTHER: 7,\n HYDRO: 8,\n SOLAR: 9,\n WIND: 10,\n};\nexports.Aggregate = {\n SUM: utils_1.sum,\n MAX: utils_1.max,\n MIN: utils_1.min,\n MEAN: utils_1.mean,\n VAR: utils_1.variance,\n STDDEV: utils_1.standardDeviation,\n MEDIAN: utils_1.median,\n COUNT: utils_1.count,\n PRODUCT: utils_1.product,\n};\nexports.ApplyFunction = {\n ADD: (a, b) => (a !== null && a !== void 0 ? a : 0) + (b !== null && b !== void 0 ? b : 0),\n SUBTRACT: (a, b) => (a !== null && a !== void 0 ? a : 0) - (b !== null && b !== void 0 ? b : 0),\n MULTIPLY: (a, b) => (a !== null && a !== void 0 ? a : 0) * (b !== null && b !== void 0 ? b : 0),\n DIVIDE: (a, b) => (a !== null && a !== void 0 ? a : 0) / (b !== null && b !== void 0 ? b : 1),\n};\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.product = exports.standardDeviation = exports.variance = exports.median = exports.mean = exports.count = exports.nzmin = exports.min = exports.max = exports.sum = exports.removeNulls = exports.isDefined = exports.AggregateError = void 0;\nclass AggregateError extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, AggregateError.prototype);\n }\n}\nexports.AggregateError = AggregateError;\nfunction isDefined(a) {\n return a !== null;\n}\nexports.isDefined = isDefined;\nfunction removeNulls(list) {\n return list.filter(isDefined);\n}\nexports.removeNulls = removeNulls;\nfunction sum(list) {\n let sumTotal = 0;\n list.forEach((value) => {\n sumTotal += value !== null && value !== void 0 ? value : 0;\n });\n return sumTotal;\n}\nexports.sum = sum;\nfunction max(list) {\n return Math.max(...removeNulls(list));\n}\nexports.max = max;\nfunction min(list) {\n return Math.min(...removeNulls(list));\n}\nexports.min = min;\nfunction nzmin(list) {\n let min = Infinity;\n removeNulls(list).forEach((value) => {\n if (value !== 0 && value < min) {\n min = value;\n }\n });\n return min;\n}\nexports.nzmin = nzmin;\nfunction count(list) {\n return list.length;\n}\nexports.count = count;\nfunction mean(list) {\n return sum(list) / list.length;\n}\nexports.mean = mean;\nfunction median(list) {\n if (list.length === 0) {\n return 0;\n }\n const sorted = removeNulls(list).slice(0);\n sorted.sort((a, b) => {\n return a - b;\n });\n var len = sorted.length;\n if (len % 2 !== 0) {\n return sorted[Math.floor(len / 2)];\n }\n else {\n return (sorted[len / 2 - 1] + sorted[len / 2]) / 2;\n }\n}\nexports.median = median;\nfunction variance(list) {\n const nonNullList = removeNulls(list);\n let m = mean(nonNullList);\n let sum = 0.0;\n for (let i = 0; i < nonNullList.length; i++) {\n sum = sum + (nonNullList[i] - m) * (nonNullList[i] - m);\n }\n let v = sum / nonNullList.length;\n if (v < 0)\n throw new AggregateError(\"Variance is never negative\");\n return v;\n}\nexports.variance = variance;\nfunction standardDeviation(list) {\n return Math.sqrt(variance(list));\n}\nexports.standardDeviation = standardDeviation;\nfunction product(list) {\n return list.reduce((acc, cur) => acc * (cur !== null && cur !== void 0 ? cur : 0), 1);\n}\nexports.product = product;\n//# sourceMappingURL=aggregate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeReading = exports.encodeReading = exports.encodeReadings = exports.encodeDataType = exports.decodeDataType = exports.encodeClassifier = exports.decodeClassifier = exports.encodeResourceId = exports.decodeResourceId = void 0;\nconst types_1 = require(\"../types\");\nconst string_1 = require(\"./string\");\nfunction decodeResourceId(dataView) {\n let withoutHyphens = \"\";\n for (let i = 0; i < 4; i++) {\n withoutHyphens += (0, string_1.padStart)(dataView.getUint32(1 + i * 4).toString(16), 8, \"0\");\n }\n return [\n withoutHyphens.substring(0, 8),\n withoutHyphens.substring(8, 12),\n withoutHyphens.substring(12, 16),\n withoutHyphens.substring(16, 20),\n withoutHyphens.substring(20, 32),\n ].join(\"-\");\n}\nexports.decodeResourceId = decodeResourceId;\nfunction encodeResourceId(dataView, resourceId) {\n const withoutHyphens = resourceId.replace(/-/g, \"\");\n for (let i = 0; i < 4; i++) {\n dataView.setUint32(1 + i * 4, parseInt(withoutHyphens.substring(i * 8, (i + 1) * 8), 16));\n }\n}\nexports.encodeResourceId = encodeResourceId;\nfunction decodeClassifier(dataView) {\n return types_1.Classifier.decode(dataView.getUint8(17));\n}\nexports.decodeClassifier = decodeClassifier;\nfunction encodeClassifier(dataView, classifier) {\n dataView.setUint8(17, types_1.Classifier.encode(classifier));\n}\nexports.encodeClassifier = encodeClassifier;\nfunction decodeDataType(dataView) {\n const dataTypeIndex = dataView.getUint8(27);\n return types_1.DataType.fromKey(dataTypeIndex);\n}\nexports.decodeDataType = decodeDataType;\nfunction encodeDataType(dataView, dataType) {\n const dataTypeIndex = dataType.key;\n if (dataTypeIndex < 0) {\n throw new Error(\"Data type not found\");\n }\n dataView.setUint8(27, dataTypeIndex);\n}\nexports.encodeDataType = encodeDataType;\nfunction encodeReadings(dataView, dataType, data) {\n // Copy the resource data into the new buffer. We have to use DataView in case receiving machine has different endianess\n for (const [index, value] of data.entries()) {\n encodeReading(dataView, dataType, index, value);\n }\n}\nexports.encodeReadings = encodeReadings;\nfunction encodeReading(dataView, dataType, index, value) {\n index *= dataType.bytes;\n value = value !== null && value !== void 0 ? value : dataType.nullValue;\n switch (dataType.key) {\n case 0 /* DataTypeKey.UInt8 */:\n return dataView.setUint8(index, value);\n case 1 /* DataTypeKey.Int8 */:\n return dataView.setInt8(index, value);\n case 2 /* DataTypeKey.UInt16 */:\n return dataView.setUint16(index, value);\n case 3 /* DataTypeKey.Int16 */:\n return dataView.setInt16(index, value);\n case 4 /* DataTypeKey.UInt32 */:\n return dataView.setUint32(index, value);\n case 5 /* DataTypeKey.Int32 */:\n return dataView.setInt32(index, value);\n case 6 /* DataTypeKey.UInt64 */:\n throw new Error(\"UInt64 is not supported\");\n case 7 /* DataTypeKey.Int64 */:\n throw new Error(\"Int64 is not supported\");\n case 8 /* DataTypeKey.Float32 */:\n return dataView.setFloat32(index, value);\n case 9 /* DataTypeKey.Float64 */:\n return dataView.setFloat64(index, value);\n }\n}\nexports.encodeReading = encodeReading;\nfunction decodeReading(dataView, dataType, index) {\n index *= dataType.bytes;\n let decoded;\n switch (dataType.key) {\n case 0 /* DataTypeKey.UInt8 */:\n decoded = dataView.getUint8(index);\n break;\n case 1 /* DataTypeKey.Int8 */:\n decoded = dataView.getInt8(index);\n break;\n case 2 /* DataTypeKey.UInt16 */:\n decoded = dataView.getUint16(index);\n break;\n case 3 /* DataTypeKey.Int16 */:\n decoded = dataView.getInt16(index);\n break;\n case 4 /* DataTypeKey.UInt32 */:\n decoded = dataView.getUint32(index);\n break;\n case 5 /* DataTypeKey.Int32 */:\n decoded = dataView.getInt32(index);\n break;\n case 6 /* DataTypeKey.UInt64 */:\n throw new Error(\"UInt64 is not supported\");\n case 7 /* DataTypeKey.Int64 */:\n throw new Error(\"Int64 is not supported\");\n case 8 /* DataTypeKey.Float32 */:\n decoded = dataView.getFloat32(index);\n break;\n case 9 /* DataTypeKey.Float64 */:\n decoded = dataView.getFloat64(index);\n break;\n }\n if (decoded === dataType.nullValue || isNaN(decoded)) {\n return null;\n }\n return decoded;\n}\nexports.decodeReading = decodeReading;\n//# sourceMappingURL=binary.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./aggregate\"), exports);\n__exportStar(require(\"./binary\"), exports);\n__exportStar(require(\"./object\"), exports);\n__exportStar(require(\"./search\"), exports);\n__exportStar(require(\"./string\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDataView = exports.isArrayBuffer = void 0;\nfunction isArrayBuffer(object) {\n return (object instanceof ArrayBuffer ||\n toString.call(object) === \"[object ArrayBuffer]\");\n}\nexports.isArrayBuffer = isArrayBuffer;\nfunction isDataView(object) {\n return (object instanceof DataView || toString.call(object) === \"[object DataView]\");\n}\nexports.isDataView = isDataView;\n//# sourceMappingURL=object.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction search(timestamps, timestamp, mode) {\n let leftPointer = 0;\n let rightPointer = timestamps.length - 1;\n let middle = 0;\n while (leftPointer <= rightPointer) {\n middle = Math.floor((rightPointer + leftPointer) / 2);\n if (timestamp < timestamps[middle]) {\n rightPointer = middle - 1;\n }\n else if (timestamp > timestamps[middle]) {\n leftPointer = middle + 1;\n }\n else {\n // Exact match\n return middle;\n }\n }\n if (mode === \"exact\") {\n return -1;\n }\n if (timestamps[middle] > timestamp) {\n return mode === \"ceil\" ? middle : middle - 1;\n }\n else {\n return mode === \"ceil\" ? middle + 1 : middle;\n }\n}\nexports.default = search;\n//# sourceMappingURL=search.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.padStart = void 0;\nfunction padStart(str, length, character) {\n while (str.length < length) {\n str = character + str;\n }\n return str;\n}\nexports.padStart = padStart;\n//# sourceMappingURL=string.js.map","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","export default \"\\n\\n\\n\\n\"","export default \"
\\n
\\n
{{title}}
\\n\\n
\\n

\\n
\\n
\\n
\"","export default \"
= 768}\\\">\\n
\\n
\\n 1}\\\" aria-label=\\\"service\\\" id=\\\"service\\\"\\n (change)=\\\"switchService($event)\\\" [items]=\\\"dropdownOptions\\\" bindValue=\\\"name\\\" [placeholder]=\\\"\\\" bindLabel=\\\"name\\\"\\n [hideSelected]=\\\"true\\\" [searchable]=\\\"false\\\" [clearable]=\\\"false\\\">\\n\\n \\n\\n
\\n Manage properties\\n
\\n \\n \\n\\n \\n \\n\\n
\\n\\n\\n\\n
\\n
\\n
{{selectedService.name}}
\\n
\\n
\\n
\\n
{{obj.name }}
\\n
\\n
    \\n
  • \\n {{pages.title}}\\n
  • \\n
\\n
\\n
\\n
\\n
\"","export default \"
\\n
\\n
\\n

Primary heating system

\\n
Enter details for your primary heating system
\\n
\\n \\n
\\n\\n
\\n
\\n
\\n
1. Important Dates
\\n

How long did you have this heating system for? If this is your current system, leave \\\"End date\\\" empty. If you don't know when the system was installed, enter your move in date in \\\"Start date\\\".

\\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
2. Heating System Details
\\n

Select the type of heating system. If known, select the manufacturer then model.

\\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
3. Domestic Hot Water
\\n

Select if you have a domestic hot water cylinder. If you have a hot water cylinder and you know the size enter it in litres.

\\n
\\n\\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n

{{ floor.title }}

\\n

{{ room.title ? room.title : \\\"New Room\\\" }}

\\n
\\n \\n
\\n
Enter details for {{ room.title ? room.title : \\\"New Room\\\" }}
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
1. Enter room details *
\\n

Enter the height, width and length or a custom floor area (if the room is an irregular shape). Then select the flooring and room type if available.

\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
2. Enter pipework information
\\n
\\n

Enter the length of pipework in the room, the pipe material and internal diameter.

\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\\n
\\n
2. 3. Select heating type
\\n
\\n

Match the top down view of your radiator to the graphics on the right.

\\n

Select the type of radiators or under floor heating in the room and enter their dimensions.

\\n
\\n
\\n
\\n
\\n \\n
\\n {{ radiatorType.title }}\\n {{ radiatorType.examples.join(\\\", \\\") }}, etc.\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
0 }\\\" [attr.aria-labelledby]=\\\"radiatorType.id\\\">\\n

\\n Please note, we do not currently calculate power output for \\\"Other\\\" radiators. \\n

\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\"","export default \"\\n\\n
\\n
\\n
\\n

{{ floor.title }}

\\n
Select room type
\\n
\\n \\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n

{{ roomType.title }}

\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n\\n\"","export default \"\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n {{ article.attributes.title }}\\n
\\n \\n
\\n

\\n
\\n
    \\n \\n
  • \\n By {{ article.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ article.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
  • \\n {{ timeToRead }} min read\\n
  • \\n \\n
\\n
\\n
\\n
\\n\\n\"","export default \"
\\n \\n \\n
\\n
\\n \\n\\n \\n

{{ article?.attributes?.title }}

\\n\\n
    \\n
  • \\n By\\n \\n {{ author.attributes.name\\n }}({{ author.attributes.forumHandle }})\\n 1 && article?.attributes?.authors.data.length - 1 > i\\\"\\n >,\\n \\n \\n
  • \\n
  • {{createdAt }}
  • \\n
  • {{ timeToRead }} min read
  • \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n

\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n

If there is one thing I learnt, it is the importance of determining compatibility.

\\n
\\n
\\n Jane Doe\\n
\\n
\"","export default \"
\\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n

\\n
\\n \\n\\n
\\n
    \\n
  • \\n By {{ blog.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ blog.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
  • \\n {{ timeToRead }} min read\\n
  • \\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n

{{ blog?.attributes.title }}

\\n

\\n \\n
    \\n \\n
  • \\n
    \\n By\\n \\n {{ author.attributes.name\\n }}({{ author.attributes.forumHandle }})\\n 1 && blog?.attributes?.authors.data.length - 1 > i\\\"\\n >,\\n \\n \\n
    \\n
  • \\n\\n
  • {{ createdAt }}
  • \\n
  • \\n {{ timeToRead }} min read\\n
  • \\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\"","export default \"\\n\\n\\n\\n\\n\"","export default \"
\\n
\\n
\\n
\\n \\\"...\\\"\\n
\\n
\\n
\\n
\\n \\n\\n \\n \\n {{ formattedCaseStudy.before?.building[0]?.totalFloorArea }}m²,\\n \\n {{\\n formattedCaseStudy.before?.building[0]?.numberOfBedrooms }} bedroom\\n \\n\\n \\n {{ formattedCaseStudy.before?.building[0]?.builtForm }}\\n \\n {{\\n formattedCaseStudy.before?.building[0]?.type }}\\n \\n\\n\\n

\\n Installation: \\n {{ formattedCaseStudy?.after?.heating_system[0]?.type }} - {{\\n formattedCaseStudy?.after?.heating_system[0]?.output }}kW\\n

\\n

Installation cost: £{{ netCosts | number }} (after BUS grant)

\\n \\n\\n\\n

\\n Customer satisfaction:\\n \\n

\\n
\\n
\\n
\\n
\"","export default \"\\n
\\n
\\n
\\n 0 }\\\"\\n data-bs-toggle=\\\"dropdown\\\"\\n aria-expanded=\\\"false\\\"\\n data-bs-auto-close=\\\"outside\\\"\\n >\\n Location 0\\\">({{ locationsSelected }})\\n \\n\\n
\\n
\\n
\\n {{ locationsSelected }} selected\\n
\\n
0\\\" class=\\\"text-primary\\\" role=\\\"button\\\" (click)=\\\"resetForm(locationForm)\\\">\\n Clear\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n 0 }\\\"\\n data-bs-toggle=\\\"dropdown\\\"\\n aria-expanded=\\\"false\\\"\\n data-bs-auto-close=\\\"outside\\\"\\n >\\n House type 0\\\">({{ attachmentTypesSelected }})\\n \\n\\n
\\n
\\n
\\n {{ attachmentTypesSelected }} selected\\n
\\n 0\\\"\\n class=\\\"text-primary\\\"\\n role=\\\"button\\\"\\n (click)=\\\"resetForm(attachmentTypeForm)\\\"\\n >\\n Clear\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n
\\n\\n\"","export default \"\\n\\n
\\n

Previous section

\\n\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n

\\n \\n \\n\\n Details about your property {{ section == \\\"pre-installation-building\\\" ? \\\"pre-installation\\\" : \\\" post-installation\\\" }}\\n

\\n
\\n
Your building information
\\n\\n
\\n \\n
\\n\\n
\\n

\\n Import information from your property passport\\n \\n

\\n
\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n\\n

\\n \\n \\n {{ loadObj.loadingMessage }}\\n

\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n \\n
\\n
{{ item.value.displayName | translate }}
\\n \\n
\\n \\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
\\n
{{ component.type }} -
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n

{{ image.description }}

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n {{ component.text_description.description }}\\n
\\n \\n {{ contentItem.displayName | translate }}\\n \\n {{ contentItem.displayName | translate }}\\n\\n \\n {{ contentItem.popup | translate }}\\n \\n \\n \\n {{ contentItem.unit | translate }}{{ component[contentItem.field] || \\\"Unknown\\\" }}\\n {{ contentItem.unit | translate }} \\n \\n \\n \\n \\\"radiator\\n \\n
\\n
\\n
\\n\\n
\\n

Not started

\\n
\\n\"","export default \"
\\n
\\n
Tell us your thoughts
\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n \\n\\n
\\n
\\n \\n
\\n\\n\\n \\n
\\n
\\n

Thank you for your feedback

\\n
\\n
\\n
\"","export default \"
\\n \\n \\n
\\n
\\n
\\n

{{ caseStudy.postcodeDistrict || \\\"Private\\\" }}

\\n
\\n

\\n {{ showMap ? \\\"View details\\\" : \\\"View map \\\" }}\\n

\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\\"house-image\\\"\\n
\\n\\n
\\n
\\n
\\n Property type\\n

{{ caseStudy.before.building[0].builtForm }}

\\n

N/A

\\n
\\n
\\n
\\n
\\n Bedrooms\\n

{{ caseStudy.after.building[0].numberOfBedrooms || \\\"To be completed\\\" }}

\\n

{{ caseStudy.before.building[0].numberOfBedrooms || \\\"To be completed\\\" }}

\\n
\\n
\\n Non-bedrooms\\n

{{ caseStudy.after.building[0].numberOfNonBedrooms || \\\"To be completed\\\" }}

\\n

{{ caseStudy.before.building[0].numberOfNonBedrooms || \\\"To be completed\\\" }}

\\n \\n
\\n
\\n
\\n
\\n Heat pump\\n

\\n ASHP \\n GSHP \\n {{ caseStudy.after.heating_system[0].type }}\\n To be completed \\n {{ caseStudy.after.heating_system[0].manufacturer }}\\n {{ caseStudy.after.heating_system[0].model }}\\n

\\n

To be completed

\\n
\\n
\\n
\\n
\\n Installation date\\n

{{ caseStudy.after.heating_system[0].installation.installationStartDate | slice: 0:4 }}

\\n

To be completed

\\n
\\n
\\n
\\n
\\n Installer\\n
\\n

\\n {{ installer.businessName || \\\"To be completed\\\" }}\\n

\\n
\\n

To be completed

\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\\"house-image\\\"\\n
\\n\\n
\\n
\\n Property type\\n

{{ caseStudy.before.building[0].builtForm || \\\"To be completed\\\"}}

\\n

To be completed

\\n Bedrooms\\n

{{ caseStudy.after.building[0].numberOfBedrooms || \\\"To be completed\\\" }}

\\n

{{ caseStudy.before.building[0].numberOfBedrooms || \\\"To be completed\\\" }}

\\n Non-bedrooms\\n

{{ caseStudy.after.building[0].numberOfNonBedrooms || \\\"To be completed\\\" }}

\\n

{{ caseStudy.before.building[0].numberOfNonBedrooms || \\\"To be completed\\\"}}

\\n

To be completed

\\n
\\n\\n
\\n
\\n Heat pump\\n

\\n ASHP \\n GSHP \\n {{ caseStudy.after.heating_system[0].type }}\\n To be completed \\n {{ caseStudy.after.heating_system[0].manufacturer }}\\n {{ caseStudy.after.heating_system[0].model }}\\n

\\n

To be completed

\\n
\\n
\\n Installation date\\n

{{ caseStudy.after.heating_system[0].installation.installationStartDate | slice: 0:4 }}

\\n

To be completed

\\n
\\n
\\n Installer\\n \\n

\\n {{ installer.businessName }}\\n

\\n
\\n

To be completed

\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n
“{{ caseStudy.experienceQuote }}”
\\n

\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n

Leave feedback

\\n
\\n
\\n \\n
\\n\\n
\\n \\n\\n \\n
\\n
\\n\\n
\\n

Ref #{{ caseStudy.csRef }}

\\n
\\n
\\n
\\n \\n
\\n
    \\n \\n \\n
  • \\n {{ c.title }}\\n \\n
  • \\n
    \\n
\\n
\\n\\n \\n \\n
\\n\"","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n
\\n
Heating system technical details
\\n
\\n \\n {{ contentItem.displayName | translate }}\\n \\n {{ contentItem.displayName | translate }}\\n\\n \\n {{ contentItem.popup | translate }}\\n \\n {{ contentItem.unit | translate }}\\n {{ heatingSystem[contentItem.field] }}\\n {{ heatingSystem[contentItem.field] ? \\\"Yes\\\" : \\\"No\\\" }}\\n {{ contentItem.unit | translate }}\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
No technical details available
\\n\"","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
\\n
Other Information
\\n
\\n

\\n
\\n {{ caseStudyRelatedContentConfig?.forum?.displayName | translate }}\\n {{ caseStudy.userForumHandle || 'N/A' }}
\\n
\\n
\\n
Ask a question
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n

{{ submitMessage }}

\\n
\\n
\"","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
Heating system
\\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
Financial outcomes -
\\n \\n
{{ item.value.displayName | translate }}\\n {{ item.value.unit | translate }}\\n {{ caseStudy.outcome?.heating_system[0].finance[item.key] }}\\n {{ item.value.unit | translate }}\\n \\n \\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
Customer satisfaction -
\\n \\n
{{ item.value.displayName | translate }}\\n \\n \\n \\n {{ caseStudy.outcome?.heating_system[0]?.satisfaction[item.value.field] || \\\"Unknown\\\" }}\\n
\\n
\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
Building Retrofit
\\n
\\n

\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
Financial outcomes
\\n
\\n

\\n
{{ caseStudyRelatedContentConfig.finance.totalCost.displayName | translate }}\\n {{ caseStudy.outcome?.building[0]?.finance?.totalCost ? (\\\"CASE_STUDY_TOTAL_COST_UNIT\\\" | translate) + caseStudy.outcome?.building[0]?.finance?.totalCost : \\\"Unknown\\\" }}\\n
{{ caseStudyRelatedContentConfig.finance.awardedGrants.displayName | translate }}\\n
    \\n
  • {{ grant.name }} - £{{ grant.amount }}
  • \\n
\\n
\\n
\\n\\n
\\n

Not started

\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{ field.value.displayName | translate }}\\n
\\n {{ item.unit | translate }}\\n\\n {{ item.value === true ? \\\"Yes\\\" : item.value === false ? \\\"No\\\" : item.value }}\\n {{ item.unit | translate }}\\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{ caseStudyRelatedContentConfig?.location?.displayName | translate }}{{ caseStudy.postcodeDistrict || getDefaultText() }}
{{ caseStudyRelatedContentConfig.building.builtForm.displayName | translate }}{{ (caseStudy.before?.building && caseStudy.before?.building[0]?.builtForm) || getDefaultText() }}
{{ caseStudyRelatedContentConfig.installationDate.displayName | translate }}\\n {{ getDate(caseStudy.after.heating_system && caseStudy.after.heating_system[0]?.installation?.installationStartDate) || getDefaultText() }}\\n
{{ caseStudyRelatedContentConfig.installers.displayName | translate }}\\n {{ installer.businessName }}\\n {{ getDefaultText() }}
Heating system installed\\n
    \\n
  • \\n {{ caseStudy.after?.heating_system && caseStudy.after?.heating_system[0]?.type }}\\n {{ caseStudy.after?.heating_system && caseStudy.after?.heating_system[0]?.manufacturer }}\\n {{ caseStudy.after?.heating_system && caseStudy.after?.heating_system[0]?.model }}\\n
  • \\n
  • \\n {{ getDefaultText() }}\\n
  • \\n \\n
  • \\n {{ caseStudyRelatedContentConfig.heating_system.smartControlUnitModel.displayName | translate }}:\\n {{ caseStudy.after?.heating_system[0]?.smartControlUnitModel }}\\n
  • \\n
\\n
{{ caseStudyRelatedContentConfig.carbonEmissionsReduction.displayName | translate }}\\n {{ calculateCarbonEmissionsReduction(caseStudy.after?.property_description, caseStudy.before?.property_description) }}\\n
{{ caseStudyRelatedContentConfig.finance.totalCost.displayName | translate }}\\n {{ (caseStudy.outcome?.heating_system[0]?.finance?.totalCost && (\\\"CASE_STUDY_TOTAL_COST_UNIT\\\" | translate) + caseStudy.outcome?.heating_system[0]?.finance?.totalCost) || getDefaultText() }}\\n
{{ caseStudyRelatedContentConfig.finance.awardedGrants.displayName | translate }}\\n \\n
{{ caseStudyRelatedContentConfig.finance.awardedLoans.displayName | translate }}\\n \\n
{{ caseStudyRelatedContentConfig.netCost.displayName | translate }}\\n {{ calculateNetCosts(caseStudy.outcome?.heating_system[0]?.finance?.totalCost, caseStudy.outcome?.heating_system[0]?.finance?.awardedGrants) }}\\n
{{ caseStudyRelatedContentConfig.runningCosts.displayName | translate }}\\n
    \\n
  • Before: {{ calculateHeatingNetRunningCosts(caseStudy.before.heating_system) }}
  • \\n
  • After: {{ calculateHeatingNetRunningCosts(caseStudy.after.heating_system) }}
  • \\n
\\n
\\n
Customer satisfaction -
\\n
\\n {{ caseStudyRelatedContentConfig.satisfaction.overallSatisfaction.displayName | translate }}\\n \\n \\n \\n {{ getDefaultText() }}\\n
\\n {{ caseStudyRelatedContentConfig.satisfaction.whatWentWell.displayName | translate }}\\n {{ (caseStudy.outcome?.heating_system && caseStudy.outcome?.heating_system[0].satisfaction?.whatWentWell) || getDefaultText() }}
\\n {{ caseStudyRelatedContentConfig.satisfaction.whatWouldIDoDifferent.displayName | translate }}\\n {{ (caseStudy.outcome?.heating_system && caseStudy.outcome?.heating_system[0].satisfaction?.whatWouldIDoDifferent) || getDefaultText() }}
{{ caseStudyRelatedContentConfig.satisfaction.otherNotes.displayName | translate }}{{ (caseStudy.outcome?.heating_system && caseStudy.outcome?.heating_system[0].satisfaction?.otherNotes) || getDefaultText() }}
\\n
\\n\"","export default \"\\n\\n\\n\\n
\\n
\\n \\n
\\n
\\n \\n Add energy storage\\n
\\n

0 || energyStorageForm.controls.energyStorages.controls.length > 1\\\" class=\\\"align-self-center text-danger text-end m-0\\\">\\n

\\n
\\n
\\n\"","export default \"
\\n
\\n
{{ title }}
\\n
\\n
Please rate the following from 1-5 (1 low satisfaction and 5 high satisfaction)
\\n
\\n
\\n
\\n \\n

\\n {{ caseStudyFields[category][field].description }}\\n

\\n
\\n\\n
\\n \\n \\n\\n \\n \\n {{ caseStudyFields[category][field].unit }}\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n = 0\\\">{{ getRemainingCharacters(field, caseStudyFields[category][field].maxLength) }} characters left\\n Maximum {{ caseStudyFields[category][field].maxLength }} characters ({{ -1 * getRemainingCharacters(field, caseStudyFields[category][field].maxLength) }} too many)\\n
\\n\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n
\\n \\n\\n\"","export default \"
\\n

\\n \\n \\n Details about your\\n {{ section == \\\"pre-installation-heating\\\" ? \\\"heating pre-installation\\\" : \\\"heating post-installation\\\" }}\\n

\\n\\n
\\n
\\n \\n \\n\\n \\n\\n
\\n \\n
\\n\\n
\\n
\\n
\\n
Secondary heating system
\\n
\\n
\\n
Primary heating system
\\n
\\n

\\n Import information from your schematic\\n \\n

\\n \\n

\\n Remove\\n

\\n
\\n
\\n \\n Add secondary heating system\\n
\\n
\\n\\n \\n
\\n \\n\\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n\\n

\\n \\n \\n {{ loadObj.loadingMessage }}\\n

\\n
\\n
\\n
\\n\"","export default \"
\\n

Details about your installation

\\n
Your installer/s
\\n\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n Add installer\\n
\\n

0 || installerForm.controls.installers.controls.length > 1\\\" class=\\\"align-self-center text-danger text-end m-0\\\">\\n

\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n\\n

\\n \\n \\n {{ loadObj.loadingMessage }}\\n

\\n
\\n\"","export default \"\\n\\n\\n\\n\\n
\\n
\\n \\n\\n
\\n
\\n \\n Add microgenerator\\n
\\n

0 || microgeneratorForm.controls.microgenerators.controls.length > 1\\\" class=\\\"align-self-center text-danger text-end m-0\\\">\\n

\\n
\\n
\\n\"","export default \"
\\n

Other information

\\n\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n \\n\\n

\\n \\n \\n {{ loadObj.loadingMessage }}\\n

\\n
\\n\"","export default \"
\\n

Details about the costs and outcomes of installation

\\n
\\n\\n
\\n \\n
\\n\\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n Add grant\\n
\\n

0 || awardedGrantsForm.controls.awardedGrants.controls.length > 1\\\" class=\\\"align-self-center text-danger text-end m-0\\\">\\n

\\n
\\n
\\n\\n \\n
\\n
\\n \\n
\\n
\\n \\n Add loan\\n
\\n

0 || awardedLoansForm.controls.awardedLoans.controls.length > 1\\\" class=\\\"align-self-center text-danger text-end m-0\\\">\\n

\\n
\\n
\\n\\n \\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n\\n

\\n \\n \\n {{ loadObj.loadingMessage }}\\n

\\n
\\n
\\n\"","export default \"
{{cardContent?cardContent:\\\"Coming Soon!\\\"}}
\\n\"","export default \"\\n\\n
\\n
\\n
About {{community.name}}
\\n
\\n
\\n

{{community.description}} Learn more

\\n \\n
\\n
\\n\\n\\n
\\n
\\n
Useful Links
\\n
\\n
\\n \\n
\\n
\\n\\n\\n\\n
\\n
\\n
Popular Topics
\\n
\\n
\\n \\n
\\n
\\n\\n\\n\"","export default \"\\n\\n\\n\\n
\\n

Browse categories

\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
Showing results for:
\\n
\\n
\\n {{ filterForm.get(\\\"audience\\\").value }}\\n {{ tag }}\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
{{category.attributes.title}}
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n {{ filterForm.get(\\\"audience\\\").value }} - \\n Sorry, we couldn't find anything tagged with\\n {{ getTagFilters().join(\\\" and \\\") }} .\\n

\\n

Try different or fewer tags.

\\n
\\n
\\n
\\n
\\n \\n
\\n
\"","export default \"
\\n
\\n
{{ confirmationTitle }}
\\n \\n
\\n
\\n
\\n

\\n
\\n
\\n \\n
\\n
\\n \\n
\"","export default \"
\\n
\\n\\n
\\n
\\n
\\n {{meter.mpxnKey == 'mpan' ?\\n 'Electricity' : 'Gas'}} {{getStatus(meter)}}\\n
\\n

{{meter.mpxnKey == 'mpan' ?\\n 'MPAN' : 'MPRN'}}: {{meter.mpxn}}

\\n \\n

{{expired?\\n 'Consent expired:' : 'Consent valid until:' }} {{ formatTime(meter.isValidUntil)}}

\\n
\\n \\n \\n \\n
\\n
\\n \\n
\\n\\n
\\n
\"","export default \"
\\n
{{modalHeader}} ({{meter.mpxnKey == 'mpan' ?\\n 'MPAN' : 'MPRN'}}: {{meter.mpxn}})
\\n
\\n
\\n

Please consent to allowing Hildebrand Technology to retrieve your 30 minute meter readings and tariff\\n information for another 12 months.

\\n\\n

You can revoke the access at any time via this application. If the consent is not renewed by\\n {{meter.prettyIsValidUntil}}, we will assume that the consent has been revoked and we will stop\\n getting data for this meter

\\n
\\n\"","export default \"
\\n
\\n\\n\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n {{ content.attributes.title }}\\n \\n \\n
\\n \\n

\\n\\n
\\n\\n

\\n \\n By {{ content.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ content.attributes.authors.data.length - 1 }} Authors\\n \\n

\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n\\n
\\n\\n

Glowmarkt Cookie Policy

\\n

Last updated: 14th Feb 2023

\\n

Glowmarkt is provided by Hildebrand Technology Limited, Company number 05577050.\\n To contact Hildebrand, please send an email to support@hildebrand.co.uk\\n

\\n

This Cookie Policy explains how Hildebrand Technology Ltd (\\\"Company\\\", \\\"we\\\", \\\"us\\\", and \\\"our\\\") uses\\n cookies\\n and\\n similar technologies when you visit the website at https://glowmarkt.com, (\\\"Websites\\\"). It\\n explains what these technologies are and why we use them, as well as your rights to control our use\\n of\\n them.\\n

\\n

We use cookies for two reasons on the Glowmarkt site:

\\n
    \\n
  1. To keep a record when you consented to using cookies
  2. \\n
  3. For research purposes to allow us to track what users interact with on the Glowmarkt site; the\\n cookie data\\n will allow us to analyse how people are using the site and identify what works and what doesn’t.\\n Users\\n are tracked anonymously.
  4. \\n
\\n

We do NOT record with cookies any of the personal information you provided including, your post code,\\n your\\n email address, your name or the EUI/GUID of your Energy Display.

\\n\\n
What are cookies?
\\n

Cookies are small data files that are placed on your computer or mobile device when you visit a\\n website.\\n Cookies are widely used by website owners in order to make their websites work, or to work more\\n efficiently,\\n as well as to provide reporting information.

\\n

Cookies set by the website owner (in this case, Hildebrand Technology Ltd) are called \\\"first party\\n cookies\\\".\\n

\\n

Cookies set by parties other than the website owner are called \\\"third party cookies\\\". Third party\\n cookies\\n enable third party features or functionality to be provided through the website.

\\n\\n
Why do we use cookies?
\\n

We use first and third party cookies for the two reasons described at the start of this page. Some\\n cookies\\n are required for technical reasons in order for our website to operate (we need to record that you\\n have\\n agreed we can use the third party cookies), and we refer to these as \\\"essential\\\" or \\\"strictly\\n necessary\\\"\\n cookies.

\\n

Other cookies (third party) enable us to track and how our users engage with the site so that in\\n future\\n we\\n can enhance the experience on our Website. Third parties serve cookies through our Website for\\n analytics\\n purposes.

\\n

We do not set any third party cookies for advertising or any purposes other than using the google\\n cookies\\n for\\n research purposes. Hildebrand set the google third party cookies on your device when you visit the\\n STSC\\n website if the user accept cookies; we pass the cookies through to Google Analytics unless the user\\n indicates they reject cookies.

\\n

The specific types of first and third party cookies served through our Websites and the purposes they\\n perform\\n are described above at the start of this document.

\\n\\n
How can I control cookies?
\\n

You have the right to decide whether to accept or reject cookies. You can exercise your cookie rights\\n by\\n setting your preferences in the Cookie Consent Manager.

\\n

The Cookie Consent Manager is offered to you when you first come to our web site. It can also be\\n found on\\n our\\n website. If you choose to reject cookies, you may still use our website and we will NOT pass your\\n usage\\n information to google Analytics. You may also set or amend your web browser controls to accept or\\n refuse\\n cookies. As the means by which you can refuse cookies through your web browser controls vary from\\n browser-to-browser, you should visit your browser's help menu for more information.

\\n

The specific types of first and third party cookies served through our Websites and the purposes they\\n perform\\n are described in the table below:

\\n\\n
Essential website cookies:
\\n

This cookie is strictly necessary to track whether you have given us permission to use cookies:

\\n\\n
    \\n
  • Name: cookieconsent_status
  • \\n
  • Purpose: Used to track whether permission has been given to use cookies.
  • \\n
  • Provider: .glowmarkt.com
  • \\n
  • Service: Glowmarkt
  • \\n
  • Country: United Kingdom
  • \\n
  • Type: http_cookie
  • \\n
  • Expires in: 1 year
  • \\n
\\n\\n
First Party Cookies
\\n

These are cookies that are set by this website directly.

\\n

User Login: We use cookies on this site to keep users logged in and to protect your information.\\n Users\\n who do\\n not use cookies may not be able to access many of the glowmarkt features.

\\n\\n
Third Party Cookies
\\n

Google Analytics: We use Google Analytics to collect information about visitor behaviour on our\\n website.\\n Google Analytics stores information about what pages you visit, how long you are on the site, how\\n you\\n got\\n here and what you click on. This Analytics data is collected via a JavaScript tag in the pages of\\n our\\n site\\n and is not tied to personally identifiable information. We therefore do not collect or store your\\n personal\\n information (e.g. your name or address) so this information cannot be used to identify who you are.\\n

\\n

You can find out more about Google's position on privacy as regards its analytics service at\\n https://policies.google.com/privacy\\n

\\n\\n
How often will you update this Cookie Policy?
\\n

We may update this Cookie Policy from time to time in order to reflect, for example, changes to the\\n cookies\\n we use or for other operational, legal or regulatory reasons. Please therefore re-visit this Cookie\\n Policy\\n regularly to stay informed about our use of cookies and related technologies.

\\n

The date at the top of this Cookie Policy indicates when it was last updated.

\\n\\n
Where can I get further information?
\\n

If you have any questions about our use of cookies or other technologies, please email us at\\n support@hildebrand.co.uk or by post to:\\n

\\n\\n \\n Hildebrand Technology Ltd
\\n 56 Conduit St, London
\\n London, London W1S 2YZ
\\n United Kingdom
\\n Phone: (+44) 020 7486 1020\\n
\\n\\n\\n
\\n\\n
\\n
\"","export default \"
0\\\">\\n
\\n
Download your data
\\n
\\n
\\n
Meter ID:
\\n

{{ resource?.hardwareId }}

\\n

\\n
\\n\\n
\\n
Description:
\\n

{{ resource?.attributes?.label }}

\\n
\\n\\n
\\n
First data read:
\\n

{{ resource?.firstReadingTime | date : \\\"dd MMM yyyy HH:mm\\\" }}

\\n
Refresh data
\\n \\n
\\n\\n
\\n
Data granularity
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

Set up your Smart Meter first

\\n

Register a smart meter (SMETS 2 or DCC enrolled SMETS 1)

\\n

Once registered, you'll be able to see your data in the Bright app and download it here on Glowmarkt.

\\n Set up Smart Meter\\n
\\n
\\n\\n
\\n \\n
\\n\\n\\n\"","export default \"
\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n\\n \\n
\\n
\\n Rate: {{epcRatingEnergy}}\\n
\\n
\\n
\\n Potential: {{epcRatingEnergyPotential}}\\n
\\n
A 92 plus91 \\\">\\n
\\n Rate: {{epcRatingEnergy}}\\n
\\n
91\\\">\\n
\\n Potential: {{epcRatingEnergyPotential}}\\n
\\n
B 81-9180&& epcRatingEnergy<=91\\\">\\n
\\n Rate: {{epcRatingEnergy}}\\n
\\n
80 && epcRatingEnergyPotential<=91\\\">\\n
\\n Potential: {{epcRatingEnergyPotential}}\\n
\\n
C 69-8068 && epcRatingEnergy<=80\\\">\\n
\\n Rate: {{epcRatingEnergy}}\\n
\\n
68 && epcRatingEnergyPotential<=80\\\">\\n
\\n Potential: {{epcRatingEnergyPotential}}\\n
\\n
D 55-6854 && epcRatingEnergy<=68\\\">\\n
\\n Rate: {{epcRatingEnergy}}\\n
\\n
54 && epcRatingEnergyPotential<=68\\\">\\n
\\n Potential: {{epcRatingEnergyPotential}}\\n
\\n
E 39-5438 && epcRatingEnergy<=54\\\">\\n
\\n Rate: {{epcRatingEnergy}}\\n
\\n
38 && epcRatingEnergyPotential<=54\\\">\\n
\\n Potential: {{epcRatingEnergyPotential}}\\n
\\n
F 21-3820 && epcRatingEnergy<=38\\\">\\n
\\n Rate: {{epcRatingEnergy}}\\n
\\n
20 && epcRatingEnergyPotential<=38\\\">\\n
\\n Potential: {{epcRatingEnergyPotential}}\\n
\\n
G 1-200 && epcRatingEnergy<=20\\\">\\n
\\n Rate: {{epcRatingEnergy}}\\n
\\n
0 && epcRatingEnergyPotential<=20\\\">\\n
\\n Potential: {{epcRatingEnergyPotential}}\\n
\\n
\\n
\"","export default \"
\\n
\\n
Enter details about your property
\\n
Your fabric score estimate
\\n
\\n Sorry - we are currently unable to generate your building fabric score\\n
\\n \\n
\\n\\n \\n
\\n
\\n \\n
\\n
\\n \\n\\n \\n
\\n
\\n

Here's why:

\\n
    \\n
  • \\n
\\n
\\n
\\n \\n\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n\\n\\n \\n
\\n \\n \\n\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n\\n \\n
\\n \\n \\n\\n
\\n
\\n \\n\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n

Please select a date between October and March - when your heating might have been on

\\n

Note: We will use this date as the end date point in the measurement period (21 days)

\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n\\n \\n
\\n
\\n
\\n

The parameters below are optional - completing them will increase the accuracy of your score

\\n\\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n\\n\\n
\\n\\n\\n
\\n
\\n \\n\\n \\n
\\n
\\n
\\n

Our estimate of your building fabric score based on the information you provided us:

\\n\\n

\\n {{ (currentHtc && currentHtc.htc) || \\\"-\\\" }} W/°C\\n

\\n Created at: {{ currentHtc.date | date: \\\"dd MMM yyyy HH:mm\\\" }}\\n

\\n

\\n

\\n Measurement period between {{ currentHtc.measurement_period.from | date: \\\"dd MMM yyyy\\\" }} and\\n {{ currentHtc.measurement_period.to | date: \\\"dd MMM yyyy\\\" }}\\n

\\n\\n\\n
\\n

\\n This will not be added to your Property Passport, until the information you provided is\\n confirmed by an independent expert e.g. Energy assessor.\\n

\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n
{{er.professionalMeta.businessName}}
\\n

{{er.professionalUsername}}

\\n \\n
\\n
\\n {{\\n getEstimateRequestStateFormat(er.estimateRequestState).name}}\\n\\n
\\n
\\n
\\n
\\n\\n
\\n
Contact information
\\n

{{er.professionalMeta.businessPhoneNumber}}

\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n\\n
\\n
\\n
\\n\"","export default \"

{{faq?.attributes?.question}}

\\n
\\n\\n
\\n\\n
\\n \\n
\\n \"","export default \"
\\n
\\n
\\n
\\n
Was this answer helpful?
\\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n
Please enter your feedback
\\n\\n
\\n\\n \\n
\\n \\n
\\n
Sorry about that. What did you find most unhelpful?
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n \\n Please fill out all forms
\\n\\n\\n
\\n\\n
\\n \\n Thank you for your feedback!\\n
\\n
\"","export default \"
\\n
Can't find an answer to your question? Let us know!
\\n

\\n For questions more specific to your account please email\\n support@glowmarkt.com\\n

\\n
\\n
\\n \\n
\\n
\\n \\n
\\n\\n
\\n\\n \\n
\\n Please enter your question \\n
\\n
\\n\\n\\n
\\n Thank you for submitting your question!\\n
\\n\"","export default \"\\n\\n\\n\\n\"","export default \"\\n
\\n\"","export default \"
\\n \\n
\\n\\n\\n\\n
\\n \\n \\n \\n
\\n
Tutorials and Instructions
\\n
\\n\\n
\\n \\n
\\n \\n\\n \\n \\n\\n \\n \\n
\\n\\n \\n
\\n \\n \\n\\n \\n\\n \\n
\\n
\\n\\n
\\n
\\n \\n\\n \\n\\n \\n
\\n
\\n\\n
\\n \\n\\n\"","export default \"
\\n \\n\"","export default \"
\\n \\n
\\n\"","export default \"
\\n

\\n \\n \\n {{ floor.title }} (~{{ floor.estimatedArea }} sq. m)\\n \\n

\\n
\\n
\\n \\n\\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
{{ room.title }}
\\n \\n \\n
\\n
\\n\\n \\n
\\n
\\n
\\n\\n\"","export default \"\\n\\n\\n
\\n
\\n\\n
\\n \\n
\\n\\n\\n
\\n
\\n About us\\n
\\n \\n \\n \\n
\\n Contact us\\n
\\n
\\n
\\n \\n
\\n
\\n
\"","export default \"

{{error}}

\\n

{{success}}

\"","export default \"\\n\\n\\n\"","export default \"
\\n
\\n
\\n
\\n \\n\\n \\n \\n
\\n\\n
\\n
\\n \\n {{ tag.attributes.title }}\\n \\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
View top terms for:
\\n
\\n
\\n \\n \\n {{ community.attributes.name }}\\n \\n \\n
\\n
\\n\"","export default \"
\\n\\n\\n\"","export default \"
\\n \\n
\\n\\n\"","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n
\\n 0-1\\n Excellent\\n = HLP\\\" class=\\\"result\\\">\\n \\n {{ HLP }}\\n
\\n 1-2\\n Good\\n 1 && 2 >= HLP\\\" class=\\\"result\\\">\\n \\n {{ HLP }}\\n
\\n 2-3\\n Average\\n 2 && 3 >= HLP\\\" class=\\\"result\\\">\\n \\n {{ HLP }}\\n
\\n 3+\\n Poor\\n 3\\\" class=\\\"result\\\">\\n \\n {{ HLP }}\\n
\\n

(Lower value equals less heat loss)

\\n\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n
\"","export default \"\\n\\t
\\n

{{pageTitle | translate}}

\\n \\n\\t
\\n\\t
\\n\\t

\\n\\t
\\n\\t
\\n \\n\\n\\t
\\n\\n\"","export default \"
\\n \\n
\\n
\\n
\\n
\\n \\n\\n
\\n\\n\\n\\n
\\n\\n\\n \\n
\\n
\\n

{{steps[0].title}}

\\n
\\n
\\n

\\n Complete these steps to send an invitation out to an installer. You can return to this page at\\n any\\n point.
\\n\\n If an installer accepts your invitation to access your data, they can then respond by uploading\\n an\\n estimate for a heat pump installation at your property.

\\n
\\n \\n
\\n
\\n
\\n

\\n

\\n\\n
\\n
\\n
\\n
\\n

{{steps[0].steps[0].title}}\\n

\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n

\\n

\\n\\n
\\n\\n
\\n
\\n
\\n

{{steps[0].steps[1].title}}\\n

\\n
\\n
\\n
\\n\\n
\\n \\n
\\n
\\n\\n \\n {{option}} \\n
\\n\\n
\\n\\n
\\n\\n\\n\\n\\n \\n \\n
\\n
\\n\\n
\\n \\n
\\n
\\n\\n \\n {{option}} \\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n\\n \\n {{option}} \\n
\\n\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n

\\n

\\n\\n
\\n
\\n
\\n
\\n

{{steps[0].steps[2].title}}\\n (optional)

\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n
\\n
\\n
\\n \\n\\n\\n
\\n
\\n
\\n\\n

\\n

\\n \\n\\n \\n
\\n
\\n
\\n

{{steps[0].steps[3].title}}\\n (optional)

\\n

{{steps[0].steps[3].title}}\\n (optional)

\\n
\\n
\\n\\n You have no temperature\\n sensor\\n data\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n
\\n\\n\\n\\n \\n
\\n
\\n
\\n
\\n\\n
\\n\\n
\\n \\n
\\n \\n\\n
\\n

{{steps[0].steps[4].title}}\\n

\\n
\\n
\\n
\\n \\n \\n \\n\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n\\n
\\n

{{steps[0].steps[5].title}} \\n New alerts\\n \\n

\\n

An installer has invited you to share their data with them. To accept their request and share your data, you will need to fill out the above information. By selecting 'Accept', that data will be sent.\\n

\\n\\n
\\n \\n \\n\\n
\\n\\n
\\n
\\n\\n \\n
\\n\\n\\n \\n
\\n\\n
\\n

{{steps[1].title}}

\\n
\\n
\\n

Installers that have accepted your invitations to share your data with them will appear here,\\n along\\n with any installers that have invited you to share your data with them. This is where you can\\n access\\n estimates once they have been uploaded.
\\n\\n Contact an installer directly to arrange a site visit. You can then record that site visit on\\n this\\n page. Once a job is marked as active by you or an installer, you can access the next step of\\n your\\n heat pump journey.

\\n
\\n
\\n
\\n
\\n
\\n
{{er.professionalMeta.businessName}}
\\n

{{er.professionalUsername}}

\\n
\\n
\\n {{\\n getEstimateRequestStateFormat(er.estimateRequestState).name}}\\n
\\n
\\n
\\n
\\n\\n
\\n
Contact information
\\n

{{er.professionalMeta.businessPhoneNumber}}

\\n
\\n

\\n Site visit date {{\\n getReadableDate(er.siteVisitDate)}}\\n

\\n
\\n
\\n \\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n\\n\\n
\\n\\n
\\n
\\n

\\n \\n Estimates\\n No estimates\\n \\n \\n \\n \\n \\n Estimates: \\n Download estimate\\n \\n \\n\\n \\n \\n \\n \\n \\n

\\n
\\n
\\n \\n\\n
\\n\\n\\n\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\"","export default \"
\\n\\n\\n
\\n\\n
992\\\">\\n
\\n

\\n {{step.title}}\\n

\\n

{{step.title}}

\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n

\\n \\n\\n\\n {{substep.title}}\\n \\n New alerts\\n \\n

\\n
\\n
\\n\\n\\n\\n \\n
\\n
\\n\\n
\\n\\n
\\n\\n
\\n\\n
\\n
\\n
=innerWidth \\\">\\n\\n
\\n \\n {{getCurrentStep()[0].title}} \\n \\n
\\n
\\n
\\n
\\n
\\n\\n\\n\"","export default \"
\\n
\\n
\\n Your home's score in context\\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n {{ HLP }}\\n \\n
\\n

\\n {{hlpValue}} W/m²°C\\n

\\n
\\n
\\n\\n
\\n
\\n
\\n {{ HTC }}\\n \\n
\\n

\\n {{htcValue}} W/°C\\n

\\n

See confidence interval

\\n
\\n
\\n\\n
\\n\\n
\\n\\n
Peak heat demand
\\n

This figure is based on taking your building fabric score (HTC) and working out how much energy you need to\\n maintain an internal temperature of 20°C on the predicted coldest winter day at your location.

\\n

\\n The peak heat demand can be used to determine the required size of a heating system, like a heat pump. For a peak\\n heat demand of 5kW, the heat pump should have a peak heat output of at least 5kW.\\n

\\n\\n
\\n
\\n Required peak power\\n \\n
\\n

\\n {{requiredPeakDemand}}\\n kWp\\n

\\n
\\n\\n
\\n
\\n Design external temperature\\n \\n
\\n

\\n {{designExternalTemperature}}\\n °C\\n

\\n
\\n\\n
\\n
\\n Design internal temperature\\n \\n
\\n

\\n {{designInternalTemperature}}\\n °C\\n

\\n
\\n\\n
\\n\\n
\\n
\\n\\n
\\n
\\n

Based on the information below:

\\n

\\n Home type:\\n {{manualHTC.attachment.toUpperCase() | translate}}\\n

\\n

Heating: {{ manualHTC.heating.type }}

\\n

\\n Boiler efficiency: {{ manualHTC.heating.boiler.winter_seasonal_efficiency }} %\\n

\\n

Postcode: {{ manualHTC.location.postcode }}

\\n

Floor area: {{ manualHTC.floor_area }} m²

\\n
\\n
\\n\\n
\\n

\\n \\n Created at: {{ createdAt | date: \\\"dd MMM yyyy HH:mm\\\" }}\\n \\n

\\n

\\n \\n Measurement period between {{ fromDate | date: \\\"dd MMM yyyy\\\" }} and\\n {{ toDate | date: \\\"dd MMM yyyy\\\" }}\\n \\n

\\n
\\n\\n
\\n
\"","export default \"
\\n

Below is the most recent building fabric score you generated on {{ HTCDate }}. Made changes to your home? Regenerate your score here.

\\n \\n\\n
Building fabric score
\\n

\\n \\n

\\n

\\n An HTC of 100W/°C, for example, means that you would need to maintain a heat source of 100W for every 1 degree warmer inside your home than out. This means that on a cool day with an outside temperature of 10°C you'd need a heat source of 1000W\\n to maintain your home temperature at 20°C.\\n

\\n

\\n The lower the HTC, the better the building’s thermal performance. This score is calculated using our temperature sensor and the\\n SmartHTC algorithm.\\n

\\n \\n

Regenerate your score here.

\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n\"","export default \"
\\n\\n
\\n
Your building fabric score
\\n \\n
\\n\\n\\n \\n
\\n
\\n \\n
\\n
\\n \\n\\n\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n\\n\\n \\n
\\n
\\n

Sorry - we are currently unable to generate your building fabric score. Here's why:

\\n
    \\n
  • \\n
\\n
\\n
\\n \\n\\n\\n \\n
\\n
\\n

Your HTC calculation:

\\n

{{ currentHtc && currentHtc.value || '-' }} W/°C\\n\\n

Created at:\\n {{currentHtc.date | date: \\\"dd MMM yyyy HH:mm\\\"}}

\\n\\n

Measurement period between {{currentHtc.measurement_period.from | date:\\n \\\"dd MMM yyyy\\\"}} and {{currentHtc.measurement_period.to | date: \\\"dd MMM yyyy\\\"}}

\\n\\n

\\n

This will be added to your Property Passport.

\\n\\n
\\n
\\n \\n\\n\\n
\\n \\n
\\n\\n
\"","export default \"
\\n \\n \\n
\\n
\\n \\n
\\n\"","export default \"\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n {{ infographic.attributes.title }}\\n
\\n \\n
576 && shouldDisplaySummary\\\">\\n

\\n
\\n
    \\n \\n
  • \\n By {{ infographic.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ infographic.attributes.authors.data.length - 1 }} Authors\\n
  • \\n \\n
\\n
\\n
\\n
\\n\\n\"","export default \"\\n
\\n
\\n\\n \\n Heat Pump Journey\\n An infographic of the heat pump journey, comprised of six steps: awareness, research, decision making,\\n pre-installation, installation and post-installation. \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n
\\n
\"","export default \"\\n
\\n\\n \\n Installer Journey\\n Infographic explaining steps as to how we can help installers save time and prepare more accurate estimates\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n\"","export default \"
\\n
\\n
\\n
{{installer.businessName}}
\\n - {{getMiles(installer.distCalculated)}} miles away \\n
\\n
\\n {{tech}}\\n
\\n
\\n\\n\\n
\\n\\n
\\n\\n
\\n
\\n Email\\n

{{installer.businessEmail}}

\\n\\n
\\n
\\n Phone\\n

{{installer.telNo}}

\\n
\\n
\\n Address\\n

{{installer.fullAddress.add1}}, \\n {{installer.fullAddress.add2}}, \\n {{installer.fullAddress.town}}, \\n {{installer.location}}\\n

\\n
\\n
\\n
\\n
\\n MCS Certification No. \\n

{{installer.mcsNumber}}

\\n
\\n
\\n Installer website \\n

Visit installer website\\n \\n Visit\\n installer website \\n

\\n\\n
\\n \\n
\\n

MCS Certified\\n

\\n

\\n Boiler Upgrade Scheme

\\n\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n
\"","export default \"\\n
\\n
\\n

Invite a customer to view their data

\\n \\n
\\n
\\n
\\n
\\n \\n\\n \\n\\n
\\n \\n \\n
\\n \\n\\n\\n \\n \\n\\n
\\n\\n \\n\\n
\\n \\n \\n
\\n
\\n
\\n \\n

If a customer more than one property, this will help them know which address you are requesting data for.

\\n \\n\\n
\\n
\\n \\n

If a customer more than one property, this will help them know which address you are requesting data for.

\\n\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n

Invitation sent successfully.

\\n
\\n
\\n

{{errorMessage}}

\\n
\\n
\\n

Our invitation functionality allows you to better understand a prospect’s property profile and energy\\n consumption.\\n

\\n\\n

You can invite a prospective customer to share their data with you regardless of whether or not they have\\n a pre-existing Glowmarkt account - they will receive an email either way and will be prompted to create\\n one if necessary.

\\n\\n

Should they accept your notification, you’ll receive access to a PDF of their data, which includes:

\\n
    \\n
  • Aspects of their property passport (click here for more information), EPC information, annual gas\\n and electricity data from 2021-2022 and SmartHTC score (providing it is attached to their property\\n passport)
  • \\n
  • Radiator schematic
  • \\n
  • Their responses to additional questions related to installation availability\\n
  • \\n
\\n
\\n\\n\\n
\\n \\n
\"","export default \"
\\n \\n\\n \\n
\\n
\\n

Previous step

\\n
\\n
\\n \\n \\n
\\n\\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n\\n \\n\\n
\\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n\\n\\n
\\n
\\n \\n\\n
\\n\\n
\\n\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n\\n\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n\\n
\\n \\n\\n
\\n
\\n\\n \\n
\\n \\n\\n \\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n \\n
\\n\\n \\n\\n
\\n\\n \\n {{option}} \\n\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n\\n
\\n\\n \\n {{option}} \\n\\n\\n
\\n\\n \\n\\n
\\n \\n \\n
\\n \\n

\\n \\n

\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n {{loadObj.errorString}}\\n
\\n
\\n\\n\\n\\n
\\n
\\n
\\n\\n \\n
\\n\\n
\\n

\\n \\n

\\n
\\n\\n \\n\\n
\\n\\n
\"","export default \"\\n\\n\\n\\n\\n
\\n
\\n
{{modalTitle}}
\\n
\\n
\\n {{getNumber() +'/5'}}\\n \\n
\\n
\\n
\\n
\\n \\n\\n
\\n
\\n
\\n
\\n\\n
\\n

Our Installer Journey shows how you can use Glowmarkt from start to finish to foster a smoother\\n installation.

\\n\\n

Get started by completing the following simple steps:

\\n
    \\n
  1. Invite customers to share their data or accept an invitation from a customer
  2. \\n
  3. Access property data before a site visit
  4. \\n \\n
  5. Find out their building fabric score using our Temperature and Humidity Sensors
  6. \\n \\n
\\n\\n

View the entire journey here \\n

\\n\\n\\n\\n
\\n
\\n
\\n \\n\\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n
\\n\\n \\n\\n\\n
\\n\\n\\n
\\n
Invite customers
\\n

Send a customer an invitation. Once they accept you'll be able to see their property data.

\\n
\\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n\\n\\n
\\n
Accept an invitation
\\n

You can also accept an invitation from a customer and have access to their data.

\\n\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n

Once you accept, you’ll recieve a PDF snapshot of property data including: energy consumption and\\n EPC data.\\n Building\\n fabric score (HTC) and radiator schematics will be included if provided by customer.

\\n\\n

You can manage your properties at any time under 'Invitations'.

\\n\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n

We are working on bringing you more functionality by Spring 2024.

\\n
\\n\\n
\\n
Create installer profile
\\n

Update and add details so customers can find you.

\\n
\\n
\\n
\\n Send an estimate to a customer
\\n

They can then contact you about arranging a site visit.

\\n
\\n
\\n
Add installation to case study
\\n

Once installation is complete, enter technical details of to a case study to build up your reputation.\\n

\\n
\\n
\\n
Get alerted if there is an issue
\\n

Receive a notification from a customer if there’s any issues after installation.

\\n
\\n\\n
\\n\\n
\\n \\n\\n\\n\\n\\n
\\n \\n\\n \\n
\\n
\\n
\"","export default \"\\n
\\n\\n

Share your data with an installer

\\n \\n
\\n
\\n
\\n \\n
\\n
\\n Please register your smart meter to get started.\\n
\\n
\\n

You are unable to send an invite until you've completed the following for at least one property.

\\n\\n
\\n
{{ve.name}} {{ve.postalCode}}
\\n
\\n\\n\\n
\\n

This\\n property does not have gas data, no data can be shared.

\\n
\\n\\n
\\n
    \\n
  • Please\\n generate\\n a Property\\n passport here.
  • \\n
  • Your\\n Property Passport must have an EPC.
  • \\n
  • Register your\\n smart\\n meter
  • \\n
  • Create and complete a radiator schematic of your heating system here.
  • \\n
\\n\\n\\n\\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n

Share your home and energy consumption data with installers to give them insights on your home and help\\n determine whether or not your property is ready for a heat pump.

\\n\\n

Installers can use this information to generate an estimate for your installation - without even having to\\n visit your home.

\\n\\n

When you send an invitation to an installer, the following information is shared as a snapshot:\\n

    \\n
  1. Aspects of your property passport: EPC information, annual gas and electricity consumption data from\\n 2021-2022 and your SmartHTC score (providing it is attached to your property passport)
  2. \\n
  3. Radiator schematic
  4. \\n
  5. Responses to additional questions to help inform installers
  6. \\n
\\n
\\n
\\n

Please answer the following questions so the installer can prepare a more accurate estimate\\n\\n

\\n
\\n
\\n \\n \\n

You can find local installers to invite here.\\n

\\n\\n

Add more than 1 email to invite multiple installers. Press enter to add\\n installer. \\n

\\n\\n
\\n \\n \\n \\n \\n\\n \\n \\n
\\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n\\n \\n\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n

Select the schematic that represents your current heating system\\n

\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n

This is just an estimate to let your installer know your approximate availability.\\n

\\n\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n\\n \\n {{option}} \\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n\\n \\n {{option}} \\n
\\n\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n

Invitation sent successfully.

\\n
\\n
\\n\\n\\n\"","export default \"\\n \\n \\n \\n
\\n \\n \\n
\\n\\n \\n \\n\\n\\n\\n
\\n

Keep up to date with new features!

\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n\\n \\n {{ region }}\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n

\\n By registering your details you allow us to email you about new features for Installers within the Heat Pump\\n Community on Glowmarkt.\\n

\\n
\\n
\\n \\n
\\n
\\n
\\n
\"","export default \"
\\n
\\n \\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n

\\n {{ content.attributes.title }} \\n

\\n \\n
768 \\\">\\n

\\n
\\n
    \\n
  • \\n
  • \\n\\n
\\n
\\n
\\n\\n\"","export default \"\\n\\n\\n\\n \\n
\\n
\\n

How efficient is your home?

\\n
\\n
With your smart meter data and our temperature\\n sensor, find out how well your home retains heat.
\\n
\\n
\\n
\\n \\\"Glowmarkt\\n
\\n
\\n
\\n \\n
\\n
\\n

Understand your heating system

\\n
\\n
Create your radiator schematics and find out your heat\\n outputs to share with professionals.
\\n
\\n
\\n
\\n \\\"Glowmarkt\\n
\\n
\\n
\\n \\n
\\n
\\n

Calculate the running cost of a heat pump

\\n
\\n\\n
Find out how much a heat pump could cost you based on your current consumption data.\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\"","export default \"
\\n \\n \\n
\\n\\n\"","export default \"
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n\\n
\\n {{ heroContent.attributes.title }}\\n
\\n

\\n\\n
    \\n \\n
  • \\n By {{ heroContent.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ heroContent.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
    \\n
  • {{ getTimeToRead(heroContent) }} min read
  • \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
    \\n \\n
  • \\n By {{ content.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ content.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
    \\n
  • {{ getTimeToRead(content) }} min read
  • \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n {{ content.attributes.title }}\\n
\\n
    \\n \\n
  • \\n By {{ content.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ content.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
    \\n
  • {{ getTimeToRead(content) }} min read
  • \\n \\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n \\n\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n\\n
\\n {{ heroContent.attributes.title }}\\n
\\n

\\n\\n
    \\n \\n
  • \\n By {{ heroContent.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ heroContent.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
    \\n
  • {{ getTimeToRead(heroContent) }} min read
  • \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n {{ content.attributes.title }}\\n
\\n \\n\\n
    \\n \\n
  • \\n By {{ content.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ content.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
    \\n
  • {{ getTimeToRead(content) }} min read
  • \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \\n\\n
\\n {{ content.attributes.title }}\\n
\\n

\\n\\n
    \\n \\n
  • \\n By {{ content.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ content.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
    \\n
  • {{ getTimeToRead(content) }} min read
  • \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n\\n\"","export default \"
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
    \\n \\n
  • \\n By {{ content.attributes.authors.data[0].attributes.name }}\\n 1\\\">+ {{ content.attributes.authors.data.length - 1\\n }} Authors\\n
  • \\n
    \\n
  • {{ getTimeToRead(content) }} min read
  • \\n \\n
\\n
\\n\\n
\\n
\\n
\\n\\n\\n
\\n\\n\\n
\\n\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n\\n
{{ heroContent.attributes.title }}
\\n

\\n\\n
    \\n \\n
  • \\n By {{ heroContent.attributes.authors.data[0].attributes.name }}\\n 1\\\">+ {{ heroContent.attributes.authors.data.length - 1\\n }} Authors\\n
  • \\n
    \\n
  • {{ getTimeToRead(heroContent) }} min read
  • \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
{{ content.attributes.title }}
\\n
    \\n \\n
  • \\n By {{ content.attributes.authors.data[0].attributes.name }}\\n 1\\\">+ {{ content.attributes.authors.data.length - 1\\n }} Authors\\n
  • \\n
    \\n\\n
  • {{ getTimeToRead(content) }} min read
  • \\n\\n \\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n\\n\\n\\n\\n\\n\"","export default \"
\\n
\\n \\n \\n \\n \\n \\n
\\n\\n\"","export default \"\\n\"","export default \"
\\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n \\n
\\n
\\n
\\n\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n {{loadObj.errorString}}\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n\\n
\\n

\\n \\n

\\n
\\n
\"","export default \"
\\n
\\n
\\n \\n

GLOW

\\n
\\n \\n
\\n
\\n
\\n
\\n \\n\\n

Sign in to Glow

\\n
\\n \\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n \\n\\n \\n \\n
\\n\\n\\n \\n \\n\\n
\\n
\\n {{ loadObj.loadedMessage }}\\n
\\n
\\n\\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
\\n

{{notification.username}}

\\n {{getReadableDateFromIso(notification.createdAt)}}\\n
\\n

Would like to request an estimate for {{notification.address.postcode}}. Accept to see\\n their data.

\\n
\\n \\n \\n
\\n \\n\\n
\\n
\\n\\n
\\n

Invitation accepted. You now have\\n access to their data.

\\n
\\n
\\n

Invitation declined.

\\n
\\n
\\n\\n\\n\\n\\n\\n\\n
\\n
\\n
\\n\\n

{{notification.professionalUsername}}

\\n {{getReadableDateFromIso(notification.createdAt)}}\\n
\\n\\n

Is requesting access to your data to give you a heat pump installation estimate for\\n {{notification.address.firstLine}} {{notification.address.postcode}}.

\\n\\n\\n
\\n \\n \\n
\\n
\\n\\n
\\n

Invitation accepted. You now have\\n access to their data.

\\n
\\n \\n
\"","export default \"\\n\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n {{ page.name }}\\n \\n \\n\\n {{ page.name }}\\n\\n
\\n\\n
\\n \\n
\\n
\\n\\n\"","export default \"
\\n
\\n
\\n
\\n \\n \\n

Your details

\\n
\\n
\\n\\n
\\n
\\n\\n \\n \\n\\n \\n Business details

\\n
\\n
\\n
\\n
\\n \\n

Additional\\n information

\\n
\\n
\\n\\n\\n
\\n
\"","export default \"
\\n
{{ getModalTitle()}}
\\n\\n \\n
\\n
\\n\\n
\\n \\n
\\n\\n

\\n \\n \\n \\n\\n \\n \\n
\\n
\\n\\n\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
Business details
\\n
\\n
\\n

\\n \\n\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n\\n
Skills
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n\\n \\n \\n\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n\\n \\n\\n
\\n \\n
\\n
\\n
\\n\\n
\\n\\n
\\n \\n \\n\\n \\n \\n\\n
\\n \\n \\n
\\n
\\n\\n \\n\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n\\n \\n
\\n\"","export default \"
\\n
Upload estimate
\\n
\\n
\\n
\\n\\n
\\n \\n \\n\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n

{{loadObj.errorString}}

\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n \\n
\\n \\n\\n
\\n
\"","export default \"
\\n
\\n
\\n \\\"schematic\\n
\\n
\\n \\n
\\n
\\n

Complete heating system information

\\n
\\n
\\n \\n

Complete type of heating system

\\n

{{ schematicDocument.data.heatingSystem.manufacturer }} ({{ schematicDocument.data.heatingSystem.model }})

\\n

Complete heating system manufacturer and model

\\n

\\n Water Cylinder: \\n {{ schematicDocument.data.heatingSystem.DHWCylinderSize }} L\\n

\\n
\\n
\\n

Add heat emitter information

\\n
\\n

\\n Total Output: \\n {{ schematicDocument.data.totalHeatingPowerOutput }} W\\n

\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n
\\n

Heat emitter schematics

\\n
Select the relevent schematic
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\\n
\\n

You have not completed a schematic - click here to complete an existing schematic or create a new one.

\\n
\\n
\\n
\\n\\n\\n\"","export default \"
rectSpacing ? { 'background-color': 'white' } : ''\\\" style=\\\"overflow: hidden\\\">
\\n\"","export default \"
\\n
\\n
\\n
Related FAQs
\\n
\\n\\n
\\n
\"","export default \"
\\n \\n \\n \\n
\\n
\\n \\n
\\n \\n\\n
\\n

{{ resourcesList?.attributes.summary }}

\\n
\\n \\n
\\n
\"","export default \"
\\n\\n
\\n
\\n \\n\\n \\n\\n

{{ resourcesList?.attributes.title }}

\\n

{{resourcesList.attributes.summary}}

\\n\\n
\\n
\\n\\n
\\n\\n\\n
\\n
\\n
\\n
\\n \\n
\\n
= 576\\\" class=\\\"table-responsive\\\">\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n
NameDescriptionURL
{{ resource.attributes.title }}{{ resource.attributes.description }}\\n {{\\n resource.attributes.url\\n }}\\n
\\n\\n\\n\\n
\\n
innerWidth\\\">\\n
\\n\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\"","export default \"
\\n
Refresh Data
\\n \\n
\\n\\n\\n\\n
\\n
\\n \\n
\\n
\\n\\n\\n\\n\\n
\\n
\\n

Sorry - we weren't able to refresh your data resources.

\\n
\\n
\\n\\n\\n\\n\\n
\\n
\\n

Your data resources have been successfully refreshed.

\\n
\\n
\\n\"","export default \"\\n\"","export default \"
\\n
In-progress schematics
\\n
Completed schematics
\\n

\\n \\n Below are the schematics which haven't been completed yet. Select one to edit, delete or complete. Alternatively, select to start a new schematic.\\n You have no schematics in progress. Select to start a new schematic.\\n \\n\\n \\n Below are the schematics which have been completed. Select one to download or update.\\n You have no completed schematics. Select to start a new schematic.\\n \\n

\\n\\n
\\n \\n
\\n
\\n\"","export default \"\\n
\\n \\n
\\n
\\n
\\n
\\n\\n\"","export default \"
\\n
\\n

{{ \\\"SETTING_UP_SMART_METER_TITLE\\\" | translate }}

\\n \\n
\\n\\n \\n
\\n
{{ \\\"VERIFICATION_METHOD_QUESTION\\\" | translate }}
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n\\n \\n
\\n
\\n
{{ \\\"DETAILS_TO_REGISTER_TITLE\\\" | translate }}
\\n\\n \\n\\n
\\n \\n\\n \\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n\\n \\n
\\n \\n
\\n
\\n\\n

\\n \\n See examples\\n

\\n\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n\\n \\n\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n\\n
\\n

{{ \\\"SUCCESSFULLY_REGISTERED_TITLE\\\" | translate }}

\\n

\\n

\\n {{ \\\"DOWNLOAD_BRIGHT\\\" | translate }}\\n Android or\\n iOS\\n

\\n
\\n\\n \\n\\n
\\n
\\n {{ \\\"NO_DISPLAY_TITLE\\\" | translate }}\\n
\\n

\\n
\\n \\n\\n \\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n\\n \\n\\n
\\n
{{ \\\"MPAN_CAN_BE_ENROLLED\\\" | translate }}
\\n

{{ \\\"VERIFICATION_VIA_BANK_CARD\\\" | translate }}

\\n \\n
\\n\\n
\\n
\\n

{{ \\\"UPLOADING_DOCS_BRIGHT_INFO\\\" | translate }}

\\n

You will need to provide:

\\n \\n
\\n\\n
\\n
{{ \\\"MPAN_NOT_ENROLLED_TITLE\\\" | translate }}
\\n

\\n
\\n\\n \\n
\\n\"","export default \"\\n\\n\"","export default \"
\\n \\n \\n
\\n
Related Topics
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
Related Articles
\\n
\\n \\n
\\n
\\n\\n\"","export default \"
\\n
\\n\\n
\\n \\n \\n \\n
\\n

\\n
\\n \\n
    \\n \\n
  • \\n By {{ content.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ content.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
    \\n
  • {{ getTimeToRead(heroContent) }} min read
  • \\n\\n \\n \\n
\\n
\\n
\\n
\\n \\\"card\\n
\\n
\\n
\\n
\"","export default \"\"","export default \"
\\n
\\n

{{loadingMessage}}

\\n
\\n\"","export default \" \\n\"","export default \"
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n
\\n \\n

{{ successMessage }}

\\n
\\n \\n
\\n\"","export default \"
\\n \\n
\\n
\\n
\\n
\\n Saved!\\n \\n
\\n
\\n\\n
\\n
\\n
System Incidents
\\n \\n
\\n

Keep up to date with system disturbance affecting sign ups, data downloads and more.

\\n
\\n
\\n
\\n

\\n You are not subscribed to system incidents. Click the button below to keep up to date with system disturbance\\n affecting sign ups, data downloads and more.\\n

\\n
\\n {{ loadObj.errorMessage }}\\n
\\n \\n
\\n\\n
\\n
\\n \\n\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n {{ loadObj.errorMessage }}\\n
\\n \\n Save\\n \\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n
    \\n
  • \\n
    \\n \\n {{ otl.title }}\\n \\n \\n {{ liveIncidents.length }}\\n \\n
    \\n
  • \\n
\\n
\\n
\\n
\\n \\n {{ incidentTimeline.title }}\\n
    \\n
  • \\n {{ otl.title }}\\n \\n {{ liveIncidents.length }}\\n \\n
  • \\n
\\n
\\n
\\n
\\n\\n
\\n

\\n You have subscribed to receive email updates about upcoming system incidents/completions. You can manage your\\n subscription\\n here.\\n

\\n

\\n You can keep up to date with upcoming system incidents and completions by email. Sign in and register your details\\n here.\\n

\\n

\\n You can keep up to date with upcoming system incidents and completions by email. Register your details\\n here. You can\\n manage your subscription here.\\n

\\n
\\n \\n \\n \\n
\\n\\n \\n
\\n \\n \\n \\n Incident Date/Time\\n Target Completion\\n\\n Cause\\n Affected Areas\\n \\n \\n \\n \\n {{ incident.attributes.incidentDateTime | date: \\\"dd/MM/yyyy hh:mm a\\\" }}\\n {{ getCompletionDateTime(incident) | date: \\\"dd/MM/yyyy ~hh:mm a\\\" }}\\n\\n {{ incident.attributes.cause }}\\n \\n To Be Confirmed\\n {{ area }}, \\n \\n \\n \\n \\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n
Incident StartIncident EndCauseAffected Areas
\\n {{ incident.attributes.incidentDateTime | date: \\\"dd/MM/yyyy hh:mm a\\\" }}\\n {{ incident.attributes.completedDateTime | date: \\\"dd/MM/yyyy hh:mm a\\\" }}{{ incident.attributes.cause }}\\n To Be Confirmed\\n {{ area }}, \\n
\\n
\\n\\n \\n \\n\\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n {{ incident.attributes.incidentDateTime | date: \\\"dd/MM/yyyy hh:mm a\\\" }}\\n
\\n
{{ incident.attributes.cause }}
Target Completion:{{ getCompletionDateTime(incident) | date: \\\"dd/MM/yyyy ~hh:mm a\\\" }}
Affected Areas:\\n To Be Confirmed\\n {{ area }}, \\n
- {{ update.attributes.updatedAt | date: \\\"hh:mm a\\\" }}{{ update.attributes.title }}
\\n
\\n\\n\\n
\\n\"","export default \"
\\n

Subscribe to system incidents emails

\\n\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
Please note that we send notifications of upcoming incidents once, when we create them, we do not send reminders thereafter.
\\n

\\n By registering your details you allow us to email you about upcoming incidents or completions.\\n

\\n
\\n
\\n\\n
\\n\\n \\n \\n
\\n\"","export default \"{{ tag.attributes.title }}\\n\\n\\n {{ tag.attributes.title }}\\n\\n\"","export default \"{{pageTitle}}\\n\\n
\\n
\\n\\n
\\n
\\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n
Data TypeUnitDateDownload
\\n

{{resource.name}}

\\n
\\n

{{resource.baseUnit}}

\\n
\\n

{{resource.createdAt | date: \\\"dd MMM yyyy HH:mm\\\" }}

\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\"","export default \"
\\n
\\n
\\n
\\n
\\n
\\n
\"","export default \"
\\n
\\n

{{title}} {{ \\\"TERMS_AND_CONDITIONS\\\" | translate }}

\\n \\n
\\n\\n \\n\\n
\\n\\n
\\n \\n

\\n\\n\\n \\n \\n\\n \\n \\n \\n

\\n
\\n

\\n\\n
\\n \\n
\\n \\n\\n\\n\\n
\\n
\\n

{{title}} {{ \\\"TERMS_AND_CONDITIONS\\\" | translate }}

\\n \\n
\\n\\n\\n
\\n
\\n
\"","export default \"\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n {{ tutorial.attributes.title }}\\n
\\n \\n
\\n

\\n
\\n
    \\n \\n
  • \\n By {{ tutorial.attributes.authors.data[0].attributes.name }}\\n 1\\\"\\n >+ {{ tutorial.attributes.authors.data.length - 1 }} Authors\\n
  • \\n
  • \\n {{ timeToRead }} min read\\n
  • \\n \\n
\\n
\\n
\\n
\\n\\n\\n\\n\\n\\n\\n\\n\\n\"","export default \"
\\n \\n \\n
\\n\\n
\\n
\\n\\n

\\n {{ tutorial.attributes.title }}\\n

\\n
\\n \\n
    \\n
  • \\n By\\n \\n {{ author.attributes.name }}\\n 1 && tutorial?.attributes?.authors.data.length - 1 > i\\n \\\"\\n >,\\n \\n \\n
  • \\n\\n
  • {{ createdAt }}
  • \\n
  • {{ timeToRead }} min read
  • \\n \\n
\\n
\\n
\\n \\n\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n\"","export default \"
\\n \\n \\n \\n
\\n
\\n \\n \\n\\n
\\n
\\n \\n

{{userStory?.attributes?.title}}\\n

\\n \\n
\\n
{{getUpdatedAt()}}
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\"","export default \"
\\n \\n \\n \\n\\n
\\n
\\n \\n \\n

{{ userStory?.attributes.title }}

\\n \\n \\n
\\n
\\n
\\n \\n\\n \\n\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\\n\"","export default \"
\\n
\\n
{{currentPage}}
\\n
\\n
{{currentPage}}\\n \\n \\n
\\n \\n
\\n
\\n \\n
\"","export default \"
\\n
\\n \\n\\n
\\n
\\n \\n \\n
\\n
\"","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Sent fromDate sentStatusRemove property
{{invite.professionalUsername}}{{getReadableDateFromIso(invite.createdAt)}}\\n \\n Active\\n Pending acceptance\\n Pending acceptance\\n Customer revoked access\\n You removed property\\n \\n Declined \\n \\n \\n \\n Remove property \\n Revoked\\n access\\n on {{getReadableDateFromIso(invite.updatedAt)}}\\n \\n
\\n
\\n
\\n
\\n

You haven't received any invites.

\\n
\\n \\n \\n
\\n

We are having trouble getting your received invitations, please try again later.

\\n
\"","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n\\n\\n \\n
Sent toYour referenceDate sentStatusRemove property
{{invite.username}}{{invite.externalReference}}{{getReadableDateFromIso(invite.createdAt)}}\\n\\n Active\\n Pending acceptance\\n \\n Customer revoked access\\n You removed property\\n\\n Declined \\n\\n\\n \\n Remove property \\n Revoked\\n access\\n on {{getReadableDateFromIso(invite.updatedAt)}}\\n\\n
\\n
\\n
\\n
\\n

You have no sent invites. To send an invite select 'Invite customers'

\\n
\\n\\n\\n
\\n

We are having trouble getting your sent invitations, please try again later.

\\n
\"","export default \"
\\n
\\n
\\n

You have no notifications.

\\n
\\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n
\\n
\\n
\"","export default \"\\n
\\n
\\n \\n\\n
\\n
\\n \\n \\n
\\n
\"","export default \"
\\n\\n
Account information
\\n\\n
\\n \\n
\\n\\n
\\n\\n\\n\\n
\\n
\\n
\\n
Email
\\n

{{serviceAgent.email.email}}

\\n
\\n
\\n
\\n
\\n
Business phone number
\\n

{{serviceAgent.phone.phone}}

\\n
\\n
\\n \\n
\\n

Change password

\\n
\\n \\n
\\n
\"","export default \"
\\n
\\n \\n

\\n
\\n
\\n \\n
\\n
\"","export default \"
\\n \\n\\n\\n
\\n \\n
\\n\\n
\\n\\n
\\n
\\n
\\n
Profile picture
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
First name
\\n

{{serviceAgent.profile.firstName}}

\\n
\\n
\\n
\\n
\\n
Last name
\\n

{{serviceAgent.profile.lastName}}

\\n
\\n
\\n
\\n
Regions covered
\\n

\\n\\n {{region}}\\n

\\n
\\n
\\n
\\n
\\n
\\n
Location
\\n

{{serviceAgent.location}}

\\n
\\n
\\n
\\n
\\n
Relevant experience
\\n \\n
\\n
\\n
\\n
\\n
Description
\\n

{{serviceAgent.professionalDescription}}

\\n

-

\\n
\\n
\\n
\\n
\\n
\\n\\n\\n
\\n \\n\\n
\\n\\n \\n\\n\\n
Business details
\\n\\n
\\n
\\n
\\n
Business logo
\\n
\\n\\n \\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n
Business name
\\n

{{serviceAgent.businessName}}

\\n
\\n
\\n
\\n
\\n
Business phone number
\\n

{{serviceAgent.phone.phone}}

\\n
\\n
\\n
\\n
\\n
Business email
\\n

{{serviceAgent.businessEmail}}

\\n

-

\\n
\\n
\\n
\\n\\n
\\n\\n\\n\\n
\\n
\\n
MCS number
\\n

{{serviceAgent.mcsNumber}}

\\n

-

\\n
\\n
\\n
\\n
\\n
Business URL
\\n

{{serviceAgent.businessURL}}

\\n

-

\\n
\\n
\\n
\\n
\\n
Brands you install
\\n
\\n

{{brand}}

\\n
\\n \\n
\\n
\\n
\\n
\\n\\n\\n
\\n\\n
Skills
\\n\\n
\\n
\\n
\\n
Technologies
\\n
\\n

{{technology}}

\\n
\\n
\\n
\\n
\\n
\\n
Skills
\\n

{{skill}}

\\n\\n
\\n
\\n\\n\\n
\\n
\\n
Certifications
\\n\\n

{{certificate.certification}}\\n

\\n\\n
\\n\\n
\\n
\\n
\\n \\n
\\n\\n
\"","export default \"
\\n \\n
\\n
\\n

\\n Welcome to your Installer account, {{ user.given_name }}.\\n

\\n
\\n \\n
\\n
\\n
You have no active properties
\\n\\n\\n \\n
\\n

When you accept a customer's invitation or a customer accepts yours, you'll be able to see their property data\\n here.

\\n
\\n\\n\\n \\n
\\n
\\n
\\n
\\n
Your active properties ({{acceptedEstimateRequests.length}})
\\n \\n
\\n
\\n\\n
\\n \\n\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n\\n \\n
AddressPostcodeYour referenceManage
\\n {{property.address.firstLine}} {{property.address.postcode}}\\n {{property.externalReference}} \\n Add reference\\n \\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

Something went wrong loading your properties- please try again later or contact support@glowmarkt.com.\\n

\\n
\\n\\n
\\n
Useful Articles
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n
\\n
\\n

\\n Welcome to your Local Authority account, {{ user.given_name }}.\\n

\\n
\\n
\\n\\n

We are currently building up these pages, in the meantime you can find some useful articles below or explore\\n the rest of the site. Is there anything you’d like to share or recommend with other local authorities? Send us\\n an email at\\n support@glowmarkt.com or\\n use our form here.\\n

\\n
\\n\\n
\\n
Useful Articles
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n\\n
\\n
\\n \\n
\\n
\"","export default \"\\n\\n\\n
\\n \\n\\n\\n
\\n \\n
\\n
\"","export default \"
\\n
\\n\\n\\n
\\n
\\n 1}\\\" [searchable]=\\\"false\\\"\\n [clearable]=\\\"false\\\" bindLabel=\\\"name\\\" [items]=\\\"assessmentPeriods\\\">\\n \\n
\\n \\n Download as PDF \\n
\\n\\n\\n\\n
\\n
\\n \\n\\n\\n\\n
\\n
\\n
\\n
{{currentTab}}
\\n\\n
\\n
Address
\\n

{{property.address.firstLine}}, {{property.address.postcode}}

\\n
\\n
\\n
Preferred installation date
\\n

{{property.overview.installationDate}}

\\n\\n
\\n
\\n
Space for hot water tank
\\n

{{property.overview.hotWaterTankSpace ? 'Yes' :'No' }}

\\n
\\n
\\n
New radiators installed
\\n

{{property.overview.newRadiatorsFitted ? 'Yes' :'No'}}

\\n
\\n\\n
\\n\\n
\\n\\n
EPC\\n information\\n
\\n
\\n
\\n
\\n
Current energy rating
\\n

{{property.epc.currentEnergyRating}}

\\n
\\n
\\n
Building type
\\n

{{property.epc.buildingType}}

\\n
\\n
\\n
Build date
\\n

{{property.epc.buildDate}}

\\n
\\n
\\n
\\n
\\n
Potential energy rating
\\n

{{property.epc.potentialEnergyRating}}

\\n
\\n
\\n
Window type
\\n

{{property.epc.windowType}}

\\n
\\n
\\n
Lodgement date
\\n

{{property.epc.lodgementDate}}

\\n
\\n
\\n
\\n
\\n
Current energy efficiency score
\\n

{{property.epc.currentEnergyEfficiencyScore}}

\\n
\\n
\\n \\n
\\n
\\n Thermal performance\\n \\n
\\n
\\n
\\n
\\n
\\n
Building fabric score (HTC Score) \\n \\n \\n \\n
\\n

{{property.thermalPerformance.htc}} W/K

\\n
\\n\\n
\\n
Heat loss parameter (HLP)
\\n

{{property.thermalPerformance.hlp}} W/m²/K

\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n Heating system
\\n
\\n\\n
Type
\\n

{{property.heatingSystem.type}}\\n

\\n
\\n
\\n
\\n\\n\\n
\\n
Actual energy consumption from smart meters
\\n
\\n
\\n
\\n\\n
Annual electricity consumption
\\n

{{property.energyConsumption.annualElectricityConsumption}} kWh

\\n
\\n
\\n
Gas peak demand on the coldest day\\n \\n\\n
\\n

Temperature:\\n {{property.energyConsumption.peakDemand.temperature}}°C\\n

\\n

{{property.energyConsumption.peakDemand.consumption}} kWh

\\n
\\n
\\n
\\n
Annual gas consumption
\\n

{{property.energyConsumption.annualGasConsumption}} kWh

\\n\\n
\\n
\\n
\\n
\\n \\n\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\"","export default \"\\n
\\n
\\n
\\n
\\n View all properties\\n \\n \\n
\\n \\n \\n
\\n \\n
\\n
\\n
\"","export default \"
\\n
\\n
{{pageTitle}}
\\n\\n \\n
\\n
\\n

Send and manage existing quotes and estimates for this property. If a site visit is scheduled or has already occurred, input that date in the table.

\\n
\\n\\n
\\n\\n
\\n \\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Date sentAmountTypeDownloadSite visit date
\\n {{formatDate(estimate.createdAt)}}\\n \\n £ {{estimate.amount}}\\n \\n Estimate\\n Download{{formatDate(estimateRequest.siteVisitDate)}}
\\n \\n \\n
\\n\\n\\n
\\n
\\n
\\n

\\n You have no estimates or quotes - select 'Send estimate' to send one.\\n\\n

\\n
\\n\\n
\\n

\\n {{loadObj.errorString }}\\n

\\n
\\n\\n
\\n \\n
\\n\\n
\\n
\"","export default \"
\\n
\\n
{{currentPage}}
\\n\\n
\\n
{{currentPage}} \\n \\n
\\n \\n
\\n
\\n \\n
\"","export default \"
\\n \\n
\\n\\n
\\n\\n
\\n
\\n
You have no bookmarked content
\\n
\\n\\n
\\n \\n
\\n
\\n
\\n
\"","export default \"
= 768 }\\\">\\n
\\n
{{ pageTitle }}
\\n
\\n
\\n \\n

\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n\"","export default \"
\\n
\\n {{ caseStudy.publishedStatus }}\\n {{ caseStudy.completionStatus }}\\n Edit case study\\n
\\n\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n\"","export default \"
\\n
\\n
\\n
Have you recently installed a heat pump?
\\n

If so, you’re bound to understand the value of having real world examples as part of your decision making\\n journey - particularly in the case of Low Carbon Technologies that may seem daunting and unfamiliar.\\n

\\n

By contributing to our Case Study Database and sharing your experience with others, you can be the\\n example\\n for others and help people become more comfortable with these types of installations. In turn, your\\n installer will fill out the more technical system and building details of your installation in order to\\n promote peer to peer learning within the installer community as well.\\n Check out our existing case studies\\n here.\\n

\\n

To add your own Case Study, click ‘Start case study’ below and fill out information relating to your\\n home,\\n your new\\n system and your level of satisfaction with the outcome.

\\n

Currently, you can only add a Case Study for a Heat Pump installation, but we will be adding others such\\n as\\n renovations / insulation work in future iterations of the database.

\\n

We’d love to know what you would find helpful - drop a note to support@glowmarkt.com with any feedback.

\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n\\n\\n
\"","export default \"
\\n
\\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\"","export default \"
= 768 }\\\">\\n
{{ pageTitle }}
\\n
\\n
\\n \\n

\\n
\\n
\\n \\n
\\n
\\n
\\n\"","export default \"
= 768}\\\">\\n
{{pageTitle}}
\\n
\\n
\\n \\n

\\n
\\n
\\n \\n
\\n
\\n
\"","export default \"
\\n
\\n \\n
\\n
\\n
Your tariffs
\\n
Electricity:
\\n\\n
\\n
Unit rate:
\\n

{{electricityTariff.rate}}p per kWh

\\n
\\n\\n
\\n
Standing charge:
\\n

{{ electricityTariff.standing }}p per day

\\n
\\n\\n
\\n
Type:
\\n

{{electricityTariff.type}}

\\n
\\n
\\n
Source:
\\n

Meter

\\n

{{electricityTariff.structure[0].source}}

\\n
\\n
\\n\\n\\n
\\n
Gas:
\\n\\n\\n
\\n
Unit rate:
\\n

{{gasTariff.rate}}p per kWh

\\n
\\n\\n
\\n
Standing charge:
\\n

{{ gasTariff.standing}}p per day

\\n
\\n\\n
\\n
Type:
\\n

{{gasTariff.type}}

\\n
\\n\\n
\\n\\n\\n
\"","export default \"\"","export default \"
= 768}\\\">\\n
{{ pageTitle }}
\\n
\\n
\\n \\n

\\n
\\n
\\n
\\n
\\n\\n
{{ subTitle }}
\\n
\\n
\\n
\\n \\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\"","export default \"
\\n
\\n
\\n
Address
\\n

{{ passport.address.address || \\\"-\\\" }}

\\n

{{ passport.address.region || \\\"-\\\" }}

\\n

{{ passport.address.postcode || \\\"-\\\" }}

\\n \\n
Type
\\n

{{passport.epcRecords[0].built_form}}

\\n
\\n
\\n

View your property passport here.

\\n
\\n
\\n
\\n

Generate a property passport here.

\\n
\\n
\\n \\n
\\n
\\n
\"","export default \"
\\n
\\n
\\n

\\n This tool estimates the annual cost of running a heat pump based on your current gas consumption. As the\\n model is in active development, we do not save the output - you can run the estimate as many times as you like. If we don't have enough information about your home, we will ask you to give us some more details.

\\n

To start click “Estimate heat pump running cost”.

\\n

\\n Please note: in this estimate we assume the consumption of the heat pump is the same as the current gas\\n consumption in terms of kWh and we do not take the energy efficiency of your home into consideration. As we\\n develop the tool further we will be able to take more factors into account, increasing the accuracy of the\\n estimate.\\n

\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n

\\n We seem to be missing some information about your property. Please fill in the form below to continue.\\n

\\n

\\n Please fill in the form below and press \\\"Estimate heat pump cost\\\"\\n

\\n
\\n
\\n \\n
\\n\\n
\\n

\\n Annual gas consumption - we need to know how much gas you use in a year. You can\\n find this information on your gas bill or by contacting your gas supplier.\\n

\\n

\\n Current gas unit rate and\\n current gas standing charge\\n - we need to know how much you pay for gas. You can find this information on your gas bill or by contacting\\n your gas supplier.\\n

\\n

\\n Current electricity unit rate and\\n current electricity standing charge - we need to know how much you pay for\\n electricity. You can find this information on your electricity bill or by contacting your electricity\\n supplier.\\n

\\n
\\n
\\n\\n
\\n

Your heat pump running cost estimate

\\n
\\n
\\n
\\n
\\n \\n
\\n

£{{ results.values.annualHeatPumpCost.value | number: \\\"1.2-2\\\" }}

\\n /y\\n
\\n
\\n Heat pump running cost\\n
\\n
\\n\\n \\n
\\n
\\n 0\\\" class=\\\"bi bi-arrow-down-right\\\">\\n £{{ results.values.annualSavings.value | absolute | number: \\\"1.2-2\\\" }}\\n
\\n /y\\n
\\n
\\n 0\\\" class=\\\"text-gray-600\\\">Less than gas\\n More than gas\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n There are a few ways to reduce the running cost of a heat pump, including finding a more favourable\\n electricity tariff, optimising the heat pump performance or improving the fabric of your home as to reduce\\n overall energy consumption - explore our articles to\\n find out more.\\n

\\n
\\n
\\n\\n
\\n\\n

\\n See below for more detailed information on how we calculated your estimation. If you’d like to regenerate your\\n estimate, you can do so with either default parameters or your own customised parameters.\\n

\\n
\\n
\\n

\\n \\n Parameters we used\\n \\n

\\n \\n
\\n
\\n
\\n
Before
\\n 0 ? 'border-danger' : 'border-success'\\\"\\n >\\n
\\n
£{{ results.values.annualGasCost.value | absolute | number: \\\"1.2-2\\\" }}
\\n /y\\n
\\n
\\n Gas cost\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Gas consumption\\n {{ parameters.values.annualGasConsumption.value | number: \\\"1.2-2\\\" }}\\n kWh/y\\n
Current gas unit rate\\n {{ value.rate | number: \\\"1.2-2\\\"\\n }}{{ parameters.values.unitRateGas.units }}\\n
Current gas standing charge\\n {{ parameters.values.standingChargeGas.value | number: \\\"1.2-2\\\" }}\\n {{ parameters.values.standingChargeGas.units }}\\n
\\n
\\n
\\n
\\n
After
\\n 0 ? ' border-success' : 'border-danger'\\\"\\n >\\n
\\n
£{{ results.values.annualHeatPumpCost.value | number: \\\"1.2-2\\\" }}
\\n /y\\n
\\n
\\n Heat pump running cost\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Gas consumption\\n {{ parameters.values.annualGasConsumption.value | number: \\\"1.2-2\\\" }}\\n kWh/y\\n
\\n Heat pump COP\\n {{ parameters.values.heatPumpCop.value | number: \\\"1.2-2\\\" }}
Current electricity unit rate\\n {{ value.rate | number: \\\"1.2-2\\\"\\n }}{{\\n parameters.values.unitRateElectricity.units\\n }}\\n
Current electricity standing charge\\n {{ parameters.values.standingChargeElectricity.value | number: \\\"1.2-2\\\" }}\\n {{ parameters.values.standingChargeElectricity.units }}\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n \\n How we calculated gas cost?\\n \\n

\\n \\n
\\n
\\n

Below is a breakdown of the calculations we used to calculate your current gas cost.

\\n

\\n 1. We multiplied your current annual (past 365 days) gas consumption by\\n your current gas unit rate. This gave us your current gas cost in pence without the standing charge.\\n
\\n 2. We multiplied your current gas standing charge by 365 days. This gave\\n us your current gas standing charge in pence for the year.\\n
\\n 3. We added the results of 1 and 2. This gave us your current gas cost in\\n pence.\\n
\\n 4. We divided the result of 3 by 100 to get your current gas cost in\\n pounds.\\n
\\n ({{ parameters.values.annualGasConsumption.value | number: \\\"1.2-2\\\" }}\\n kWh/y x\\n {{ parameters.values.unitRateGas.value[0].rate | number: \\\"1.2-2\\\" }}\\n {{ parameters.values.unitRateGas.units }} +\\n {{ parameters.values.standingChargeGas.value | number: \\\"1.2-2\\\" }}\\n {{ parameters.values.standingChargeGas.units }} x 365 ) /100 =\\n £{{ results.values.annualGasCost.value | number: \\\"1.2-2\\\" }} /y\\n

\\n
\\n
1\\\">\\n

Below is a breakdown of the calculations we used to calculate your current gas cost.

\\n

\\n 1. For each time of use rate, we multiplied your current annual (past 365\\n days) gas consumption by the gas unit rate for that timeslot and the percentage of your consumption\\n that is in that timeslot.\\n
\\n 2. We added the results of 1. This gave us your current gas cost in pence\\n without the standing charge.\\n
\\n 3. We multiplied your current gas standing charge by 365 days. This gave\\n us your current gas standing charge in pence for the year.\\n
\\n 4. We added the results of 2 and 3. This gave us your current gas cost in\\n pence.\\n
\\n 5. We divided the result of 3 by 100 to get your current gas cost in\\n pounds.\\n

\\n
\\n
\\n
\\n
\\n
\\n

\\n \\n How we calculated heat pump cost?\\n \\n

\\n \\n
\\n
\\n

Below is a breakdown of the calculations we used to estimate your heat pump running cost.

\\n

\\n 1. We divide your current annual (past 365 days) gas consumption by\\n the average\\n heat pump COP. This gave us the heat pump consumption in kWh.\\n
\\n 2. We multiplied the heat pump consumption by your current electricity\\n unit rate. This gave us your heat pump cost in pence without the standing charge.\\n
\\n 3. We multiplied your current electricity standing charge by 365 days.\\n This gave us your current electricity standing charge in pence for the year.\\n
\\n 4. We added the results of 2 and 3. This gave us the heat pump cost in\\n pence.\\n
\\n 5. We divided the result of 4 by 100 to get the heat pump cost in pounds.\\n
\\n (({{ parameters.values.annualGasConsumption.value | number: \\\"1.2-2\\\" }}\\n kWh/y / {{ parameters.values.heatPumpCop.value | number: \\\"1.2-2\\\" }} COP) x\\n {{\\n parameters.values.unitRateElectricity.value[0].rate | number: \\\"1.2-2\\\"\\n }}\\n {{ parameters.values.unitRateElectricity.units }} +\\n {{ parameters.values.standingChargeElectricity.value | number: \\\"1.2-2\\\" }}\\n {{ parameters.values.standingChargeElectricity.units }} x 365 ) /100 =\\n £{{ results.values.annualHeatPumpCost.value | number: \\\"1.2-2\\\" }} /y\\n

\\n
\\n\\n
1\\\">\\n

Below is a breakdown of the calculations we used to estimate your heat pump running cost.

\\n

\\n 1. We divide your current annual (past 365 days) gas consumption by\\n the average\\n heat pump COP. This gave us the heat pump consumption in kWh.\\n
\\n 2. For each time of use rate, we multiplied the heat pump consumption by\\n the electricity unit rate for that timeslot and the percentage of the consumption that is in that\\n timeslot.\\n
\\n 3. We added the results of 2. This gave us the heat pump cost in pence\\n without the standing charge.\\n
\\n 4. We multiplied your current electricity standing charge by 365 days.\\n This gave us your current electricity standing charge in pence for the year.\\n
\\n 5. We added the results of 3 and 4. This gave us the heat pump cost in\\n pence.\\n
\\n 6. We divided the result of 5 by 100 to get the heat pump cost in pounds.\\n

\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n Regenerate w/ default parameters\\n \\n
\\n
\\n \\n
\\n
\\n \\n Back to 'Start'\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n

\\n An error occurred while trying to estimate the annual heat pump cost. Please try again later. If the problem\\n persists, please email us at\\n support@glowmarkt.com.\\n

\\n
\\n
\\n \\n\\n\"","export default \"
= 768}\\\">\\n
{{ pageTitle }}
\\n
\\n\\n
\\n
\\n \\n
\\n

\\n Glowmarkt offers several tools and resources designed to help prepare you for a heat pump installation, from understanding your heating needs to helping you connect with installers. We have outlined how these can be used, step by step, in our heat pump journey tool in order to help foster a smoother installation and build confidence.\\n

\\n\\n

To begin your heat pump journey, please select the button below.\\n\\n \\n\\n

\\n
\\n \\n
\\n
\\n\\n\\n
\\n

\\n Glowmarkt offers several tools and resources designed to help prepare you for a heat pump installation, from understanding your heating needs to helping you connect with installers. We have outlined how these can be used, step by step, in our heat pump journey tool in order to help foster a smoother installation and build confidence.\\n

\\n \\n \\n

To continue your heat pump journey, please select the button below

\\n
\\n \\n
\\n
\\n\\n\\n
\\n

This\\n property does not have gas data, you cannot start a heat pump journey.

\\n
\\n\\n
\\n

Register your smart meter to get started

\\n
\\n\\n \\n
\\n\\n\\n\\n
\\n
\\n
\"","export default \"

\\n Understanding how your home is currently heated, and how effective your ‘heat emitters’ (radiators and underfloor heating) are gives professional energy assessors, or heating system designers, valuable information about your home before they come\\n to visit.\\n

\\n
\\n

\\n By using our Radiator / heating tool you can put that information together quite quickly; radiators are a key part of an efficient heating system. This information can then be used to determine whether new radiators are required in the home\\n depending on the installation you’d like to take place, and to help with generating and improving the accuracy of remote quotes.\\n

\\n
\\n
\\n

View all

\\n \\n
\\n
\\n

\\n You have {{ inProgressCount }} schematics in progress. Get a measurement tool out, and complete here.\\n

\\n

You have not started a schematic. Get a measurement tool out, and get started here.

\\n
\\n\"","export default \"
= 768}\\\">\\n
{{ pageTitle }}
\\n
\\n
\\n \\n

\\n
\\n
\\n
\\n
\\n
{{ subTitle }}
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\"","export default \"
\\n
\\n \\n
\\n\\n
\\n \\n \\n
\\n \\n
\\n\\n \\n
\\n

\\n

This tool allows you to generate an estimate of your home's building fabric efficiency score from your energy consumption data, internal temperature and by entering a few details.

\\n

\\n Read more\\n here.\\n

\\n\\n
Before you start
\\n
    \\n
  • \\n

    \\n To calculate your building fabric score, you need an internal temperature sensor, you can purchase one\\n here.\\n

    \\n
  • \\n
  • Please note: currently this calculation requires 21 days of internal temperature data when the heating is on; it can't generate a result when the weather is warmer.
  • \\n
\\n
Steps to get your calculation
\\n

1. Select ‘Generate building fabric score'.

\\n

2. Enter details about your property and get your score.

\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n

Generate a property passport here to get started.

\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n
\\n \\n\\n
\\n
\\n \\n \\n
\\n
\"","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n\\n\\n \\n
FromDate sentInformation sentStatusRevoke access
{{invite.professionalUsername}}{{getReadableDateFromIso(invite.createdAt)}}\\n \\n View information \\n \\n\\n Pending acceptance \\n Active\\n You revoked access\\n Installer revoked access\\n Declined\\n\\n\\n\\n\\n \\n Revoke access \\n Revoked\\n access\\n on {{getReadableDateFromIso(invite.updatedAt)}}\\n\\n
\\n
\\n
\\n
\\n

You haven't received any invites.

\\n
\\n\\n\\n
\\n

We are having trouble getting your received invitations, please try again later.

\\n
\\n
\\n \\n
\"","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n\\n\\n \\n
Sent toDate sentInformation sentStatusRevoke access
{{invite.professionalUsername}}{{getReadableDateFromIso(invite.createdAt)}}\\n \\n View information \\n \\n\\n Active\\n Pending Installer acceptance\\n Pending Installer acceptance\\n You revoked access\\n Installer revoked access\\n\\n Declined \\n\\n\\n \\n Revoke\\n access \\n Revoked\\n access\\n on {{getReadableDateFromIso(invite.updatedAt)}}\\n\\n
\\n
\\n
\\n
\\n

You have no sent invites.

\\n \\n\\n
\\n\\n\\n
\\n

We are having trouble getting your sent invitations, please try again later.

\\n
\\n\\n
\\n \\n
\"","export default \"
\\n
\\n
\\n

You have no notifications.

\\n
\\n
\\n
\\n \\n
\\n
\\n\\n\\n \\n\\n

An installer has invited you to share your data with them to generate a heat pump installation estimate.\\n

\\n

Please register your smart meter to get started.

\\n\\n\\n\\n
\\n
\\n

An installer has invited you to share your data with them to generate a heat pump installation estimate.\\n

\\n

In order to accept or deny their invitation, please complete the tasks outlined for at least one\\n property *

\\n

\\n *If your property does not have an EPC or gas data, you will not be able to share data from that\\n property with an installer.\\n

\\n
\\n
{{ve.name}} {{ve.postalCode}}
\\n
\\n\\n\\n
\\n

This\\n property does not have gas data, no data can be shared.

\\n
\\n\\n
\\n
    \\n
  • Please\\n generate\\n a Property\\n passport here.
  • \\n
  • Your\\n Property Passport must have an EPC.
  • \\n
  • Register your\\n smart\\n meter
  • \\n
  • Create and\\n complete a radiator schematic of your heating system here.
  • \\n
\\n\\n\\n\\n
\\n
\\n
\\n\\n
\\n \\n
\\n
\\n Something went wrong, please try again later.\\n
\\n\\n\\n
\\n
\"","export default \"
\\n
\\n \\n\\n
\\n
\\n \\n \\n
\\n
\"","export default \"\\n\\n\\n\"","export default \"
\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n
\\n
\"","export default \"
\\n
\\n
\\n
\\n
\\n 1 }\\\" aria-label=\\\"service\\\" id=\\\"service\\\"\\n (change)=\\\"switchService($event)\\\" [items]=\\\"dropdownOptions\\\" bindValue=\\\"name\\\" [placeholder]=\\\"\\\"\\n bindLabel=\\\"name\\\" [hideSelected]=\\\"true\\\" [searchable]=\\\"false\\\" [clearable]=\\\"false\\\">\\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n

Hmmm.. something is missing!

\\n

\\n
    \\n\\n

    No data currently available, please try again\\n later.

    \\n \\n
    \\n
    \\n\\n
    \\n
    \\n

    Enter your UPRN

    \\n
    \\n
    \\n

    \\n Our reference database does not include a UPRN for your property. Please find yours at https://www.findmyaddress.co.uk/ and enter it\\n below in order to\\n generate your Property Passport.\\n

    \\n
    \\n
    \\n \\n \\n
    \\n \\n \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n
    0\\\"\\n class=\\\"d-flex justify-content-center flex-column\\\">\\n
    \\n
    \\n

    Create Property Passport (a digital record of your home)

    \\n
    \\n
    \\n
    \\n \\n

    Read more here.

    \\n\\n \\n
    \\n
    \\n Create my Property Passport\\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n \\n
    \\n\\n
    \\n \\n \\n\\n
    \\n
    \\n
    \\n
    \\n

    PROPERTY PASSPORT

    \\n

    Hildebrand Technology Limited

    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
      \\n
    • \\n
      Address
      \\n

      {{ passport.address.address || \\\"-\\\" }}

      \\n
    • \\n
    • \\n
      Region
      \\n

      {{ passport.address.region || \\\"-\\\" }}

      \\n
    • \\n
    • \\n
      Postcode
      \\n

      {{ passport.address.postcode || \\\"-\\\" }}

      \\n
    • \\n
    \\n
    \\n
    \\n
      \\n
    • \\n
      UPRN
      \\n

      {{ passport.uprn || \\\"-\\\" }}

      \\n
    • \\n
    • \\n
      Electricity meter ID
      \\n

      {{ passport.currentESME?.EUI || \\\"-\\\" }}

      \\n
    • \\n
    • \\n
      Gas meter ID
      \\n

      {{ passport.currentGSME?.EUI || \\\"-\\\" }}

      \\n
    • \\n \\n
    \\n
    \\n\\n
    \\n
      \\n
    • \\n
      Passport ID
      \\n

      {{ passport.propertyPassportId || \\\"-\\\" }}

      \\n
    • \\n
    • \\n
      Date Created
      \\n

      {{ passport.createdAt | date : \\\"dd MMM yyyy\\\" || \\\"-\\\" }}

      \\n
    • \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
      \\n
    • \\n
      Current Energy Rating
      \\n

      {{ passport.currentEpc?.current_energy_rating || \\\"-\\\" }}

      \\n
    • \\n
    • \\n
      Potential Energy Rating
      \\n

      {{ passport.currentEpc?.potential_energy_rating || \\\"-\\\" }}

      \\n
    • \\n
    \\n
    \\n
    \\n
      \\n
    • \\n
      Current Annual Energy Consumption
      \\n

      \\n {{ passport.currentEpc?.energy_consumption_current || \\\"-\\\" }}\\n kWh/m2\\n

      \\n
    • \\n
    • \\n
      Potential Annual Energy Consumption
      \\n

      \\n {{ passport.currentEpc?.energy_consumption_potential || \\\"-\\\" }}\\n kWh/m2\\n

      \\n
    • \\n
    \\n
    \\n\\n
    \\n
      \\n
    • \\n
      Lodgement Date
      \\n

      {{ passport.currentEpc?.lodgement_date | date : \\\"dd MMM yyyy\\\" || \\\"-\\\" }}

      \\n
    • \\n
    \\n
    \\n\\n \\n
    \\n
    \\n \\n
    \\n
    \\n\\n \\n
    \\n
    \\n

    Your home’s heat retention score

    \\n
    \\n\\n \\n
    \\n \\n
    \\n
    Heat retention score
    \\n \\n

    \\n

    \\n An HTC of 100W/°C, for example, means that you would need to maintain a heat source of 100W for every 1\\n degree warmer inside your home than out. This means that on a cool day with an outside temperature of\\n 10°C you'd need a heat\\n source of 1000W to maintain your home temperature at 20°C.\\n

    \\n

    \\n The lower the HTC, the better the building’s thermal performance. This score is calculated using our\\n temperature sensor and the\\n SmartHTC\\n algorithm.\\n

    \\n \\n
    \\n
    \\n \\n
    \\n
    \\n\\n \\n
    \\n
    \\n

    \\n

    With our temperature sensor and the SmartHTC\\n algorithm, you can get that measurement.

    \\n\\n

    Note: If you don't have an EPC, you can get an estimate of your building fabric score\\n through filling out some details here.

    \\n
    Before you start
    \\n
      \\n
    • \\n

      To calculate your building fabric score, you need a Glow temperature and humidity sensor, you can\\n purchase one here.

      \\n
    • \\n
    • Please note: currently this calculation requires 21 days of consecutive internal temperature data\\n when the heating is on; it can't generate a result when the weather is warmer.
    • \\n
    \\n\\n \\n
    Steps to get your calculation
    \\n

    1. Select 'Generate building fabric score'.

    \\n
    \\n\\n
    \\n \\n
    \\n
    \\n
    \\n\\n \\n
    \\n\\n \\n \\n
    \\n
    \\n
    \"","export default \"
    \\n
    \\n
    \\n
    Your Heat Emitter Schematics
    \\n

    \\n Understanding how your home is currently heated, and how effective your ‘heat emitters’ (radiators and underfloor heating) are gives professional energy assessors, or heating system designers, valuable information about your home before they\\n come to visit.\\n

    \\n

    \\n By using this tool you can put that information together quite quickly; radiators are a key part of an efficient heating system. This information can then be used to determine whether new radiators are required in the home\\n depending on the installation you’d like to take place, and to help with generating and improving the accuracy of remote quotes.\\n

    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
      \\n
    • \\n \\n \\n \\n
    • \\n\\n
    • \\n
      \\n \\n
    • \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n\"","export default \"
    \\n
    Personal details
    \\n

    \\n Name: {{ account.name }}\\n

    \\n

    \\n Email: {{ account.email }}\\n

    \\n\\n
    \\n \\n
    \\n
    \"","export default \"
    \\n
    \\n \\n

    \\n
    \\n
    \\n \\n
    \\n
    \"","export default \"
    \\n
    \\n
    Manage your properties
    \\n Add property\\n
    \\n\\n
    \\n \\n
    \\n
    \\n

    Rename your properties here

    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n {{ ve.name }}\\n \\n
    \\n\\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n\\n
    \\n Devices associated:\\n
    \\n \\n Gas meter ID: \\n Electricity meter ID: \\n {{ resource.hardwareId }}\\n \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n \\n
    Saved
    \\n
    \\n
    Consent and meter management
    \\n

    Renew or revoke consent

    \\n
    \\n

    {{ errorMessage }}

    \\n
    \\n\\n
    \\n \\n
    \\n
    Active consent by meter
    \\n
    \\n \\n
    \\n
    \\n \\n
    \\n
    Consent requiring renewal
    \\n\\n
    \\n \\n
    \\n
    \\n \\n
    \\n
    Expired consent by meter
    \\n\\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n\"","export default \"\\n
    \\n
    Under maintenance
    \\n

    We are making updates to this page. Please check back later. In the mean time, if you are currently subscribed to system incidents and wish to unsubscribe, you can do so via a previous email.

    \\n
    \\n\"","export default \"
    = 768}\\\">\\n
    {{pageTitle}}
    \\n
    0\\\" class=\\\"card card \\\">\\n
    \\n \\n
    \\n
    \\n \\n
    \\n
    \\n\\n
    \\n \\n
    \\n
    \"","export default \"
    \\n
    \\n
    \\n
    Glowmarkt Tools
    \\n
    \\n

    Hmmm... something is missing!

    \\n

    \\n

    No data currently available. You need to register your smart meter.

    \\n
    \\n \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    Glowmarkt Tools
    \\n

    {{ currentPage }}

    \\n
    \\n 1 }\\\"\\n aria-label=\\\"service\\\"\\n id=\\\"service\\\"\\n (change)=\\\"switchService($event)\\\"\\n [items]=\\\"dropdownOptions\\\"\\n bindValue=\\\"name\\\"\\n [placeholder]=\\\"\\\"\\n bindLabel=\\\"name\\\"\\n [hideSelected]=\\\"true\\\"\\n [searchable]=\\\"false\\\"\\n [clearable]=\\\"false\\\"\\n >\\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n\"","export default \"
    \\n \\n
    \\n
    \\n
    \\n
    \\n \\n\\n \\n\\n
    \\n

    {{ community.attributes.name }} Community

    \\n
    \\n
    \\n
    \\n
    \\n
    \\n

    \\n

    \\n

    \\n
    \\n
    \"","export default \"\\n\\n
    \\n
    \\n \\n\\n
    \\n
    \\n
    \\n
    \\n

    Who are we?

    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n

    Helping achieve Net Zero mission through our projects

    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n\\n \\\"Build\\n \\\"Beta\\n \\n \\\"SE2\\n\\n \\n
    \\n \\n\\n
    \\n
    \\n
    \\n

    Heat Pump Ready

    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n

    Security

    \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \"","export default \"
    \\n \\n
    \\n\\n
    \\n \\n
    \\n
    \\n
    \\n \\n \\n
    \\n \\n \\n
    \\n
    \\n \\n \\n\\n \\n \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n \\n\\n
    \\n \\n
    \\n
    \\n\"","export default \"
    \\n \\n
    \\n\\n
    \\n \\n
    \\n
    \\n
    \\n \\n \\n
    \\n \\n \\n
    \\n
    \\n \\n \\n\\n \\n \\n
    \\n
    \\n
    \\n
    \\n\\n\\n\\n
    \\n \\n \\n
    \\n\"","export default \"
    \\n \\n
    \\n
    \\n\\n
    \\n
    \\n \\\"Bright\\n
    \\n
    \\n
    \\n
    \\n
    \\n \\\"Bright\\n \\\"Bright\\n
    \\n
    \\n

    Monitor your energy consumption anytime,\\n anywhere for free with Bright.

    \\n
    \\n
    \\n
    \\n
    \\n \\n \\\"Google\\n \\n \\\"Google\\n
    \\n
    \\n\\n \\n \\\"Apple\\n\\n \\n \\\"Apple\\n
    \\n
    \\n
    \\n\\n\\n\\n\\n\\n\\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
    \\n

    Take advantage of your Glowmarkt account with no extra effort

    \\n

    Log into Bright with your Glow credentials

    \\n \\n
    \\n
    \\n
    \\n
    \\n \\\"Bright\\n
    \\n
    \\n\\n
    \\n
    \\n\\n\\n\\n
    \\n
    \\n
    \\n\\n
    \\n

    See consumption trends

    \\n

    See historical data from when your smart meter was\\n installed.

    \\n
    \\n \\n
    \\n \\\"Bright\\n
    \\n\\n\\n
    \\n
    \\n\\n
    \\n\\n
    \\n \\\"Bright\\n
    \\n
    \\n

    Compare time periods

    \\n

    Compare by day, week, weekday and month

    \\n
    \\n
    \\n\\n
    \\n\\n
    \\n
    \\n

    Download Bright today

    \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n \\n \\n\\n \\n
    \\n
    \\n
    \\n
    \\n\\n\\n\\n\\n\\n\\n
    \"","export default \"
    \\n \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n

    Case Studies

    \\n

    \\n There's nothing like seeing what people like you experienced when getting a heat pump based heating\\n system; see the real world example below. See what systems people have installed, which installers they used, and their\\n satisfaction with the process and outcomes. Explore the database by searching for\\n homes like yours, your local area or installer. Contact us to contribute a case study at\\n support@glowmarkt.com.\\n

    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n\"","export default \"
    \\n \\n
    \\n\\n\\n\\n
    \\n \\n\\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n\\n
    \\n\\n\\n\\n
    \\n
    \\n \\n
    \\n
    \\n

    Resources for {{ community?.attributes.name }}s

    \\n

    \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n \\n
    \"","export default \"
    \\n
    \\n\\n
    \\n \\n\\n
    \\n\\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n

    Contact us

    \\n

    Have any questions or feedback?

    \\n

    Send us a message through the form and we’ll be in touch soon as possible.

    \\n
    \\n
    \\n
    \\n \\n \\n
    \\n \\n
    \\n
    \\n
    \\n \\n \\n
    \\n \\n
    \\n
    \\n\\n
    \\n \\n \\n
    \\n \\n
    \\n
    \\n
    \\n \\n
    {{submitMessage}}
    \\n
    \\n
    \\n\\n
    \\n
    Or send us a message here:
    \\n
    \\n \\n

    \\n support@glowmarkt.com\\n

    \\n \\n
    \\n \\n
    \\n \\n

    Need help? Read our Support pages \\n

    \\n \\n
    \\n
    \\n
    \\n
    \\n\\n\\n\\n
    \\n\\n
    \\n
    \\n
    \"","export default \"\\n
    \\n
    \\n
    \\n
    \\n\\n

    You have registered for this event.

    \\n

    If you reduce your consumption enough, you will go into the draw and we will let you know if you've been selected for the £1000 prize

    \\n
    \\n
    \\n \\n
    \\n

    \\n
    \\n \\n \\n\\n
    \\n
    \\n

    You haven't registered for this event.

    \\n

    We'll let you know about the next one

    \\n

    You can opt out in Bright by going to Menu > Glowmarkt > Glow Delight > Revoke

    \\n
    \\n
    \\n \\n
    \\n\\n
    \\n
    \"","export default \"\\n
    \\n \\n
    \\n\\n
    \\n
    \\n \\n
    \\n\\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \"","export default \"
    \\n \\n
    \\n\\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n

    \\n {{ topic?.attributes.name }}\\n

    \\n
    {{ topic?.attributes.description }}
    \\n\\n
    \\n \\n \\n
    \\n\\n
    \\n \\n\\n \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n
    \\n Can't find an answer to your question? Please email support@glowmarkt.com.\\n
    \\n
    \\n
    \\n
    \"","export default \"
    \\n \\n \\n\\n
    \\n
    \\n

    How can we help?

    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n \\n
    \\n
    \\n\"","export default \"
    \\n
    Search for a Heat Pump installer in your area
    \\n\\n \\n

    Looking to get a heat pump? Sign up here to share your energy data with installers.

    \\n
    \\n
    Enter postcode
    \\n
    \\n \\n \\n
    \\n
    \\n Add filter\\n
    \\n\\n
    \\n
    \\n Choose type of heat pump\\n
    \\n
    \\n\\n\\n
    \\n \\n \\n
    \\n\\n\\n\\n
    \\n
    \\n
    \\n
    \\n Choose skills\\n
    \\n
    \\n\\n\\n
    \\n \\n \\n
    \\n\\n\\n\\n
    \\n
    \\n \\n
    Other
    \\n\\n
    \\n \\n\\n \\n
    \\n
    \\n \\n\\n \\n
    \\n\\n
    \\n \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
    Showing {{ count }}\\n installers near '{{postcode}}'
    \\n\\n
    {{errorMessage}}
    \\n
    \\n\\n
    \\n \\n {{\\n tag.name }}\\n \\n \\n {{technology}}\\n \\n \\n \\n {{skill}}\\n \\n \\n
    \\n\\n \\n
    \\n
    \\n
    \\n\\n \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    Related Articles
    \\n \\n\\n
    \\n
    \\n
    \\n \\n
    \"","export default \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n

    {{ \\\"PASSWORD_RESET_GENERATE_PASSWORD_TOKEN\\\" | translate}}

    \\n \\n
    \\n \\n
    \\n \\n \\n\\n\\n
    \\n\\n \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n {{ loadObj.loadedMessage }}\\n
    \\n
    \\n
    \\n
    \\n\\n \\n\\n {{ this.loadObj.errorString |\\n translate}}\\n \\n
    \\n
    \\n \\n \\n
    \\n
    \\n\\n
    \\n {{ \\\"ACCOUNT_ALREADY_EXISTS_Q\\\" |translate}}\\n Log In\\n \\n {{ \\\"VERIFICATION_ALREADY_HAVE_TOKEN\\\"| translate}}\\n {{\\\"PASSWORD_RESET\\\" | translate}}\\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \"","export default \"
    \\n \\n
    \\n\\n\\n\\n
    \\n
    \\n

    Glossary

    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n\\n\\n\\n\\n
    = 567\\\" class=\\\"nav-container d-flex sticky-top bg-white mt-3\\\">\\n
    \\n \\n
    \\n
    \\n\\n\\n\\n\\n

    \\n Sorry, we couldn't find anything for \\n {{ searchTerm }} \\n \\n tagged with {{ tagsToFilter.join(\\\" and \\\") }} . \\n

    \\n

    Try different or fewer keywords or tags.

    \\n\\n\\n
    \\n
    \\n
    = 567 }\\\">\\n
    \\n
    \\n
    \\n
    \\n \\n {{ letter }}\\n \\n \\n
    \\n
    \\n
    \\n
    \\n\\n \\n
    \\n
    \\n
    \\n \\n
    innerWidth\\\" class=\\\"col-1 mt-3\\\">\\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n\"","export default \"
    \\n \\n
    \\n\\n
    \\n \\n
    \\n \\n
    \\n
    \\n\\n\\n\\n \\n
    \\n
    \\n

    {{ infographic.attributes.title }}

    \\n

    \\n
    \\n
    \\n \\n\\n\\n
    \\n \\n \\n
    \\n\\n
    \\n\\n
    \\n\"","export default \"
    \\n
    \\n

    Glowmarkt for Installers

    \\n

    \\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et\\n dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex\\n ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat\\n nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit\\n anim id est laborum.

    \\n
    \\n
    \\n
    \\n

    \\n

    Save time by finding good quality leads

    \\n
    \\n
    \\n

    \\n

    Get accurate data before stepping foot on site

    \\n
    \\n
    \\n

    \\n

    Build up your reputation whenever you do an installation

    \\n
    \\n
    \\n
    \\n
    \\n \\n\"","export default \"
    \\n\\n

    \\n {{ liveIncidents.length }} ongoing incidents - more information here.\\n

    \\n
    \\n
    \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n \\n \\n
    \\n\\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n \\n
    \\n\\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n\\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n \\\"'Free'\\n
    \\n

    Understand your home's energy

    \\n\\n

    Use your smart meter data to save money, make decisions and share information with\\n experts.

    \\n
    \\n \\n
    \\n\\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n\\n
    \\n
    Thinking of a Heat Pump?
    \\n \\n
    \\n \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n
    \\n
    \\n\\n
    \\n
    \\n \\n
    \\n

    Do you work in the industry as Installer? We’ve got tools for you

    \\n
    \\n \\n
    \\n
    \\n
    \\n\\n\\n\\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n

    Monitor your consumption

    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n

    Use our tools

    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n \\n
    \\n

    Share with experts

    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n\\n
    \\n \\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
    \\n

    Learn from others experiences through our case studies

    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n \\n
    \\n \\n \\\"smart\\n \\n
    \\n
    \\n
    \\n

    Want to access your data in real time?

    \\n
    \\n

    Our combined In Home Display / CAD connects right to your smart meters - visit our shop to learn more.

    \\n
    \\n \\n \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n\\n\\n \\n\\n
    \\n
    \\n
    \\n

    Latest Heat Pump articles

    \\n
    \\n
    \\n\\n
    \\n\\n\\n \\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n

    Latest Energy Data articles

    \\n
    \\n
    \\n\\n
    \\n\\n\\n \\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \"","export default \"
    \\n
    \\n
    \\n
    \\n\\n
    \\n \\n

    GLOW

    \\n
    \\n
    \\n

    Sign in to Glow

    \\n\\n
    \\n\\n \\n

    Bright user? Use your credentials to sign in

    \\n\\n\\n\\n
    \\n\\n\\n
    \\n
    \\n \\n
    \\n \\n \\n
    \\n
    \\n \\n \\n\\n \\n \\n
    \\n
    \\n \\n
    \\n \\n\\n\\n\\n \\n \\n\\n
    \\n
    \\n {{ loadObj.loadedMessage }}\\n
    \\n
    \\n\\n \\n
    \\n \\n \\n\\n
    \\n No account? Register\\n here \\n
    \\n \\n
    \\n\\n \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n

    {{loadObj.loadedMessage}}

    \\n
    \\n
    \\n
    \\n\\n\\n
    \\n
    \\n
    \\n
    \\n
    \"","export default \"
    \\n
    \\n

    404

    \\n

    Oops! Page not found.

    \\n

    Nothing happened, then after a few seconds, nothing continued to happen.

    \\n Back to discover\\n
    \\n
    \\n\"","export default \"
    \\n
    \\n
    \\n

    {{content.attributes.title}}

    \\n
    \\n
    \\n
    \\n
    \"","export default \"
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n

    GLOW

    \\n
    \\n
    \\n

    Sign up as an installer

    \\n
    \\n \\n
    \\n
    \\n
    \\n

    Sign up as a Local Authority

    \\n
    \\n \\n
    \\n
    \\n\\n\\n\\n
    \\n
    \\n
    \\n
    \"","export default \"
    \\n
    \\n
    \\n \\n

    GLOW

    \\n
    \\n
    \\n

    Sign up to Glow

    \\n\\n
    \\n
    \\n

    Professional account

    \\n
    \\n
    \\n
    \\n\\n
    \\n\\n
    \\n\\n
    \\n
    \\n \\n \\n\\n \\n
    \\n
    \\n\\n\\n
    \\n\\n\\n\\n\\n
    \\n
    \\n
    \\n
    \"","export default \"
    \\n
    \\n
    \\n \\n

    GLOW

    \\n
    \\n
    \\n

    Sign up to Glow

    \\n
    \\n
    \\n

    Select account type

    \\n
    \\n\\n
    \\n
    \\n \\n \\n

    For homeowners, residents

    \\n \\n
    \\n
    \\n \\n \\n

    For installers, local authorities

    \\n \\n
    \\n
    \\n
    \\n
    \\n\"","export default \"
    \\n
    \\n
    \\n \\n

    GLOW

    \\n
    \\n
    \\n

    Sign up to Glow

    \\n
    \\n
    \\n

    Personal account

    \\n
    \\n
    \\n
    \\n \\n
    \\n \\n
    \\n \\n \\n
    \\n \\n
    \\n
    \\n \\n
    \\n \\n \\n\\n \\n \\n\\n
    \\n \\n
    \\n
    \\n\\n \\n\\n
    \\n \\n \\n
    \\n \\n \\n
    \\n
    \\n\\n\\n\\n \\n
    \\n
    \\n \\n
    \\n
    \\n \\n\\n
    \\n
    \\n \\n \\n\\n
    \\n
    \\n

    {{ \\\"SIGN_UP_BRIGHT\\\" | translate }}

    \\n
    \\n \\n \\n \\n \\n \\n \\n
    \\n\\n \\n\\n \\n
    \\n
    \\n
    \\n

    \\n {{ \\\"ACCOUNT_ALREADY_EXISTS_Q\\\" | translate }}\\n {{ \\\"SIGN_IN\\\" | translate }}\\n

    \\n

    \\n
    \\n\\n
    \\n

    Are you a professional? (Installer or LA)

    \\n

    Register for a professional account here

    \\n
    \\n
    \\n
    \\n\\n \\n\\n \\n
    \\n
    \"","export default \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n

    Reset password

    \\n \\n
    \\n \\n
    \\n \\n \\n
    \\n \\n
    \\n \\n \\n
    \\n \\n
    \\n \\n \\n \\n \\n
    \\n \\n
    \\n \\n \\n
    \\n\\n\\n
    \\n
    \\n
    \\n
    \\n {{formInfo.controls.password.errors[passwordValidation].errMsg}}\\n
    \\n
    \\n Please enter a new password.\\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
    \\n {{formInfo.controls.confirmPassword.errors[passwordValidation].errMsg}}\\n
    \\n
    \\n Please confirm your new password.\\n
    \\n\\n
    \\n
    \\n
    \\n\\n
    \\n {{loadObj.errorString | translate}}\\n
    \\n\\n
    \\n\\n
    \\n {{loadObj.loadedMessage}}\\n
    \\n\\n
    \\n\\n \\n
    \\n \\n
    \\n\\n \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \"","export default \"
    \\n \\n
    \\n
    \\n\\n
    \\n\\n\"","export default \"
    \\n \\n
    \\n\\n
    \\n \\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n

    \\n Showing {{ allContent.length }}\\n {{ !allContent.length || allContent.length > 1 ? \\\"results\\\" : \\\"result\\\" }} for:\\n

    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    Filter by category
    \\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n

    \\n Sorry, we couldn't find anything for \\n {{ results.searchTerm }} \\n \\n tagged with {{ results.tagsToFilter.join(\\\" and \\\") }} \\n \\n

    \\n

    Try different or fewer keywords or tags.

    \\n
    \\n
    \\n
    \\n\"","export default \"
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n

    Account created successfully

    \\n
    \\n
    \\n

    Login below

    \\n\\n \\n
    \\n
    \\n
    \\n\\n\\n
    \\n\\n
    \\n
    \"","export default \"
    \\n \\n
    \\n\\n
    \\n \\n\\n
    \\n \\n\\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n
    \\n\\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n\\n
    \\n
    \\n \\n

    \\n {{ tag?.attributes.title }}\\n

    \\n
    \\n
    \\n
    \\n\\n
    \\n

    \\n Ooops, looks like we don't have anything tagged with\\n \\\"{{ tag.attributes.title }}\\\" !\\n

    \\n

    \\n Check out other interesting content or come back later\\n \\n

    \\n
    \\n\\n
    \\n
    \\n
    \\n
      \\n
    • \\n Latest\\n
    • \\n
    • \\n Oldest\\n
    • \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n\\n \\n
    \\n
    \\n
    \\n\"","export default \"
    \\n \\n
    \\n\\n
    \\n \\n
    \\n
    \\n \\n

    {{title}}

    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n\\n\\n\"","export default \"
    \\n \\n
    \\n\\n\\n\\n
    \\n \\n
    \\n \"","export default \"
    \\n
    \\n
    \\n

    You are about to unsubscribe!

    \\n

    \\n You will no longer receive updates about upcoming system incidents/completions. If you wish to continue press\\n the button below.\\n

    \\n

    \\n \\n

    \\n
    \\n
    \\n {{ errorMsg | translate }}\\n
    \\n
    \\n If you continue having trouble please contact\\n support@hildebrand.co.uk.\\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n
    \\n

    You have successfully unsubscribed

    \\n

    You will no longer receive updates about upcoming system incidents/completions.

    \\n
    \\n
    \\n
    \\n\"","export default \"
    \\n \\n\\n \\n
    \\n\"","export default \"
    \\n
    \\n
    \\n
    \\n\\n
    \\n
    \\n \\n
    \\n

    Verify your email

    \\n \\n

    \\n
    Sign in\\n here\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \"","/*\n * Copyright (c) 2019 Hildebrand Technology\n */\nimport { NgModule } from '@angular/core';\nimport { ExtraOptions, Routes, RouterModule } from '@angular/router';\nimport { AuthGuard } from './services/auth-guard.service';\nimport { OIDCAuthGuard } from './services/oidc-auth-guard.service';\nimport { LoginComponent } from './public/login/login.component';\nimport { FaqsLandingComponent } from './public/faqs-landing/faqs-landing.component';\nimport { FaqsTopicComponent } from './public/faq-topic/faqs-topic.component';\nimport { FaqDetailedComponent } from './public/faq-detailed/faq-detailed.component';\nimport { UserStoryDetailedComponent } from './public/user-story-detailed/user-story-detailed.component';\nimport { GeneratePasswordTokenComponent } from './public/generate-password-token/generate-password-token.component';\nimport { ResetPasswordComponent } from './public/reset-password/reset-password.component';\nimport { LandingComponent } from './public/landing/landing.component';\nimport { BlogComponent } from './public/blog/blog.component';\nimport { ResourcesListComponent } from './public/resources-list/resources-list.component';\nimport { ArticleComponent } from './public/article/article.component';\nimport { GlossaryComponent } from './public/glossary/glossary.component';\nimport { AboutUsComponent } from './public/about-us/about-us.component';\nimport { AboutCommunityComponent } from './public/about-community/about-community.component';\nimport { SearchResultsComponent } from './public/search-results/search-results.component';\nimport { CommunityHomeComponent } from './public/community-home/community-home.component';\nimport { TopGlossaryTermsComponent } from './public/top-glossary-terms/top-glossary-terms.component';\nimport { TagPageComponent } from './public/tag-page/tag-page.component';\nimport { NotFoundPageComponent } from './public/not-found-page/not-found-page.component';\nimport { RegisterComponent } from './public/register/register.component';\nimport { VerifyEmailComponent } from './public/verify-email/verify-email.component';\nimport { DelightEventParticipationComponent } from './public/delight-event-participation/delight-event-participation.component';\nimport { BrightComponent } from './public/bright/bright.component';\nimport { CookiePolicyComponent } from './components/cookie-policy/cookie-policy.component';\nimport { TermsAndConditionsComponent } from './components/terms-and-conditions/terms-and-conditions.component';\nimport { TutorialComponent } from './public/tutorial/tutorial.component';\nimport { InfographicComponent } from './public/infographic/infographic.component';\nimport { UnsubscribePageComponent } from './public/unsubscribe-page/unsubscribe-page.component';\nimport { CaseStudyComponent } from './public/case-study/case-study.component';\nimport { CaseStudiesLandingComponent } from './public/case-studies-landing/case-studies-landing.component';\nimport { ProfessionalsRegisterComponent } from './public/professionals-register/professionals-register.component';\nimport { PrivacyPolicyComponent } from './public/privacy-policy/privacy-policy.component';\nimport { ContactUsComponent } from './public/contact-us/contact-us.component';\nimport { ProfessionalRegisterFormComponent } from './public/professional-register-form/professional-register-form.component';\nimport { SuccessfulRegisterComponent } from './public/successful-register/successful-register.component';\nimport { InstallerPageComponent } from './public/installer-page/installer-page.component';\nimport { RegisterHomeComponent } from './public/register/register-home/register-home.component';\nimport { FindAProfessionalComponent } from './public/find-a-professional/find-a-professional.component';\n\nexport const routes: Routes = [\n {\n path: 'pages',\n canActivate: [AuthGuard],\n loadChildren: () => import('./pages/pages.module').then((m) => m.PagesModule),\n },\n {\n path: 'professional',\n canActivate: [OIDCAuthGuard],\n loadChildren: () => import('./pages-professional/pages-professional.module').then((m) => m.PagesProfessionalModule),\n },\n { path: 'home', component: LandingComponent },\n // { path: 'home/:userStory', component: UserStoryDetailedComponent },\n { path: 'login', component: LoginComponent },\n { path: 'home/blogs/:blog', component: BlogComponent },\n { path: 'home/user-stories/:userStory', component: UserStoryDetailedComponent },\n { path: 'home/resources-lists/:resourceList', component: ResourcesListComponent },\n { path: 'home/tutorials/:tutorial', component: TutorialComponent },\n { path: 'support', component: FaqsLandingComponent },\n { path: 'support/:topic', component: FaqsTopicComponent },\n { path: 'support/:topic/:faq', component: FaqDetailedComponent },\n { path: 'unsub/:id', component: UnsubscribePageComponent },\n { path: 'generate-password-token', component: GeneratePasswordTokenComponent },\n { path: 'reset-password', component: ResetPasswordComponent },\n // { path: 'tutorial', component: TutorialComponent },\n { path: 'home/articles/:article', component: ArticleComponent },\n { path: 'glossary', component: GlossaryComponent },\n { path: 'glossary/:topGlossaryTerms', component: TopGlossaryTermsComponent },\n { path: 'about-us', component: AboutUsComponent },\n { path: 'about-community/:community', component: AboutCommunityComponent },\n { path: 'community/:community', component: CommunityHomeComponent },\n { path: 'search', component: SearchResultsComponent },\n { path: 'tag/:tag', component: TagPageComponent },\n { path: 'home/infographics/:infographic', component: InfographicComponent },\n { path: 'case-studies', component: CaseStudiesLandingComponent },\n { path: 'case-studies/:caseStudy', loadChildren: () => import('./public/case-study/case-study.module').then((m) => m.CaseStudyModule) },\n { path: 'contact-us', component: ContactUsComponent },\n { path: 'delight-event-participation', component: DelightEventParticipationComponent },\n { path: 'cookies', component: CookiePolicyComponent },\n { path: 'terms-and-conditions', component: TermsAndConditionsComponent },\n { path: 'bright', component: BrightComponent },\n // { path: 'installers', component: InstallerPageComponent },\n // { path: 'set-password', component: SetPasswordComponent },\n { path: 'register/personal', component: RegisterComponent },\n { path: 'register', component: RegisterHomeComponent },\n { path: 'professionals-register', component: ProfessionalsRegisterComponent },\n { path: 'professionals-register/:role', component: ProfessionalRegisterFormComponent },\n { path: 'privacy-policy', component: PrivacyPolicyComponent },\n { path: 'successful-register', component: SuccessfulRegisterComponent },\n { path: 'find-a-professional', component: FindAProfessionalComponent },\n { path: 'find-a-professional/:results', component: FindAProfessionalComponent },\n // { path: 'verify', component: VerificationComponent },\n { path: 'verify-email', component: VerifyEmailComponent },\n // { path: '**', redirectTo: 'home' },\n { path: 'signedout', redirectTo: 'login' },\n { path: 'auth/callback', redirectTo: 'login' }, // professional/landing\n { path: '', redirectTo: 'home', pathMatch: 'full' },\n { path: '**', pathMatch: 'full', component: NotFoundPageComponent },\n];\n\nconst config: ExtraOptions = {\n useHash: false,\n scrollPositionRestoration: 'enabled',\n};\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, config)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule { }\n","export default \"::ng-deep .cc-window {\\n height: 100%;\\n width: 100%;\\n}\\n\\n::ng-deep .cc-right {\\n right: 0;\\n}\\n\\n::ng-deep .cc-top {\\n top: 0;\\n}\\n\\n::ng-deep .cc-window.cc-floating {\\n max-width: none;\\n}\\n\\n::ng-deep .cc-window.cc-floating .cc-compliance {\\n width: 50%;\\n margin: 0 auto;\\n}\\n\\n::ng-deep .cc-revoke.cc-top {\\n display: none;\\n}\\n\\n::ng-deep .cc-revoke {\\n background-color: rgba(34, 43, 69, 0.232);\\n}\\n\\n::ng-deep .cc-animate.cc-revoke.cc-top {\\n display: none;\\n}\\n\\n@media screen and (max-width: 576px) {\\n .cookieContent {\\n top: 20%;\\n width: 80%;\\n }\\n\\n ::ng-deep .cc-window.cc-floating .cc-compliance {\\n width: auto;\\n margin: 0 auto;\\n display: block;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNJLFlBQUE7RUFDQSxXQUFBO0FDQUo7O0FER0U7RUFDRSxRQUFBO0FDQUo7O0FER0U7RUFDRyxNQUFBO0FDQUw7O0FER0U7RUFDRSxlQUFBO0FDQUo7O0FER0U7RUFDRSxVQUFBO0VBQ0EsY0FBQTtBQ0FKOztBREVFO0VBQ0UsYUFBQTtBQ0NKOztBREdFO0VBQ0UseUNBQUE7QUNBSjs7QURHRTtFQUNFLGFBQUE7QUNBSjs7QURHRTtFQUNFO0lBQ0UsUUFBQTtJQUNBLFVBQUE7RUNBSjs7RURFQTtJQUNNLFdBQUE7SUFDQSxjQUFBO0lBQ0EsY0FBQTtFQ0NOO0FBQ0YiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcbjo6bmctZGVlcCAuY2Mtd2luZG93IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgXG4gIDo6bmctZGVlcCAuY2MtcmlnaHQge1xuICAgIHJpZ2h0OiAwOyBcbiAgfVxuICBcbiAgOjpuZy1kZWVwIC5jYy10b3Age1xuICAgICB0b3A6IDA7IFxuICB9XG4gIFxuICA6Om5nLWRlZXAgLmNjLXdpbmRvdy5jYy1mbG9hdGluZyB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICB9XG4gIFxuICA6Om5nLWRlZXAgLmNjLXdpbmRvdy5jYy1mbG9hdGluZyAuY2MtY29tcGxpYW5jZSB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxuICA6Om5nLWRlZXAgLmNjLXJldm9rZS5jYy10b3Age1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBcbiAgOjpuZy1kZWVwIC5jYy1yZXZva2Uge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzQsIDQzLCA2OSwgMC4yMzIpO1xuICB9XG4gIFxuICA6Om5nLWRlZXAgLmNjLWFuaW1hdGUuY2MtcmV2b2tlLmNjLXRvcCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICBcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc2cHgpIHtcbiAgICAuY29va2llQ29udGVudCB7XG4gICAgICB0b3A6IDIwJTtcbiAgICAgIHdpZHRoOiA4MCU7IFxuICAgIH1cbiAgOjpuZy1kZWVwIC5jYy13aW5kb3cuY2MtZmxvYXRpbmcgLmNjLWNvbXBsaWFuY2Uge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICB9ICAiLCI6Om5nLWRlZXAgLmNjLXdpbmRvdyB7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbjo6bmctZGVlcCAuY2MtcmlnaHQge1xuICByaWdodDogMDtcbn1cblxuOjpuZy1kZWVwIC5jYy10b3Age1xuICB0b3A6IDA7XG59XG5cbjo6bmctZGVlcCAuY2Mtd2luZG93LmNjLWZsb2F0aW5nIHtcbiAgbWF4LXdpZHRoOiBub25lO1xufVxuXG46Om5nLWRlZXAgLmNjLXdpbmRvdy5jYy1mbG9hdGluZyAuY2MtY29tcGxpYW5jZSB7XG4gIHdpZHRoOiA1MCU7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG46Om5nLWRlZXAgLmNjLXJldm9rZS5jYy10b3Age1xuICBkaXNwbGF5OiBub25lO1xufVxuXG46Om5nLWRlZXAgLmNjLXJldm9rZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzQsIDQzLCA2OSwgMC4yMzIpO1xufVxuXG46Om5nLWRlZXAgLmNjLWFuaW1hdGUuY2MtcmV2b2tlLmNjLXRvcCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gIC5jb29raWVDb250ZW50IHtcbiAgICB0b3A6IDIwJTtcbiAgICB3aWR0aDogODAlO1xuICB9XG5cbiAgOjpuZy1kZWVwIC5jYy13aW5kb3cuY2MtZmxvYXRpbmcgLmNjLWNvbXBsaWFuY2Uge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59Il19 */\"","import { Component } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NgcCookieConsentService } from 'ngx-cookieconsent';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\ndeclare global {\n interface Window {\n dataLayer: any[];\n }\n}\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n})\nexport class AppComponent {\n private popupCloseSubscription: Subscription;\n url;\n subscription;\n\n constructor(private router: Router, private translate: TranslateService, private ccService: NgcCookieConsentService) {\n this.translate.setDefaultLang('en-GB');\n this.translate.use('en-GB');\n\n const navEndEvent$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n\n navEndEvent$.subscribe((e: NavigationEnd) => {\n this.handleRouteEvents(e);\n });\n }\n\n ngOnInit() {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.url = event.url;\n }\n });\n\n this.popupCloseSubscription = this.ccService.popupClose$.subscribe(() => {\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n // console.log('Cookie consent - accepted.')\n } else {\n // console.log('Cookie consent - denied')\n }\n });\n }\n\n ngOnDestroy() {\n this.popupCloseSubscription.unsubscribe();\n }\n\n handleRouteEvents(event) {\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n let formattedUrl = event.urlAfterRedirects;\n let path = event.urlAfterRedirects;\n\n if (formattedUrl.includes('/pages/')) {\n formattedUrl = formattedUrl.replace('/pages/', '');\n } else {\n // Remove anything after slash\n if ((path.match(/\\//g) || []).length > 2) {\n formattedUrl = formattedUrl.substr(0, formattedUrl.lastIndexOf('/'));\n }\n }\n // Remove any query params\n if ((formattedUrl.match(/\\?/g) || []).length > 0) {\n formattedUrl = formattedUrl.substr(0, formattedUrl.lastIndexOf('?'));\n }\n\n // Get page name\n const words = formattedUrl.replace(/\\//g, ' ').replaceAll('-', ' ').split(' '); // Remove / and replace -\n\n for (let i = 0; i < words.length; i++) {\n words[i] = words[i].toUpperCase().charAt(0) + words[i].substr(1); // Make each word uppercase\n }\n\n // console.log('pageView', {\n // page_title: words.join(\" \").trim(),\n // page_path: event.urlAfterRedirects\n // })\n\n window.dataLayer.push({\n event: 'pageView',\n page_title: words.join(' ').trim(),\n page_path: event.urlAfterRedirects,\n });\n }\n }\n}\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { BrowserModule, Meta, Title } from '@angular/platform-browser';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { PagesModule } from './pages/pages.module';\nimport { PagesProfessionalModule } from './pages-professional/pages-professional.module';\nimport { PublicPagesModule } from './public/public.module';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { GlowService } from './services/glow.service';\nimport { ConfigService } from './services/app-config.service';\nimport { HttpClient, HttpClientModule, HttpClientJsonpModule } from '@angular/common/http';\nimport { FormsModule } from '@angular/forms';\nimport { GlowModule } from './services/glow.module';\nimport { CommonModule } from '@angular/common';\nimport { CustomTranslateLoader } from './services/content.service';\nimport { AuthGuard } from './services/auth-guard.service';\nimport { CustomUIConfigService } from './services/custom-ui-config.service';\nimport { HeaderModule } from './components/header/header.module';\nimport { ErrorMessageParser } from './services/error-handler.service';\nimport { PicardService } from './services/picard.service';\nimport { FooterModule } from './components/footer/footer.module';\nimport { IvyCarouselModule } from 'angular-responsive-carousel';\nimport { CookieService } from 'ngx-cookie-service';\nimport { NgbActiveModal, NgbCarouselModule } from '@ng-bootstrap/ng-bootstrap';\nimport { environment } from './../environments/environment';\nimport { NgcCookieConsentConfig, NgcCookieConsentModule } from 'ngx-cookieconsent';\nimport { AuthConfig, OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';\nimport { StorageService } from './services/storage.service';\nimport { StatehandlerService, StatehandlerServiceImpl } from './services/statehandler.service';\nimport { StatehandlerProcessorService, StatehandlerProcessorServiceImpl } from './services/statehandler-processor.service';\nimport { OIDCAuthGuard } from './services/oidc-auth-guard.service';\n\nconst authConfig: AuthConfig = {\n scope: 'openid profile email offline_access urn:zitadel:iam:org:project:role:engineer urn:zitadel:iam:org:project:id:zitadel:aud',\n responseType: 'code',\n oidc: true,\n clientId: environment.zitadel.clientId,\n issuer: environment.zitadel.issuer,\n redirectUri: environment.zitadel.redirectUri,\n postLogoutRedirectUri: environment.zitadel.postLogoutRedirectUri,\n requireHttps: environment.zitadel.requireHttps\n};\n\nconst stateHandlerFn = (stateHandler: StatehandlerService) => {\n return () => {\n return stateHandler.initStateHandler();\n };\n};\n\nconst cookieConfig: NgcCookieConsentConfig = {\n cookie: {\n domain: environment.cookieDomain,\n },\n position: \"top\",\n palette: {\n popup: {\n background: 'rgba(34,43,69, 0.4)'\n },\n button: {\n background: '#fff'\n }\n },\n type: 'opt-out',\n layout: 'my-custom-layout',\n layouts: {\n \"my-custom-layout\": '{{htmlContent}}{{compliance}}'\n },\n elements: {\n htmlContent: `\n
    \n

    {{header}}

    \n

    {{message}} {{cookie}}

    `,\n },\n content: {\n header: \"Cookies used on the website!\",\n message: \"This website uses cookies to drive research and ensure you get the best experience on our website. No data will be used for marketing purposes.\",\n cookie: \"See our Cookie policy for more information.\",\n allow: \"Accept all cookies\",\n deny: \"Refuse cookies\"\n }\n};\n@NgModule({\n declarations: [AppComponent], // UserComponent\n imports: [\n OAuthModule.forRoot({\n resourceServer: {\n allowedUrls: environment.zitadel.allowedUrls,\n sendAccessToken: true,\n },\n }),\n AppRoutingModule,\n BrowserModule,\n CommonModule,\n FormsModule,\n GlowModule,\n HeaderModule,\n FooterModule,\n HttpClientModule,\n HttpClientJsonpModule,\n PagesModule,\n PagesProfessionalModule,\n PublicPagesModule,\n IvyCarouselModule,\n NgbCarouselModule,\n NgcCookieConsentModule.forRoot(cookieConfig), TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useClass: CustomTranslateLoader,\n deps: [HttpClient, HttpClientModule, GlowService, ConfigService]\n }\n }),\n ],\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: stateHandlerFn,\n multi: true,\n deps: [StatehandlerService],\n },\n {\n provide: AuthConfig,\n useValue: authConfig,\n },\n {\n provide: StatehandlerProcessorService,\n useClass: StatehandlerProcessorServiceImpl,\n },\n {\n provide: StatehandlerService,\n useClass: StatehandlerServiceImpl,\n },\n {\n provide: OAuthStorage,\n useClass: StorageService,\n },\n AuthGuard,\n OIDCAuthGuard,\n ConfigService,\n ErrorMessageParser,\n GlowService,\n CustomUIConfigService,\n PicardService,\n Meta,\n CookieService,\n Title,\n NgbActiveModal\n ],\n exports: [],\n bootstrap: [AppComponent]\n})\n\nexport class AppModule { }","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYWNjb3VudC1uby1kYXRhLWNhcmQvYWNjb3VudC1uby1kYXRhLWNhcmQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-account-no-data-card',\n templateUrl: './account-no-data-card.component.html',\n styleUrls: ['./account-no-data-card.component.scss']\n})\nexport class AccountNoDataCardComponent implements OnInit {\n@Input() title;\n@Input() textBody\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccountNoDataCardComponent } from './account-no-data-card.component';\n\n\n\n@NgModule({\n declarations: [AccountNoDataCardComponent],\n imports: [\n CommonModule\n ],\n exports: [AccountNoDataCardComponent]\n})\nexport class AccountNoDataCardModule { }\n","export default \".account-menu .ng-select .ng-arrow-wrapper {\\n width: 25px;\\n padding-right: 5px;\\n}\\n.account-menu .ng-select .ng-arrow-wrapper:hover .ng-arrow {\\n border-top-color: #1a1a1a;\\n}\\n.account-menu .ng-select .ng-arrow-wrapper .ng-arrow {\\n border-color: #4d4d4d transparent transparent;\\n border-style: solid;\\n border-width: 5px 5px 2.5px;\\n}\\n#menu-container {\\n padding: 0;\\n margin: 0;\\n height: auto;\\n}\\nbutton, button:hover, button:active {\\n all: unset;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2FjY291bnQtc2lkZS1tZW51L2FjY291bnQtc2lkZS1tZW51LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2FjY291bnQtc2lkZS1tZW51L2FjY291bnQtc2lkZS1tZW51LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksV0FBQTtFQUNBLGtCQUFBO0FDQ0o7QURFUTtFQUNJLHlCQUFBO0FDQVo7QURJSTtFQUNJLDZDQUFBO0VBQ0EsbUJBQUE7RUFDQSwyQkFBQTtBQ0ZSO0FETUE7RUFDSSxVQUFBO0VBQ0EsU0FBQTtFQUNBLFlBQUE7QUNISjtBRE9BO0VBQ0ksVUFBQTtBQ0pKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hY2NvdW50LXNpZGUtbWVudS9hY2NvdW50LXNpZGUtbWVudS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5hY2NvdW50LW1lbnUgLm5nLXNlbGVjdCAubmctYXJyb3ctd3JhcHBlciB7XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgcGFkZGluZy1yaWdodDogNXB4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIC5uZy1hcnJvdyB7XG4gICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiBkYXJrZW4oZ3JheSwgNDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5nLWFycm93IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oZ3JheSwgMjApIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBib3JkZXItd2lkdGg6IDVweCA1cHggMi41cHg7XG4gICAgfVxufVxuXG4jbWVudS1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGhlaWdodDogYXV0bztcbn1cblxuXG5idXR0b24sIGJ1dHRvbjpob3ZlciwgYnV0dG9uOmFjdGl2ZSB7XG4gICAgYWxsOiB1bnNldDtcbn1cbiIsIi5hY2NvdW50LW1lbnUgLm5nLXNlbGVjdCAubmctYXJyb3ctd3JhcHBlciB7XG4gIHdpZHRoOiAyNXB4O1xuICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG59XG4uYWNjb3VudC1tZW51IC5uZy1zZWxlY3QgLm5nLWFycm93LXdyYXBwZXI6aG92ZXIgLm5nLWFycm93IHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogIzFhMWExYTtcbn1cbi5hY2NvdW50LW1lbnUgLm5nLXNlbGVjdCAubmctYXJyb3ctd3JhcHBlciAubmctYXJyb3cge1xuICBib3JkZXItY29sb3I6ICM0ZDRkNGQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogNXB4IDVweCAyLjVweDtcbn1cblxuI21lbnUtY29udGFpbmVyIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbmJ1dHRvbiwgYnV0dG9uOmhvdmVyLCBidXR0b246YWN0aXZlIHtcbiAgYWxsOiB1bnNldDtcbn0iXX0= */\"","import { Component, HostListener, Input, Output, OnInit, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-account-side-menu',\n templateUrl: './account-side-menu.component.html',\n styleUrls: ['./account-side-menu.component.scss'],\n})\n\nexport class AccountSideMenuComponent implements OnInit {\n\n @HostListener('document:click', ['$event']) onDocumentClick(event) {\n this.menuCollapsed = true;\n }\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n\n @Input() dropdownOptions: any;\n @Input() pageTitle: string;\n @Input() currentPage: string;\n @Output() switchServiceEvent: EventEmitter = new EventEmitter();\n\n innerWidth: number;\n selectedService: any\n formInfo: FormGroup;\n menuCollapsed = true;\n pages: any = [\n {\n name: 'Your home',\n icon: 'bi bi-house-door',\n pages: [\n { path: '/pages/property/general-attributes', title: 'General attributes' },\n { path: '/pages/property/heating-system', title: 'Heating system' }\n ],\n },\n {\n name: 'Energy',\n icon: 'bi bi-lightning',\n pages: [\n { path: '/pages/property/energy-overview', title: 'Energy overview' },\n { path: '/pages/property/energy-data', title: \"Download your data\" }\n ],\n },\n {\n name: 'Devices',\n icon: 'bi bi-tv',\n pages: [\n // { path: '', title: 'IHD' },\n { path: 'pages/property/temperature-sensors', title: 'Temperature sensors' },\n // { path: '', title: 'Battery' },\n // { path: '', title: 'Solar' },\n // { path: '', title: 'EV' },\n // { path: '', title: 'Charge point' },\n\n ],\n },\n {\n name: 'Case study',\n icon: 'bi bi-journal-text',\n pages: [\n { path: 'pages/property/case-studies', title: 'Your case studies' },\n ],\n },\n \n {\n name: 'Activities',\n icon: 'bi bi-puzzle',\n pages: [\n { path: 'pages/property/activities/heat-pump-journey', title: 'Heat pump journey' }\n ]\n }\n\n ]\n\n constructor(\n private router: Router,\n private formBuilder: FormBuilder,\n private serviceSelectorSvc: ServiceSelectorSvc\n ) {\n this.formInfo = this.formBuilder.group({\n selectedService: ['', Validators.required],\n })\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService()\n if (this.selectedService) {\n this.formInfo.setValue({ selectedService: this.selectedService.name })\n }\n this.onResize()\n }\n\n ngOnChanges(){\n this.selectedService = this.serviceSelectorSvc.getSelectedService()\n if (this.selectedService) {\n this.formInfo.setValue({ selectedService: this.selectedService.name })\n }\n this.onResize()\n }\n\n navigateToPage(path) {\n this.router.navigate([path]);\n }\n\n openMenu(event) {\n event.stopPropagation();\n this.menuCollapsed = !this.menuCollapsed;\n }\n\n switchService(event) {\n const match = this.dropdownOptions.find(x => { return x.name == event.name })\n if (match) {\n this.dropdownOptions.map(x => x.active = false);\n match.active = true;\n this.selectedService = match;\n this.switchServiceEvent.emit(this.selectedService.veId);\n }\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccountSideMenuComponent } from './account-side-menu.component';\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n@NgModule({\n declarations: [AccountSideMenuComponent],\n imports: [\n CommonModule,\n NgbModule,\n SharedModule\n ],\n exports: [AccountSideMenuComponent]\n})\nexport class AccountSideMenuModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYWRkLWhlYXRpbmctc3lzdGVtLW1vZGFsL2FkZC1oZWF0aW5nLXN5c3RlbS1tb2RhbC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { Form, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { th } from 'date-fns/locale';\nimport { HeatingSystemService } from 'src/app/services/heating-system.service';\n\n@Component({\n selector: 'app-add-heating-system-modal',\n templateUrl: './add-heating-system-modal.component.html',\n styleUrls: ['./add-heating-system-modal.component.scss'],\n})\nexport class AddHeatingSystemModalComponent implements OnInit {\n private heatingSystem;\n typeOptions = [\n { id: 'boiler', title: 'Boiler' },\n { id: 'heatpump', title: 'Air Source Heat Pump' },\n { id: 'heatpump', title: 'Ground Source Heat Pump' },\n { id: 'heatpump', title: 'Water Source Heat Pump' },\n ];\n\n typeOptionsMap = {\n boiler: 'getBoilerOptions',\n heatpump: 'getHeatPumpOptions',\n };\n\n heatingSystemForm: FormGroup;\n domesticHotWaterForm: FormGroup;\n heatingSystemManufacturerOptions: any[];\n heatingSystemModelOptions: any[];\n heatingSystemOptions: any[];\n constructor(\n private fb: FormBuilder,\n private activeModal: NgbActiveModal,\n private heatingSystemService: HeatingSystemService\n ) {}\n\n ngOnInit() {\n this.initHeatingSystemForm();\n this.initDomesticHotWaterForm();\n if (this.heatingSystem && Object.values(this.heatingSystem).length > 0) {\n this.setFormValues(this.heatingSystem);\n }\n }\n\n async setFormValues(heatingSystem) {\n const { type, manufacturer, model, size, qualifier } = heatingSystem;\n const { DHWHasCylinder, DHWCylinderSize } = heatingSystem;\n this.heatingSystemForm.enable();\n this.heatingSystemForm.patchValue({ type, manufacturer, model, size, qualifier });\n this.domesticHotWaterForm.patchValue({ DHWHasCylinder, DHWCylinderSize });\n await this.onTypeChange(false, false);\n this.onManufacturerChange(false);\n this.onDHWHasCylinderChange();\n }\n\n initHeatingSystemForm() {\n this.heatingSystemForm = this.fb.group({\n type: ['', [Validators.required]],\n manufacturer: [{ value: '', disabled: true }],\n model: [{ value: '', disabled: true }],\n qualifier: [{ value: '' }],\n registerNumber: [''],\n size: [''],\n validFrom: [''],\n validTo: [null],\n });\n }\n\n initDomesticHotWaterForm() {\n this.domesticHotWaterForm = this.fb.group({\n DHWHasCylinder: ['', [Validators.required]],\n DHWCylinderSize: [{ value: '', disabled: true }],\n });\n }\n\n closeModal(msg?: string) {\n this.activeModal.close({\n msg,\n heatingSystem: this.heatingSystemForm.value,\n domesticHotWater: this.domesticHotWaterForm.value,\n });\n }\n\n async onTypeChange(resetManufacturer = true, resetModel = true) {\n if (this.heatingSystemForm.value.type) {\n const selectedType = this.typeOptions.find((option) => option.title === this.heatingSystemForm.value.type);\n await this[this.typeOptionsMap[selectedType.id]]();\n this.heatingSystemForm.controls.manufacturer.enable();\n } else {\n this.heatingSystemOptions = [];\n this.heatingSystemForm.patchValue({ manufacturer: '', model: '', size: '', qualifier: '' });\n this.heatingSystemForm.controls.model.disable();\n this.heatingSystemForm.controls.manufacturer.disable();\n }\n if (resetManufacturer) {\n this.heatingSystemForm.patchValue({ manufacturer: '' });\n }\n if (resetModel) {\n this.heatingSystemForm.patchValue({ model: '', size: '', qualifier: '' });\n this.heatingSystemForm.controls.model.disable();\n }\n this.heatingSystemManufacturerOptions = this.heatingSystemService.getManufacturersFromArray(\n this.heatingSystemOptions\n );\n }\n\n onManufacturerChange(resetModel = true) {\n if (this.heatingSystemForm.value.manufacturer) {\n this.heatingSystemModelOptions = this.heatingSystemOptions.filter((option) => {\n const manufacturer = option.brand || option.manufacturer;\n return manufacturer === this.heatingSystemForm.value.manufacturer;\n });\n // console.log('system model options', this.heatingSystemModelOptions);\n this.heatingSystemForm.controls.model.enable();\n } else {\n this.heatingSystemForm.controls.model.disable();\n }\n if (resetModel) {\n this.heatingSystemForm.patchValue({ model: '', size: '', qualifier: '' });\n }\n }\n\n onModelChange() {\n const hsOption = this.heatingSystemModelOptions.find((option) => {\n const model = option.model.name || option.model;\n return model === this.heatingSystemForm.value.model;\n });\n const qualifier = hsOption.model.qualifier || hsOption.qualifier;\n this.heatingSystemForm.patchValue({ qualifier, registerNumber: hsOption.registerNumber });\n }\n\n onDHWHasCylinderChange() {\n this.domesticHotWaterForm.value.DHWHasCylinder == 'Yes'\n ? this.domesticHotWaterForm.controls.DHWCylinderSize.enable()\n : this.domesticHotWaterForm.controls.DHWCylinderSize.disable();\n }\n\n async getBoilerOptions() {\n const gasBoilers = await this.heatingSystemService.getGasAndOilBoilers(false);\n const twinBurnerBoilers = await this.heatingSystemService.getTwinBurnerBoilers(false);\n const solidFuelBoilers = await this.heatingSystemService.getSolidFuelBoilers(false);\n this.heatingSystemOptions = [...gasBoilers, ...twinBurnerBoilers, ...solidFuelBoilers];\n }\n\n getHeatPumpOptions() {\n const heatPumps = this.heatingSystemService\n .getHeatPumpsFromMcs(false)\n .filter((hp) => hp.type === this.heatingSystemForm.value.type);\n this.heatingSystemOptions = [...heatPumps];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AddHeatingSystemModalComponent } from './add-heating-system-modal.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [AddHeatingSystemModalComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [AddHeatingSystemModalComponent],\n entryComponents: [AddHeatingSystemModalComponent]\n \n})\nexport class AddHeatingSystemModalModule { }\n","export default \"form .input-group .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px !important;\\n}\\n\\nform .ng-touched.ng-invalid:not(div) {\\n border: solid #e32b4d 0.5px !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2FkZC1yYWRpYXRvci1tb2RhbC9hZGQtcmFkaWF0b3ItbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYWRkLXJhZGlhdG9yLW1vZGFsL2FkZC1yYWRpYXRvci1tb2RhbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFSTtFQUNJLHNDQUFBO0FDRFI7O0FET0M7RUFDTyxzQ0FBQTtBQ0pSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hZGQtcmFkaWF0b3ItbW9kYWwvYWRkLXJhZGlhdG9yLW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiZm9ybSAuaW5wdXQtZ3JvdXAge1xuXG4gICAgLm5nLXRvdWNoZWQubmctaW52YWxpZCB7XG4gICAgICAgIGJvcmRlcjogc29saWQgI2UzMmI0ZCAwLjVweCAgIWltcG9ydGFudFxuICAgIH1cbiAgXG59XG5cbmZvcm0ge1xuIC5uZy10b3VjaGVkLm5nLWludmFsaWQ6bm90KGRpdikge1xuICAgICAgICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHggICFpbXBvcnRhbnRcbiAgICB9XG4gIFxufSIsImZvcm0gLmlucHV0LWdyb3VwIC5uZy10b3VjaGVkLm5nLWludmFsaWQge1xuICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHggIWltcG9ydGFudDtcbn1cblxuZm9ybSAubmctdG91Y2hlZC5uZy1pbnZhbGlkOm5vdChkaXYpIHtcbiAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4ICFpbXBvcnRhbnQ7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { AuthenticationService } from 'src/app/services/authentication.service';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\n\n@Component({\n selector: 'app-add-radiator-modal',\n templateUrl: './add-radiator-modal.component.html',\n styleUrls: ['./add-radiator-modal.component.scss'],\n})\nexport class AddRadiatorModalComponent implements OnInit {\n private room: any = { title: 'New Room' };\n private floor: any;\n radiatorsForm: FormGroup;\n roomForm: FormGroup;\n pipeworkForm: FormGroup;\n formErrorMessage: boolean = false;\n //units: output-watts, room-meters, radiators-sm, underfloor-heating-meters\n //todo: add units to the saved data\n\n roomOptions = [\n { imgPath: '../../../assets/images/schematics/bedroom.jpeg', title: 'Bedroom', id: 'bedroom' },\n { imgPath: '../../../assets/images/schematics/living-room.jpeg', title: 'Living Room', id: 'livingRoom' },\n { imgPath: '../../../assets/images/schematics/kitchen.jpeg', title: 'Kitchen', id: 'kitchen' },\n { imgPath: '../../../assets/images/schematics/bathroom.jpeg', title: 'Bathroom', id: 'bathroom' },\n { imgPath: '../../../assets/images/schematics/other.jpeg', title: 'Other', id: 'other' },\n ];\n\n radiatorOptions = [\n {\n id: 'underFloorHeating',\n title: 'Under-floor Heating',\n imgPath: '../../../assets/images/schematics/underFloorHeating.svg',\n },\n {\n id: 'type11',\n title: 'Single Panel Radiator (Type 11)',\n imgPath: '../../../assets/images/schematics/type11.svg',\n radiatorConfigurationConstant: 4.1,\n },\n {\n id: 'type21',\n title: 'Double Panel Plus Radiator (Type 21)',\n imgPath: '../../../assets/images/schematics/type21.svg',\n radiatorConfigurationConstant: 5.8,\n },\n {\n id: 'type22',\n title: 'Double Panel Radiator (Type 22)',\n imgPath: '../../../assets/images/schematics/type22.svg',\n radiatorConfigurationConstant: 7,\n },\n {\n id: 'other',\n title: 'Other',\n examples: ['Towel Rail', 'Electric Radiator', 'Column Radiator'],\n imgPath: '../../../assets/images/schematics/other.svg',\n },\n ];\n\n flooringOptions = [\n { id: 'wood', title: 'Wood' },\n { id: 'tiles', title: 'Tiles' },\n { id: 'carpet', title: 'Carpet' },\n ];\n\n pipeworkMaterialOptions = [\n { id: 'copper', title: 'Copper' },\n { id: 'mlcp', title: 'MLCP' },\n { id: 'other', title: 'Other' },\n ];\n\n customFloorArea = false;\n isInstaller = false;\n\n constructor(private fb: FormBuilder, private activeModal: NgbActiveModal, private formValidationService: FormValidationService, private auth: AuthenticationService) {}\n\n ngOnInit() {\n this.isInstaller = this.auth.checkIsRole('installer');\n this.initRadiatorsForm();\n if (this.isInstaller) {\n this.initPipeworkForm(this.room.pipework);\n }\n this.initRoomForm({\n height: this.room.height,\n width: this.room.width,\n length: this.room.length,\n floorArea: this.room.floorArea,\n flooring: this.room.flooring,\n type: this.room.type,\n radiators: this.room.radiators,\n pipework: this.room.pipework,\n });\n if (this.room.floorArea) {\n this.customFloorArea = true;\n }\n this.resetControls();\n }\n\n onCustomFloorArea() {\n this.customFloorArea = !this.customFloorArea;\n this.resetControls();\n }\n\n resetControls() {\n if (this.customFloorArea) {\n this.roomForm.get('floorArea').setValidators([Validators.required]);\n this.roomForm.get('floorArea').updateValueAndValidity();\n this.roomForm.get('width').clearValidators();\n this.roomForm.get('width').reset();\n this.roomForm.get('width').updateValueAndValidity();\n this.roomForm.get('length').clearValidators();\n this.roomForm.get('length').reset();\n this.roomForm.get('length').updateValueAndValidity();\n } else {\n this.roomForm.get('floorArea').clearValidators();\n this.roomForm.get('floorArea').reset();\n this.roomForm.get('floorArea').updateValueAndValidity();\n this.roomForm.get('width').setValidators([Validators.required]);\n this.roomForm.get('length').setValidators([Validators.required]);\n }\n }\n\n initRadiatorsForm() {\n const group: any = {};\n this.radiatorOptions.forEach((radiatorType) => {\n const radiatorTypeId = radiatorType.id;\n const radiators =\n this.room && this.room.radiators\n ? this.room.radiators.filter((radiator) => radiator.type === radiatorType.id).map((rad) => (rad.type == 'underFloorHeating' ? this.createRadiatorGroup(rad.height, rad.length, 1) : this.createRadiatorGroup(rad.height, rad.length, 10)))\n : [];\n group[radiatorTypeId] = this.fb.array(radiators);\n });\n this.radiatorsForm = this.fb.group(group);\n }\n\n resetErrorMsg() {\n this.formErrorMessage = false;\n }\n\n checkFormValidity(formControlName, formGroup, translateKey?, type?) {\n if (type && (type == 'rads' || type == 'pipework')) {\n return this.formValidationService.checkFormValidity(formGroup, formControlName, translateKey);\n }\n return this.formValidationService.checkFormValidity(this.roomForm, formControlName, translateKey);\n }\n\n showErrorMessage() {\n this.formErrorMessage = true;\n this.radiatorsForm.markAllAsTouched();\n this.pipeworkForm.markAllAsTouched();\n this.formValidationService.markFormGroup(this.roomForm, 'touched');\n }\n\n initRoomForm(\n { height, width, length, floorArea, flooring, type, radiators, pipework } = {\n height: '',\n width: '',\n length: '',\n floorArea: '',\n flooring: '',\n type: '',\n radiators: [],\n pipework: [],\n }\n ) {\n this.roomForm = this.fb.group({\n height: [height, [Validators.required]],\n width: [width],\n length: [length],\n floorArea: [floorArea],\n flooring: [flooring, [Validators.required]],\n type: [type, [Validators.required]],\n radiators: [radiators],\n pipework: [pipework],\n });\n }\n\n initPipeworkForm(pipework = []) {\n if (!pipework) pipework = [];\n const pipeworkGroups = pipework.map((pipe) => this.createPipeworkGroup(pipe.internalDiameter, pipe.length, pipe.material));\n this.pipeworkForm = this.fb.group({\n pipework: this.fb.array(pipeworkGroups),\n });\n }\n\n createPipeworkGroup(internalDiameter: number | string = '', length: number | string = '', material: string = '') {\n return this.fb.group({\n internalDiameter: [internalDiameter, [Validators.required, Validators.min(1)]],\n length: [length, [Validators.required, Validators.min(0.1)]],\n material: [material, [Validators.required]],\n });\n }\n\n addPipework() {\n const pipework = this.pipeworkForm.get('pipework') as FormArray;\n pipework.push(this.createPipeworkGroup());\n }\n\n removePipework(index: number) {\n const pipework = this.pipeworkForm.get('pipework') as FormArray;\n pipework.removeAt(index);\n }\n\n createRadiatorGroup(height: number | string = '', length: number | string = '', minValue) {\n return this.fb.group({\n height: [height, [Validators.required, Validators.min(minValue)]],\n length: [length, [Validators.required, Validators.min(minValue)]],\n });\n }\n\n addRadiator(radiatorId, height: number | string = '', length: number | string = '') {\n const radiators = this.radiatorsForm.get(radiatorId) as FormArray;\n radiatorId === 'underFloorHeating' ? radiators.push(this.createRadiatorGroup(this.room.length, this.room.width, 1)) : radiators.push(this.createRadiatorGroup(height, length, 10));\n }\n\n removeRadiator(radiatorId, index: number) {\n const radiators = this.radiatorsForm.get(radiatorId) as FormArray;\n radiators.removeAt(index);\n // this.updateRoom();\n }\n\n displayImage(radiatorType) {\n return radiatorType.imgPath ? { 'background-image': `url(${radiatorType.imgPath})` } : { 'background-image': 'url(\"../../../assets/images/soft-orange.jpg\")' };\n }\n\n closeModal(msg?: string) {\n if (!this.roomForm.valid || (this.radiatorsForm && !this.radiatorsForm.valid) || (this.pipeworkForm && !this.pipeworkForm.valid)) {\n // console.log(this.radiatorsForm)\n this.showErrorMessage();\n // console.log('closing')\n } else {\n this.updateRoom();\n msg ? this.activeModal.close({ msg, room: this.room }) : this.activeModal.close(this.room);\n }\n }\n\n calculateRadiatorOutput(radiator, radiatorType) {\n //assuming temperature difference between the radiator surface and the ambient air is 50oC (inlet water temperature 80oC, outlet water temperature 60oC and ambient air 20oC).\n const radiatorConfigurationConstant = this.radiatorOptions.find((r) => r.id === radiatorType).radiatorConfigurationConstant;\n const radiatorOutput = (((41 * radiatorConfigurationConstant * radiator.length) / 100) * (1 + (8 * radiator.height) / 100)).toFixed(2);\n return radiatorOutput;\n }\n\n updateRoom() {\n for (let roomProperty in this.roomForm.value) {\n this.room[roomProperty] = this.roomForm.value[roomProperty];\n }\n if (this.pipeworkForm) {\n this.room.pipework = this.pipeworkForm.value.pipework.map((pipe) => {\n return {\n ...pipe,\n units: {\n internalDiameter: 'mm',\n length: 'm',\n },\n };\n });\n }\n this.room.radiators = [];\n for (let radiatorType of this.radiatorOptions) {\n this.room.radiators = [\n ...this.room.radiators,\n ...this.radiatorsForm.value[radiatorType.id].map((radiator, i) => {\n return {\n ...radiator,\n units: {\n width: radiatorType.id === 'underFloorHeating' ? 'm' : 'cm',\n length: radiatorType.id === 'underFloorHeating' ? 'm' : 'cm',\n output: 'W',\n },\n type: radiatorType.id,\n id: `${radiatorType.id}-${i + 1}`,\n title: `${radiatorType.title}`,\n output: this.calculateRadiatorOutput(radiator, radiatorType.id),\n };\n }),\n ];\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AddRadiatorModalComponent } from './add-radiator-modal.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\n\n@NgModule({\n declarations: [AddRadiatorModalComponent],\n imports: [CommonModule, ReactiveFormsModule, FormValidationMessageModule, FormsModule],\n exports: [AddRadiatorModalComponent],\n entryComponents: [AddRadiatorModalComponent],\n})\nexport class AddRadiatorModalModule {}\n","export default \".container {\\n transform-style: preserve-3d;\\n}\\n\\n.container .box {\\n position: relative;\\n width: 300px;\\n height: 200px;\\n margin: 20px;\\n transform-style: preserve-3d;\\n perspective: 1000px;\\n cursor: pointer;\\n}\\n\\n.container .box .body {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n transform-style: preserve-3d;\\n transition: 0.9s ease;\\n}\\n\\n.container .box .body .imgContainer {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n transform-style: preserve-3d;\\n}\\n\\n.container .box .body .imgContainer img {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n}\\n\\n.container .box .body .content {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: #333;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n transform-style: preserve-3d;\\n transform: rotateY(180deg);\\n}\\n\\n.container .box:hover .body {\\n transform: rotateY(180deg);\\n}\\n\\n.container .box .body .content div {\\n transform-style: preserve-3d;\\n padding: 20px;\\n background-color: \\\"transparent\\\";\\n transform: translateZ(100px);\\n}\\n\\n.container .box .body .content div h3 {\\n letter-spacing: 1px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2FkZC1yb29tLW1vZGFsL2FkZC1yb29tLW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2FkZC1yb29tLW1vZGFsL2FkZC1yb29tLW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsNEJBQUE7QUNDRjs7QURFQTtFQUNFLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxZQUFBO0VBQ0EsNEJBQUE7RUFDQSxtQkFBQTtFQUNBLGVBQUE7QUNDRjs7QURFQTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLDRCQUFBO0VBQ0EscUJBQUE7QUNDRjs7QURFQTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLDRCQUFBO0FDQ0Y7O0FERUE7RUFDRSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtBQ0NGOztBREVBO0VBQ0Usa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQ0FBQTtVQUFBLDJCQUFBO0VBQ0EsNEJBQUE7RUFDQSwwQkFBQTtBQ0NGOztBREVBO0VBQ0UsMEJBQUE7QUNDRjs7QURFQTtFQUNFLDRCQUFBO0VBQ0EsYUFBQTtFQUVBLCtCQUFBO0VBQ0EsNEJBQUE7QUNBRjs7QURHQTtFQUNFLG1CQUFBO0FDQUYiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2FkZC1yb29tLW1vZGFsL2FkZC1yb29tLW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNvbnRhaW5lciB7XG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG59XG5cbi5jb250YWluZXIgLmJveCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IDIwMHB4O1xuICBtYXJnaW46IDIwcHg7XG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gIHBlcnNwZWN0aXZlOiAxMDAwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmNvbnRhaW5lciAuYm94IC5ib2R5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gIHRyYW5zaXRpb246IDAuOXMgZWFzZTtcbn1cblxuLmNvbnRhaW5lciAuYm94IC5ib2R5IC5pbWdDb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbn1cblxuLmNvbnRhaW5lciAuYm94IC5ib2R5IC5pbWdDb250YWluZXIgaW1nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG4uY29udGFpbmVyIC5ib3ggLmJvZHkgLmNvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZDogIzMzMztcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbn1cblxuLmNvbnRhaW5lciAuYm94OmhvdmVyIC5ib2R5IHtcbiAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG59XG5cbi5jb250YWluZXIgLmJveCAuYm9keSAuY29udGVudCBkaXYge1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICBwYWRkaW5nOiAyMHB4O1xuICAvLyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICNmZTAwNjEsICNmZmViM2IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAndHJhbnNwYXJlbnQnO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMTAwcHgpO1xufVxuXG4uY29udGFpbmVyIC5ib3ggLmJvZHkgLmNvbnRlbnQgZGl2IGgzIHtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbn1cbiIsIi5jb250YWluZXIge1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xufVxuXG4uY29udGFpbmVyIC5ib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAzMDBweDtcbiAgaGVpZ2h0OiAyMDBweDtcbiAgbWFyZ2luOiAyMHB4O1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICBwZXJzcGVjdGl2ZTogMTAwMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5jb250YWluZXIgLmJveCAuYm9keSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICB0cmFuc2l0aW9uOiAwLjlzIGVhc2U7XG59XG5cbi5jb250YWluZXIgLmJveCAuYm9keSAuaW1nQ29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG59XG5cbi5jb250YWluZXIgLmJveCAuYm9keSAuaW1nQ29udGFpbmVyIGltZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLmNvbnRhaW5lciAuYm94IC5ib2R5IC5jb250ZW50IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICMzMzM7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG59XG5cbi5jb250YWluZXIgLmJveDpob3ZlciAuYm9keSB7XG4gIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xufVxuXG4uY29udGFpbmVyIC5ib3ggLmJvZHkgLmNvbnRlbnQgZGl2IHtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgcGFkZGluZzogMjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogXCJ0cmFuc3BhcmVudFwiO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMTAwcHgpO1xufVxuXG4uY29udGFpbmVyIC5ib3ggLmJvZHkgLmNvbnRlbnQgZGl2IGgzIHtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-add-room-modal',\n templateUrl: './add-room-modal.component.html',\n styleUrls: ['./add-room-modal.component.scss'],\n})\nexport class AddRooomModalComponent implements OnInit {\n roomOptions = [\n { imgPath: '../../../assets/images/schematics/bedroom.jpeg', title: 'Bedroom', id: 'bedroom' },\n { imgPath: '../../../assets/images/schematics/living-room.jpeg', title: 'Living Room', id: 'livingRoom' },\n { imgPath: '../../../assets/images/schematics/kitchen.jpeg', title: 'Kitchen', id: 'kitchen' },\n { imgPath: '../../../assets/images/schematics/bathroom.jpeg', title: 'Bathroom', id: 'bathroom' },\n { imgPath: '../../../assets/images/schematics/other.jpeg', title: 'Other', id: 'other' },\n ];\n flooringOptions = [\n { id: 'wood', title: 'Wood' },\n { id: 'tiles', title: 'Tiles' },\n { id: 'carpet', title: 'Carpet' },\n ];\n\n floor: any = {};\n\n roomsForm: FormGroup;\n constructor(private activeModal: NgbActiveModal, private fb: FormBuilder) {}\n\n ngOnInit() {\n this.initRoomsForm();\n }\n\n displayImage(room) {\n return { 'background-image': `url(${room.imgPath})` };\n }\n\n initRoomsForm() {\n const group: any = {};\n this.roomOptions.forEach((roomType) => {\n const roomTypeId = roomType.id;\n const rooms =\n this.floor && this.floor.rooms \n ? this.floor.rooms.filter(room=>room.type===roomType.id).map((room) =>\n this.createRoomGroup(room.height, room.width, room.length, room.flooring, room.radiators)\n )\n : [];\n // : [this.createRoomGroup()];\n group[roomTypeId] = this.fb.array(rooms);\n });\n this.roomsForm = this.fb.group(group);\n }\n\n createRoomGroup(\n height: number | string = '',\n width: number | string = '',\n length: number | string = '',\n flooring: string = '',\n radiators: any[] = []\n ) {\n return this.fb.group({\n height: [height, [Validators.required, Validators.pattern(\"^[0-9]*$\")]],\n width: [width, [Validators.required, Validators.pattern(\"^[0-9]*$\")]],\n length:[length,[Validators.required, Validators.pattern(\"^[0-9]*$\")]],\n flooring: [flooring, [Validators.required]],\n radiators: [radiators],\n });\n }\n\n addRoom(roomType: string, height: number | string = '', width: number | string = '', length: number | string = '',flooring: string = '') {\n const rooms = this.roomsForm.get(roomType) as FormArray;\n rooms.push(this.createRoomGroup(height, width,length, flooring));\n }\n\n removeRoom(roomType: string, index: number) {\n const rooms = this.roomsForm.get(roomType) as FormArray;\n rooms.removeAt(index);\n }\n\n closeModal() {\n this.updateFloor();\n this.activeModal.close(this.floor);\n }\n\n updateFloor() {\n this.floor.rooms = [];\n for (let roomType of this.roomOptions) {\n this.floor.rooms ? null : (this.floor.rooms = {});\n // this.floor.rooms[roomType.id] = this.roomsForm.value[roomType.id].map((room, i) => {\n // return { ...room, type: roomType.id, id: `${roomType.id}${i + 1}`, title: `${roomType.title} ${i + 1}` };\n // });\n this.floor.rooms = [\n ...this.floor.rooms,\n ...this.roomsForm.value[roomType.id].map((room, i) => {\n return { ...room, type: roomType.id, id: `${roomType.id}-${this.floor.id}-${i + 1}`, title: `${roomType.title} ${i + 1}` };\n }),\n ];\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AddRooomModalComponent } from './add-room-modal.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [AddRooomModalComponent],\n imports: [CommonModule, SharedModule],\n exports: [AddRooomModalComponent],\n entryComponents: [AddRooomModalComponent],\n})\nexport class AddRoomModalModule {}\n","export default \"button {\\n all: unset;\\n}\\n\\nimg {\\n width: 100%;\\n height: auto;\\n}\\n\\n@media only screen and (max-width: 576px) {\\n .card,\\n.row {\\n height: 100% !important;\\n padding: 10px;\\n }\\n}\\n\\n.summary {\\n font-family: \\\"PT Serif\\\", serif;\\n max-width: 100%;\\n display: -webkit-box;\\n overflow: hidden;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n text-overflow: ellipsis;\\n margin: 5px;\\n font-size: 1rem;\\n line-height: 1.5rem;\\n height: 3rem;\\n}\\n\\n.p-wrapper {\\n height: 70px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2FydGljbGUtY2FyZC9hcnRpY2xlLWNhcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYXJ0aWNsZS1jYXJkL2FydGljbGUtY2FyZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQTtFQUNFLFVBQUE7QUNORjs7QURTQTtFQUNFLFdBQUE7RUFDQSxZQUFBO0FDTkY7O0FEUUE7RUFDRTs7SUFFRSx1QkFBQTtJQUNBLGFBQUE7RUNMRjtBQUNGOztBRGFBO0VBQ0UsOEJBQUE7RUFDQSxlQUFBO0VBQ0Esb0JBQUE7RUFDRCxnQkFBQTtFQUNBLHFCQUFBO0VBQ0EsNEJBQUE7RUFDQSx1QkFBQTtFQUNDLFdBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0FDWEY7O0FEY0E7RUFDRSxZQUFBO0FDWEYiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2FydGljbGUtY2FyZC9hcnRpY2xlLWNhcmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4vLyAgIC5jb2wtNCwgLmNhcmQtaW1nLC5jb2wtOCB7XG4vLyAgICAgd2lkdGg6IDQ3MHB4ICFpbXBvcnRhbnQ7XG4vLyAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuLy8gICB9XG4vLyB9XG5cbmJ1dHRvbiB7XG4gIGFsbDogdW5zZXQ7XG59XG5cbmltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gIC5jYXJkLFxuICAucm93IHtcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICB9XG59XG5cbi8vIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbi8vICAgaW1nIHtcbi8vICAgICBoZWlnaHQ6IDUwJSAhaW1wb3J0YW50XG4vLyAgIH1cbi8vIH1cbi5zdW1tYXJ5IHtcbiAgZm9udC1mYW1pbHk6ICdQVCBTZXJpZicsc2VyaWY7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdC13ZWJraXQtbGluZS1jbGFtcDogMjtcblx0LXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcblx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG1hcmdpbjogNXB4OyBcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMS41cmVtO1xuICBoZWlnaHQ6IDNyZW07XG59XG5cbi5wLXdyYXBwZXIge1xuICBoZWlnaHQ6IDcwcHg7XG59XG4iLCJidXR0b24ge1xuICBhbGw6IHVuc2V0O1xufVxuXG5pbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gIC5jYXJkLFxuLnJvdyB7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMTBweDtcbiAgfVxufVxuLnN1bW1hcnkge1xuICBmb250LWZhbWlseTogXCJQVCBTZXJpZlwiLCBzZXJpZjtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWFyZ2luOiA1cHg7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgaGVpZ2h0OiAzcmVtO1xufVxuXG4ucC13cmFwcGVyIHtcbiAgaGVpZ2h0OiA3MHB4O1xufSJdfQ== */\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n@Component({\n selector: 'app-article-card',\n templateUrl: './article-card.component.html',\n styleUrls: ['./article-card.component.scss'],\n})\nexport class ArticleCardComponent implements OnInit {\n @Input() article;\n @Input() shouldDisplaySummary: boolean = true;\n @Input() shouldDisplayCommunityTag: boolean = false;\n @Input() titleStyle: any = {};\n @Input() backgroundStyle: any = {};\n @Input() titleLineHeight: any = {};\n @Input() displayTimeToRead: boolean = true;\n\n innerWidth;\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n\n timeToRead = 1;\n createdAt: string;\n displayImageUrl = '../../../assets/images/soft-orange.jpg';\n relativePath:string\n constructor(private router: Router, private strapiService: StrapiService) {}\n\n ngOnInit() {\n this.timeToRead = this.getTimeToRead();\n this.createdAt = this.getCreatedAt();\n this.displayImageUrl = this.getDisplayImageUrl();\n this.relativePath=this.articleRelativePath()\n this.onResize();\n }\n\n // navigateToArticle() {\n // this.router.navigateByUrl(`home/article/${this.article.attributes.slug}`);\n // }\n\n articleRelativePath(){\n return `/home/articles/${this.article.attributes.slug}`\n }\n\n getTimeToRead() {\n return Utils.getTimeToRead(this.article.attributes.content);\n }\n getCreatedAt() {\n return Utils.formatZDate(this.article.attributes.createdAt);\n }\n\n getDisplayImageUrl() {\n return this.strapiService.getSmallDisplayImageUrl(this.article);\n }\n\n isBookmarked() {\n return this.strapiService.isContentBookmarked(this.article.attributes.slug);\n }\n\n bookmarkArticle() {\n this.strapiService.bookmarkContent(this.article.attributes.slug, 'articles');\n }\n\n unbookmarkArticle() {\n this.strapiService.unbookmarkContent(this.article.attributes.slug);\n }\n}\n","export default \"@media only screen and (max-width: 576px) {\\n .card,\\n.card-img,\\n.card-img-overlay {\\n height: 40vh !important;\\n }\\n}\\n@media only screen and (max-width: 410px) {\\n .card,\\n.card-img,\\n.card-img-overlay {\\n height: 40vh !important;\\n }\\n}\\n@media only screen and (max-width: 370px) {\\n .card,\\n.card-img,\\n.card-img-overlay {\\n height: 40vh !important;\\n }\\n}\\n.card-img-overlay {\\n background-image: linear-gradient(to bottom, rgba(74, 74, 74, 0.594), rgba(5, 5, 5, 0.913));\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2FydGljbGUtY29udGVudC9hcnRpY2xlLWNvbnRlbnQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYXJ0aWNsZS1jb250ZW50L2FydGljbGUtY29udGVudC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJOzs7SUFHSSx1QkFBQTtFQ0NOO0FBQ0Y7QURHQTtFQUNJOzs7SUFJSSx1QkFBQTtFQ0ZOO0FBQ0Y7QURNQTtFQUNJOzs7SUFJSSx1QkFBQTtFQ0xOO0FBQ0Y7QURRQTtFQUNBLDJGQUNJO0FDUEoiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2FydGljbGUtY29udGVudC9hcnRpY2xlLWNvbnRlbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gICAgLmNhcmQsXG4gICAgLmNhcmQtaW1nLFxuICAgIC5jYXJkLWltZy1vdmVybGF5IHtcbiAgICAgICAgaGVpZ2h0OiA0MHZoICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDEwcHgpIHtcbiAgICAuY2FyZCxcbiAgICAuY2FyZC1pbWcsXG4gICAgLmNhcmQtaW1nLW92ZXJsYXkge1xuXG4gICAgICAgIGhlaWdodDogNDB2aCAhaW1wb3J0YW50O1xuXG4gICAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM3MHB4KSB7XG4gICAgLmNhcmQsXG4gICAgLmNhcmQtaW1nLFxuICAgIC5jYXJkLWltZy1vdmVybGF5IHtcblxuICAgICAgICBoZWlnaHQ6IDQwdmggIWltcG9ydGFudDtcblxufVxufVxuLmNhcmQtaW1nLW92ZXJsYXl7XG5iYWNrZ3JvdW5kLWltYWdlOlxuICAgIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoNzQsIDc0LCA3NCwgMC41OTQpLCByZ2JhKDUsIDUsIDUsIDAuOTEzKSkgXG4gICAgICBcbn1cbiIsIkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc2cHgpIHtcbiAgLmNhcmQsXG4uY2FyZC1pbWcsXG4uY2FyZC1pbWctb3ZlcmxheSB7XG4gICAgaGVpZ2h0OiA0MHZoICFpbXBvcnRhbnQ7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDEwcHgpIHtcbiAgLmNhcmQsXG4uY2FyZC1pbWcsXG4uY2FyZC1pbWctb3ZlcmxheSB7XG4gICAgaGVpZ2h0OiA0MHZoICFpbXBvcnRhbnQ7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzcwcHgpIHtcbiAgLmNhcmQsXG4uY2FyZC1pbWcsXG4uY2FyZC1pbWctb3ZlcmxheSB7XG4gICAgaGVpZ2h0OiA0MHZoICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSg3NCwgNzQsIDc0LCAwLjU5NCksIHJnYmEoNSwgNSwgNSwgMC45MTMpKTtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n@Component({\n selector: 'app-article-content',\n templateUrl: './article-content.component.html',\n styleUrls: ['./article-content.component.scss'],\n})\nexport class ArticleContentComponent implements OnInit {\n @Input() article: any;\n @Input() url;\n\n timeToRead = 1;\n createdAt: string;\n displayImageUrl = { 'background-image': 'url(\"../../../assets/images/soft-orange.jpg\")' };\n constructor(private strapiService: StrapiService, private landingService: LandingService) {}\n\n ngOnInit() {\n this.timeToRead = this.getTimeToRead();\n this.createdAt = this.getCreatedAt();\n this.displayImageUrl = this.getDisplayImageUrl(this.article);\n }\n\n getTimeToRead() {\n if (this.article && this.article.attributes.displayImage) {\n return Utils.getTimeToRead(this.article.attributes.content);\n }\n }\n\n getCreatedAt() {\n if (this.article && this.article.attributes.displayImage) {\n return Utils.formatZDate(this.article.attributes.createdAt);\n }\n }\n\n isBookmarked() {\n return this.strapiService.isContentBookmarked(this.article.attributes.slug);\n }\n\n bookmarkArticle() {\n this.strapiService.bookmarkContent(this.article.attributes.slug, 'articles');\n }\n\n unbookmarkArticle() {\n this.strapiService.unbookmarkContent(this.article.attributes.slug);\n }\n\n getForumUserProfileHref(handle) {\n return this.landingService.getForumUserProfileUrl(handle);\n }\n\n getDisplayImageUrl(content) {\n const url = this.strapiService.getSmallDisplayImageUrl(content)\n return { 'background-image': `url(\"${url}\")` };\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYmxvY2txdW90ZS9ibG9ja3F1b3RlLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-blockquote',\n templateUrl: './blockquote.component.html',\n styleUrls: ['./blockquote.component.scss']\n})\nexport class BlockquoteComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","export default \"button {\\n all: unset;\\n}\\n\\n@media only screen and (max-width: 768px) {\\n .card {\\n height: auto !important;\\n }\\n}\\n\\n.summary {\\n font-family: \\\"PT Serif\\\", serif;\\n max-width: 100%;\\n display: -webkit-box;\\n overflow: hidden;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n text-overflow: ellipsis;\\n margin: 5px;\\n font-size: 1rem;\\n line-height: 1.5rem;\\n height: 3rem;\\n}\\n\\n.p-wrapper {\\n height: 70px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Jsb2ctY2FyZC9ibG9nLWNhcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYmxvZy1jYXJkL2Jsb2ctY2FyZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFVBQUE7QUNDRjs7QURLQTtFQUNFO0lBQ0UsdUJBQUE7RUNGRjtBQUNGOztBRElBO0VBQ0UsOEJBQUE7RUFDQSxlQUFBO0VBQ0Esb0JBQUE7RUFDQSxnQkFBQTtFQUNBLHFCQUFBO0VBQ0EsNEJBQUE7RUFDQSx1QkFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0FDRkY7O0FES0E7RUFDRSxZQUFBO0FDRkYiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2Jsb2ctY2FyZC9ibG9nLWNhcmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJidXR0b24ge1xuICBhbGw6IHVuc2V0O1xufVxuLy8gLmNhcmQge1xuLy8gICAgIGhlaWdodDogMTAwcHggIWltcG9ydGFudDtcbi8vIH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuY2FyZCB7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5zdW1tYXJ5IHtcbiAgZm9udC1mYW1pbHk6IFwiUFQgU2VyaWZcIiwgc2VyaWY7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG1hcmdpbjogNXB4O1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gIGhlaWdodDogM3JlbTtcbn1cblxuLnAtd3JhcHBlciB7XG4gIGhlaWdodDogNzBweDtcbn1cbiIsImJ1dHRvbiB7XG4gIGFsbDogdW5zZXQ7XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmNhcmQge1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICB9XG59XG4uc3VtbWFyeSB7XG4gIGZvbnQtZmFtaWx5OiBcIlBUIFNlcmlmXCIsIHNlcmlmO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBtYXJnaW46IDVweDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMS41cmVtO1xuICBoZWlnaHQ6IDNyZW07XG59XG5cbi5wLXdyYXBwZXIge1xuICBoZWlnaHQ6IDcwcHg7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Utils } from 'src/utils';\nimport { Router } from '@angular/router';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-blog-card',\n templateUrl: './blog-card.component.html',\n styleUrls: ['./blog-card.component.scss'],\n})\n\nexport class BlogCardComponent implements OnInit {\n\n @Input() blog!: any;\n @Input() shouldDisplaySummary: boolean = false;\n @Input() shouldDisplayCommunityTag: boolean = false;\n @Input() titleStyle: any = {};\n @Input() backgroundStyle: any = {}\n @Input() titleLineHeight: any = {}\n @Input() displayTimeToRead: boolean = true\n\n timeToRead = 1;\n createdAt: string;\n relativePath:string\n constructor(private router: Router, private strapiService: StrapiService) { }\n\n ngOnInit(): void { \n this.timeToRead = this.getTimeToRead();\n this.createdAt = this.getCreatedAt();\n this.relativePath=this.blogRelativePath()\n }\n\n getCreatedAt() {\n return Utils.formatZDate(this.blog.attributes.createdAt);\n }\n\n getTimeToRead() {\n return Utils.getTimeToRead(this.blog.attributes.content);\n }\n\n blogRelativePath(){\n return `/home/blogs/${this.blog.attributes.slug}`\n }\n\n isBookmarked(){\n return this.strapiService.isContentBookmarked(this.blog.attributes.slug)\n }\n\n bookmarkBlog(){\n this.strapiService.bookmarkContent(this.blog.attributes.slug, 'blogs')\n }\n\n unbookmarkBlog(){\n this.strapiService.unbookmarkContent(this.blog.attributes.slug)\n }\n\n // navigateToBlog() {\n // // this.landingService.setBlogId(this.blog.id);\n // // this.landingService.setContentToDisplayId(this.blog.id)\n // this.router.navigateByUrl(`home/blog/${this.blog.attributes.slug}`);\n // }\n\n\n}","export default \"ul, li {\\n list-style: none;\\n}\\n\\nspan img {\\n margin: 10px;\\n height: 100px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Jsb2ctY29udGVudC9ibG9nLWNvbnRlbnQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYmxvZy1jb250ZW50L2Jsb2ctY29udGVudC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGdCQUFBO0FDQ0o7O0FERUE7RUFDSSxZQUFBO0VBQ0EsYUFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9ibG9nLWNvbnRlbnQvYmxvZy1jb250ZW50LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsidWwsIGxpIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuXG59XG5zcGFuIGltZyB7XG4gICAgbWFyZ2luOiAxMHB4O1xuICAgIGhlaWdodDoxMDBweDtcbiAgfVxuICAiLCJ1bCwgbGkge1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG5zcGFuIGltZyB7XG4gIG1hcmdpbjogMTBweDtcbiAgaGVpZ2h0OiAxMDBweDtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { Utils } from 'src/utils';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MetaTagsService } from 'src/app/services/meta-tags.service';\nimport { Subscription } from 'rxjs';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-blog-content',\n templateUrl: './blog-content.component.html',\n styleUrls: ['./blog-content.component.scss'],\n})\nexport class BlogContentComponent implements OnInit {\n @Input() blog: any;\n // blog!: any;\n subscriptionSelectedBlog: Subscription;\n @Input() displayTimeToRead: boolean = true;\n\n timeToRead = 1;\n createdAt: string;\n constructor(\n private landingService: LandingService,\n private strapiService: StrapiService,\n private router: Router,\n private route: ActivatedRoute,\n private metaTagsService: MetaTagsService\n ) {}\n\n ngOnInit() {\n this.timeToRead = this.getTimeToRead();\n this.createdAt = this.getCreatedAt();\n }\n\n getUpdatedAt() {\n return Utils.formatZDate(this.blog.attributes.updatedAt);\n }\n\n getCreatedAt() {\n return Utils.formatZDate(this.blog.attributes.createdAt);\n }\n getTimeToRead() {\n return Utils.getTimeToRead(this.blog.attributes.content);\n }\n\n getForumUserProfileHref(handle) {\n return this.landingService.getForumUserProfileUrl(handle);\n }\n\n isBookmarked(){\n return this.strapiService.isContentBookmarked(this.blog.attributes.slug)\n }\n\n bookmarkBlog(){\n this.strapiService.bookmarkContent(this.blog.attributes.slug, 'blogs')\n }\n\n unbookmarkBlog(){\n this.strapiService.unbookmarkContent(this.blog.attributes.slug)\n }\n\n processContentToInnerHTML(content: any) {\n let result = content.replaceAll('', '');\n result = result.replaceAll('', '
    ');\n result = result.replaceAll('
    ', '');\n return result;\n }\n}\n","export default \"button {\\n all: unset;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7RUFDSSxVQUFBO0FDTEoiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG4vLyAuYnJlYWRjcnVtYi1pdGVtIHNwYW4sIC5icmVhZGNydW1iLWl0ZW0gLmJ0biB7XG4vLyAgICAgZm9udC1zaXplOiAxNC40cHg7XG4vLyB9XG5cbmJ1dHRvbntcbiAgICBhbGw6IHVuc2V0O1xufSIsImJ1dHRvbiB7XG4gIGFsbDogdW5zZXQ7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss']\n})\n\nexport class BreadcrumbComponent implements OnInit {\n\n @Input() url!: Array\n @Input() page!: String\n @Input() style!: String\n @Input() title;\n @Input() slug;\n\n breadcrumb: any;\n\n constructor(private router: Router) { }\n\n ngOnInit(): void {\n if (this.url) {\n this.createBreadcrumb()\n }\n\n }\n\n ngOnChanges() {\n if (this.url) {\n this.createBreadcrumb()\n }\n }\n\n createBreadcrumb() {\n this.capitaliseFirstLetter()\n this.breadcrumb = []\n const lastKey = (this.url.length - 1)\n this.url.map((x, i) => {\n let urlToDisplay;\n let url;\n switch (x) {\n case 'Blogs':\n case 'User-story':\n case 'Resources-lists':\n case 'Articles':\n url = '';\n break;\n default:\n urlToDisplay = x.split('-').join(' ')\n url = i > 0 && this.url[0] == 'Support' ? \"/support/\" + x : \"/\" + x;\n break;\n }\n if (i == lastKey) { url = ''; }\n // this.breadcrumb.push({ display: x.replace('-', ' '), url })\n urlToDisplay ? this.breadcrumb.push({ display: urlToDisplay, url }) : null\n });\n\n }\n\n goToPage(url) {\n const formatURL = url.toLowerCase()\n this.router.navigateByUrl(formatURL);\n }\n\n pageUrl(url) {\n const formatedURL = \"\" + url.toLowerCase()\n return formatedURL\n }\n\n capitaliseFirstLetter() {\n this.url = this.url.map(page => page[0].toUpperCase() + page.slice(1, page.length))\n }\n\n getStyle(page) {\n const lastUrlPart = this.url[this.url.length - 1].split(\"-\").join(\" \")\n return this.style ? lastUrlPart == page ? this.style : 'text-white' : lastUrlPart == page ? 'text-primary' : ''\n // return this.url[this.url.length - 1] == page ? this.style : this.style && this.url[this.url.length - 1] != page? '': 'text-primary'\n }\n\n}","export default \"#built-form, #building {\\n text-transform: lowercase;\\n}\\n\\n.card-container {\\n height: 300px;\\n}\\n\\n@media only screen and (max-width: 992px) {\\n img {\\n height: 200px !important;\\n width: 100%;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Nhc2Utc3R1ZHktY2FyZC9jYXNlLXN0dWR5LWNhcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS1jYXJkL2Nhc2Utc3R1ZHktY2FyZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLHlCQUFBO0FDQ0o7O0FET0E7RUFDSSxhQUFBO0FDSko7O0FET0E7RUFDRztJQUNLLHdCQUFBO0lBQ0EsV0FBQTtFQ0pOO0FBQ0YiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2Nhc2Utc3R1ZHktY2FyZC9jYXNlLXN0dWR5LWNhcmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjYnVpbHQtZm9ybSwgI2J1aWxkaW5nIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlO1xuXG59XG5cbi8vIGltZyB7XG4vLyAgICAgbWF4LWhlaWdodDogMjAwcHggICFpbXBvcnRhbnQ7XG4vLyB9XG5cbi5jYXJkLWNvbnRhaW5lciB7XG4gICAgaGVpZ2h0OiAzMDBweDtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjk5MnB4KSB7XG4gICBpbWd7XG4gICAgICAgIGhlaWdodDogMjAwcHggIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDEwMCVcbiAgICB9XG59XG4iLCIjYnVpbHQtZm9ybSwgI2J1aWxkaW5nIHtcbiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTtcbn1cblxuLmNhcmQtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAzMDBweDtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTJweCkge1xuICBpbWcge1xuICAgIGhlaWdodDogMjAwcHggIWltcG9ydGFudDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufSJdfQ== */\"","import { HttpClient } from '@angular/common/http';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { CaseStudyService } from 'src/app/services/case-study.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-case-study-card',\n templateUrl: './case-study-card.component.html',\n styleUrls: ['./case-study-card.component.scss'],\n})\nexport class CaseStudyCardComponent implements OnInit {\n @Input() formattedCaseStudy: any = {};\n netCosts;\n annualSavings;\n preinstallHeatingSystemIconPath: string;\n postinstallHeatingSystemIconPath: string;\n formattedCaseStudyPhotoUrl;\n constructor(private strapiService: StrapiService, private caseStudyService: CaseStudyService, private httpClient: HttpClient) {}\n\n ngOnInit() {\n if (this.formattedCaseStudy) {\n this.caseStudyService.getImage(this.formattedCaseStudy, 'propertyImage').then(async (blob) => {\n if (!blob) {\n this.formattedCaseStudyPhotoUrl = await this.caseStudyService.getDefaultPropertyImage(this.formattedCaseStudy);\n } else {\n \n this.formattedCaseStudyPhotoUrl = await Utils.getBlobImageSource(blob);\n }\n });\n }\n if (this.formattedCaseStudy.outcome.heating_system) {\n this.netCosts = this.caseStudyService.calculateNetCosts(this.formattedCaseStudy.outcome.heating_system[0].finance.totalCost, this.formattedCaseStudy.outcome.heating_system[0].finance.awardedGrants);\n }\n this.annualSavings = this.calculateSavings(this.formattedCaseStudy.before.heating_system, this.formattedCaseStudy.after.heating_system);\n this.preinstallHeatingSystemIconPath = this.getHeatingSystemIconPath(this.formattedCaseStudy.preinstall_property_profile);\n this.postinstallHeatingSystemIconPath = this.getHeatingSystemIconPath(this.formattedCaseStudy.postinstall_property_profile);\n }\n\n getHeatingSystemIconPath(propertyProfile) {\n if (!propertyProfile) {\n return;\n }\n const heatingSystemType = propertyProfile.heating_system.type.trim().toLowerCase().split(' ').join('-');\n return `../../assets/images/case-study/${heatingSystemType}.svg`;\n }\n\n calculateSavings(beforeHeatingSystem, afterHeatingSystem) {\n const preinstallHeatingRunningCost = this.caseStudyService.calculateNetRunningCosts(beforeHeatingSystem);\n const postinstallHeatingRunningCost = this.caseStudyService.calculateNetRunningCosts(afterHeatingSystem);\n return preinstallHeatingRunningCost - postinstallHeatingRunningCost;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS1maWx0ZXIvY2FzZS1zdHVkeS1maWx0ZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'app-case-study-filter',\n templateUrl: './case-study-filter.component.html',\n styleUrls: ['./case-study-filter.component.scss'],\n})\nexport class CaseStudyFilterComponent implements OnInit {\n @Input() caseStudies = [];\n @Output() filter: EventEmitter = new EventEmitter();\n locationForm: FormGroup;\n attachmentTypeForm: FormGroup;\n locations = [];\n attachmentTypes = [];\n locationsSelected = 0;\n attachmentTypesSelected = 0;\n constructor(private fb: FormBuilder) {\n // this.locations = this.getLocationOptions();\n // // console.log(this.locations);\n // this.initLocationForm();\n // this.initAttachmentTypeForm();\n }\n\n ngOnInit() {}\n\n ngOnChanges() {\n if (this.caseStudies.length > 0 && this.locations.length === 0 && this.attachmentTypes.length === 0) {\n this.locations = this.getLocationOptions();\n this.attachmentTypes = this.getAttachmentTypeOptions();\n this.initLocationForm();\n this.initAttachmentTypeForm();\n }\n }\n\n getLocationOptions() {\n return Array.from(new Set(this.caseStudies.map((cs) => cs.postcodeDistrict)));\n }\n\n getAttachmentTypeOptions() {\n return Array.from(new Set(this.caseStudies.map((cs) => cs.before.building[0].builtForm)));\n }\n\n initLocationForm() {\n const group = {};\n this.locations.forEach((l) => {\n group[l] = new FormControl('', []);\n });\n this.locationForm = this.fb.group(group);\n }\n\n initAttachmentTypeForm() {\n const group = {};\n this.attachmentTypes.forEach((t) => {\n group[t] = new FormControl('', []);\n });\n this.attachmentTypeForm = this.fb.group(group);\n }\n resetForm(formGroup) {\n formGroup.reset();\n this.countSelected(formGroup);\n }\n\n countSelected(formGroup) {\n // console.log(\"selection\", formGroup.value)\n let selected = Object.keys(formGroup.value).filter((key) => {\n return formGroup.value[key] === true;\n });\n switch (formGroup) {\n case this.locationForm:\n this.locationsSelected = selected.length;\n break;\n case this.attachmentTypeForm:\n this.attachmentTypesSelected = selected.length;\n break;\n }\n this.sendFilter();\n }\n\n sendFilter() {\n this.filter.emit({\n postcodeDistrict: this.locationForm.value,\n builtForm: this.attachmentTypeForm.value,\n })\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyFilterComponent } from './case-study-filter.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [CaseStudyFilterComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [CaseStudyFilterComponent],\n})\nexport class CaseStudyFilterModule { }\n","export default \".line {\\n background-color: grey;\\n height: 40px;\\n width: 1px;\\n margin-left: 8px;\\n margin-bottom: 20px;\\n}\\n\\ni {\\n margin-right: 10px;\\n}\\n\\nh5 {\\n margin-bottom: 30px;\\n}\\n\\na {\\n color: initial;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Nhc2Utc3R1ZHktZm9ybS1zdGVwcGVyL2Nhc2Utc3R1ZHktZm9ybS1zdGVwcGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2Nhc2Utc3R1ZHktZm9ybS1zdGVwcGVyL2Nhc2Utc3R1ZHktZm9ybS1zdGVwcGVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksc0JBQUE7RUFDQSxZQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7QUNDSjs7QURFQTtFQUNJLGtCQUFBO0FDQ0o7O0FERUE7RUFDSSxtQkFBQTtBQ0NKOztBREVBO0VBQ0ksY0FBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jYXNlLXN0dWR5LWZvcm0tc3RlcHBlci9jYXNlLXN0dWR5LWZvcm0tc3RlcHBlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5saW5lIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xuICAgIGhlaWdodDogNDBweDtcbiAgICB3aWR0aDogMXB4O1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuaSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG5oNSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMzBweFxufVxuXG5hIHtcbiAgICBjb2xvcjogaW5pdGlhbFxufSIsIi5saW5lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogMXB4O1xuICBtYXJnaW4tbGVmdDogOHB4O1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG5pIHtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG5oNSB7XG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XG59XG5cbmEge1xuICBjb2xvcjogaW5pdGlhbDtcbn0iXX0= */\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { FormArray } from '@angular/forms';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { set } from 'core-js/core/dict';\nimport { Subscription } from 'rxjs';\nimport { CaseStudyFormService } from 'src/app/services/case-study-form.service';\n\n@Component({\n selector: 'app-case-study-form-stepper',\n templateUrl: './case-study-form-stepper.component.html',\n styleUrls: ['./case-study-form-stepper.component.scss'],\n})\nexport class CaseStudyFormStepperComponent implements OnInit {\n\n @Input() section;\n\n pages = [];\n sectionSuccessMap\n innerWidth;\n subscriptionCaseStudy: Subscription;\n subscriptionForm: Subscription;\n caseStudySubmitSuccessSubscription: Subscription;\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n constructor(private router: Router, private caseStudyFormService: CaseStudyFormService) {\n this.router.events.subscribe((val) => {\n if (val instanceof NavigationEnd) {\n this.section = this.caseStudyFormService.getSectionFromRouter();\n }\n })\n this.subscriptionForm = this.caseStudyFormService.formAnnouncer.subscribe((data) => {\n this.setPages();\n });\n this.caseStudySubmitSuccessSubscription = this.caseStudyFormService.caseStudySubmitSuccessAnnouncer.subscribe((data) => {\n this.sectionSuccessMap = data\n });\n }\n\n ngOnInit() {\n this.onResize()\n }\n\n getSectionStatus(section) {\n const empty = this.caseStudyFormService.isSectionEmpty(section);\n const validity = this.caseStudyFormService.getSectionValidity(section);\n if (empty) {\n return 'Not started';\n }\n if (validity) {\n return 'Completed';\n }\n return 'In progress';\n }\n\n goToPath(path) {\n this.router.navigate(path)\n }\n\n setPages() {\n this.pages = [\n {\n page: 'Pre-install building information',\n path: 'pre-installation-building',\n icon: 'bi bi-1-circle',\n status: this.getSectionStatus('pre-installation-building'),\n },\n {\n page: 'Pre-install heating system',\n path: 'pre-installation-heating',\n icon: 'bi bi-2-circle',\n status: this.getSectionStatus('pre-installation-heating'),\n },\n {\n page: 'Installation information',\n path: 'installation',\n icon: 'bi bi-3-circle',\n status: this.getSectionStatus('installation'),\n },\n {\n page: 'Post-install heating system',\n path: 'post-installation-heating',\n icon: 'bi bi-4-circle',\n status: this.getSectionStatus('post-installation-heating'),\n },\n {\n page: 'Post-install building information',\n path: 'post-installation-building',\n icon: 'bi bi-5-circle',\n status: this.getSectionStatus('post-installation-building'),\n },\n\n {\n page: 'Costs and outcomes',\n path: 'post-installation-outcomes',\n icon: 'bi bi-6-circle',\n status: this.getSectionStatus('post-installation-outcomes'),\n },\n { page: 'Other information', path: 'other-information', icon: 'bi bi-7-circle', status: this.getSectionStatus('other-information') },\n ];\n }\n\n navigateToPage(path) {\n //todo: check for unsaved changes and do a warning\n return this.router.navigate(['/pages/tools/case-study-creator/heat-pump'], { queryParams: { section: path } });\n }\n\n getNextPage() {\n const index = this.getSectionIndex()\n this.router.navigate([`/pages/tools/case-study-creator/heat-pump/${this.pages[index - 1].path}`])\n }\n\n getSectionIndex() {\n return this.pages.findIndex((page) => page.path === this.section)\n }\n\n getProgressBarPercentage() {\n const index = this.getSectionIndex()+1\n \n return `${index / 7 * 100}%` \n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyFormStepperComponent } from './case-study-form-stepper.component';\nimport { RouterModule } from '@angular/router';\n\n\n\n@NgModule({\n declarations: [CaseStudyFormStepperComponent],\n imports: [\n CommonModule,\n RouterModule\n ],\n exports: [CaseStudyFormStepperComponent]\n})\nexport class CaseStudyFormStepperModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9idWlsZGluZy1mb3JtL2J1aWxkaW5nLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { CaseStudyFormService } from 'src/app/services/case-study-form.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { Utils } from 'src/utils';\n\nimport postcodeData from '../../../../assets/db/postcodes.json';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-building-form',\n templateUrl: './building-form.component.html',\n styleUrls: ['./building-form.component.scss'],\n})\nexport class BuildingFormComponent implements OnInit {\n section;\n caseStudy;\n formattedCaseStudy;\n\n buildingForm: FormGroup;\n carbonEmissionsForm: FormGroup;\n locationForm: FormGroup;\n hasDoneRetrofitForm: FormGroup;\n hasCarbonEmissionsForm: FormGroup;\n completionStatus: 'completed' | 'in-progress' = 'in-progress';\n\n building;\n buildingFormName: string = 'buildingPreForm';\n carbonEmissionsFormName: string = 'carbonEmissionsPreForm';\n hasCarbonEmissionsFormName: string = 'hasCarbonEmissionsPreForm';\n hasDoneRetrofitFormName: string = 'hasDoneRetrofitForm';\n csSection;\n selectedService: any;\n passport;\n\n loadObj;\n subscriptionSelectedService: Subscription;\n constructor(private fb: FormBuilder, private caseStudyFormService: CaseStudyFormService, private glowService: GlowService, private serviceSelectorSvc: ServiceSelectorSvc, private router: Router) {\n this.loadObj = this.caseStudyFormService.initLoadObj();\n this.section = this.caseStudyFormService.getSectionFromRouter();\n this.caseStudyFormService.caseStudyAnnouncer.subscribe((data) => {\n if (data) {\n this.caseStudy = data.caseStudy;\n this.formattedCaseStudy = data.formattedCaseStudy;\n if (this.csSection) this.building = this.formattedCaseStudy[this.csSection].building && this.formattedCaseStudy[this.csSection].building[0];\n }\n });\n\n this.caseStudyFormService.formAnnouncer.subscribe((data) => {\n if (data.formName === this.buildingFormName) {\n this.buildingForm = data.form;\n }\n if (data.formName === this.carbonEmissionsFormName) {\n this.carbonEmissionsForm = data.form;\n }\n if (this.csSection === 'before' && data && data.formName === 'locationForm') {\n this.locationForm = data.form;\n }\n if (this.csSection === 'after' && data.formName === this.hasDoneRetrofitFormName) {\n this.hasDoneRetrofitForm = data.form;\n }\n if (data && data.formName === this.hasCarbonEmissionsFormName) {\n this.hasCarbonEmissionsForm = data.form;\n }\n if (this.hasCarbonEmissionsForm) this.caseStudyFormService.processChangeBooleanControl('carbonEmissions', this.hasCarbonEmissionsForm, this.carbonEmissionsForm, null, 'isTrue', this.carbonEmissionsFormName);\n if (this.hasDoneRetrofitForm) this.caseStudyFormService.processChangeBooleanControl('buildingPost', this.hasDoneRetrofitForm, this.buildingForm, null, 'isTrue', this.buildingFormName);\n });\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.caseStudyFormService.initServiceVariables(selectedService).then();\n this.loadObj = this.caseStudyFormService.initLoadObj();\n this.getPropertyPassport();\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (!this.caseStudyFormService.hasInitServiceVariables) {\n this.caseStudyFormService.initServiceVariables(this.selectedService).then();\n } else {\n this.caseStudyFormService.announceLatestCaseStudy();\n }\n this.processChanges();\n\n if (this.selectedService && this.selectedService.veId) {\n this.getPropertyPassport();\n }\n }\n\n processChanges() {\n this.csSection = this.section === 'pre-installation-building' ? 'before' : 'after';\n\n this.buildingFormName = this.csSection === 'before' ? 'buildingPreForm' : 'buildingPostForm';\n this.carbonEmissionsFormName = this.csSection === 'before' ? 'carbonEmissionsPreForm' : 'carbonEmissionsPostForm';\n this.hasCarbonEmissionsFormName = this.csSection === 'before' ? 'hasCarbonEmissionsPreForm' : 'hasCarbonEmissionsPostForm';\n\n this.caseStudyFormService.announceForm(this.hasCarbonEmissionsFormName, this.caseStudyFormService[this.hasCarbonEmissionsFormName]);\n this.caseStudyFormService.announceForm(this.buildingFormName, this.caseStudyFormService[this.buildingFormName]);\n this.caseStudyFormService.announceForm(this.carbonEmissionsFormName, this.caseStudyFormService[this.carbonEmissionsFormName]);\n this.caseStudyFormService.announceForm('locationForm', this.caseStudyFormService['locationForm']);\n this.caseStudyFormService.announceForm(this.hasDoneRetrofitFormName, this.caseStudyFormService[this.hasDoneRetrofitFormName]);\n if (this.formattedCaseStudy) {\n this.building = this.formattedCaseStudy[this.csSection].building && this.formattedCaseStudy[this.csSection].building[0];\n }\n }\n\n getCarbonEmissionsJeInit() {\n const journalEntryData = {};\n journalEntryData['journalEntryDataType'] = 'resource_extract';\n journalEntryData['classifier'] = 'carbon_emissions';\n journalEntryData['totalValue'] = +this.carbonEmissionsForm.get('totalValue').value;\n const startDateSplit = this.carbonEmissionsForm.get('validFrom').value && this.carbonEmissionsForm.get('validFrom').value.split('-');\n const journalEntry: any = {\n validFrom: this.carbonEmissionsForm.get('validFrom').value,\n //a year from start date (\"yyyy-MM-dd\")\n validTo: startDateSplit && Number(startDateSplit[0]) + 1 + '-' + startDateSplit[1] + '-' + startDateSplit[2],\n data: journalEntryData,\n };\n return journalEntry;\n }\n\n handleError(message?) {\n this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, message || \"Couldn't save changes. Please try again later.\");\n return this.loadObj;\n }\n\n handleSuccess() {\n this.caseStudyFormService.markSectionAsPristine(this.section);\n this.loadObj = this.caseStudyFormService.handleLoadObjSuccess(this.loadObj, 'Changes saved successfully.');\n return this.loadObj;\n }\n\n async saveChanges(completionStatus: 'completed' | 'in-progress' = 'in-progress') {\n this.completionStatus = completionStatus;\n const sectionValidity = this.caseStudyFormService.getSectionValidityForNonEmptyControls(this.section);\n if (!sectionValidity) {\n this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, \"Couldn't save changes. Please check there is no errors in the form.\");\n return this.loadObj;\n }\n this.loadObj = this.caseStudyFormService.handleLoadObjLoading(this.loadObj, 'Saving changes...');\n let err, data;\n\n if (this.csSection === 'after' && !(this.buildingForm && this.hasDoneRetrofitForm.value.isTrue)) {\n [err, data] = await Utils.promiseHandler(this.processNoBuildingPostForm());\n if (err) return this.handleError();\n this.caseStudyFormService.setFormAndAnnounce(this.buildingFormName, this.buildingForm);\n this.caseStudyFormService.setFormAndAnnounce(this.hasCarbonEmissionsFormName, this.hasCarbonEmissionsForm);\n this.caseStudyFormService.setFormAndAnnounce(this.hasDoneRetrofitFormName, this.hasDoneRetrofitForm);\n await this.caseStudyFormService.announceLatestCaseStudy();\n return this.handleSuccess();\n }\n if (this.buildingForm && this.buildingForm.value.propertyImage && this.buildingForm.value.propertyImage instanceof FileList) {\n [err, data] = await Utils.promiseHandler(this.uploadPropertyImage(this.buildingForm.value.propertyImage[0]));\n if (err) {\n const message = err.statusCode === 413 ? 'Image size too large. Please upload an image smaller than 1MB.' : \"Couldn't upload image. Please try again later.\";\n return this.handleError(message);\n }\n }\n\n if (this.csSection === 'before') {\n [err, data] = await Utils.promiseHandler(this.addLocationToCaseStudy());\n if (err) return this.handleError();\n this.caseStudyFormService.setFormAndAnnounce('locationForm', this.locationForm);\n }\n\n [err, data] = await Utils.promiseHandler(this.building ? this.processExistingBuildingComponent(this.buildingForm && this.buildingForm.value) : this.processNewBuildingComponent(this.buildingForm && this.buildingForm.value));\n if (err) return this.handleError();\n await this.processCarbonEmissions(data, 'building', this.csSection);\n\n this.caseStudyFormService.setFormAndAnnounce(this.buildingFormName, this.buildingForm);\n this.caseStudyFormService.setFormAndAnnounce(this.hasCarbonEmissionsFormName, this.hasCarbonEmissionsForm);\n this.caseStudyFormService.setFormAndAnnounce(this.hasDoneRetrofitFormName, this.hasDoneRetrofitForm);\n await this.caseStudyFormService.announceLatestCaseStudy();\n return this.handleSuccess();\n }\n\n async addLocationToCaseStudy() {\n const postcode = this.locationForm.get('postcode').value;\n if (!postcode) return;\n const postcodeFirstPart = Utils.extractUKPostcodeFirstPart(postcode).toUpperCase();\n const postcodeDistrict = postcodeFirstPart && postcodeData[postcodeFirstPart].Region;\n return this.glowService.updateCaseStudy(this.caseStudy.csId, { postcode, postcodeDistrict }).toPromise();\n }\n\n async saveAndContinue() {\n this.completionStatus = 'completed';\n this.loadObj = await this.caseStudyFormService.saveAndContinue(this.saveChanges.bind(this), this.section, this.loadObj);\n }\n\n async createNewComponentsAndJournalEntries(formValue, componentDataType, componentVersion, csSection, componentId?) {\n const buildingComponent = await this.caseStudyFormService.createComponent({\n formValue,\n componentVersion,\n componentDataType,\n componentId,\n fieldsToDelete: ['installedAt', 'decommissionedAt', 'summary', 'smartHTC', 'propertyImage', 'mediaFiles'],\n fieldsToAdd: ['installedAt', 'decommissionedAt'],\n completionStatus: this.completionStatus,\n });\n formValue = await this.caseStudyFormService.uploadComponentMediaFilesFromForm(formValue, buildingComponent.componentId, buildingComponent.componentVersion);\n const buildingJe = await this.caseStudyFormService.createDescriptionJournalEntry({\n formValue,\n componentVersion: buildingComponent.componentVersion,\n componentId: buildingComponent.componentId,\n componentDataType,\n completionStatus: this.completionStatus,\n });\n await this.caseStudyFormService.addJournalEntryToCaseStudy({\n journalEntry: buildingJe,\n section: csSection,\n caseStudy: this.caseStudy,\n });\n return buildingComponent;\n }\n\n async updateCurrentBuildingComponentAndJournalEntries(formValue, componentDataType) {\n const buildingComponent = await this.caseStudyFormService.updateComponent({\n componentId: this.building.componentId,\n componentVersion: this.building.componentVersion,\n componentDataType,\n formValue,\n fieldsToDelete: ['installedAt', 'decommissionedAt', 'summary', 'smartHTC', 'propertyImage', 'mediaFiles'],\n fieldsToAdd: ['installedAt', 'decommissionedAt', 'mediaFiles'],\n });\n const buildingDescriptionJeId = this.building.text_description && this.building.text_description.jeId;\n const buildingJeInit = this.caseStudyFormService.getDescrptionJournalEntryFromFormValue(formValue);\n await this.glowService.updateJournalEntry(buildingDescriptionJeId, buildingJeInit).toPromise();\n return buildingComponent;\n }\n\n async createNewCarbonEmissionsJe(buildingComponent, componentDataType, csSection) {\n const carbonEmissionsJeInit = this.getCarbonEmissionsJeInit();\n const carbonEmissionsJe = await this.caseStudyFormService.createJournalEntry({\n journalEntryData: carbonEmissionsJeInit,\n componentId: buildingComponent.componentId,\n componentVersion: buildingComponent.componentVersion,\n componentDataType,\n completionStatus: this.completionStatus,\n });\n await this.caseStudyFormService.addJournalEntryToCaseStudy({\n journalEntry: carbonEmissionsJe,\n section: csSection,\n caseStudy: this.caseStudy,\n });\n }\n\n async processCarbonEmissions(buildingComponent, componentDataType, csSection) {\n const carbonEmissionsJe = this.building && this.building.carbon_emissions;\n if (!carbonEmissionsJe && !this.hasCarbonEmissionsForm.value.isTrue) return;\n if (!carbonEmissionsJe && this.hasCarbonEmissionsForm.value.isTrue) {\n //if it's after and a building after (retrofit) exists:\n // 1. we check if the building before has a carbon emissions JE saved in the after section of the case study\n // 2. if it does, we update the componentVersion of the JE to the new building componentVersion\n // 3. if it doesn't, we create a new JE for the building after (retrofit)\n if (this.csSection === 'after' && this.building) {\n let buildingBefore = this.formattedCaseStudy.before.building && this.formattedCaseStudy.before.building[0];\n if (!buildingBefore) return;\n const journalEntriesForBuildingBefore = await this.glowService.getJournalEntriesByComponent(buildingBefore.componentId, buildingBefore.componentVersion).toPromise();\n const carbonEmissionsJeForBuildingBefore = journalEntriesForBuildingBefore.filter((je) => je.data.classifier === 'carbon_emissions');\n const carbonEmissionsJeInAfter = this.caseStudy.after.find((je) => carbonEmissionsJeForBuildingBefore.some((jeBefore) => jeBefore.jeId === je.jeId));\n if (carbonEmissionsJeInAfter) {\n return this.glowService.updateJournalEntry(carbonEmissionsJeInAfter.jeId, { componentVersion: this.building.componentVersion }).toPromise();\n }\n }\n return this.createNewCarbonEmissionsJe(buildingComponent, componentDataType, csSection);\n }\n if (this.hasCarbonEmissionsForm.value.isTrue) {\n const carbonEmissionsJeInit = this.getCarbonEmissionsJeInit();\n return this.glowService.updateJournalEntry(carbonEmissionsJe.jeId, carbonEmissionsJeInit).toPromise();\n }\n await this.caseStudyFormService.removeJournalEntryFromCaseStudy({ jeId: carbonEmissionsJe.jeId, section: csSection, caseStudy: this.caseStudy });\n this.caseStudyFormService.setFormAndAnnounce(this.carbonEmissionsFormName, this.carbonEmissionsForm);\n }\n\n async updateBuildingAfterStaticFields(formValue, componentDataType) {\n //update the unchaging field in the building component after (such as builtForm)\n //todo: refactor backend to allow for updating of unchanging fields\n const buildingAfter = this.formattedCaseStudy.after.building && this.formattedCaseStudy.after.building[0];\n if (!this.caseStudyFormService.buildingPostForm) return;\n const updateBuildingAferBody = {};\n for (const key in formValue) {\n if (!this.caseStudyFormService.buildingPostForm.controls.hasOwnProperty(key)) {\n updateBuildingAferBody[key] = formValue[key];\n }\n }\n Object.assign(updateBuildingAferBody, this.caseStudyFormService.buildingPostForm.value);\n return this.caseStudyFormService.updateComponent({\n componentId: buildingAfter.componentId,\n componentVersion: buildingAfter.componentVersion,\n componentDataType,\n formValue: updateBuildingAferBody,\n fieldsToDelete: ['propertyImage', 'mediaFiles'],\n fieldsToAdd: ['mediaFiles'],\n });\n }\n\n async processNoBuildingPostForm() {\n const hasDoneRetrofit = this.caseStudyFormService.hasDoneRetrofit(this.formattedCaseStudy);\n if (hasDoneRetrofit) {\n const buildingAfter = this.formattedCaseStudy.after.building && this.formattedCaseStudy.after.building[0];\n await this.glowService.deleteComponent(buildingAfter.componentId, buildingAfter.componentVersion).toPromise();\n const journalEntries = this.caseStudy.after.filter((je) => je.componentId === buildingAfter.componentId && je.componentVersion === buildingAfter.componentVersion);\n for (const je of journalEntries) {\n await this.caseStudyFormService.removeJournalEntryFromCaseStudy({ jeId: je.jeId, section: this.csSection, caseStudy: this.caseStudy });\n }\n }\n\n let buildingBefore = this.formattedCaseStudy.before.building && this.formattedCaseStudy.before.building[0];\n if (!buildingBefore) {\n buildingBefore = await this.createNewComponentsAndJournalEntries({}, 'building', 1, 'before');\n }\n await this.processCarbonEmissions(buildingBefore, 'building', this.csSection);\n }\n\n addStaticFieldsToForm(formValue, buildingBefore) {\n for (const key in this.caseStudyFormService.buildingPreForm.controls) {\n if (!this.caseStudyFormService.buildingPostForm.controls.hasOwnProperty(key) && key !== 'propertyImage') {\n formValue[key] = buildingBefore[key] || (buildingBefore.data && buildingBefore.data[key]);\n }\n }\n return formValue;\n }\n\n async processBuildingPostForm(formValue, componentDataType, buildingBefore) {\n formValue = this.addStaticFieldsToForm(formValue, buildingBefore);\n return this.createNewComponentsAndJournalEntries(formValue, componentDataType, 2, this.csSection, buildingBefore.componentId);\n }\n\n async processNewBuildingComponent(formValue) {\n const componentDataType = 'building';\n if (this.csSection === 'after') {\n let buildingBefore = this.formattedCaseStudy.before.building && this.formattedCaseStudy.before.building[0];\n if (!buildingBefore) {\n buildingBefore = await this.createNewComponentsAndJournalEntries({}, componentDataType, 1, 'before');\n }\n return this.processBuildingPostForm(formValue, componentDataType, buildingBefore);\n }\n return this.createNewComponentsAndJournalEntries(formValue, componentDataType, 1, this.csSection);\n }\n\n async processExistingBuildingComponent(formValue) {\n const componentDataType = 'building';\n formValue = await this.caseStudyFormService.uploadComponentMediaFilesFromForm(formValue, this.building.componentId, this.building.componentVersion);\n if (this.csSection === 'after') {\n const buildingBefore = this.formattedCaseStudy.before.building && this.formattedCaseStudy.before.building[0];\n formValue = this.addStaticFieldsToForm(formValue, buildingBefore);\n }\n const buildingComponent = await this.updateCurrentBuildingComponentAndJournalEntries(formValue, componentDataType);\n if (this.csSection === 'before') {\n await this.updateBuildingAfterStaticFields(formValue, componentDataType);\n }\n return buildingComponent;\n }\n\n getPropertyPassport() {\n this.loadObj.loadingMessage = 'Retrieving your property passport...';\n this.loadObj.loading = true;\n delete this.passport;\n this.glowService.getPropertyPassport(this.selectedService.veId).subscribe(\n (resp) => {\n if (resp.valid) {\n this.passport = resp;\n }\n this.loadObj.loading = false;\n this.loadObj.loadingMessage = '';\n },\n (err) => {\n this.loadObj.errorMessage = err && err.loadObj.error && err.loadObj.error.loadObj.error;\n this.loadObj.errorCode = err && err.loadObj.error && err.loadObj.error.loadObj.errorCode;\n this.loadObj.loading = false;\n this.loadObj.loadingMessage = '';\n this.loadObj.error = true;\n }\n );\n }\n\n async uploadPropertyImage(imageFile) {\n const formData = await Utils.formDataFromImgFile(imageFile, 'Property Image');\n const [err, data] = await Utils.promiseHandler(this.glowService.editMediaFieldCaseStudy(this.caseStudy.csId, 'propertyImage', formData).toPromise());\n if (err) {\n const message = (err && err.error && err.error.message) || \"Couldn't upload image. Please try again later.\";\n const statusCode = err && err.error && err.error.statusCode;\n const error = new Error(message);\n error['statusCode'] = statusCode;\n throw error;\n }\n }\n\n fillFormFromPassport() {\n const postcode = this.passport.epcRecords[0].postcode;\n //capitalise first letter\n const builtForm = this.passport.epcRecords[0].built_form.charAt(0) + this.passport.epcRecords[0].built_form.toLowerCase().slice(1);\n const propertyType = this.passport.epcRecords[0].property_type;\n const floorArea = this.passport.epcRecords[0].total_floor_area;\n\n this.buildingForm.patchValue({\n builtForm,\n type: propertyType,\n totalFloorArea: Math.round(floorArea),\n });\n if (this.csSection === 'before') {\n this.locationForm.patchValue({ postcode });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BuildingFormComponent } from './building-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormTemplateModule } from '../form-template/form-template.module';\nimport { FormValidationMessageModule } from '../../form-validation-message/form-validation-message.module';\n\n@NgModule({\n declarations: [BuildingFormComponent],\n imports: [CommonModule, SharedModule, FormTemplateModule, FormValidationMessageModule],\n exports: [BuildingFormComponent],\n})\nexport class BuildingFormModule {}\n","export default \"td,\\n.description {\\n font-weight: 400;\\n}\\n\\n@media only screen and (max-width: 767px) {\\n .table > tbody > tr > td,\\n.table > tbody > tr > th,\\n.table > tfoot > tr > td,\\n.table > tfoot > tr > th,\\n.table > thead > tr > td,\\n.table > thead > tr > th {\\n display: block;\\n min-width: 100% !important;\\n }\\n\\n .table > thead > tr > th {\\n display: none;\\n }\\n\\n .table .filterBody span {\\n display: block;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Nhc2Utc3R1ZHkvY2FzZS1zdHVkeS1kZXRhaWxzL2Nhc2Utc3R1ZHktZGV0YWlscy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9jYXNlLXN0dWR5L2Nhc2Utc3R1ZHktZGV0YWlscy9jYXNlLXN0dWR5LWRldGFpbHMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUUsZ0JBQUE7QUNDRjs7QURFQTtFQUNJOzs7Ozs7SUFNRSxjQUFBO0lBQ0EsMEJBQUE7RUNDSjs7RURDRTtJQUNFLGFBQUE7RUNFSjs7RURDRTtJQUNFLGNBQUE7RUNFSjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jYXNlLXN0dWR5L2Nhc2Utc3R1ZHktZGV0YWlscy9jYXNlLXN0dWR5LWRldGFpbHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJ0ZCxcbi5kZXNjcmlwdGlvbiB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudGFibGU+dGJvZHk+dHI+dGQsXG4gICAgLnRhYmxlPnRib2R5PnRyPnRoLFxuICAgIC50YWJsZT50Zm9vdD50cj50ZCxcbiAgICAudGFibGU+dGZvb3Q+dHI+dGgsXG4gICAgLnRhYmxlPnRoZWFkPnRyPnRkLFxuICAgIC50YWJsZT50aGVhZD50cj50aCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1pbi13aWR0aDogMTAwJSFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC50YWJsZT50aGVhZD50cj50aCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICBcbiAgICAudGFibGUgLmZpbHRlckJvZHkgc3BhbiB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgIH1cbiAgfSIsInRkLFxuLmRlc2NyaXB0aW9uIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAudGFibGUgPiB0Ym9keSA+IHRyID4gdGQsXG4udGFibGUgPiB0Ym9keSA+IHRyID4gdGgsXG4udGFibGUgPiB0Zm9vdCA+IHRyID4gdGQsXG4udGFibGUgPiB0Zm9vdCA+IHRyID4gdGgsXG4udGFibGUgPiB0aGVhZCA+IHRyID4gdGQsXG4udGFibGUgPiB0aGVhZCA+IHRyID4gdGgge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1pbi13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLnRhYmxlIC5maWx0ZXJCb2R5IHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { ImageModalComponent } from '../../image-modal/image-modal.component';\nimport { Utils } from 'src/utils';\nimport { CaseStudyService } from 'src/app/services/case-study.service';\nimport { GlowService } from 'src/app/services/glow.service';\n\n@Component({\n selector: 'app-case-study-details',\n templateUrl: './case-study-details.component.html',\n styleUrls: ['./case-study-details.component.scss'],\n})\nexport class CaseStudyDetailsComponent implements OnInit {\n @Input() caseStudy;\n @Input() caseStudyRelatedContentConfig;\n @Input() caseStudyConfig;\n @Input() colour;\n @Input() caseStudyConfigSection;\n @Input() caseStudySection;\n @Input() isAccountView;\n\n nonRestrictedConfigs: any = [];\n radSchematicMap: any = {};\n imageSrcMap: any = {};\n isEmptySection = false;\n constructor(private caseStudyService: CaseStudyService, private modalService: NgbModal, private glowService: GlowService) {}\n\n ngOnInit() {\n this.isEmptySection = this.isEmpty();\n }\n\n ngAfterContentChecked() {\n this.isEmptySection = this.isEmpty();\n }\n\n isEmpty() {\n return !(\n this.caseStudy &&\n this.caseStudyConfigSection &&\n this.caseStudyConfig[this.caseStudyConfigSection] &&\n Object.values(this.caseStudyConfig[this.caseStudyConfigSection].contentConfig).some((item: any) => {\n return this.caseStudy[this.caseStudySection] && this.caseStudy[this.caseStudySection][item.contentField] && this.caseStudy[this.caseStudySection][item.contentField].length;\n })\n );\n }\n\n setInputs({ caseStudy, caseStudyRelatedContentConfig, caseStudyConfig, colour, caseStudyConfigSection, caseStudySection, isAccountView }) {\n this.caseStudySection = caseStudySection;\n this.caseStudy = caseStudy;\n this.caseStudyRelatedContentConfig = caseStudyRelatedContentConfig;\n this.caseStudyConfig = caseStudyConfig;\n this.colour = colour;\n this.caseStudyConfigSection = caseStudyConfigSection;\n this.isAccountView = isAccountView;\n this.populateImageSrcMap().then();\n }\n\n returnZero() {\n return 0;\n }\n\n getRelationDisplay(relation, value) {\n switch (relation) {\n case 'heat_emitters':\n return this.heatEmittersDisplay(value);\n case 'consumption':\n return this.resourceExtractDisplay(value, 'totalValue');\n case 'humidity':\n return this.resourceExtractDisplay(value, 'meanValue');\n case 'installation':\n return this.installationDisplay(value);\n case 'tariff':\n return this.tariffDisplay(value);\n case 'awardedGrants':\n return this.awardedGrantsDisplay(value);\n case 'loans':\n return this.loansDisplay(value);\n default:\n return;\n }\n }\n\n resourceExtractDisplay(value, summaryValueType: 'totalValue' | 'meanValue') {\n return `${value[summaryValueType]} kWh (${Utils.formatDateToDdMmYyyy(new Date(value.validFrom))} - ${Utils.formatDateToDdMmYyyy(new Date(value.validTo))}) `;\n }\n\n installationDisplay(installation) {\n return `Start/End: ${Utils.formatDateToDdMmYyyy(new Date(installation.installationStartDate))} - ${Utils.formatDateToDdMmYyyy(new Date(installation.installationEndDate))}
    Installers: ${installation.installers\n .map((installer) => installer.businessName)\n .join(' ')}`;\n }\n\n tariffDisplay(tariff) {\n if (!tariff || tariff.length == 0) {\n return 'Unknown';\n } else if (tariff.type && !tariff.unitRate && tariff.standingCharge) {\n return `${tariff.type} (Standing charge: ${tariff.standingCharge}p/day)`;\n } else if (tariff.type && tariff.unitRate && !tariff.standingCharge) {\n return `${tariff.type} (Unit rate: ${tariff.unitRate}p/kWh)`;\n } else if (tariff.type && !tariff.unitRate && !tariff.standingCharge) {\n return tariff.type;\n }\n return `${tariff.type} (Unit rate: ${tariff.unitRate}p/kWh, Standing charge: ${tariff.standingCharge}p/day)`;\n }\n\n awardedGrantsDisplay(awardedGrants) {\n if (!awardedGrants || awardedGrants.length == 0) {\n return 'Unknown';\n }\n return awardedGrants\n .map((ag) => {\n return `${ag.grant.title} - £${ag.amount}`;\n })\n .join(', ');\n }\n\n loansDisplay(loans) {\n if (!loans || loans.length == 0) {\n return 'Unknown';\n }\n return loans\n .map((loan) => {\n return `${loan.loan.title} - £${loan.amount}@${loan.interestRate}%`;\n })\n .join(', ');\n }\n\n heatEmittersDisplay(heat_emitters) {\n if (!heat_emitters || heat_emitters.length == 0) {\n return 'Unknown';\n }\n let typeCounter: any = {};\n heat_emitters.forEach((he) => {\n if (typeCounter[he.type]) {\n typeCounter[he.type]++;\n } else {\n typeCounter[he.type] = 1;\n }\n });\n let typeDesc = Object.keys(typeCounter)\n .map((type) => {\n return `${typeCounter[type]} ${type}`;\n })\n .join(', ');\n return typeDesc;\n }\n\n async populateImageSrcMap() {\n const components = this.caseStudy[this.caseStudySection];\n for (let componentArray in components) {\n for (let component of components[componentArray]) {\n if (component.mediaFiles && component.mediaFiles.length > 0) {\n await Promise.all(\n component.mediaFiles.map(async (mediaFile) => {\n await this.setMeiaFileSrc(mediaFile);\n })\n );\n }\n if (component.heatEmitterSchematics && component.heatEmitterSchematics.length > 0) {\n await Promise.all(\n component.heatEmitterSchematics.map(async (mediaFile) => {\n await this.setMeiaFileSrc(mediaFile);\n })\n );\n }\n }\n }\n }\n\n async setMeiaFileSrc(mediaFile) {\n const blob = await this.glowService.getImage(mediaFile.fileId);\n const src = (await Utils.getBlobImageSource(blob)) as string;\n this.imageSrcMap[mediaFile.fileId] = src;\n }\n\n openImage(component) {\n const modalRef = this.modalService.open(ImageModalComponent, { size: 'lg' });\n modalRef.componentInstance.imageUrl = this.radSchematicMap[component.componentId];\n }\n\n relationHasPublicFields(relationField) {\n return Object.values(this.caseStudyRelatedContentConfig[relationField]).some((v: any) => !v.restrictedView);\n }\n getNonRestrictedConfigs(contentItem) {\n const allConfig = Object.values(this.caseStudyRelatedContentConfig[contentItem]);\n return allConfig.filter((config: any) => {\n return !config.restrictedView || (config.relation && this.relationHasPublicFields(config.type));\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyDetailsComponent } from './case-study-details.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { StarRatingModule } from '../../star-rating/star-rating.module';\nimport { CaseStudyRelationTableModule } from '../case-study-relation-table/case-study-relation-table.module';\n\n@NgModule({\n declarations: [CaseStudyDetailsComponent],\n imports: [CommonModule, SharedModule, StarRatingModule, CaseStudyRelationTableModule],\n exports: [CaseStudyDetailsComponent],\n})\nexport class CaseStudyDetailsModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9jYXNlLXN0dWR5LWZlZWRiYWNrL2Nhc2Utc3R1ZHktZmVlZGJhY2suY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Validators, FormBuilder, FormGroup, FormArray, FormControl } from '@angular/forms';\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-case-study-feedback',\n templateUrl: './case-study-feedback.component.html',\n styleUrls: ['./case-study-feedback.component.scss'],\n})\nexport class CaseStudyFeedbackComponent implements OnInit {\n @Input() title;\n @Input() caseStudyId;\n formArray = new FormArray([]);\n submittedFeedback = false;\n feedbackForm = new FormGroup({ feedbackForm: this.formArray });\n // radioFormOptions =\n // ['Very unhelpful', 'Not very helpful', 'Slightly helpful', 'Helpful', 'Very helpful']\n constructor(\n private formBuilder: FormBuilder,\n public activeModal: NgbActiveModal,\n private strapiService: StrapiService,\n private glowService: GlowService\n ) {\n this.feedbackForm = this.formBuilder.group({\n commentFeedback: ['', Validators.required],\n // radioFeedback: ['', Validators.required],\n });\n }\n\n ngOnInit() {}\n // addControl() {\n // this.radioFormOptions.forEach((option) => this.formArray.push(new FormControl(option, [Validators.required])))\n // // console.log(this.formArray)\n\n // }\n async postFeedback(commentFeedback) {\n const data = {\n csId: this.caseStudyId,\n data: commentFeedback,\n };\n\n await this.glowService.createCaseStudyComment(data).toPromise();\n this.submittedFeedback = true;\n setTimeout(() => {\n this.activeModal.dismiss();\n }, 1200);\n }\n}\n","export default \".landscape {\\n width: 320px;\\n height: 250px;\\n}\\n\\n.portrait {\\n width: 220px;\\n height: 300px;\\n}\\n\\n.header {\\n color: #f2638c;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Nhc2Utc3R1ZHkvY2FzZS1zdHVkeS1oZWFkZXIvY2FzZS1zdHVkeS1oZWFkZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9jYXNlLXN0dWR5LWhlYWRlci9jYXNlLXN0dWR5LWhlYWRlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFlBQUE7RUFDQSxhQUFBO0FDQ0o7O0FERUE7RUFDSSxZQUFBO0VBQ0EsYUFBQTtBQ0NKOztBREdBO0VBQ0ksY0FBQTtBQ0FKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jYXNlLXN0dWR5L2Nhc2Utc3R1ZHktaGVhZGVyL2Nhc2Utc3R1ZHktaGVhZGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmxhbmRzY2FwZSB7XG4gICAgd2lkdGg6IDMyMHB4O1xuICAgIGhlaWdodDogMjUwcHg7XG59XG5cbi5wb3J0cmFpdCB7XG4gICAgd2lkdGg6IDIyMHB4O1xuICAgIGhlaWdodDogMzAwcHg7XG59XG5cblxuLmhlYWRlcntcbiAgICBjb2xvcjogI2YyNjM4Y1xufSIsIi5sYW5kc2NhcGUge1xuICB3aWR0aDogMzIwcHg7XG4gIGhlaWdodDogMjUwcHg7XG59XG5cbi5wb3J0cmFpdCB7XG4gIHdpZHRoOiAyMjBweDtcbiAgaGVpZ2h0OiAzMDBweDtcbn1cblxuLmhlYWRlciB7XG4gIGNvbG9yOiAjZjI2MzhjO1xufSJdfQ== */\"","import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CaseStudyFeedbackComponent } from '../case-study-feedback/case-study-feedback.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { LoginModalComponent } from '../../login-modal/login-modal.component';\nimport { CaseStudyService } from 'src/app/services/case-study.service';\nimport { AuthenticationService } from 'src/app/services/authentication.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-case-study-header',\n templateUrl: './case-study-header.component.html',\n styleUrls: ['./case-study-header.component.scss'],\n})\nexport class CaseStudyHeaderComponent implements OnInit {\n @Input() caseStudy;\n @Input() caseStudyPhotoUrl;\n @Input() imageOrientation;\n @Input() locationImageUrl;\n @Input() navBackground;\n @Input() categories;\n @Input() category = 'summary';\n @Input() isAccountView: boolean;\n categoryPage;\n categoriesArray;\n hasAccessToken: boolean = false;\n isLoggedIn: boolean = false;\n showMap: boolean = false;\n like: any;\n likesCount: number;\n roles: any = [];\n constructor(private router: Router, private modalService: NgbModal, private glowService: GlowService, private oauthService: OAuthService, private caseStudyService: CaseStudyService, private authenticationService: AuthenticationService) { }\n\n ngOnInit() {\n this.getAuth();\n this.getUserLike();\n this.getLikeCount();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.categories && this.categories) {\n this.categories = Object.values(this.categories);\n }\n if (changes.caseStudy && changes.caseStudy.currentValue) {\n if (this.caseStudy.propertyImage) {\n this.caseStudyService.getImage(this.caseStudy, 'propertyImage').then(async (blob) => {\n // const imgElement = await Utils.waitForElemById(this.caseStudy.propertyImage.fileId);\n // imgElement.setAttribute('src', URL.createObjectURL(blob));\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n this.caseStudyPhotoUrl = reader.result;\n };\n });\n }\n if (this.caseStudy.mediaFiles) {\n if (this.caseStudy.mediaFiles.find(file => file.description == 'map')){\n const index = this.caseStudy.mediaFiles.findIndex(file => file.description == 'map')\n this.caseStudyService.getImage(this.caseStudy, 'mediaFiles', index).then(async (blob) => {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n this.locationImageUrl = reader.result;\n \n };\n });\n }\n\n }\n\n }\n\n }\n \n\n isUserPermitted(category) {\n if (!category.restrictedViewPermission) return true;\n for (let permission of category.restrictedViewPermission) {\n if (this.roles.some((role) => role.role === permission)) {\n return true;\n }\n }\n return false;\n }\n\n shouldDisplayCategory(category) {\n return (\n !(category.restrictedPages.length && category.restrictedPages.includes('account') && this.isAccountView) &&\n (!category.restrictedView || this.isUserPermitted(category) || (category.restrictedView && category.restrictedViewPermission.includes('all') && this.isLoggedIn))\n );\n }\n\n getAuth() {\n this.isLoggedIn = this.glowService.isLoggedIn();\n this.hasAccessToken = this.oauthService.hasValidAccessToken();\n if (this.hasAccessToken) {\n this.roles = this.authenticationService.getOIDCUserRolesFromLocalStorage();\n }\n }\n\n openFeedback() {\n const modalRef = this.modalService.open(CaseStudyFeedbackComponent, {\n scrollable: true,\n centered: true,\n size: 'lg',\n });\n modalRef.componentInstance.title = 'Feedback';\n modalRef.componentInstance.caseStudyId = this.caseStudy.csId;\n }\n\n async getUserLike() {\n if (!this.isLoggedIn) {\n return null;\n }\n this.like = await this.glowService.getCaseStudyLikeForUser(this.caseStudy.csId).toPromise();\n }\n\n async updateCaseStudyLikes() {\n if (!this.isLoggedIn) {\n const modalRef = this.modalService.open(LoginModalComponent, {\n ariaLabelledBy: 'Login modal',\n backdrop: 'static',\n });\n const result = await modalRef.result;\n if (result === 'success') {\n this.isLoggedIn = true;\n } else {\n return;\n }\n }\n // console.log('like', this.like);\n\n if (this.like) {\n await this.removeLikeCaseStudy();\n } else {\n await this.likeCaseStudy();\n }\n this.like = this.getUserLike();\n }\n\n async likeCaseStudy() {\n this.like = await this.glowService.likeCaseStudy(this.caseStudy.csId).toPromise();\n await this.getLikeCount();\n }\n\n async removeLikeCaseStudy() {\n this.like = await this.glowService.removeLikeCaseStudy(this.caseStudy.csId, this.like.csLikeId).toPromise();\n await this.getLikeCount();\n }\n\n async getLikeCount() {\n this.likesCount = (await this.glowService.getCaseStudyLikesCount(this.caseStudy.csId).toPromise()).count;\n }\n\n navigate(id) {\n this.category = id;\n let currentScrollHeight = window.pageYOffset;\n if (this.isAccountView) {\n this.router.navigateByUrl(`pages/property/case-studies/${this.caseStudy.csRef}/${this.category}`).then(() => window.scrollTo({ top: currentScrollHeight }));\n } else {\n this.router.navigateByUrl(`/case-studies/${this.caseStudy.csRef}/${this.category}`).then(() => window.scrollTo({ top: currentScrollHeight }));\n }\n }\n\n getCategoryPage() {\n const x = this.categories.find((x) => x.id == this.category);\n this.navBackground = x.colour;\n this.categoryPage = x.title;\n return this.categoryPage.slice(0, 1).toUpperCase() + this.categoryPage.slice(1, this.categoryPage.length);\n }\n\n toggleMap() {\n this.showMap = !this.showMap;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyHeaderComponent } from './case-study-header.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [CaseStudyHeaderComponent],\n imports: [CommonModule, SharedModule],\n exports: [CaseStudyHeaderComponent],\n})\nexport class CaseStudyHeaderModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9jYXNlLXN0dWR5LWluc3RhbGxhdG9uLWhlYXRpbmctc3lzdGVtLXRlY2huaWNhbC9jYXNlLXN0dWR5LWluc3RhbGxhdG9uLWhlYXRpbmctc3lzdGVtLXRlY2huaWNhbC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { HelpModalComponent } from '../../help-modal/help-modal.component';\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { CaseStudyService } from 'src/app/services/case-study.service';\nimport { Utils } from 'src/utils';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ImageModalComponent } from '../../image-modal/image-modal.component';\n\n@Component({\n selector: 'app-case-study-installaton-heating-system-technical',\n templateUrl: './case-study-installaton-heating-system-technical.component.html',\n styleUrls: ['./case-study-installaton-heating-system-technical.component.scss'],\n})\nexport class CaseStudyInstallatonHeatingSystemTechnicalComponent implements OnInit {\n @Input() caseStudy: any;\n @Input() caseStudyRelatedContentConfig: any;\n @Input() caseStudyConfig: any;\n @Input() colour: any;\n\n heatingSystem: any;\n hasTechnicalDetails: boolean = true;\n restrictedConfigs: any = [];\n radSchematicMap: any = {};\n constructor(private modalService: NgbModal, private translateService: TranslateService, private glowService: GlowService) {}\n\n ngOnInit() {\n this.restrictedConfigs = this.getRestictedConfigs();\n this.hasTechnicalDetails = this.hasDetails(this.restrictedConfigs);\n }\n\n getRestictedConfigs() {\n // return Object.values(this.caseStudyRelatedContentConfig['heating_system']);\n return Object.values(this.caseStudyRelatedContentConfig['heating_system']).filter((config: any) => {\n return config.restrictedView || (config.relation && this.isRelationRestricted(config.type));\n });\n }\n\n setInputs({ caseStudy, caseStudyRelatedContentConfig, caseStudyConfig, colour }) {\n this.caseStudy = caseStudy;\n this.heatingSystem = caseStudy.after.heating_system.find((item: any) => item.type.toLowerCase().includes('heat pump'));\n this.populateRadSchematicMap().then();\n this.caseStudyRelatedContentConfig = caseStudyRelatedContentConfig;\n this.caseStudyConfig = caseStudyConfig;\n this.colour = colour;\n }\n\n returnZero() {\n return 0;\n }\n\n isRelationRestricted(relationField) {\n return this.caseStudyRelatedContentConfig[relationField] && Object.values(this.caseStudyRelatedContentConfig[relationField]).some((v: any) => v.restrictedView);\n }\n\n hasDetails(configs) {\n return configs.some(\n (config: any) => this.heatingSystem[config.field] !== undefined && this.heatingSystem[config.field] !== null && (this.heatingSystem[config.field].length || config.relation != 'oneToMany')\n );\n }\n\n getRelationDisplay(relation, value, unit) {\n if (!value || value.length == 0) {\n return [];\n }\n switch (relation) {\n case 'consumption':\n return this.resourceExtractDisplay(value, 'totalValue', unit);\n case 'humidity':\n return this.resourceExtractDisplay(value, 'meanValue', unit);\n case 'installation':\n return this.installationDisplay(value);\n default:\n return;\n }\n }\n\n resourceExtractDisplay(value, summaryValueType: 'totalValue' | 'meanValue', unit) {\n return `${value[summaryValueType]} ${this.translateService.instant(unit)} (${Utils.formatDateToDdMmYyyy(new Date(value.validFrom))} - ${Utils.formatDateToDdMmYyyy(new Date(value.validTo))}) `;\n }\n\n installationDisplay(installation) {\n return `Start/End: ${Utils.formatDateToDdMmYyyy(new Date(installation.installationStartDate))} - ${Utils.formatDateToDdMmYyyy(\n new Date(installation.installationEndDate)\n )}
    Installers: ${installation.installers.map((installer) => installer.businessName).join(' ')}`;\n }\n\n async populateRadSchematicMap() {\n const fileReader = new FileReader();\n if (!this.heatingSystem || !this.heatingSystem.heatEmitterSchematics || !this.heatingSystem.heatEmitterSchematics.length) return null;\n const blob = await this.glowService.getImage(this.heatingSystem.heatEmitterSchematics[0].fileId);\n fileReader.readAsDataURL(blob);\n fileReader.onloadend = () => {\n this.radSchematicMap[this.heatingSystem.componentId] = fileReader.result;\n };\n }\n\n getRelationDisplayOneToMany(relationType, value) {\n if (!value || value.length == 0) {\n return [];\n }\n let displays = [];\n let fieldsToDisplay = this.caseStudyRelatedContentConfig[relationType];\n for (let i = 0; i < value.length; i++) {\n let item = value[i];\n let display = [];\n for (let field in fieldsToDisplay) {\n if (item[field] || item[field] === false) {\n display.push({ displayName: fieldsToDisplay[field].displayName, value: item[field], unit: fieldsToDisplay[field].unit });\n }\n }\n displays.push(display);\n }\n return displays;\n }\n\n getRelationDisplaySummary(relationType, value) {\n if (!value || value.length == 0) {\n return [];\n }\n let fieldsToDisplay = this.caseStudyRelatedContentConfig[relationType];\n let fieldsCounter: any = {};\n let i = 0;\n while (i < value.length) {\n let item = value[i];\n for (let field in fieldsToDisplay) {\n if ((item[field] || item[field] === false) && fieldsToDisplay[field].isPrimary) {\n const key = field + item[field];\n if (fieldsCounter[key]) {\n fieldsCounter[key].count += 1;\n } else {\n fieldsCounter[key] = {\n count: 1,\n value: item[field],\n displayName: fieldsToDisplay[field].displayName,\n unit: fieldsToDisplay[field].unit,\n };\n }\n }\n }\n i += 1;\n }\n // return Object.values(fieldsCounter)\n return Object.values(fieldsCounter).sort((a: any, b: any) => a.displayName.localeCompare(b.displayName));\n }\n\n getRelationDisplayHTML(relationType, value) {\n const displays = this.getRelationDisplayOneToMany(relationType, value);\n let html = '
    ';\n //generate table header\n html += '';\n for (let field in this.caseStudyRelatedContentConfig[relationType]) {\n html += ``;\n }\n html += '';\n //generate table body\n displays.forEach((display) => {\n html += '';\n display.forEach((item) => {\n const unit = item.unit ? this.translateService.instant(item.unit) : null;\n const value = item.value === true ? 'Yes' : item.value === false ? 'No' : item.value;\n let unitHTML = unit ? '' + unit + '' : '';\n html += ``;\n });\n html += '';\n });\n html += '
    ${this.translateService.instant(this.caseStudyRelatedContentConfig[relationType][field].displayName)}
    ${value} ${unitHTML}
    ';\n\n return html;\n }\n\n openHelpModal(relationType, relationDisplayName, value) {\n const modalRef = this.modalService.open(HelpModalComponent, { size: 'lg', centered: true, scrollable: true });\n modalRef.componentInstance.pageTitle = relationDisplayName;\n modalRef.componentInstance.modalBodyContent = this.getRelationDisplayHTML(relationType, value);\n }\n\n openImage(component) {\n const modalRef = this.modalService.open(ImageModalComponent, { size: 'lg' });\n modalRef.componentInstance.imageUrl = this.radSchematicMap[component.componentId];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyInstallatonHeatingSystemTechnicalComponent } from './case-study-installaton-heating-system-technical.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { CaseStudyRelationTableModule } from '../case-study-relation-table/case-study-relation-table.module';\n\n@NgModule({\n declarations: [CaseStudyInstallatonHeatingSystemTechnicalComponent],\n imports: [CommonModule, SharedModule, CaseStudyRelationTableModule],\n exports: [CaseStudyInstallatonHeatingSystemTechnicalComponent],\n})\nexport class CaseStudyInstallatonHeatingSystemTechnicalModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9jYXNlLXN0dWR5LW90aGVyLWNvbnRlbnQvY2FzZS1zdHVkeS1vdGhlci1jb250ZW50LmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { stringify } from 'querystring';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { caseStudyRelatedContentConfig } from '../../../../assets/content/case-study-content-config.json';\n\n@Component({\n selector: 'app-case-study-other-content',\n templateUrl: './case-study-other-content.component.html',\n styleUrls: ['./case-study-other-content.component.scss'],\n})\nexport class CaseStudyOtherContentComponent implements OnInit {\n questionForm: FormGroup;\n submitMessage: string\n @Input() caseStudy;\n caseStudyId: string;\n caseStudyRelatedContentConfig = caseStudyRelatedContentConfig;\n @Input() isAccountView;\n loading = false;\n constructor(private formBuilder: FormBuilder, private glow: GlowService) {\n this.questionForm = this.formBuilder.group({\n question: ['', Validators.required],\n });\n }\n\n ngOnInit() {\n }\n\n ngOnChanges() {\n this.caseStudyId = this.caseStudy.csId;\n }\n\n\n setInputs({ caseStudy, isAccountView }) {\n this.caseStudy = caseStudy;\n this.caseStudyId = caseStudy.csId;\n this.isAccountView = isAccountView\n }\n\n postQuestion(question) {\n this.loading = true;\n const data = {\n 'Case Study Id': this.caseStudyId,\n \"The customer's question and input\": question,\n };\n\n let body = {\n description: JSON.stringify(data),\n subject: 'Glowmarkt Question for',\n type: 'contactUsGlowmarkt',\n };\n\n this.glow.postTicket(body).subscribe((response) => {\n // // console.log(response);\n if (response.valid) {\n this.submitMessage = 'Thank you, your question has been sent';\n } else this.submitMessage = 'There was an error sending your message';\n this.loading = false;\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyOtherContentComponent } from './case-study-other-content.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [CaseStudyOtherContentComponent],\n imports: [\n CommonModule,\n SharedModule\n ],\n exports: [CaseStudyOtherContentComponent]\n})\nexport class CaseStudyOtherContentModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9jYXNlLXN0dWR5LW91dGNvbWUvY2FzZS1zdHVkeS1vdXRjb21lLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-case-study-outcome',\n templateUrl: './case-study-outcome.component.html',\n styleUrls: ['./case-study-outcome.component.scss'],\n})\nexport class CaseStudyOutcomeComponent implements OnInit {\n @Input() caseStudy;\n @Input() caseStudyRelatedContentConfig;\n @Input() colour;\n @Input() isAccountView;\n constructor() {}\n\n ngOnInit() {}\n\n setInputs({ caseStudy, caseStudyRelatedContentConfig, colour, isAccountView }) {\n this.caseStudy = caseStudy;\n this.caseStudyRelatedContentConfig = caseStudyRelatedContentConfig;\n this.colour = colour;\n this.isAccountView = isAccountView;\n }\n\n returnZero() {\n return 0;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyOutcomeComponent } from './case-study-outcome.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { StarRatingModule } from '../../star-rating/star-rating.module';\nimport { CaseStudyRelationTableModule } from '../case-study-relation-table/case-study-relation-table.module';\n\n@NgModule({\n declarations: [CaseStudyOutcomeComponent],\n imports: [CommonModule, SharedModule, StarRatingModule, CaseStudyRelationTableModule],\n exports: [CaseStudyOutcomeComponent],\n})\nexport class CaseStudyOutcomeModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9jYXNlLXN0dWR5LXJlbGF0aW9uLXRhYmxlL2Nhc2Utc3R1ZHktcmVsYXRpb24tdGFibGUuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\n@Component({\n selector: 'app-case-study-relation-table',\n templateUrl: './case-study-relation-table.component.html',\n styleUrls: ['./case-study-relation-table.component.scss'],\n})\nexport class CaseStudyRelationTableComponent implements OnInit {\n @Input() relationType: string;\n @Input() value: any;\n @Input() caseStudyRelatedContentConfig: any;\n\n displays: any = [];\n constructor() {}\n\n ngOnInit() {\n this.displays = this.getRelationDisplayOneToMany(this.relationType, this.value);\n }\n\n returnZero() {\n return 0;\n }\n\n getRelationDisplayOneToMany(relationType, value) {\n if (!value || value.length == 0) {\n return [];\n }\n let displays = [];\n let fieldsToDisplay = this.caseStudyRelatedContentConfig[relationType];\n for (let i = 0; i < value.length; i++) {\n let item = value[i];\n let display = [];\n for (let field in fieldsToDisplay) {\n if (item[field] || item[field] === false) {\n display.push({ displayName: fieldsToDisplay[field].displayName, value: item[field], unit: fieldsToDisplay[field].unit, unitPosition: fieldsToDisplay[field].unitPosition });\n }\n }\n displays.push(display);\n }\n return displays;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyRelationTableComponent } from './case-study-relation-table.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [CaseStudyRelationTableComponent],\n imports: [CommonModule, SharedModule],\n exports: [CaseStudyRelationTableComponent],\n})\nexport class CaseStudyRelationTableModule {}\n","export default \"@media only screen and (max-width: 767px) {\\n .table > tbody > tr > td,\\n.table > tbody > tr > th,\\n.table > tfoot > tr > td,\\n.table > tfoot > tr > th,\\n.table > thead > tr > td,\\n.table > thead > tr > th {\\n display: block;\\n min-width: 100% !important;\\n }\\n\\n .table > thead > tr > th {\\n display: none;\\n }\\n\\n .table .filterBody span {\\n display: block;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Nhc2Utc3R1ZHkvY2FzZS1zdHVkeS1zdW1tYXJ5L2Nhc2Utc3R1ZHktc3VtbWFyeS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9jYXNlLXN0dWR5L2Nhc2Utc3R1ZHktc3VtbWFyeS9jYXNlLXN0dWR5LXN1bW1hcnkuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSTs7Ozs7O0lBTUUsY0FBQTtJQUNBLDBCQUFBO0VDQ0o7O0VEQ0U7SUFDRSxhQUFBO0VDRUo7O0VEQ0U7SUFDRSxjQUFBO0VDRUo7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9jYXNlLXN0dWR5LXN1bW1hcnkvY2FzZS1zdHVkeS1zdW1tYXJ5LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC50YWJsZT50Ym9keT50cj50ZCxcbiAgICAudGFibGU+dGJvZHk+dHI+dGgsXG4gICAgLnRhYmxlPnRmb290PnRyPnRkLFxuICAgIC50YWJsZT50Zm9vdD50cj50aCxcbiAgICAudGFibGU+dGhlYWQ+dHI+dGQsXG4gICAgLnRhYmxlPnRoZWFkPnRyPnRoIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWluLXdpZHRoOiAxMDAlIWltcG9ydGFudDtcbiAgICB9XG4gICAgLnRhYmxlPnRoZWFkPnRyPnRoIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIFxuICAgIC50YWJsZSAuZmlsdGVyQm9keSBzcGFuIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgfVxuICB9IiwiQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAudGFibGUgPiB0Ym9keSA+IHRyID4gdGQsXG4udGFibGUgPiB0Ym9keSA+IHRyID4gdGgsXG4udGFibGUgPiB0Zm9vdCA+IHRyID4gdGQsXG4udGFibGUgPiB0Zm9vdCA+IHRyID4gdGgsXG4udGFibGUgPiB0aGVhZCA+IHRyID4gdGQsXG4udGFibGUgPiB0aGVhZCA+IHRyID4gdGgge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1pbi13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLnRhYmxlIC5maWx0ZXJCb2R5IHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-case-study-summary',\n templateUrl: './case-study-summary.component.html',\n styleUrls: ['./case-study-summary.component.scss'],\n})\nexport class CaseStudySummaryComponent implements OnInit {\n @Input() caseStudy;\n @Input() caseStudyRelatedContentConfig;\n @Input() colour;\n @Input() isAccountView;\n constructor() {}\n\n ngOnInit() {}\n\n getDefaultText() {\n return (this.isAccountView && 'To be completed') || 'Unknown';\n }\n\n setInputs({ caseStudy, caseStudyRelatedContentConfig, colour, isAccountView }) {\n this.caseStudy = caseStudy;\n this.caseStudyRelatedContentConfig = caseStudyRelatedContentConfig;\n this.colour = colour;\n this.isAccountView = isAccountView;\n }\n\n tariffDisplay(tariff) {\n if (!tariff || tariff.length == 0) {\n return 'Unknown';\n } else if (tariff.type && !tariff.unitRate && tariff.standingCharge) {\n return `${tariff.type} (Standing charge: ${tariff.standingCharge}p/day)`;\n } else if (tariff.type && tariff.unitRate && !tariff.standingCharge) {\n return `${tariff.type} (Unit rate: ${tariff.unitRate}p/kWh)`;\n } else if (tariff.type && !tariff.unitRate && !tariff.standingCharge) {\n return tariff.type;\n }\n return `${tariff.type} (Unit rate: ${tariff.unitRate}p/kWh, Standing charge: ${tariff.standingCharge}p/day)`;\n }\n\n calculateNetCosts(totalCost, awardedGrants) {\n if (!totalCost || !(awardedGrants && awardedGrants.length)) {\n return this.getDefaultText();\n }\n if (!awardedGrants || awardedGrants.length == 0) {\n return '£' + totalCost;\n }\n const totalGrantAmount = awardedGrants.reduce((acc, ag) => {\n const accAmountWon = acc.amount || 0;\n const agAmountWon = ag.amount || 0;\n return accAmountWon + agAmountWon;\n }, 0);\n return '£' + (totalCost - totalGrantAmount);\n }\n\n calculateCarbonEmissionsReduction(postInstallPropertyDescription, preInstallPropertyDescription) {\n if (!preInstallPropertyDescription || !postInstallPropertyDescription || !preInstallPropertyDescription.carbonEmissions || !postInstallPropertyDescription.carbonEmissions) {\n return this.getDefaultText();\n }\n return preInstallPropertyDescription.carbonEmissions - postInstallPropertyDescription.carbonEmissions;\n }\n\n calculateHeatingNetRunningCosts(heatingSystemsArray) {\n if (!heatingSystemsArray) {\n return this.getDefaultText();\n }\n const heatingSystemRunningCosts = heatingSystemsArray.reduce((acc, hs) => {\n const accRunningCost = acc['gas.cost'] ? acc['gas.cost'].totalValue : acc['electricity.cost'] ? acc['electricity.cost'].totalValue : 0;\n const hsRunningCost = hs['gas.cost'] ? hs['gas.cost'].totalValue : hs['electricity.cost'] ? hs['electricity.cost'].totalValue : 0;\n return accRunningCost + hsRunningCost;\n }, 0);\n if (heatingSystemRunningCosts == 0) {\n return this.getDefaultText();\n }\n return '£' + heatingSystemRunningCosts;\n }\n\n getDate(date ){\n return Utils.getReadableDateFromIso(date)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudySummaryComponent } from './case-study-summary.component';\n\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { StarRatingModule } from '../../star-rating/star-rating.module';\nimport { CaseStudyRelationTableModule } from '../case-study-relation-table/case-study-relation-table.module';\n\n\n\n@NgModule({\n declarations: [CaseStudySummaryComponent],\n imports: [\n CommonModule,\n SharedModule,\n StarRatingModule,\n CaseStudyRelationTableModule\n ],\n exports:[CaseStudySummaryComponent]\n})\nexport class CaseStudySummaryModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9lbmVyZ3ktc3RvcmFnZS1mb3JtL2VuZXJneS1zdG9yYWdlLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\n\nimport { FormArray, FormBuilder, FormControl, FormGroup, FormGroupName, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { CaseStudyFormService } from 'src/app/services/case-study-form.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-energy-storage-form',\n templateUrl: './energy-storage-form.component.html',\n styleUrls: ['./energy-storage-form.component.scss'],\n})\nexport class EnergyStorageFormComponent implements OnInit {\n @Input() caseStudyFields;\n @Input() section;\n @Input() caseStudy;\n @Input() formattedCaseStudy;\n @Input() journal;\n\n hasEnergyStorageFormName = 'hasEnergyStoragePreForm';\n hasEnergyStorageForm: FormGroup;\n energyStorageFormName = 'energyStoragePreForm';\n energyStorageForm: FormGroup;\n\n components: any[];\n completionStatus: 'completed' | 'in-progress' = 'in-progress';\n\n subscriptionSelectedService: Subscription;\n csSection;\n selectedService: any;\n isSubscribedToBooleanControl = {};\n constructor(private fb: FormBuilder, private caseStudyFormService: CaseStudyFormService, private serviceSelectorSvc: ServiceSelectorSvc) {\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n });\n this.caseStudyFormService.formAnnouncer.subscribe((data) => {\n if (data && data.formName === this.energyStorageFormName) {\n this.energyStorageForm = data.form;\n }\n if (data && data.formName === this.hasEnergyStorageFormName) {\n this.hasEnergyStorageForm = data.form;\n }\n if (this.hasEnergyStorageForm && !this.isSubscribedToBooleanControl[this.hasEnergyStorageFormName]) {\n this.isSubscribedToBooleanControl[this.hasEnergyStorageFormName] = true;\n this.caseStudyFormService.processChangeBooleanControl('energyStorage', this.hasEnergyStorageForm, this.energyStorageForm, 'energyStorages', 'isTrue', this.energyStorageFormName);\n }\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n this.caseStudyFormService.announceForm(this.hasEnergyStorageFormName, this.caseStudyFormService[this.hasEnergyStorageFormName]);\n this.caseStudyFormService.announceForm(this.energyStorageFormName, this.caseStudyFormService[this.energyStorageFormName]);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.section && changes.section.currentValue) {\n this.csSection = this.section === 'pre-installation-heating' ? 'before' : 'after';\n this.energyStorageFormName = this.csSection === 'before' ? 'energyStoragePreForm' : 'energyStoragePostForm';\n this.hasEnergyStorageFormName = this.csSection === 'before' ? 'hasEnergyStoragePreForm' : 'hasEnergyStoragePostForm';\n\n if (this.formattedCaseStudy) {\n this.components = this.formattedCaseStudy[this.csSection].energy_storage;\n }\n }\n if (changes.formattedCaseStudy && changes.formattedCaseStudy.currentValue) {\n this.components = this.formattedCaseStudy[this.csSection].energy_storage;\n }\n }\n\n ngOnDestroy() {\n if (this.subscriptionSelectedService) this.subscriptionSelectedService.unsubscribe();\n }\n\n async saveChanges(completionStatus: 'completed' | 'in-progress'='in-progress') {\n this.completionStatus = completionStatus;\n\n let err, data;\n [err, data] = await Utils.promiseHandler(this.caseStudyFormService.processDeletedComponents(this.components, this.energyStorageForm, 'energyStorages', this.csSection));\n if (this.energyStorageForm) {\n for (let form of this.energyStorageForm.controls.energyStorages['controls']) {\n const existingComponent = this.components && this.components.find((component) => component.componentId === form.metadata.componentId && component.componentVersion === form.metadata.componentVersion);\n if (existingComponent) {\n [err, data] = await Utils.promiseHandler(this.processExistingEnergyStorage(form.value, existingComponent));\n } else {\n [err, data] = await Utils.promiseHandler(this.processNewEnergyStorage(form.value));\n }\n if (err) throw err;\n }\n }\n this.caseStudyFormService.setFormAndAnnounce(this.energyStorageFormName, this.energyStorageForm);\n return true;\n }\n\n async processExistingEnergyStorage(formValue, existingComponent) {\n const componentDataType = 'energy_storage';\n const component = await this.caseStudyFormService.updateComponent({\n formValue,\n componentDataType,\n componentVersion: existingComponent.componentVersion,\n componentId: existingComponent.componentId,\n fieldsToDelete: ['installedAt'],\n fieldsToAdd: ['installedAt'],\n });\n const descriptionJe = await this.caseStudyFormService.updateDescriptionJournalEntry({\n formValue,\n existingTextDescription: existingComponent.text_description,\n });\n }\n\n async processNewEnergyStorage(formValue) {\n const componentDataType = 'energy_storage';\n const component = await this.caseStudyFormService.createComponent({ formValue, componentDataType, componentVersion: 1, fieldsToDelete: ['installedAt'], fieldsToAdd: ['installedAt'], completionStatus: this.completionStatus });\n const descriptionJe = await this.caseStudyFormService.createDescriptionJournalEntry({\n formValue,\n componentId: component.componentId,\n componentDataType,\n componentVersion: component.componentVersion,\n completionStatus: this.completionStatus,\n });\n await this.caseStudyFormService.addJournalEntryToCaseStudy({ caseStudy: this.caseStudy, journalEntry: descriptionJe, section: this.csSection });\n }\n\n addForm() {\n return this.caseStudyFormService.addGroupToFormArray('energyStorage', this.energyStorageForm, 'energyStorages');\n }\n\n removeForm(index) {\n this.caseStudyFormService.removeForm(index, this.energyStorageForm, 'energyStorages');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormTemplateModule } from '../form-template/form-template.module';\nimport { EnergyStorageFormComponent } from './energy-storage-form.component';\n\n\n\n@NgModule({\n declarations: [EnergyStorageFormComponent],\n imports: [\n CommonModule, SharedModule, FormTemplateModule\n ],\n exports: [EnergyStorageFormComponent]\n})\nexport class EnergyStorageFormModule { }\n","export default \"form .required.ng-valid {\\n border-color: #24b795;\\n padding-right: calc(1.5em + 0.75rem);\\n background-image: url('check-green.da3d4cf557a48f77148a.svg');\\n background-position: right calc(0.375em + 0.1875rem) center;\\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\\n background-repeat: no-repeat;\\n}\\n\\n.landscape {\\n width: 320px;\\n height: 250px;\\n}\\n\\n.portrait {\\n width: 220px;\\n height: 300px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Nhc2Utc3R1ZHkvZm9ybS10ZW1wbGF0ZS9mb3JtLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2Nhc2Utc3R1ZHkvZm9ybS10ZW1wbGF0ZS9mb3JtLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNFO0VBQ0UscUJBQUE7RUFDQSxvQ0FBQTtFQUNBLDZEQUFBO0VBQ0EsMkRBQUE7RUFDQSxnRUFBQTtFQUNBLDRCQUFBO0FDQUo7O0FESUE7RUFDRSxZQUFBO0VBQ0EsYUFBQTtBQ0RGOztBRElBO0VBQ0UsWUFBQTtFQUNBLGFBQUE7QUNERiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9mb3JtLXRlbXBsYXRlL2Zvcm0tdGVtcGxhdGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcbiAgLnJlcXVpcmVkLm5nLXZhbGlkIHtcbiAgICBib3JkZXItY29sb3I6ICMyNGI3OTU7XG4gICAgcGFkZGluZy1yaWdodDogY2FsYygxLjVlbSArIDAuNzVyZW0pO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9jaGVjay1ncmVlbi5zdmdcIik7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKSBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKSBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICB9XG59XG5cbi5sYW5kc2NhcGUge1xuICB3aWR0aDogMzIwcHg7XG4gIGhlaWdodDogMjUwcHg7XG59XG5cbi5wb3J0cmFpdCB7XG4gIHdpZHRoOiAyMjBweDtcbiAgaGVpZ2h0OiAzMDBweDtcbn1cbiIsImZvcm0gLnJlcXVpcmVkLm5nLXZhbGlkIHtcbiAgYm9yZGVyLWNvbG9yOiAjMjRiNzk1O1xuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDEuNWVtICsgMC43NXJlbSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9jaGVjay1ncmVlbi5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGNhbGMoMC4zNzVlbSArIDAuMTg3NXJlbSkgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNhbGMoMC43NWVtICsgMC4zNzVyZW0pIGNhbGMoMC43NWVtICsgMC4zNzVyZW0pO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuXG4ubGFuZHNjYXBlIHtcbiAgd2lkdGg6IDMyMHB4O1xuICBoZWlnaHQ6IDI1MHB4O1xufVxuXG4ucG9ydHJhaXQge1xuICB3aWR0aDogMjIwcHg7XG4gIGhlaWdodDogMzAwcHg7XG59Il19 */\"","import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { caseStudyFields } from '../../../../assets/content/case-study-fields.json';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { Utils } from 'src/utils';\nimport { GlowService } from 'src/app/services/glow.service';\n@Component({\n selector: 'app-form-template',\n templateUrl: './form-template.component.html',\n styleUrls: ['./form-template.component.scss'],\n})\nexport class FormTemplateComponent implements OnInit {\n @Input() formGroup: FormGroup;\n caseStudyFields = caseStudyFields;\n @Input() title;\n @Input() categories: [];\n @Input() completionStatus: string;\n remainingCharactersMap = {};\n constructor(private formValidationService: FormValidationService, private glowService: GlowService) {}\n\n ngOnInit() {\n this.setImageSources().then();\n }\n\n checkFormValidity(formControlName, translateKey?) {\n const formValidity =this.formValidationService.checkFormValidity(this.formGroup, formControlName, translateKey);\n return formValidity\n }\n\n async setImageSources() {\n for (let category of this.categories) {\n for (let field in this.caseStudyFields[category] as any) {\n const info: any = this.caseStudyFields[category][field];\n if (info.type != 'file') continue;\n let files = this.formGroup.get(field).value;\n if (!files) continue;\n if (!info.multiple) {\n files = [files];\n }\n for (let i = 0; i < files.length; i++) {\n const blob = await this.glowService.getImage(files[i].fileId);\n if (blob) {\n await this.setImageSourceAndClass(blob, field + i + this.formGroup.metadata.componentId, { width: files[i].width, height: files[i].height });\n }\n }\n }\n }\n }\n\n async addDescriptionToImage(event, controlName, index) {\n let files = this.formGroup.get(controlName).value;\n let description = event.target.value;\n if (!(files && files[index])) return;\n files[index].description = description;\n this.formGroup.get(controlName).setValue(files);\n }\n\n removeImage(controlName, index) {\n const dt = new DataTransfer();\n const fileList = this.formGroup.get(controlName).value;\n if (fileList instanceof FileList) {\n for (let i = 0; i < fileList.length; i++) {\n if (i != index) {\n dt.items.add(fileList[i]);\n }\n }\n this.formGroup.get(controlName).setValue(dt.files);\n //reset file input\n const elem = document.getElementById(controlName) as HTMLInputElement;\n elem.files = dt.files;\n } else {\n fileList.splice(index, 1);\n this.formGroup.get(controlName).setValue(fileList);\n }\n }\n\n getRemainingCharacters(controlName, maxLength) {\n if (!maxLength) return;\n const control = this.formGroup.get(controlName);\n this.remainingCharactersMap[controlName] = maxLength;\n if (control && control.value) {\n this.remainingCharactersMap[controlName] = maxLength - control.value.length;\n }\n return this.remainingCharactersMap[controlName];\n }\n\n async setImageSourceAndClass(blob, id, imgInfo) {\n const imgElm = await Utils.waitForElemById(id);\n if (!imgElm) return;\n const scr = (await Utils.getBlobImageSource(blob)) as string;\n const imageOrientation = Utils.getImageOrientation(imgInfo);\n imgElm.setAttribute('class', imageOrientation);\n imgElm.setAttribute('src', scr);\n }\n\n async fileInputChange(event, controlName, defaultImageDescription) {\n const files = event.target.files;\n if (!files || files.length == 0) return;\n for (let i = 0; i < files.length; i++) {\n const fileDimensions = await Utils.getFileDimensions({ file: files[i] });\n files[i].width = fileDimensions.width;\n files[i].height = fileDimensions.height;\n if(defaultImageDescription) files[i].description = defaultImageDescription;\n await this.setImageSourceAndClass(files[i], controlName + i + this.formGroup.metadata.componentId, fileDimensions);\n }\n this.formGroup.get(controlName).setValue(files);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormTemplateComponent } from './form-template.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FileUploadModule } from '../../file-upload/file-upload.module';\nimport { FormValidationMessageModule } from '../../form-validation-message/form-validation-message.module';\n\n\n\n@NgModule({\n declarations: [FormTemplateComponent],\n imports: [\n CommonModule, SharedModule, FileUploadModule, FormValidationMessageModule\n ],\n exports: [FormTemplateComponent]\n})\nexport class FormTemplateModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9oZWF0aW5nLXN5c3RlbS1mb3JtL2hlYXRpbmctc3lzdGVtLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { caseStudyFields } from '../../../../assets/content/case-study-fields.json';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { FormTemplateComponent } from '../form-template/form-template.component';\nimport { MicrogeneratorFormComponent } from '../microgenerator-form/microgenerator-form.component';\nimport { CaseStudyFormService } from 'src/app/services/case-study-form.service';\nimport { EnergyStorageFormComponent } from '../energy-storage-form/energy-storage-form.component';\nimport { Subscription } from 'rxjs';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { Router } from '@angular/router';\nimport { Utils } from 'src/utils';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { RadiatorSchematicSelectorModalComponent } from '../../radiator-schematic-selector-modal/radiator-schematic-selector-modal.component';\n\n@Component({\n selector: 'app-heating-system-form',\n templateUrl: './heating-system-form.component.html',\n styleUrls: ['./heating-system-form.component.scss'],\n})\nexport class HeatingSystemFormComponent implements OnInit {\n section;\n caseStudy;\n formattedCaseStudy;\n\n heatingSystems: any[];\n\n completionStatus: 'completed' | 'in-progress' = 'in-progress';\n\n caseStudyFields = caseStudyFields;\n heatingSystemForm: FormGroup;\n csSection;\n selectedService: any;\n loadObj: any;\n subscriptionSelectedService: Subscription;\n\n heatingSystemFormName = 'heatingSystemPreForm';\n\n @ViewChild('microgeneratorView', { static: false }) microgeneratorView: MicrogeneratorFormComponent;\n @ViewChild('energyStorageView', { static: false }) energyStorageView: EnergyStorageFormComponent;\n constructor(private caseStudyFormService: CaseStudyFormService, private modalService: NgbModal, private serviceSelectorSvc: ServiceSelectorSvc, private router: Router) {\n this.loadObj = this.caseStudyFormService.initLoadObj();\n this.section = this.caseStudyFormService.getSectionFromRouter();\n\n this.caseStudyFormService.caseStudyAnnouncer.subscribe((data) => {\n if (data) {\n this.caseStudy = data.caseStudy;\n this.formattedCaseStudy = data.formattedCaseStudy;\n this.heatingSystems = this.formattedCaseStudy[this.csSection].heating_system;\n }\n });\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.caseStudyFormService.initServiceVariables(selectedService).then();\n this.loadObj = this.caseStudyFormService.initLoadObj();\n });\n this.caseStudyFormService.formAnnouncer.subscribe((data) => {\n if (data.formName === this.heatingSystemFormName) {\n this.heatingSystemForm = data.form;\n }\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (!this.caseStudyFormService.hasInitServiceVariables) {\n this.caseStudyFormService.initServiceVariables(this.selectedService).then();\n } else {\n this.caseStudyFormService.announceLatestCaseStudy();\n }\n this.processChanges();\n }\n\n ngOnDestroy() {\n if (this.subscriptionSelectedService) this.subscriptionSelectedService.unsubscribe();\n }\n\n openSelectSchematicModal(formIndex) {\n const modalRef = this.modalService.open(RadiatorSchematicSelectorModalComponent, { size: 'lg' });\n modalRef.result.then((result) => {\n this.fillFormWithSchematic(formIndex, result);\n console.log('result', result);\n });\n }\n\n fillFormWithSchematic(formIndex, schematicDocument) {\n const form = this.heatingSystemForm.controls.heatingSystems['controls'][formIndex];\n const schematicData = schematicDocument.data;\n const heatingSystem = schematicData.heatingSystem;\n for (let key in heatingSystem) {\n if (form.controls[key] && heatingSystem[key]) {\n form.controls[key].setValue(heatingSystem[key]);\n form.controls[key].markAsDirty();\n form.controls[key].markAsTouched();\n }\n }\n if (heatingSystem.validFrom) {\n form.controls['installedAt'].setValue(heatingSystem.validFrom);\n form.controls['installedAt'].markAsDirty();\n form.controls['installedAt'].markAsTouched();\n }\n this.caseStudyFormService.setFormAndAnnounce(this.heatingSystemFormName, this.heatingSystemForm);\n }\n\n processChanges() {\n this.loadObj = this.caseStudyFormService.initLoadObj();\n this.csSection = this.section === 'pre-installation-heating' ? 'before' : 'after';\n this.heatingSystemFormName = this.csSection === 'before' ? 'heatingSystemPreForm' : 'heatingSystemPostForm';\n this.caseStudyFormService.announceForm(this.heatingSystemFormName, this.caseStudyFormService[this.heatingSystemFormName]);\n if (this.formattedCaseStudy) {\n this.heatingSystems = this.formattedCaseStudy[this.csSection].heating_system;\n }\n }\n\n addHeatingSystem() {\n return this.caseStudyFormService.addGroupToFormArray('heatingSystem', this.heatingSystemForm, 'heatingSystems');\n }\n\n async saveChanges(completionStatus: 'completed' | 'in-progress' = 'in-progress') {\n this.completionStatus = completionStatus;\n\n this.loadObj = this.caseStudyFormService.handleLoadObjLoading(this.loadObj, 'Saving changes...');\n let err, data;\n\n //remove deleted heating system journal entries\n await this.caseStudyFormService.processDeletedComponents(this.heatingSystems, this.heatingSystemForm, 'heatingSystems', this.csSection);\n\n for (let form of this.heatingSystemForm.controls.heatingSystems['controls']) {\n const existingComponent = this.heatingSystems && this.heatingSystems.find((hs) => hs.componentId === form.metadata.componentId && hs.componentVersion === form.metadata.componentVersion);\n\n [err, data] = await Utils.promiseHandler(existingComponent ? this.processExistingHeatingSystem(form.value, existingComponent) : this.processNewHeatingSystem(form.value));\n if (err) {\n this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, \"Couldn't save changes - please try again later.\");\n return this.loadObj;\n }\n }\n\n this.caseStudyFormService.setFormAndAnnounce(this.heatingSystemFormName, this.heatingSystemForm);\n\n [err, data] = await Utils.promiseHandler(this.microgeneratorView.saveChanges(this.completionStatus));\n if (err) return (this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, \"Couldn't save changes - please try again later.\"));\n [err, data] = await Utils.promiseHandler(this.energyStorageView.saveChanges(this.completionStatus));\n if (err) return (this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, \"Couldn't save changes - please try again later\"));\n await this.caseStudyFormService.announceLatestCaseStudy();\n this.caseStudyFormService.markSectionAsPristine(this.section);\n this.loadObj = this.caseStudyFormService.handleLoadObjSuccess(this.loadObj, 'Changes saved successfully.');\n return this.loadObj;\n }\n\n async saveAndContinue() {\n this.completionStatus = 'completed';\n this.loadObj = await this.caseStudyFormService.saveAndContinue(this.saveChanges.bind(this), this.section, this.loadObj);\n }\n\n async processNewHeatingSystem(formValue) {\n const componentDataType = 'heating_system';\n const component = await this.caseStudyFormService.createComponent({\n formValue,\n componentDataType,\n componentVersion: 1,\n fieldsToDelete: ['installedAt', 'decommissionedAt', 'summary', 'mediaFiles'],\n fieldsToAdd: ['installedAt', 'decommissionedAt'],\n completionStatus: this.completionStatus,\n });\n formValue = await this.caseStudyFormService.uploadComponentMediaFilesFromForm(formValue, component.componentId, component.componentVersion);\n const descriptionJe = await this.caseStudyFormService.createDescriptionJournalEntry({ formValue, componentVersion: 1, componentId: component.componentId, componentDataType, completionStatus: this.completionStatus });\n await this.caseStudyFormService.addJournalEntryToCaseStudy({\n caseStudy: this.caseStudy,\n journalEntry: descriptionJe,\n section: this.csSection,\n });\n return component;\n }\n\n async processExistingHeatingSystem(formValue, existingComponent) {\n const componentDataType = 'heating_system';\n formValue = await this.caseStudyFormService.uploadComponentMediaFilesFromForm(formValue, existingComponent.componentId, existingComponent.componentVersion);\n const component = await this.caseStudyFormService.updateComponent({\n formValue,\n componentDataType,\n componentVersion: existingComponent.componentVersion,\n componentId: existingComponent.componentId,\n fieldsToDelete: ['installedAt', 'decommissionedAt', 'summary', 'mediaFiles'],\n fieldsToAdd: ['installedAt', 'decommissionedAt', 'mediaFiles'],\n });\n const updateTextDescription = await this.caseStudyFormService.updateDescriptionJournalEntry({ formValue, existingTextDescription: existingComponent.text_description });\n return component;\n }\n\n getConsumptionJournalEntry(consumptionForm) {\n const journalEntryData = {\n validFrom: consumptionForm.value.validFrom,\n validTo: consumptionForm.value.validTo,\n data: {\n journalEntryDataType: 'resoure_extract',\n classifier: 'gas_consumption',\n totalValue: consumptionForm.value.totalValue,\n },\n };\n return journalEntryData;\n }\n\n createConsumptionJournalEntry(consumptionForm, componentVersion, componentId) {\n const journalEntryData = this.getConsumptionJournalEntry(consumptionForm);\n return this.caseStudyFormService.createJournalEntry({\n journalEntryData,\n componentId,\n componentVersion,\n componentDataType: 'heating_system',\n completionStatus: this.completionStatus,\n });\n }\n\n async removeForm(index) {\n // const form = this.heatingSystemForm.controls.heatingSystems['controls'][index];\n this.caseStudyFormService.removeForm(index, this.heatingSystemForm, 'heatingSystems');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeatingSystemFormComponent } from './heating-system-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { MicrogeneratorFormModule } from '../microgenerator-form/microgenerator-form.module';\nimport { FormTemplateModule } from '../form-template/form-template.module';\nimport { EnergyStorageFormModule } from '../energy-storage-form/energy-storage-form.module';\nimport { FormValidationMessageModule } from '../../form-validation-message/form-validation-message.module';\nimport { RadiatorSchematicSelectorModalModule } from '../../radiator-schematic-selector-modal/radiator-schematic-selector-modal.module';\n\n\n\n@NgModule({\n declarations: [HeatingSystemFormComponent],\n imports: [\n CommonModule,\n SharedModule, MicrogeneratorFormModule, FormTemplateModule, EnergyStorageFormModule, FormValidationMessageModule, RadiatorSchematicSelectorModalModule\n ],\n exports: [HeatingSystemFormComponent],\n\n})\nexport class HeatingSystemFormModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9pbnN0YWxsYXRpb24tZm9ybS9pbnN0YWxsYXRpb24tZm9ybS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, Input, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { caseStudyFields } from '../../../../assets/content/case-study-fields.json';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { FormTemplateComponent } from '../form-template/form-template.component';\nimport { CaseStudyFormService } from 'src/app/services/case-study-form.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { Utils } from 'src/utils';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-installation-form',\n templateUrl: './installation-form.component.html',\n styleUrls: ['./installation-form.component.scss'],\n})\nexport class InstallationFormComponent implements OnInit {\n section;\n caseStudy;\n formattedCaseStudy;\n csSection = 'after';\n\n completionStatus: 'completed' | 'in-progress' = 'in-progress';\n\n installationForm: FormGroup;\n installerForm: FormGroup;\n installerFormName = 'installerForm';\n installationFormName = 'installationForm';\n installers: any[];\n installation: any;\n\n selectedService: any;\n subscriptionSelectedService: Subscription;\n loadObj: any;\n constructor(private fb: FormBuilder, private caseStudyFormService: CaseStudyFormService, private glowService: GlowService, private router: Router, private serviceSelectorSvc: ServiceSelectorSvc) {\n this.loadObj = this.caseStudyFormService.initLoadObj();\n this.section = this.caseStudyFormService.getSectionFromRouter();\n\n this.caseStudyFormService.caseStudyAnnouncer.subscribe((data) => {\n if (data) {\n this.caseStudy = data.caseStudy;\n this.formattedCaseStudy = data.formattedCaseStudy;\n this.processChanges();\n }\n });\n\n this.caseStudyFormService.formAnnouncer.subscribe((data) => {\n if (data && data.formName === this.installationFormName) {\n this.installationForm = data.form;\n }\n if (data && data.formName === this.installerFormName) {\n this.installerForm = data.form;\n }\n });\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.caseStudyFormService.initServiceVariables(selectedService).then();\n this.loadObj = this.caseStudyFormService.initLoadObj();\n\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (!this.caseStudyFormService.hasInitServiceVariables) {\n this.caseStudyFormService.initServiceVariables(this.selectedService).then();\n } else {\n this.caseStudyFormService.announceLatestCaseStudy();\n }\n this.caseStudyFormService.announceForm(this.installationFormName, this.caseStudyFormService.installationForm);\n this.caseStudyFormService.announceForm(this.installerFormName, this.caseStudyFormService.installerForm);\n this.processChanges();\n }\n\n processChanges() {\n this.installation = this.caseStudyFormService.getHPInstallationValueFromCs();\n this.installers = this.installation && this.installation.installers;\n }\n\n async saveChanges(completionStatus: 'completed' | 'in-progress' = 'in-progress') {\n this.completionStatus = completionStatus;\n\n this.loadObj = this.caseStudyFormService.handleLoadObjLoading(this.loadObj, 'Saving changes...');\n let err, data;\n\n [err, data] = await Utils.promiseHandler(this.installation ? this.processExistingInstallation() : this.processNewInstallation());\n if (err) {\n this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, \"Couldn't save changes - please try again later.\");\n return this.loadObj;\n }\n this.caseStudyFormService.setFormAndAnnounce(this.installationFormName, this.installationForm);\n this.caseStudyFormService.setFormAndAnnounce(this.installerFormName, this.installerForm);\n await this.caseStudyFormService.announceLatestCaseStudy();\n this.caseStudyFormService.markSectionAsPristine(this.section);\n this.loadObj = this.caseStudyFormService.handleLoadObjSuccess(this.loadObj, 'Changes saved successfully.');\n return this.loadObj;\n }\n\n async saveAndContinue() {\n this.completionStatus = 'completed';\n this.loadObj = await this.caseStudyFormService.saveAndContinue(this.saveChanges.bind(this), this.section, this.loadObj);\n }\n\n getInstallationData() {\n const data = { ...this.installationForm.value };\n data.installers = [...this.installerForm.value.installers];\n data.journalEntryDataType = 'installation';\n return { data };\n }\n\n async createInstallationJe(component) {\n const data = this.getInstallationData();\n return this.caseStudyFormService.createJournalEntry({\n journalEntryData: { ...data },\n componentDataType: component.componentDataType,\n componentVersion: component.componentVersion,\n componentId: component.componentId,\n completionStatus: this.completionStatus,\n });\n }\n\n async processExistingInstallation() {\n const data = this.getInstallationData();\n const updated = await this.glowService.updateJournalEntry(this.installation.jeId, data).toPromise();\n }\n\n async processNewInstallation() {\n let err, data;\n let hpSystem = await this.caseStudyFormService.getOrCreateHpSystem(this.completionStatus);\n [err, data] = await Utils.promiseHandler(this.createInstallationJe(hpSystem));\n await this.caseStudyFormService.addJournalEntryToCaseStudy({ journalEntry: data, caseStudy: this.caseStudy, section: 'after' });\n }\n\n addInstaller() {\n return this.caseStudyFormService.addGroupToFormArray('installer', this.installerForm, 'installers');\n }\n\n removeForm(index) {\n this.caseStudyFormService.removeForm(index, this.installerForm, 'installers');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InstallationFormComponent } from './installation-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormTemplateModule } from '../form-template/form-template.module';\nimport { FormValidationMessageModule } from '../../form-validation-message/form-validation-message.module';\n\n@NgModule({\n declarations: [InstallationFormComponent],\n imports: [CommonModule, SharedModule, FormTemplateModule, FormValidationMessageModule],\n exports: [InstallationFormComponent],\n})\nexport class InstallationFormModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9taWNyb2dlbmVyYXRvci1mb3JtL21pY3JvZ2VuZXJhdG9yLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\n\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { CaseStudyFormService } from 'src/app/services/case-study-form.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-microgenerator-form',\n templateUrl: './microgenerator-form.component.html',\n styleUrls: ['./microgenerator-form.component.scss'],\n})\nexport class MicrogeneratorFormComponent implements OnInit {\n @Input() caseStudyFields;\n @Input() section;\n @Input() caseStudy;\n @Input() formattedCaseStudy;\n @Input() journal;\n\n hasMicrogeneratorFormName = 'hasMicrogeneratorPreForm';\n hasMicrogeneratorForm: FormGroup;\n microgeneratorFormName = 'microgeneratorPreForm';\n microgeneratorForm: FormGroup;\n\n components: any[];\n completionStatus: 'completed' | 'in-progress' = 'in-progress';\n\n subscriptionSelectedService: Subscription;\n csSection;\n selectedService: any;\n constructor(private fb: FormBuilder, private caseStudyFormService: CaseStudyFormService, private serviceSelectorSvc: ServiceSelectorSvc) {\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n });\n this.caseStudyFormService.formAnnouncer.subscribe((data) => {\n if (data && data.formName === this.microgeneratorFormName) {\n this.microgeneratorForm = data.form;\n }\n if (data && data.formName === this.hasMicrogeneratorFormName) {\n this.hasMicrogeneratorForm = data.form;\n }\n if (this.hasMicrogeneratorForm) this.caseStudyFormService.processChangeBooleanControl('microgenerator', this.hasMicrogeneratorForm, this.microgeneratorForm, 'microgenerators', 'isTrue', this.microgeneratorFormName);\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n this.caseStudyFormService.announceForm(this.hasMicrogeneratorFormName, this.caseStudyFormService[this.hasMicrogeneratorFormName]);\n this.caseStudyFormService.announceForm(this.microgeneratorFormName, this.caseStudyFormService[this.microgeneratorFormName]);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.section && changes.section.currentValue) {\n this.csSection = this.section === 'pre-installation-heating' ? 'before' : 'after';\n this.microgeneratorFormName = this.csSection === 'before' ? 'microgeneratorPreForm' : 'microgeneratorPostForm';\n this.hasMicrogeneratorFormName = this.csSection === 'before' ? 'hasMicrogeneratorPreForm' : 'hasMicrogeneratorPostForm';\n if (this.formattedCaseStudy) {\n this.components = this.formattedCaseStudy[this.csSection].microgenerator;\n }\n }\n if (changes.formattedCaseStudy && changes.formattedCaseStudy.currentValue) {\n this.components = this.formattedCaseStudy[this.csSection].microgenerator;\n }\n }\n\n ngOnDestroy() {\n if (this.subscriptionSelectedService) this.subscriptionSelectedService.unsubscribe();\n }\n\n async saveChanges(completionStatus: 'completed' | 'in-progress' = 'in-progress') {\n this.completionStatus = completionStatus;\n\n let err, data;\n [err, data] = await Utils.promiseHandler(this.caseStudyFormService.processDeletedComponents(this.components, this.microgeneratorForm, 'microgenerators', this.csSection));\n if (this.microgeneratorForm) {\n for (let form of this.microgeneratorForm.controls.microgenerators['controls']) {\n const existingComponent = this.components && this.components.find((component) => component.componentId === form.metadata.componentId && component.componentVersion === form.metadata.componentVersion);\n if (existingComponent) {\n [err, data] = await Utils.promiseHandler(this.processExistingMicrogenerator(form.value, existingComponent));\n } else {\n [err, data] = await Utils.promiseHandler(this.processNewMicrogenerator(form.value));\n }\n if (err) throw err;\n }\n }\n this.caseStudyFormService.setFormAndAnnounce(this.microgeneratorFormName, this.microgeneratorForm);\n }\n\n async processExistingMicrogenerator(formValue, existingComponent) {\n const componentDataType = 'microgenerator';\n const component = await this.caseStudyFormService.updateComponent({\n formValue,\n componentDataType,\n componentVersion: existingComponent.componentVersion,\n componentId: existingComponent.componentId,\n fieldsToDelete: ['installedAt'],\n fieldsToAdd: ['installedAt'],\n });\n const descriptionJe = await this.caseStudyFormService.updateDescriptionJournalEntry({\n formValue,\n existingTextDescription: existingComponent.text_description,\n });\n }\n\n async processNewMicrogenerator(formValue) {\n const componentDataType = 'microgenerator';\n const component = await this.caseStudyFormService.createComponent({ formValue, componentDataType, componentVersion: 1, fieldsToDelete: ['installedAt'], fieldsToAdd: ['installedAt'], completionStatus: this.completionStatus });\n const descriptionJe = await this.caseStudyFormService.createDescriptionJournalEntry({\n formValue,\n componentId: component.componentId,\n componentDataType,\n componentVersion: component.componentVersion,\n completionStatus: this.completionStatus,\n });\n await this.caseStudyFormService.addJournalEntryToCaseStudy({ caseStudy: this.caseStudy, journalEntry: descriptionJe, section: this.csSection });\n }\n\n addForm() {\n return this.caseStudyFormService.addGroupToFormArray('microgenerator', this.microgeneratorForm, 'microgenerators');\n }\n\n removeForm(index) {\n // const form = this.microgeneratorForm.controls.microgenerators['controls'][index];\n this.caseStudyFormService.removeForm(index, this.microgeneratorForm, 'microgenerators');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MicrogeneratorFormComponent } from './microgenerator-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormTemplateModule } from '../form-template/form-template.module';\n\n\n\n@NgModule({\n declarations: [MicrogeneratorFormComponent],\n imports: [\n CommonModule, SharedModule, FormTemplateModule\n ],\n exports: [MicrogeneratorFormComponent]\n})\nexport class MicrogeneratorFormModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9vdGhlci1pbmZvLWZvcm0vb3RoZXItaW5mby1mb3JtLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { CaseStudyFormService } from 'src/app/services/case-study-form.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-other-info-form',\n templateUrl: './other-info-form.component.html',\n styleUrls: ['./other-info-form.component.scss'],\n})\nexport class OtherInfoFormComponent implements OnInit {\n section;\n caseStudy;\n formattedCaseStudy;\n completionStatus: 'completed' | 'in-progress' = 'in-progress';\n otherInformationForm: FormGroup;\n otherInformationFormName = 'otherInformationForm';\n\n selectedService: any;\n subscriptionSelectedService: Subscription;\n loadObj: any;\n constructor(private caseStudyFormService: CaseStudyFormService, private glowService: GlowService, private router: Router, private serviceSelectorSvc: ServiceSelectorSvc) {\n this.loadObj = this.caseStudyFormService.initLoadObj();\n this.section = this.caseStudyFormService.getSectionFromRouter();\n this.caseStudyFormService.caseStudyAnnouncer.subscribe((data) => {\n if (data) {\n this.caseStudy = data.caseStudy;\n this.formattedCaseStudy = data.formattedCaseStudy;\n }\n });\n\n this.caseStudyFormService.formAnnouncer.subscribe((data) => {\n if (data && data.formName === this.otherInformationFormName) this.otherInformationForm = data.form;\n });\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.caseStudyFormService.initServiceVariables(selectedService).then();\n this.loadObj = this.caseStudyFormService.initLoadObj();\n\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (!this.caseStudyFormService.hasInitServiceVariables) {\n this.caseStudyFormService.initServiceVariables(this.selectedService).then();\n } else {\n this.caseStudyFormService.announceLatestCaseStudy();\n }\n this.caseStudyFormService.announceForm(this.otherInformationFormName, this.caseStudyFormService[this.otherInformationFormName]);\n }\n\n async saveChanges(completionStatus: 'completed' | 'in-progress' = 'in-progress') {\n this.completionStatus = completionStatus;\n this.loadObj = this.caseStudyFormService.handleLoadObjLoading(this.loadObj, 'Saving changes...');\n let err, data;\n [err, data] = await Utils.promiseHandler(this.glowService.updateCaseStudy(this.caseStudy.csId, { ...this.otherInformationForm.value, completionStatus: this.completionStatus }).toPromise());\n if (err) {\n this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, \"Couldn't save changes. Please try again later.\");\n return;\n }\n await this.caseStudyFormService.announceLatestCaseStudy();\n this.caseStudyFormService.markSectionAsPristine(this.section);\n this.loadObj = this.caseStudyFormService.handleLoadObjSuccess(this.loadObj, 'Changes saved successfully.');\n }\n\n async submitForm() {\n this.completionStatus = 'completed';\n this.loadObj = this.caseStudyFormService.handleLoadObjLoading(this.loadObj, 'Checking form validity...');\n const validity = this.caseStudyFormService.sections.map((section) => this.caseStudyFormService.getSectionValidity(section)).every((validity) => validity);\n if (!validity) {\n this.caseStudyFormService.markSectionAsTouched(this.section);\n this.caseStudyFormService.getAndAnnounceCaseStudySubmitSuccess();\n this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, 'Please fill all the required fields.');\n return;\n }\n await this.saveChanges(this.completionStatus);\n if (this.loadObj.error) {\n this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, 'An error occurred. Please try again later.');\n return;\n }\n this.loadObj = this.caseStudyFormService.handleLoadObjSuccess(this.loadObj, 'Submitted');\n this.router.navigate(['/pages/property/case-studies/' + this.caseStudy.csRef]);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OtherInfoFormComponent } from './other-info-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormTemplateModule } from '../form-template/form-template.module';\nimport { FormValidationMessageModule } from '../../form-validation-message/form-validation-message.module';\n\n\n\n@NgModule({\n declarations: [OtherInfoFormComponent],\n imports: [\n CommonModule, SharedModule, FormTemplateModule, FormValidationMessageModule\n ],\n exports: [OtherInfoFormComponent]\n})\nexport class OtherInfoFormModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY2FzZS1zdHVkeS9vdXRjb21lcy1mb3JtL291dGNvbWVzLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { caseStudyFields } from '../../../../assets/content/case-study-fields.json';\nimport { CaseStudyFormService } from 'src/app/services/case-study-form.service';\nimport { Utils } from 'src/utils';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { Router } from '@angular/router';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-outcomes-form',\n templateUrl: './outcomes-form.component.html',\n styleUrls: ['./outcomes-form.component.scss'],\n})\nexport class OutcomesFormComponent implements OnInit {\n section;\n caseStudy;\n formattedCaseStudy;\n csSection: any = 'outcome';\n completionStatus: 'completed' | 'in-progress' = 'in-progress';\n loadObj: any;\n\n financeForm: FormGroup;\n satisfactionForm: FormGroup;\n hasReceivedGrantsForm: FormGroup;\n awardedGrantsForm: FormGroup;\n hasReceivedLoansForm: FormGroup;\n awardedLoansForm: FormGroup;\n\n financeFormName = 'financeForm';\n satisfactionFormName = 'satisfactionForm';\n hasReceivedGrantsFormName = 'hasReceivedGrantsForm';\n awardedGrantsFormName = 'awardedGrantsForm';\n hasReceivedLoansFormName = 'hasReceivedLoansForm';\n awardedLoansFormName = 'awardedLoansForm';\n caseStudyFields = caseStudyFields;\n\n finance: any;\n satisfaction: any;\n selectedService: any;\n subscriptionSelectedService: Subscription\n constructor(private fb: FormBuilder, private caseStudyFormService: CaseStudyFormService, private glowService: GlowService, private router: Router, private serviceSelectorSvc: ServiceSelectorSvc) {\n this.loadObj = this.caseStudyFormService.initLoadObj();\n this.section = this.caseStudyFormService.getSectionFromRouter();\n this.caseStudyFormService.caseStudyAnnouncer.subscribe((data) => {\n if (data) {\n this.caseStudy = data.caseStudy;\n this.formattedCaseStudy = data.formattedCaseStudy;\n this.processChanges();\n }\n });\n\n this.caseStudyFormService.formAnnouncer.subscribe((data) => {\n if (data && data.formName === this.financeFormName) {\n this.financeForm = data.form;\n }\n if (data && data.formName === this.satisfactionFormName) {\n this.satisfactionForm = data.form;\n }\n if (data && data.formName === this.hasReceivedGrantsFormName) {\n this.hasReceivedGrantsForm = data.form;\n }\n if (data && data.formName === this.awardedGrantsFormName) {\n this.awardedGrantsForm = data.form;\n }\n if (data && data.formName === this.hasReceivedLoansFormName) {\n this.hasReceivedLoansForm = data.form;\n }\n if (data && data.formName === this.awardedLoansFormName) {\n this.awardedLoansForm = data.form;\n }\n if (this.hasReceivedGrantsForm) this.caseStudyFormService.processChangeBooleanControl('awardedGrant', this.hasReceivedGrantsForm, this.awardedGrantsForm, 'awardedGrants', 'isTrue', this.awardedGrantsFormName);\n if (this.hasReceivedLoansForm) this.caseStudyFormService.processChangeBooleanControl('awardedLoan', this.hasReceivedLoansForm, this.awardedLoansForm, 'awardedLoans', 'isTrue', this.awardedLoansFormName);\n });\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.caseStudyFormService.initServiceVariables(selectedService).then();\n this.loadObj = this.caseStudyFormService.initLoadObj();\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (!this.caseStudyFormService.hasInitServiceVariables) {\n this.caseStudyFormService.initServiceVariables(this.selectedService).then();\n } else {\n this.caseStudyFormService.announceLatestCaseStudy();\n }\n this.processChanges();\n this.initForm();\n }\n\n processChanges() {\n const hpSystem = this.caseStudyFormService.getHpSystemFromCs(this.csSection);\n this.finance = hpSystem && hpSystem.finance;\n this.satisfaction = hpSystem && hpSystem.satisfaction;\n }\n\n initForm() {\n this.caseStudyFormService.announceForm(this.financeFormName, this.caseStudyFormService.financeForm);\n this.caseStudyFormService.announceForm(this.satisfactionFormName, this.caseStudyFormService.satisfactionForm);\n this.caseStudyFormService.announceForm(this.hasReceivedGrantsFormName, this.caseStudyFormService.hasReceivedGrantsForm);\n this.caseStudyFormService.announceForm(this.awardedGrantsFormName, this.caseStudyFormService.awardedGrantsForm);\n this.caseStudyFormService.announceForm(this.hasReceivedLoansFormName, this.caseStudyFormService.hasReceivedLoansForm);\n this.caseStudyFormService.announceForm(this.awardedLoansFormName, this.caseStudyFormService.awardedLoansForm);\n }\n\n async saveChanges(completionStatus: 'completed' | 'in-progress' = 'in-progress') {\n this.completionStatus = completionStatus;\n\n let err, data;\n this.loadObj = this.caseStudyFormService.handleLoadObjLoading(this.loadObj, 'Saving changes...');\n const hpSystem = await this.caseStudyFormService.getOrCreateHpSystem(this.completionStatus);\n [err, data] = await Utils.promiseHandler(this.finance ? this.processExistingFinance() : this.processNewFinance(hpSystem));\n if (err) return (this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, \"Couldn't save changes - please try again later.\"));\n [err, data] = await Utils.promiseHandler(this.satisfaction ? this.processExistingSatisfaction() : this.processNewSatisfaction(hpSystem));\n if (err) {\n this.loadObj = this.caseStudyFormService.handleLoadObjError(this.loadObj, \"Couldn't save changes - please try again later.\");\n return this.loadObj;\n }\n this.caseStudyFormService.setFormAndAnnounce(this.financeFormName, this.financeForm);\n this.caseStudyFormService.setFormAndAnnounce(this.satisfactionFormName, this.satisfactionForm);\n this.caseStudyFormService.setFormAndAnnounce(this.hasReceivedGrantsFormName, this.hasReceivedGrantsForm);\n this.caseStudyFormService.setFormAndAnnounce(this.awardedGrantsFormName, this.awardedGrantsForm);\n await this.caseStudyFormService.announceLatestCaseStudy();\n this.caseStudyFormService.markSectionAsPristine(this.section);\n this.loadObj = this.caseStudyFormService.handleLoadObjSuccess(this.loadObj, 'Changes saved successfully.');\n return this.loadObj;\n }\n\n async saveAndContinue() {\n this.completionStatus = 'completed';\n this.loadObj = await this.caseStudyFormService.saveAndContinue(this.saveChanges.bind(this), this.section, this.loadObj);\n }\n\n getFinanceData() {\n const awardedGrants = (this.awardedGrantsForm && this.awardedGrantsForm.value.awardedGrants) || [];\n const awardedLoans = (this.awardedLoansForm && this.awardedLoansForm.value.awardedLoans) || [];\n let data = {\n journalEntryDataType: 'finance',\n ...this.financeForm.value,\n awardedGrants,\n awardedLoans,\n };\n data = Utils.setNumbersInObject(data);\n return { data };\n }\n\n getSatisfactionData() {\n let data = {\n journalEntryDataType: 'satisfaction',\n ...this.satisfactionForm.value,\n };\n data = Utils.setNumbersInObject(data);\n return { data };\n }\n\n async createFinanceJe(component) {\n const data = this.getFinanceData();\n return this.caseStudyFormService.createJournalEntry({\n journalEntryData: { ...data },\n componentDataType: component.componentDataType,\n componentVersion: component.componentVersion,\n componentId: component.componentId,\n completionStatus: this.completionStatus,\n });\n }\n\n async processNewFinance(component) {\n const financeJe = await this.createFinanceJe(component);\n await this.caseStudyFormService.addJournalEntryToCaseStudy({ journalEntry: financeJe, caseStudy: this.caseStudy, section: this.csSection });\n }\n\n async processExistingFinance() {\n const data = this.getFinanceData();\n await this.glowService.updateJournalEntry(this.finance.jeId, data).toPromise();\n }\n\n async processExistingSatisfaction() {\n const data = this.getSatisfactionData();\n await this.glowService.updateJournalEntry(this.satisfaction.jeId, data).toPromise();\n }\n\n async processNewSatisfaction(component) {\n const satisfactionJe = await this.caseStudyFormService.createJournalEntry({\n journalEntryData: this.getSatisfactionData(),\n componentDataType: component.componentDataType,\n componentVersion: component.componentVersion,\n componentId: component.componentId,\n completionStatus: this.completionStatus,\n });\n await this.caseStudyFormService.addJournalEntryToCaseStudy({ journalEntry: satisfactionJe, caseStudy: this.caseStudy, section: this.csSection });\n }\n\n removeForm(i, form, arrayName) {\n form = this.caseStudyFormService.removeForm(i, form, arrayName);\n }\n addForm(type, form, arrayName) {\n this.caseStudyFormService.addGroupToFormArray(type, form, arrayName);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OutcomesFormComponent } from './outcomes-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormTemplateModule } from '../form-template/form-template.module';\nimport { FormValidationMessageModule } from '../../form-validation-message/form-validation-message.module';\n\n@NgModule({\n declarations: [OutcomesFormComponent],\n imports: [CommonModule, SharedModule, FormTemplateModule, FormValidationMessageModule],\n exports: [OutcomesFormComponent],\n})\nexport class OutcomesFormModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29taW5nLXNvb24tY2FyZC9jb21pbmctc29vbi1jYXJkLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-coming-soon-card',\n templateUrl: './coming-soon-card.component.html',\n styleUrls: ['./coming-soon-card.component.scss']\n})\nexport class ComingSoonCardComponent implements OnInit {\n @Input() cardContent:string\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29tbXVuaXR5LWNhcmQvY29tbXVuaXR5LWNhcmQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LandingService } from 'src/app/services/landing.service';\n\n@Component({\n selector: 'app-community-card',\n templateUrl: './community-card.component.html',\n styleUrls: ['./community-card.component.scss']\n})\nexport class CommunityCardComponent implements OnInit {\n @Input() community:any\n constructor(private landingService:LandingService, private router:Router) { }\n\n ngOnInit() {\n }\n\n \n \n\n\n\n glossaryRelativePath(){\n return `/glossary?q[tags]=${this.community.name}`\n }\n resourcesRelativePath(resourcesList){\n return `/home/resources-lists/${resourcesList.attributes.slug}`\n }\n communityRelativePath(community) {\n return `/about-community/${community.slug}`;\n }\n\n}\n","export default \".form {\\n width: 50% !important;\\n}\\n\\n.form-container {\\n background: #fecf8e;\\n background: linear-gradient(180deg, #fecf8e 14%, rgba(242, 99, 140, 0) 51%);\\n}\\n\\n.overlay {\\n position: fixed;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n justify-content: center;\\n background-color: rgba(0, 0, 0, 0.278);\\n z-index: 2;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2NvbW11bml0eS1ob21lcGFnZS1jb250ZW50L2NvbW11bml0eS1ob21lcGFnZS1jb250ZW50LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2NvbW11bml0eS1ob21lcGFnZS1jb250ZW50L2NvbW11bml0eS1ob21lcGFnZS1jb250ZW50LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0kscUJBQUE7QUNDSjs7QURNQTtFQUNJLG1CQUFBO0VBQ0EsMkVBQUE7QUNISjs7QURNQTtFQUNJLGVBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxzQ0FBQTtFQUNBLFVBQUE7QUNISiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29tbXVuaXR5LWhvbWVwYWdlLWNvbnRlbnQvY29tbXVuaXR5LWhvbWVwYWdlLWNvbnRlbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybSB7XG4gICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50XG59XG5cbi8vIC5zaGFkb3ctc20ge1xuLy8gICAgIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSAjZjI2MzhiMWYgIWltcG9ydGFudDtcbi8vIH1cblxuLmZvcm0tY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMjU0LDIwNywxNDIpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMjU0LDIwNywxNDIsMSkgMTQlLCByZ2JhKDI0Miw5OSwxNDAsMCkgNTElKTtcbn1cblxuLm92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI3OCk7XG4gICAgei1pbmRleDogMjsgICAgICBcblxufSIsIi5mb3JtIHtcbiAgd2lkdGg6IDUwJSAhaW1wb3J0YW50O1xufVxuXG4uZm9ybS1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kOiAjZmVjZjhlO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjZmVjZjhlIDE0JSwgcmdiYSgyNDIsIDk5LCAxNDAsIDApIDUxJSk7XG59XG5cbi5vdmVybGF5IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjc4KTtcbiAgei1pbmRleDogMjtcbn0iXX0= */\"","import { Component, Input, OnInit, SimpleChange } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { SearchService } from 'src/app/services/search.service';\nimport _ from 'underscore';\nimport { Utils } from 'src/utils';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-community-homepage-content',\n templateUrl: './community-homepage-content.component.html',\n styleUrls: ['./community-homepage-content.component.scss'],\n})\nexport class CommunityHomepageContentComponent implements OnInit {\n @Input() community: any;\n\n loading = true;\n allContent: any[] = [];\n communityTags: any[] = [];\n categories: any[] = [];\n audienceOptions = [\n { value: 'Beginner', label: 'I am a novice - show me the basics' },\n { value: 'Intermediate', label: 'I am an amateur - show me more details' },\n { value: 'Advanced', label: 'I am well seasoned - show me the nitty gritty' },\n ];\n tags = [];\n tagsCopy = [];\n\n filterForm: FormGroup;\n constructor(private fb: FormBuilder, private searchService: SearchService, private strapiService: StrapiService) {\n this.initFilterForm();\n }\n\n ngOnInit() {}\n\n ngOnChanges() {\n this.loading = true;\n this.initFilterForm();\n this.allContent = [];\n this.getCategories(this.community).then((c) => {\n this.categories = c;\n this.getTags(this.community);\n this.loading = false;\n });\n }\n ngAfterContentInit() {}\n\n async getCategories(community: any) {\n const categories = [];\n for (let i = 0; i < community.attributes.audience_categories.data.length; i++) {\n const c = community.attributes.audience_categories.data[i];\n const cat = await this.strapiService.getContentBySlug('audience-categories', c.attributes.slug, ['articles', 'blogs', 'infographics', 'resources_lists']);\n categories.push(cat);\n }\n const sortedCategories = categories.sort((a: any, b: any) => a.attributes.order - b.attributes.order);\n return sortedCategories;\n }\n\n initFilterForm() {\n this.filterForm = this.fb.group({\n audience: [''],\n tagFilters: ['', [Validators.required]],\n });\n }\n\n getAvailableAudienceOptions() {\n if (this.community) {\n const communityTagTitles = this.community.attributes.tags.data.map((tag) => tag.attributes.title);\n const availableAudienceOptions = this.audienceOptions.filter((option) => {\n return communityTagTitles.includes(option.value);\n });\n return availableAudienceOptions;\n }\n return [];\n }\n\n async filterAudience() {\n const audience = this.filterForm.value.audience;\n if (!audience) return;\n const audienceTag = this.audienceOptions.find((option) => option.label === audience).value;\n const tags = this.getTagFilters();\n if (tags.includes(audienceTag)) return;\n const tagsToFilter = [...tags, audienceTag, this.community.attributes.name];\n const results = await this.searchService.filterAllContentWithTags('community', '', tagsToFilter);\n this.allContent = this.formatSearchResultsToDisplay(results);\n }\n\n async removeAudienceFilter() {\n const audience = this.filterForm.value.audience;\n if (!audience) return;\n const audienceTag = this.audienceOptions.find((option) => option.label === audience).value;\n const tags = this.getTagFilters();\n const tagsToFilter = tags.filter((tag) => tag !== audienceTag);\n const results = await this.searchService.filterAllContentWithTags('community', '', tagsToFilter);\n this.filterForm.patchValue({\n audience: '',\n });\n this.allContent = this.formatSearchResultsToDisplay(results);\n }\n\n addTagFilter(tag) {\n this.loading = true;\n if (tag.attributes && tag.attributes.title && !this.getTagFilters().includes(tag.attributes.title))\n this.filterForm.patchValue({\n tagFilters: this.filterForm.value.tagFilters + ',' + tag.attributes.title,\n });\n }\n\n removeTagFilter(tag) {\n const tags = this.getTagFilters();\n const tagsToFilter = tags.filter((t) => t !== tag);\n this.filterForm.patchValue({\n tagFilters: tagsToFilter.join(','),\n });\n }\n\n async removeTagAndFilter(tag) {\n this.addTagToList(tag);\n this.removeTagFilter(tag);\n if (this.filterForm.valid) {\n await this.filterTag(tag);\n } else this.allContent = [];\n this.loading = false;\n }\n\n async addTagAndFilter(e, tag) {\n this.removeTagFromList(tag);\n this.addTagFilter(tag);\n await this.filterTag(tag);\n this.loading = false;\n }\n // removes tags from list when clicked\n\n removeTagFromList(tag) {\n const index = this.tags.findIndex((t) => t === tag);\n this.tags.splice(index, 1);\n }\n\n getTags(community) {\n let tags = [];\n community.attributes.tags.data.forEach((t) => tags.push(t));\n this.tags = tags;\n this.tagsCopy = [...tags];\n }\n // adds tag back to list after removing\n addTagToList(tagName) {\n const index = this.tagsCopy.findIndex((tag) => tagName === tag.attributes.title);\n const tag = this.tagsCopy.find((tag) => tagName === tag.attributes.title);\n this.tags.splice(index, 0, tag);\n }\n async filterTag(tag) {\n const tags = this.getTagFilters();\n const audienceTag = this.getAudienceTag();\n if (!tags.length && !audienceTag) {\n this.allContent = this.getSortedContent(this.community);\n return;\n }\n let tagsToFilter = [...tags, this.community.attributes.name];\n if (audienceTag && !tags.includes(audienceTag)) {\n tagsToFilter = [...tagsToFilter, audienceTag];\n }\n\n const results = await this.searchService.filterAllContentWithTags('community', '', tagsToFilter);\n\n this.allContent = this.formatSearchResultsToDisplay(results);\n this.loading = false;\n }\n\n getAudienceTag() {\n const audience = this.filterForm.value.audience;\n if (!audience) return null;\n const audienceTag = this.audienceOptions.find((option) => option.label === audience).value;\n return audienceTag;\n }\n\n getTagFilters() {\n //get tags as arrays, remove empty strings\n const tags = this.filterForm.value.tagFilters.split(',').filter((tag) => tag);\n return tags;\n }\n\n formatSearchResultsToDisplay(results) {\n if (!(results && results.length)) return [];\n let formattedContents = [];\n results.forEach((content) => {\n const formattedContent = Utils.fromatSearchContent(content);\n formattedContents.push(formattedContent);\n });\n return formattedContents;\n }\n\n getSortedContent(community) {\n const blogs = (community.attributes.blogs && community.attributes.blogs.data.map((blog: any) => Object.assign(blog, { contentType: 'blogs' }))) || [];\n const articles = (community.attributes.articles && community.attributes.articles.data.map((article: any) => Object.assign(article, { contentType: 'articles' }))) || [];\n const resourceList =\n (community.attributes.resources_lists && community.attributes.resources_lists.data.map((resourceList: any) => Object.assign(resourceList, { contentType: 'resources-lists' }))) || [];\n\n const tutorials = community.attributes.tutorials ? community.attributes.tutorials.data.map((tutorial: any) => Object.assign(tutorial, { contentType: 'tutorials' })) : [];\n const infographics = (community.attributes.infographics && community.attributes.infographics.data.map((infographic: any) => Object.assign(infographic, { contentType: 'infographics' }))) || [];\n\n const sorted = [...blogs, ...articles, ...resourceList, ...tutorials, ...infographics].sort((a: any, b: any) => new Date(b.createdAt).valueOf() - new Date(a.createdAt).valueOf()).reverse();\n\n return sorted;\n }\n\n getShuffledContent(community) {\n const blogs = community.attributes.blogs.data.map((blog: any) => Object.assign(blog, { contentType: 'blogs' }));\n const articles = community.attributes.articles.data.map((article: any) => Object.assign(article, { contentType: 'articles' }));\n const resourceList = community.attributes.resources_lists.data.map((resourceList: any) => Object.assign(resourceList, { contentType: 'resourceLists' }));\n const infographics = community.attributes.infographics.data.map((infographics: any) => Object.assign(infographics, { contentType: 'infographics' }));\n\n return _.shuffle([...blogs, ...articles, ...resourceList, ...infographics]);\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLW1vZGFsL2NvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\n\n@Component({\n selector: 'app-confirmation-modal',\n templateUrl: './confirmation-modal.component.html',\n styleUrls: ['./confirmation-modal.component.scss'],\n})\nexport class ConfirmationModalComponent implements OnInit {\n confirmationText: string;\n confirmationButtonText: string;\n confirmationTitle: string;\n dismissButtonText: string\n estimateRequestId;\n public hasValidAccessToken = false;\n error;\n errorMessage;\n loading\n constructor(private activeModal: NgbActiveModal,\n private professionalGlowService: ProfessionalGlowService,\n private glowService: GlowService, private invitationsService: InvitationsService, public oauthService: OAuthService) { }\n\n ngOnInit() {\n this.hasValidAccessToken = this.oauthService.hasValidAccessToken();\n }\n\n removeAccess() {\n this.loading = true\n\n let state = this.hasValidAccessToken ? \"estimate-request-revoked-by-professional\" : \"estimate-request-revoked-by-customer\"\n const body = {\n \"estimateRequestState\": state\n }\n if (this.hasValidAccessToken) {\n this.professionalGlowService.updateEstimateRequestProfessionalState(body, this.estimateRequestId).subscribe(async (resp) => {\n if (resp.valid) {\n this.error = false\n await this.invitationsService.getAllProfessionalEstimateRequests()\n this.loading = false\n this.activeModal.dismiss()\n\n } else {\n this.error = true\n this.errorMessage = 'Something went wrong please try again later'\n this.loading = false\n\n }\n })\n\n } else {\n this.glowService.updateEstimateRequestUserState(body, this.estimateRequestId).subscribe((resp) => {\n if (resp.valid) {\n this.error = false\n this.invitationsService.getAllEstimateRequests()\n this.loading = false\n this.activeModal.dismiss()\n\n } else {\n this.error = true\n this.errorMessage = 'Something went wrong please try again later'\n this.loading = false\n\n }\n })\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConfirmationModalComponent } from './confirmation-modal.component';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\n@NgModule({\n declarations: [ConfirmationModalComponent],\n imports: [CommonModule, FormValidationMessageModule, SharedModule, SpinnerModule],\n exports: [ConfirmationModalComponent],\n entryComponents: [ConfirmationModalComponent],\n})\nexport class ConfirmationModalModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29uc2VudC1tZXRlci1jYXJkL2NvbnNlbnQtbWV0ZXItY2FyZC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { DateFormatService } from 'src/app/services/date-format.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ConsentModalComponent } from '../consent-modal/consent-modal.component';\nimport { MeterPointVerificationConsentManagementService } from 'src/app/services/meter-point-verification-consent-management.service';\n\n@Component({\n selector: 'app-consent-meter-card',\n templateUrl: './consent-meter-card.component.html',\n styleUrls: ['./consent-meter-card.component.scss']\n})\nexport class ConsentMeterCardComponent implements OnInit {\n @Input() meter;\n @Input() expired: boolean\n @Output() event = new EventEmitter();\n\n constructor(private dateFormatService: DateFormatService,\n private uiConfigService: CustomUIConfigService,\n private glowService: GlowService,\n private modalService: NgbModal,\n private meterPointConsentSvc: MeterPointVerificationConsentManagementService) { }\n\n ngOnInit() {\n }\n formatTime(date) {\n return this.dateFormatService.fullDateFormatNoSeconds(new Date(date))\n }\n\n async revokeConsent(meterPoint) {\n meterPoint.loadObj = this.uiConfigService.initialiseLoadingBooleans(true)\n const isValidUntil = this.dateFormatService.apiTimeFormat(new Date())\n try {\n const response = await this.glowService.revokeMeterPointVerification({ mpxn: meterPoint.mpxn, isValidUntil }).toPromise()\n console.log(response)\n this.meterPointConsentSvc.getVerificationStatus()\n } catch (e) {\n console.warn(e)\n meterPoint.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleans(false),\n errorString: 'Something went wrong',\n loadError: true\n }\n console.log(meterPoint.loadObj)\n }\n }\n\n \n\n getStatus(meter) {\n if (meter.isVerified && this.expired) {\n return 'Expired'\n } else if (meter.isVerified && !this.expired) {\n return 'Active'\n } else if (!meter.isVerified && this.expired) {\n return 'Revoked'\n }\n }\n\n\n openConsentModal(meter) {\n const modalRef = this.modalService.open(ConsentModalComponent, { size: 'lg' });\n modalRef.componentInstance.meter = meter\n modalRef.componentInstance.modalHeader = 'Renew consent'\n\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConsentMeterCardComponent } from './consent-meter-card.component';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { ConsentModalModule } from '../consent-modal/consent-modal.module';\n\n\n\n@NgModule({\n declarations: [ConsentMeterCardComponent],\n imports: [\n CommonModule, FormValidationMessageModule, ConsentModalModule\n ],\n exports: [ConsentMeterCardComponent]\n})\nexport class ConsentMeterCardModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29uc2VudC1tb2RhbC9jb25zZW50LW1vZGFsLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { MeterPointVerificationConsentManagementService } from 'src/app/services/meter-point-verification-consent-management.service';\n\n@Component({\n selector: 'app-consent-modal',\n templateUrl: './consent-modal.component.html',\n styleUrls: ['./consent-modal.component.scss']\n})\nexport class ConsentModalComponent implements OnInit {\n meter;\n modalBody\n modalTitle\n loadObj;\n constructor(private activeModal: NgbActiveModal,\n private uiConfigService: CustomUIConfigService,\n private glowService: GlowService, private meterPointConsentSvc: MeterPointVerificationConsentManagementService) { }\n\n ngOnInit() {\n }\n async renewConsent(meterPoint) {\n meterPoint.loadObj = this.uiConfigService.initialiseLoadingBooleans(true)\n console.log(meterPoint)\n try {\n const response = await this.glowService.renewMeterPointVerification(meterPoint).toPromise()\n this.meterPointConsentSvc.getVerificationStatus()\n this.activeModal.dismiss()\n } catch (e) {\n console.warn(e)\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleans(false),\n errorString: 'Something went wrong',\n loadError: true\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConsentModalComponent } from './consent-modal.component';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\n\n\n\n@NgModule({\n declarations: [ConsentModalComponent],\n imports: [\n CommonModule,\n FormValidationMessageModule\n ],\n exports: [ConsentModalComponent],\n entryComponents:[ConsentModalComponent]\n})\nexport class ConsentModalModule { }\n","export default \".clamp-text {\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 4;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: normal;\\n word-break: break-word;\\n}\\n\\n.top-right {\\n position: absolute;\\n top: 8px;\\n right: 16px;\\n}\\n\\n.card-img-top {\\n height: 150px;\\n background: transparent no-repeat center;\\n background-size: cover;\\n}\\n\\n.aspect-ratio-container {\\n position: relative;\\n width: 100%;\\n}\\n\\n.aspect-ratio-container::before {\\n content: \\\"\\\";\\n display: block;\\n padding-top: 56.25%;\\n /* 16:9 aspect ratio (height divided by width) */\\n}\\n\\n.aspect-ratio-container > .rounded-0 {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center;\\n}\\n\\n.card {\\n width: 100%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2NvbnRlbnQtY2FyZC9jb250ZW50LWNhcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvY29udGVudC1jYXJkL2NvbnRlbnQtY2FyZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQTtFQUNFLG9CQUFBO0VBQ0EsNEJBQUE7RUFDQSxxQkFBQTtFQUNBLGdCQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtFQUNBLHNCQUFBO0FDVkY7O0FEY0U7RUFDRSxrQkFBQTtFQUNBLFFBQUE7RUFDQSxXQUFBO0FDWEo7O0FEY0E7RUFDRSxhQUFBO0VBQ0Esd0NBQUE7RUFDQSxzQkFBQTtBQ1hGOztBRGNBO0VBQ0Usa0JBQUE7RUFDQSxXQUFBO0FDWEY7O0FEY0E7RUFDRSxXQUFBO0VBQ0EsY0FBQTtFQUNBLG1CQUFBO0VBQ0EsZ0RBQUE7QUNYRjs7QURjQTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLDRCQUFBO0VBQ0Esc0JBQUE7RUFDQSwyQkFBQTtBQ1hGOztBRGNBO0VBQ0UsV0FBQTtBQ1hGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jb250ZW50LWNhcmQvY29udGVudC1jYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLmNvbnRlbnQtY2FyZHtcbi8vICAgIHdpZHRoOiAxMDAlO1xuLy8gICAgbWF4LXdpZHRoOjE4cmVtXG4vLyB9XG5cbi8vIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyBcbi8vICAgICAuY29udGVudC1jYXJke1xuLy8gICAgICAgICB3aWR0aDogMThyZW1cbi8vICAgICB9XG4vLyAgfVxuXG4uY2xhbXAtdGV4dCB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWxpbmUtY2xhbXA6IDQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG5cbiAgLnRvcC1yaWdodCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogOHB4O1xuICAgIHJpZ2h0OiAxNnB4O1xufVxuXG4uY2FyZC1pbWctdG9wIHtcbiAgaGVpZ2h0OiAxNTBweDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgbm8tcmVwZWF0IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcbn1cblxuLmFzcGVjdC1yYXRpby1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uYXNwZWN0LXJhdGlvLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG4gIC8qIDE2OjkgYXNwZWN0IHJhdGlvIChoZWlnaHQgZGl2aWRlZCBieSB3aWR0aCkgKi9cbn1cblxuLmFzcGVjdC1yYXRpby1jb250YWluZXI+LnJvdW5kZWQtMCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG59XG5cbi5jYXJkIHtcbiAgd2lkdGg6IDEwMCU7XG59IiwiLmNsYW1wLXRleHQge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiA0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuLnRvcC1yaWdodCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA4cHg7XG4gIHJpZ2h0OiAxNnB4O1xufVxuXG4uY2FyZC1pbWctdG9wIHtcbiAgaGVpZ2h0OiAxNTBweDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgbm8tcmVwZWF0IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcbn1cblxuLmFzcGVjdC1yYXRpby1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uYXNwZWN0LXJhdGlvLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG4gIC8qIDE2OjkgYXNwZWN0IHJhdGlvIChoZWlnaHQgZGl2aWRlZCBieSB3aWR0aCkgKi9cbn1cblxuLmFzcGVjdC1yYXRpby1jb250YWluZXIgPiAucm91bmRlZC0wIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbn1cblxuLmNhcmQge1xuICB3aWR0aDogMTAwJTtcbn0iXX0= */\"","import { Component, Input, OnInit, SimpleChange, SimpleChanges } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-content-card',\n templateUrl: './content-card.component.html',\n styleUrls: ['./content-card.component.scss'],\n})\nexport class ContentCardComponent implements OnInit {\n @Input() content: any;\n @Input() heroContent: any;\n @Input() isTagBgWhite: boolean;\n @Input() showTag: boolean;\n displayImageUrl;\n constructor(private strapiService: StrapiService) { }\n\n ngOnInit() {\n }\n ngOnChanges(changes: SimpleChanges) {\n this.displayImageUrl = this.getDisplayImageUrl(this.content);\n }\n\n contentRelativePath(content: any) {\n return `/home/${content.contentType}/${content.attributes.slug}`;\n }\n\n getTimeToRead(content) {\n if (content.contentType === 'tutorials') {\n let totalMin = 1;\n content.attributes.tutorial_sections.data.forEach((c: any) => {\n totalMin = totalMin + Utils.getTimeToRead(c.attributes.content);\n });\n return totalMin;\n }\n return content.attributes.content ? Utils.getTimeToRead(content.attributes.content) : 3;\n }\n\n getDisplayImageUrl(content) {\n return this.strapiService.getSmallDisplayImageUrl(content);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ContentCardComponent } from './content-card.component';\nimport { TagModule } from '../tag/tag.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [ContentCardComponent],\n imports: [CommonModule, TagModule],\n exports: [ContentCardComponent],\n})\nexport class ContentCardModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29va2llLXBvbGljeS9jb29raWUtcG9saWN5LmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-cookie-policy',\n templateUrl: './cookie-policy.component.html',\n styleUrls: ['./cookie-policy.component.scss']\n})\n\nexport class CookiePolicyComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() { }\n\n} \n","export default \".export {\\n border-top: 1px solid #e0e0e0;\\n padding-top: 20px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Rhc2hib2FyZC9kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZGFzaGJvYXJkL2Rhc2hib2FyZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLDZCQUFBO0VBQ0EsaUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZGFzaGJvYXJkL2Rhc2hib2FyZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5leHBvcnQge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTBlMGUwO1xuICAgIHBhZGRpbmctdG9wOiAyMHB4O1xufSIsIi5leHBvcnQge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2UwZTBlMDtcbiAgcGFkZGluZy10b3A6IDIwcHg7XG59Il19 */\"","import { Component, HostListener, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { GlowService } from '../../services/glow.service';\nimport { VirtualEntityService } from '../../services/virtual-entity.service';\nimport { ResourceTypeConfigService } from '../../services/configuration.service';\nimport { tLoadingElement } from '../../services/app-config.typings';\nimport { CustomUIConfigService } from '../../services/custom-ui-config.service';\nimport { PicardService } from 'src/app/services/picard.service';\nimport { NgcCookieConsentService } from 'ngx-cookieconsent';\nimport { ResponseModalComponent } from 'src/app/components/response-modal/response-modal.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { tResourceTypeMapping } from 'src/app/services/configuration.typings';\n\ndeclare var require: any;\nvar FileSaver = require('file-saver');\n\n@Component({\n selector: 'app-dashboard',\n styleUrls: ['./dashboard.component.scss', '../../pages/pages.component.scss'],\n templateUrl: './dashboard.component.html',\n})\n\nexport class DashboardComponent {\n\n @Input() consumptionType;\n\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n\n pageId: string = 'Dashboard';\n innerWidth: number;\n pageTitle: string = 'My Data';\n loadObj: tLoadingElement;\n cookieClass: boolean = false;\n subscriptionGroupResourceData: Subscription;\n subscriptionPicardGroupConsumptionData: Subscription;\n subscriptionSensorVirtualEntityList: Subscription;\n subscriptionSelectedService: Subscription;\n resourceTypeMapping: tResourceTypeMapping;\n loading: boolean = true;\n resourceIdArray: any[];\n veList: any[];\n classifierToResourceTypeMap: any;\n dimension: string = 'energy';\n groupResource: any;\n selectedService: any;\n\n aggregateSelector = [\n { value: 'halfHourly', display: '30min' },\n { value: 'day', display: 'Day' },\n { value: 'month', display: 'Month' },\n { value: 'year', display: 'Year' },\n ];\n\n sensorVEList: any;\n\n constructor(\n private glowService: GlowService,\n private uiConfigService: CustomUIConfigService,\n private resourceTypeConfigService: ResourceTypeConfigService,\n private veService: VirtualEntityService,\n private picardService: PicardService,\n private modalService: NgbModal,\n private serviceSelectorSvc: ServiceSelectorSvc,\n private ccService: NgcCookieConsentService,\n ) {\n\n this.resourceTypeMapping = this.resourceTypeConfigService.loadResourceTypeMappings();\n\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(false);\n this.resourceTypeConfigService.getClassifierToResourceTypeMap().then((resp) => {\n this.classifierToResourceTypeMap = resp;\n });\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe(selectedService => {\n this.selectedService = selectedService;\n this.processSelectedService()\n })\n\n this.subscriptionGroupResourceData = this.picardService.groupResourceData$.subscribe((groupResource) => {\n if (groupResource) {\n this.groupResource = groupResource;\n this.resourceIdArray.map(async (resource) => {\n const match = this.groupResource.find((x) => x.resourceId == resource.resourceId);\n const device = await this.glowService.getResourceDevice(resource.resourceId).toPromise();\n resource.description = device.description;\n resource.hardwareId = device.hardwareId;\n resource.firstReadingTime = match.firstReadingTime;\n resource.downloadAvailable = match ? true : false;\n });\n\n }\n });\n\n this.subscriptionPicardGroupConsumptionData = this.picardService.picardConsumptionData$.subscribe((data) => {\n this.downloadResult(data[0]);\n });\n\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n this.cookieClass = true;\n }\n\n }\n\n ngOnInit() {\n this.performChecks();\n this.onResize();\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (this.selectedService) {\n this.processSelectedService()\n }\n this.loading = false\n\n }\n\n ngOnChanges() {\n this.performChecks();\n this.onResize();\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (this.selectedService) {\n this.processSelectedService()\n }\n this.loading = false\n\n }\n\n ngOnDestroy() {\n if (this.subscriptionGroupResourceData) {\n this.subscriptionGroupResourceData.unsubscribe();\n }\n if (this.subscriptionPicardGroupConsumptionData) {\n this.subscriptionPicardGroupConsumptionData.unsubscribe();\n }\n if (this.subscriptionSelectedService) {\n this.subscriptionSelectedService.unsubscribe();\n }\n }\n\n performChecks(): void {\n this.glowService.checkValidateExistingToken();\n }\n\n toggleDateRange(resourceId: string, selectedAgg: string): void {\n const match = this.resourceIdArray.find((x) => x.resourceId == resourceId);\n match.selectedAgg = selectedAgg;\n }\n\n processResourceDownload(resourceId: string) {\n const resource = this.groupResource.find((x) => x.resourceId == resourceId);\n const match = this.resourceIdArray.find((x) => x.resourceId == resourceId);\n this.picardService.getResourceTimeseries(resource, match.selectedAgg);\n }\n\n async processSelectedService() {\n this.resourceIdArray = [];\n\n const validClassifiers = [this.consumptionType]\n if (this.consumptionType == 'electricity.consumption') {\n validClassifiers.push('electricity.export')\n }\n\n const filteredResources = this.selectedService.resources.filter(x => validClassifiers.includes(x.classifier))\n\n filteredResources.map(resource => {\n if (this.resourceTypeMapping.dimension[this.dimension].indexOf(resource.resourceTypeId) > -1 ||\n this.resourceTypeMapping.dataStreamType['export'].indexOf(resource.resourceTypeId) > -1\n ) {\n const attributes = { label: resource.name, data: { veId: this.selectedService.veId } };\n const { resourceId, resourceTypeId, classifier, name } = resource;\n this.resourceIdArray.push({ resourceId, resourceTypeId, classifier, attributes, selectedAgg: 'month' });\n }\n });\n\n if (this.resourceIdArray.length > 0) {\n await this.picardService.getPicardGroupResource(this.resourceIdArray);\n }\n\n this.loading = false;\n }\n\n sendGAEvent(params) {\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n window.dataLayer.push(params);\n }\n }\n\n async refreshResources() {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(true);\n\n const refreshedResource = [];\n const lastResponse = await this.resourceIdArray.reduce((accumulatorPromise, resource) => {\n return accumulatorPromise.then(async (response) => {\n if (response) refreshedResource.push(response);\n return this.glowService.refreshResourceBinary(resource.resourceId).toPromise();\n });\n }, Promise.resolve());\n if (lastResponse) refreshedResource.push(lastResponse);\n\n if (refreshedResource.length > 0) {\n this.responseModal(refreshedResource);\n this.veService.findVirtualEntities();\n }\n\n this.loadObj.loading = false;\n }\n\n responseModal(resources) {\n const modalRef = this.modalService.open(ResponseModalComponent, { scrollable: true, centered: true, size: 'sm' });\n modalRef.componentInstance.resources = resources;\n }\n\n downloadResult(resource) {\n var date = new Date();\n var dateString = date.toISOString().split('.');\n var dateInFileName = dateString[0];\n var reportName = resource.label.replace(',', '');\n var filename = `${reportName}-${dateInFileName}.csv`;\n var csvContent = toCSV(resource);\n var blob = new Blob([csvContent], { type: 'text/json' });\n FileSaver.saveAs(blob, filename);\n this.sendGAEvent({ event: 'download' });\n }\n\n}\n\nfunction toCSV({ data: json, units }) {\n var jsonVal = Object.keys(json).map(function (e) {\n return json[e];\n });\n var csv = '';\n var keys = (json[0] && Object.keys(json[0])) || [];\n csv += ['epochTimestamp', 'kWh', 'dateTime'].join(',') + '\\n';\n for (var line of jsonVal) {\n if (line[1] == null) {\n line[1] = 0\n }\n // csv += keys.map((key) => (line[key] / 1000).toFixed(3)).join(',') + ',';\n let value = units == 'kWh' ? (line[1] / 1000).toFixed(3) : line[1].toFixed(3)\n csv += (line[0] / 1000) + \",\"\n csv += (value > 0 ? value : 0) + \",\"\n csv += epochToIso(line[0]) + '\\n';\n }\n return csv;\n}\n\nfunction epochToIso(epoch) {\n let newDate = new Date(epoch);\n let formattedDate = newDate.toISOString();\n return formattedDate;\n}","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { DashboardComponent } from './dashboard.component';\nimport { SharedModule } from '../../shared/shared.module';\nimport { AccountSideMenuModule } from 'src/app/components/account-side-menu/account-side-menu.module';\nimport { TemperatureSensorDataTableModule } from 'src/app/components/temperature-sensor-data-table/temperature-sensor-data-table.module';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\nimport { HeatLossParameterScaleModule } from 'src/app/components/heat-loss-parameter-scale/heat-loss-parameter-scale.module';\nimport { EpcCertificateModule } from 'src/app/components/epc-certificate/epc-certificate.module';\nimport { SetupSmartMeterModule } from 'src/app/components/setup-smart-meter/setup-smart-meter.module';\nimport { ResponseModalModule } from 'src/app/components/response-modal/response-modal.module';\nimport { AccountNoDataCardModule } from 'src/app/components/account-no-data-card/account-no-data-card.module';\n// const routes: Routes = [\n// {\n// path: '',\n// component: DashboardComponent,\n// },\n// ];\n\n@NgModule({\n declarations: [DashboardComponent],\n imports: [\n SharedModule,\n AccountSideMenuModule,\n TemperatureSensorDataTableModule,\n SpinnerModule,\n HeatLossParameterScaleModule,\n EpcCertificateModule,\n ResponseModalModule,\n SetupSmartMeterModule,\n AccountNoDataCardModule\n ],\n providers: [],\n exports: [DashboardComponent]\n})\nexport class DashboardModule { }\n","export default \".centered {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n}\\n\\n.epc-details-container {\\n position: relative;\\n text-align: center;\\n height: 380px;\\n}\\n\\n.rating-aplus {\\n border-color: #0D6826;\\n border-style: solid;\\n color: #0D6826;\\n}\\n\\n.rating-a {\\n background: #0D6826;\\n}\\n\\n.rating-a-rate {\\n color: #0D6826;\\n}\\n\\n.rating-b {\\n background: #31A03D;\\n}\\n\\n.rating-b-rate {\\n color: #31A03D;\\n}\\n\\n.rating-c {\\n background: #7FC31C;\\n}\\n\\n.rating-c-rate {\\n color: #7FC31C;\\n}\\n\\n.rating-d {\\n background: #FFCC00;\\n}\\n\\n.rating-d-rate {\\n color: #FFCC00;\\n}\\n\\n.rating-e {\\n background: #FDA145;\\n}\\n\\n.rating-e-rate {\\n color: #FDA145;\\n}\\n\\n.rating-f {\\n background: #FF6600;\\n}\\n\\n.rating-f-rate {\\n color: #FF6600;\\n}\\n\\n.rating-g {\\n background: #FF0000;\\n}\\n\\n.rating-g-rate {\\n color: #FF0000;\\n}\\n\\n.epc-icon-data {\\n color: #fff;\\n font-size: large;\\n text-align: left;\\n}\\n\\n.rating-aplus-env {\\n border-color: #0d1b68;\\n border-style: solid;\\n color: #0d1b68;\\n}\\n\\n.rating-a-env {\\n background: #bdd9ef;\\n}\\n\\n.rating-a-rate-env {\\n background: #bdd9ef;\\n}\\n\\n.rating-b-env {\\n background: #8ac2ed;\\n}\\n\\n.rating-b-rate-env {\\n color: #8ac2ed;\\n}\\n\\n.rating-c-env {\\n background: #69afe4;\\n}\\n\\n.rating-c-rat-env {\\n color: #69afe4;\\n}\\n\\n.rating-d-env {\\n background: #4689bc;\\n}\\n\\n.rating-d-rate-env {\\n color: #4689bc;\\n}\\n\\n.rating-e-env {\\n background: #8c8c8c;\\n}\\n\\n.rating-e-rate-env {\\n color: #8c8c8c;\\n}\\n\\n.rating-f-env {\\n background: #717171;\\n}\\n\\n.rating-f-rate-env {\\n color: #717171;\\n}\\n\\n.rating-g-env {\\n background: #595959;\\n}\\n\\n.rating-g-rate-env {\\n color: #595959;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2VwYy1jZXJ0aWZpY2F0ZS9lcGMtY2VydGlmaWNhdGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZXBjLWNlcnRpZmljYXRlL2VwYy1jZXJ0aWZpY2F0ZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFDQSxnQ0FBQTtBQ0NKOztBREVBO0VBQ0ksa0JBQUE7RUFDQSxrQkFBQTtFQUVBLGFBQUE7QUNBSjs7QURFQTtFQUNJLHFCQUFBO0VBQ0EsbUJBQUE7RUFDQSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxtQkFBQTtBQ0NKOztBREVBO0VBQ0ksY0FBQTtBQ0NKOztBREVBO0VBQ0ksbUJBQUE7QUNDSjs7QURFQTtFQUNJLGNBQUE7QUNDSjs7QURFQTtFQUNJLG1CQUFBO0FDQ0o7O0FERUE7RUFDSSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxtQkFBQTtBQ0NKOztBREVBO0VBQ0ksY0FBQTtBQ0NKOztBREVBO0VBQ0ksbUJBQUE7QUNDSjs7QURFQTtFQUNJLGNBQUE7QUNDSjs7QURFQTtFQUNJLG1CQUFBO0FDQ0o7O0FERUE7RUFDSSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxtQkFBQTtBQ0NKOztBREVBO0VBQ0ksY0FBQTtBQ0NKOztBREVBO0VBQ0ksV0FBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7QUNDSjs7QURJQTtFQUNJLHFCQUFBO0VBQ0EsbUJBQUE7RUFDQSxjQUFBO0FDREo7O0FES0E7RUFDSSxtQkFBQTtBQ0ZKOztBREtBO0VBQ0ksbUJBQUE7QUNGSjs7QURLQTtFQUNJLG1CQUFBO0FDRko7O0FES0E7RUFDSSxjQUFBO0FDRko7O0FES0E7RUFDSSxtQkFBQTtBQ0ZKOztBREtBO0VBQ0ksY0FBQTtBQ0ZKOztBREtBO0VBQ0ksbUJBQUE7QUNGSjs7QURLQTtFQUNJLGNBQUE7QUNGSjs7QURLQTtFQUNJLG1CQUFBO0FDRko7O0FES0E7RUFDSSxjQUFBO0FDRko7O0FES0E7RUFDSSxtQkFBQTtBQ0ZKOztBREtBO0VBQ0ksY0FBQTtBQ0ZKOztBREtBO0VBQ0ksbUJBQUE7QUNGSjs7QURLQTtFQUNJLGNBQUE7QUNGSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZXBjLWNlcnRpZmljYXRlL2VwYy1jZXJ0aWZpY2F0ZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jZW50ZXJlZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cblxuLmVwYy1kZXRhaWxzLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAvLyBjb2xvcjogd2hpdGU7XG4gICAgaGVpZ2h0OiAzODBweDtcbn1cbi5yYXRpbmctYXBsdXN7XG4gICAgYm9yZGVyLWNvbG9yOiMwRDY4MjY7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBjb2xvcjogIzBENjgyNlxufVxuXG4ucmF0aW5nLWF7XG4gICAgYmFja2dyb3VuZDojMEQ2ODI2O1xufVxuXG4ucmF0aW5nLWEtcmF0ZXtcbiAgICBjb2xvcjojMEQ2ODI2O1xufVxuXG4ucmF0aW5nLWJ7XG4gICAgYmFja2dyb3VuZDojMzFBMDNEO1xufVxuXG4ucmF0aW5nLWItcmF0ZXtcbiAgICBjb2xvcjojMzFBMDNEO1xufVxuXG4ucmF0aW5nLWN7XG4gICAgYmFja2dyb3VuZDojN0ZDMzFDO1xufVxuXG4ucmF0aW5nLWMtcmF0ZXtcbiAgICBjb2xvcjojN0ZDMzFDO1xufVxuXG4ucmF0aW5nLWR7XG4gICAgYmFja2dyb3VuZDojRkZDQzAwO1xufVxuXG4ucmF0aW5nLWQtcmF0ZXtcbiAgICBjb2xvcjojRkZDQzAwO1xufVxuXG4ucmF0aW5nLWV7XG4gICAgYmFja2dyb3VuZDojRkRBMTQ1O1xufVxuXG4ucmF0aW5nLWUtcmF0ZXtcbiAgICBjb2xvcjojRkRBMTQ1O1xufVxuXG4ucmF0aW5nLWZ7XG4gICAgYmFja2dyb3VuZDojRkY2NjAwO1xufVxuXG4ucmF0aW5nLWYtcmF0ZXtcbiAgICBjb2xvcjojRkY2NjAwO1xufVxuXG4ucmF0aW5nLWd7XG4gICAgYmFja2dyb3VuZDojRkYwMDAwO1xufVxuXG4ucmF0aW5nLWctcmF0ZXtcbiAgICBjb2xvcjojRkYwMDAwO1xufVxuXG4uZXBjLWljb24tZGF0YXtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBmb250LXNpemU6IGxhcmdlO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cblxuXG4ucmF0aW5nLWFwbHVzLWVudntcbiAgICBib3JkZXItY29sb3I6cmdiKDEzLCAyNywgMTA0KTtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGNvbG9yOiByZ2IoMTMsIDI3LCAxMDQpXG59XG5cblxuLnJhdGluZy1hLWVudntcbiAgICBiYWNrZ3JvdW5kOnJnYigxODksIDIxNywgMjM5KTtcbn1cblxuLnJhdGluZy1hLXJhdGUtZW52e1xuICAgIGJhY2tncm91bmQ6cmdiKDE4OSwgMjE3LCAyMzkpO1xufVxuXG4ucmF0aW5nLWItZW52e1xuICAgIGJhY2tncm91bmQ6cmdiKDEzOCwgMTk0LCAyMzcpO1xufVxuXG4ucmF0aW5nLWItcmF0ZS1lbnZ7XG4gICAgY29sb3I6cmdiKDEzOCwgMTk0LCAyMzcpO1xufVxuXG4ucmF0aW5nLWMtZW52e1xuICAgIGJhY2tncm91bmQ6cmdiKDEwNSwgMTc1LCAyMjgpO1xufVxuXG4ucmF0aW5nLWMtcmF0LWVudntcbiAgICBjb2xvcjpyZ2IoMTA1LCAxNzUsIDIyOCk7XG59XG5cbi5yYXRpbmctZC1lbnZ7XG4gICAgYmFja2dyb3VuZDpyZ2IoNzAsIDEzNywgMTg4KTtcbn1cblxuLnJhdGluZy1kLXJhdGUtZW52e1xuICAgIGNvbG9yOnJnYig3MCwgMTM3LCAxODgpO1xufVxuXG4ucmF0aW5nLWUtZW52e1xuICAgIGJhY2tncm91bmQ6cmdiKDE0MCwgMTQwLCAxNDApO1xufVxuXG4ucmF0aW5nLWUtcmF0ZS1lbnZ7XG4gICAgY29sb3I6cmdiKDE0MCwgMTQwLCAxNDApO1xufVxuXG4ucmF0aW5nLWYtZW52e1xuICAgIGJhY2tncm91bmQ6cmdiKDExMywgMTEzLCAxMTMpO1xufVxuXG4ucmF0aW5nLWYtcmF0ZS1lbnZ7XG4gICAgY29sb3I6cmdiKDExMywgMTEzLCAxMTMpO1xufVxuXG4ucmF0aW5nLWctZW52e1xuICAgIGJhY2tncm91bmQ6cmdiKDg5LCA4OSwgODkpO1xufVxuXG4ucmF0aW5nLWctcmF0ZS1lbnZ7XG4gICAgY29sb3I6cmdiKDg5LCA4OSwgODkpO1xufVxuIiwiLmNlbnRlcmVkIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cblxuLmVwYy1kZXRhaWxzLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBoZWlnaHQ6IDM4MHB4O1xufVxuXG4ucmF0aW5nLWFwbHVzIHtcbiAgYm9yZGVyLWNvbG9yOiAjMEQ2ODI2O1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBjb2xvcjogIzBENjgyNjtcbn1cblxuLnJhdGluZy1hIHtcbiAgYmFja2dyb3VuZDogIzBENjgyNjtcbn1cblxuLnJhdGluZy1hLXJhdGUge1xuICBjb2xvcjogIzBENjgyNjtcbn1cblxuLnJhdGluZy1iIHtcbiAgYmFja2dyb3VuZDogIzMxQTAzRDtcbn1cblxuLnJhdGluZy1iLXJhdGUge1xuICBjb2xvcjogIzMxQTAzRDtcbn1cblxuLnJhdGluZy1jIHtcbiAgYmFja2dyb3VuZDogIzdGQzMxQztcbn1cblxuLnJhdGluZy1jLXJhdGUge1xuICBjb2xvcjogIzdGQzMxQztcbn1cblxuLnJhdGluZy1kIHtcbiAgYmFja2dyb3VuZDogI0ZGQ0MwMDtcbn1cblxuLnJhdGluZy1kLXJhdGUge1xuICBjb2xvcjogI0ZGQ0MwMDtcbn1cblxuLnJhdGluZy1lIHtcbiAgYmFja2dyb3VuZDogI0ZEQTE0NTtcbn1cblxuLnJhdGluZy1lLXJhdGUge1xuICBjb2xvcjogI0ZEQTE0NTtcbn1cblxuLnJhdGluZy1mIHtcbiAgYmFja2dyb3VuZDogI0ZGNjYwMDtcbn1cblxuLnJhdGluZy1mLXJhdGUge1xuICBjb2xvcjogI0ZGNjYwMDtcbn1cblxuLnJhdGluZy1nIHtcbiAgYmFja2dyb3VuZDogI0ZGMDAwMDtcbn1cblxuLnJhdGluZy1nLXJhdGUge1xuICBjb2xvcjogI0ZGMDAwMDtcbn1cblxuLmVwYy1pY29uLWRhdGEge1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiBsYXJnZTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLnJhdGluZy1hcGx1cy1lbnYge1xuICBib3JkZXItY29sb3I6ICMwZDFiNjg7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGNvbG9yOiAjMGQxYjY4O1xufVxuXG4ucmF0aW5nLWEtZW52IHtcbiAgYmFja2dyb3VuZDogI2JkZDllZjtcbn1cblxuLnJhdGluZy1hLXJhdGUtZW52IHtcbiAgYmFja2dyb3VuZDogI2JkZDllZjtcbn1cblxuLnJhdGluZy1iLWVudiB7XG4gIGJhY2tncm91bmQ6ICM4YWMyZWQ7XG59XG5cbi5yYXRpbmctYi1yYXRlLWVudiB7XG4gIGNvbG9yOiAjOGFjMmVkO1xufVxuXG4ucmF0aW5nLWMtZW52IHtcbiAgYmFja2dyb3VuZDogIzY5YWZlNDtcbn1cblxuLnJhdGluZy1jLXJhdC1lbnYge1xuICBjb2xvcjogIzY5YWZlNDtcbn1cblxuLnJhdGluZy1kLWVudiB7XG4gIGJhY2tncm91bmQ6ICM0Njg5YmM7XG59XG5cbi5yYXRpbmctZC1yYXRlLWVudiB7XG4gIGNvbG9yOiAjNDY4OWJjO1xufVxuXG4ucmF0aW5nLWUtZW52IHtcbiAgYmFja2dyb3VuZDogIzhjOGM4Yztcbn1cblxuLnJhdGluZy1lLXJhdGUtZW52IHtcbiAgY29sb3I6ICM4YzhjOGM7XG59XG5cbi5yYXRpbmctZi1lbnYge1xuICBiYWNrZ3JvdW5kOiAjNzE3MTcxO1xufVxuXG4ucmF0aW5nLWYtcmF0ZS1lbnYge1xuICBjb2xvcjogIzcxNzE3MTtcbn1cblxuLnJhdGluZy1nLWVudiB7XG4gIGJhY2tncm91bmQ6ICM1OTU5NTk7XG59XG5cbi5yYXRpbmctZy1yYXRlLWVudiB7XG4gIGNvbG9yOiAjNTk1OTU5O1xufSJdfQ== */\"","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-epc-certificate',\n templateUrl: './epc-certificate.component.html',\n styleUrls: ['./epc-certificate.component.scss'],\n})\nexport class EpcCertificateComponent implements OnInit {\n @Input() epcRatingEnergy ='a'\n @Input() epcRatingEnergyPotential ='b'\n constructor() {}\n\n ngOnInit() {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EpcCertificateComponent } from './epc-certificate.component';\n\n\n\n@NgModule({\n declarations: [EpcCertificateComponent],\n imports: [\n CommonModule\n ],\n exports: [EpcCertificateComponent]\n})\nexport class EpcCertificateModule { }\n","export default \"i,\\n.popover:hover {\\n border: none !important;\\n}\\n\\ni,\\n.popover {\\n border: 0px !important;\\n padding: 0px !important;\\n z-index: 1000;\\n padding: 20px;\\n}\\n\\nform .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2VwYy1pbmZvLW1vZGFsL2VwYy1pbmZvLW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2VwYy1pbmZvLW1vZGFsL2VwYy1pbmZvLW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUdJLHVCQUFBO0FDQUo7O0FESUE7O0VBRUksc0JBQUE7RUFDQSx1QkFBQTtFQUNBLGFBQUE7RUFDQSxhQUFBO0FDREo7O0FES0k7RUFDSSwyQkFBQTtBQ0ZSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9lcGMtaW5mby1tb2RhbC9lcGMtaW5mby1tb2RhbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImksXG4ucG9wb3Zlcjpob3ZlciB7XG5cbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcblxufVxuXG5pLFxuLnBvcG92ZXIge1xuICAgIGJvcmRlcjogMHB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBwYWRkaW5nOiAyMHB4O1xufVxuXG5mb3JtIHtcbiAgICAubmctdG91Y2hlZC5uZy1pbnZhbGlkIHtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xuICAgIH1cbn0iLCJpLFxuLnBvcG92ZXI6aG92ZXIge1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuaSxcbi5wb3BvdmVyIHtcbiAgYm9yZGVyOiAwcHggIWltcG9ydGFudDtcbiAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDEwMDA7XG4gIHBhZGRpbmc6IDIwcHg7XG59XG5cbmZvcm0gLm5nLXRvdWNoZWQubmctaW52YWxpZCB7XG4gIGJvcmRlcjogc29saWQgI2UzMmI0ZCAwLjVweDtcbn0iXX0= */\"","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { NgcCookieConsentService } from 'ngx-cookieconsent';\nimport { Subscription } from 'rxjs';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { HeatingSystemService } from 'src/app/services/heating-system.service';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { PostcodeCheckerService } from 'src/app/services/postcode-checker.service';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\n\n@Component({\n selector: 'app-epc-info-modal',\n templateUrl: './epc-info-modal.component.html',\n styleUrls: ['./epc-info-modal.component.scss'],\n})\n\nexport class EpcInfoModalComponent implements OnInit {\n\n @Input() veId: string;\n @Input() propertyPassportId: string;\n @Input() resources: any;\n @Input() postcode: string;\n @Input() propertyPassport: any;\n @Output() updateHtcCard: EventEmitter = new EventEmitter();\n\n houseAttachments = [\n { displayName: 'DETACHED', value: \"Detached\" },\n { displayName: 'SEMIDETACHED', value: \"SemiDetached\" },\n { displayName: 'SEMIDETACHEDSOLIDWALL', value: \"SemiDetachedSolidWall\" },\n { displayName: 'ENDTERRACE', value: \"EndTerrace\" },\n { displayName: 'ENDTERRACESOLIDWALL', value: \"EndTerraceSolidWall\" },\n { displayName: 'MIDTERRACE', value: \"MidTerrace\" },\n { displayName: 'MIDTERRACESOLIDWALL', value: \"MidTerraceSolidWall\" },\n { displayName: 'GROUNDTOPFLOORMIDFLAT', value: \"GroundTopFloorMidFlat\" },\n { displayName: 'GROUNDTOPFLOORENDFLAT', value: \"GroundTopFloorEndFlat\" },\n { displayName: 'MIDFLOORMIDFLAT', value: \"MidFloorMidFlat\" }\n ];\n heating = ['Electric', 'Gas', 'Other'];\n renewableOptions = ['Yes', 'No'];\n wallTypes = ['Cavity', 'Solid', 'Other'];\n formInfo: FormGroup;\n formErrorMessage: boolean = false;\n loadObj: tLoadingElement;\n temperatureResources: any = [];\n currentHtc: any;\n showSuccess: boolean = false;\n maxDate: string = new Date(Date.now() - 86400000).toISOString().split('T')[0];\n manualHTC: any;\n cookieClass: boolean = false;\n selectedService: any;\n subscriptionSelectedService: Subscription;\n boilerManufacturers: any[];\n boilerModels: any[];\n boilerModelOptions: any[];\n selectedManufacturer: string;\n postcodeObj: any = { area: '', isValid: null, error: false };\n\n constructor(\n public activeModal: NgbActiveModal,\n private uiConfigService: CustomUIConfigService,\n private glowService: GlowService,\n private postcodeCheckerService: PostcodeCheckerService,\n private ccService: NgcCookieConsentService,\n private serviceSelectorSvc: ServiceSelectorSvc,\n private formBuilder: FormBuilder,\n private heatingSystemService: HeatingSystemService,\n private formValidationService: FormValidationService\n ) {\n this.formInfo = this.formBuilder.group({\n houseAttachment: ['', Validators.required],\n postcode: ['', Validators.required],\n floorArea: ['', [Validators.required, Validators.pattern('^[0-9]*$')]],\n toDate: ['', Validators.required],\n wallType: ['', Validators.required],\n renewables: [''],\n heating: ['', Validators.required],\n boilerManufacturer: [{ value: {}, disabled: true }],\n boilerModel: [{ value: {}, disabled: true }],\n });\n\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n this.cookieClass = true;\n }\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n });\n }\n\n ngOnInit() {\n\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(false);\n\n this.postcode\n ? this.formInfo.controls['postcode'].setValue(this.postcode)\n : this.formInfo.controls['postcode'].setValue('');\n const elecMatch = this.resources.find((x) => x.classifier == 'electricity.consumption');\n if (Array.isArray(this.resources) && this.resources.length > 0 && elecMatch) {\n this.getDevices();\n } else {\n let errorString = '';\n if (!elecMatch) {\n errorString += \"
  • We can't find a smart electricity meter assigned to your account; we need it to calculate your building fabric score. For more information please email support@glowmarkt.com
  • \";\n }\n this.loadObj = { ...this.loadObj, loadError: true, loading: false, errorString };\n }\n }\n\n async onHeatingChange(event) {\n if (event && event.target && event.target.value) {\n this.formInfo.controls['boilerManufacturer'].setValue('');\n this.formInfo.controls['boilerModel'].setValue('');\n const value = event.target.value;\n if (value == 'Electric') {\n this.formInfo.controls['boilerManufacturer'].disable();\n this.formInfo.controls['boilerModel'].disable();\n return;\n }\n\n if (value == 'Gas') {\n const boilers = await this.heatingSystemService.getGasAndOilBoilers(true, true);\n this.boilerModelOptions = boilers;\n } else if (value == 'Other') {\n const oilBoilers = await this.heatingSystemService.getGasAndOilBoilers(true, false, true);\n const solidFuelBoilers = await this.heatingSystemService.getSolidFuelBoilers(true);\n const twinBurnerBoilers = await this.heatingSystemService.getTwinBurnerBoilers(true);\n this.boilerModelOptions = oilBoilers.concat(solidFuelBoilers).concat(twinBurnerBoilers);\n }\n\n this.boilerManufacturers = this.heatingSystemService.getManufacturersFromArray(this.boilerModelOptions);\n\n this.formInfo.controls['boilerManufacturer'].enable();\n this.formInfo.controls['boilerModel'].enable();\n }\n }\n\n onManufacturerChange(event) {\n\n if (!(event && event.target && event.target.value)) {\n this.boilerModels = [];\n this.formInfo.controls['boilerModel'].setValue({});\n return;\n }\n const manufacturerName = event.target.value;\n this.boilerModels = this.boilerModelOptions.filter((boiler) =>\n boiler.brand.toLowerCase().split(' ').join('').includes(manufacturerName.toLowerCase().split(' ').join(''))\n );\n this.formInfo.controls['boilerModel'].setValue({});\n }\n\n getDevices() {\n this.glowService.getDevices().subscribe(async (resp) => {\n const sensorTypeArr = ['05a115ed-0135-45ad-b677-130a5e971998', 'ba06dbab-e759-4ad9-8b0e-e56a45b56a91', \"bc458eab-bf1d-4f49-834c-cfdabfb5aab0\"];\n const tempSensor = resp.filter((x) => sensorTypeArr.includes(x.deviceTypeId));\n if (Array.isArray(tempSensor) && tempSensor.length > 0) {\n let resourceArray = [];\n\n await tempSensor.map((x) => {\n x.protocol.sensors.map((resource) => {\n if (resource.protocolId == 'temp' || resource.protocolId == 'temperature') {\n resourceArray.push({ resourceId: resource.resourceId });\n }\n })\n });\n\n if (Array.isArray(resourceArray) && resourceArray.length > 0) {\n this.temperatureResources = resourceArray;\n this.loadObj.loaded = true;\n } else {\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: false,\n errorString: \"We can't find a temperature sensor assigned to your account; we need it to calculate your building fabric score. Order one here.\",\n };\n }\n } else {\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: false,\n errorString: \"We can't find a temperature sensor assigned to your account; we need it to calculate your building fabric score. Order one here.\",\n };\n }\n }, (err) => {\n console.warn(err);\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: false,\n errorString: \"We can't find a temperature sensor assigned to your account; we need it to calculate your building fabric score. Order one here.\",\n };\n });\n }\n\n getSeasonalEfficiency() {\n const formValue = this.formInfo.controls['boilerModel'].value\n if (formValue && formValue.sapEfficiencies && formValue.sapEfficiencies.winterSeasonal) {\n return formValue.sapEfficiencies.winterSeasonal;\n }\n return null\n }\n\n calculateHTC() {\n\n if (!this.formInfo.valid) {\n this.showErrorMessage()\n } else {\n const boilerWinterSeasonalEffciency = this.getSeasonalEfficiency();\n const payload = {\n veId: this.veId,\n propertyPassportId: this.propertyPassportId,\n temperatureResources: this.temperatureResources,\n to: new Date(this.formInfo.controls['toDate'].value).toISOString(),\n manualHTC: {\n attachment: this.formInfo.get('houseAttachment').value,\n location: { postcode: this.formInfo.get('postcode').value },\n floor_area: this.formInfo.get('floorArea').value,\n heating: {\n type: this.formInfo.get('heating').value,\n boiler: { winter_seasonal_efficiency: boilerWinterSeasonalEffciency },\n },\n renewables: this.formInfo.get('renewables').value == 'yes' ? true : false,\n },\n };\n\n this.sendGAEvent({ event: 'generateHTC' });\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans();\n\n this.glowService.calculateHTC(payload).subscribe(async (resp) => {\n if (resp.valid) {\n localStorage.setItem('manualHTC', JSON.stringify({ ...resp, veId: this.selectedService.veId }));\n this.currentHtc = resp;\n this.showSuccess = true;\n } else {\n this.loadObj = { ...this.loadObj, loadError: true, loading: false, errorString: resp.errorMsg };\n }\n }, (err) => {\n console.warn(err);\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: false,\n errorString: 'Looks like we are having trouble generating your building fabric score! Please try again later.'\n };\n });\n }\n }\n\n formatToPascalCase(string) {\n return string\n .replace(/\\w+/g, function (w) {\n return w[0].toUpperCase() + w.slice(1).toLowerCase();\n })\n .replace(/-|\\s+/g, '');\n }\n\n showErrorMessage() {\n if (!this.formInfo.valid) {\n this.formErrorMessage = true\n this.formValidationService.markFormGroup(this.formInfo, 'touched')\n }\n }\n\n resetError() {\n this.formErrorMessage = false\n }\n\n checkFormValidity(formControlName, translateKey?) {\n return this.formValidationService.checkFormValidity(this.formInfo, formControlName, translateKey)\n }\n\n async checkPostcode() {\n let messages = [];\n await this.checkPostcodeisValid().then((resp) => {\n if (!this.postcodeObj.isValid) {\n messages.push('Invalid postcode');\n }\n return messages\n });\n return\n }\n\n async checkPostcodeisValid() {\n let postcode;\n if (this.formInfo.get('postcode').touched) {\n postcode = this.formInfo.value.postcode;\n\n await this.postcodeCheckerService\n .checkPostcode(postcode)\n .then((resp: any) => {\n // console.log('IS POSTCODEVALID', resp);\n this.postcodeObj.area = resp.result['admin_district'];\n this.postcodeObj.isValid = true;\n this.postcodeObj.error = false;\n })\n .catch((err) => {\n console.warn('postcode errr', err);\n this.postcodeObj.area = '';\n this.postcodeObj.isValid = false;\n this.postcodeObj.error = true;\n\n });\n }\n }\n\n close() {\n if (this.currentHtc) {\n this.updateHtcCard.emit(this.currentHtc);\n }\n this.activeModal.dismiss();\n }\n\n sendGAEvent(params) {\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n window.dataLayer.push(params);\n }\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EpcInfoModalComponent } from './epc-info-modal.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SpinnerModule } from '../spinner/spinner.module';\nimport { HeatLossParameterScaleModule } from '../heat-loss-parameter-scale/heat-loss-parameter-scale.module';\nimport { NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [EpcInfoModalComponent],\n imports: [\n CommonModule,\n SharedModule,\n ReactiveFormsModule,\n SpinnerModule,\n FormsModule,\n HeatLossParameterScaleModule,\n NgbPopoverModule,\n NgSelectModule,\n FormValidationMessageModule\n ],\n exports: [EpcInfoModalComponent],\n entryComponents: [EpcInfoModalComponent],\n \n})\n\nexport class EpcInfoModalModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZXN0aW1hdGUtcmVxdWVzdC1jYXJkL2VzdGltYXRlLXJlcXVlc3QtY2FyZC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-estimate-request-card',\n templateUrl: './estimate-request-card.component.html',\n styleUrls: ['./estimate-request-card.component.scss']\n})\nexport class EstimateRequestCardComponent implements OnInit {\n @Input() er\n @Input()passport\n @Input()invitationForm;\n loading;\n @Input()lastYear\n @Input()lastMonth\n respondToInviteError\n\n constructor(private invitationsService: InvitationsService, private ServiceSelectorSvc: ServiceSelectorSvc, private glowService: GlowService) { }\n\n ngOnInit() {\n }\n checkCanAcceptRequest() {\n return (!this.invitationForm.controls.installationDate.valid && !this.invitationForm.controls.spaceHotWaterTank.valid\n && !this.invitationForm.controls.newRadiatorsInstalled.valid && this.passport && !this.loading ||\n !this.invitationForm.controls.installationDate.valid && !this.invitationForm.controls.spaceHotWaterTank.valid\n && !this.invitationForm.controls.newRadiatorsInstalled.valid && !this.passport && !this.loading || this.loading)\n\n }\n getEstimateRequestStateFormat(state) {\n return this.invitationsService.formatEstimateRequestState(state)\n }\n\n acceptEstimateRequest(estimateRequestId) {\n if (this.passport && this.invitationForm.controls.newRadiatorsInstalled.valid && this.invitationForm.controls.spaceHotWaterTank.valid && this.invitationForm.controls.installationDate.valid) {\n this.updateEstimateRequest(estimateRequestId)\n }\n // TO DO: error handle\n }\n updateEstimateRequest(estimateRequestId) {\n this.loading = true;\n const selectedService = this.ServiceSelectorSvc.getSelectedService()\n const body = {\n estimateRequestState: 'estimate-request-accepted-by-user',\n assessmentPeriodStart: this.lastYear,\n assessmentPeriodEnd: this.lastMonth,\n htc: this.invitationForm.value.htc,\n\n overview: {\n hotWaterTankSpace: this.invitationForm.value.spaceHotWaterTank == 'Yes' ? true : false,\n newRadiatorsFitted: this.invitationForm.value.newRadiatorsInstalled == 'Yes' ? true : false,\n installationDate: this.invitationForm.value.installationDate,\n },\n heatingSystem: {\n veDocId: this.invitationForm.value.radiatorSchematic.documentId\n },\n };\n this.glowService.updateEstimateRequest(body, estimateRequestId, selectedService.veId).subscribe((resp) => {\n if (!resp.valid) {\n this.respondToInviteError = true\n this.loading = false\n this.getEstimateRequests()\n } else {\n\n this.getEstimateRequests()\n this.loading = false\n }\n }, (err) => {\n this.respondToInviteError = true\n this.loading = false\n });\n }\n\n denyEstimateRequest(estimateRequestId) {\n this.loading = true\n\n const selectedService = this.ServiceSelectorSvc.getSelectedService()\n this.glowService.declineEstimateRequest(estimateRequestId, selectedService.veId).subscribe(resp => {\n if (resp.valid) {\n console.log(resp)\n this.getEstimateRequests()\n } else {\n this.respondToInviteError = true\n this.loading = false\n }\n }, (err) => {\n this.respondToInviteError = true\n this.loading = false\n\n\n })\n\n }\n getEstimateRequests() {\n const selectedService = this.ServiceSelectorSvc.getSelectedService()\n this.invitationsService.getEstimateRequestsByVeIdAndState(selectedService.veId, true)\n\n }\n \n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EstimateRequestCardComponent } from './estimate-request-card.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\n\n\n\n@NgModule({\n declarations: [EstimateRequestCardComponent],\n imports: [\n CommonModule, SharedModule, FormValidationMessageModule\n ],\n exports: [EstimateRequestCardComponent]\n})\nexport class EstimateRequestCardModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZmFxLWRldGFpbGVkLWNvbnRlbnQvZmFxLWRldGFpbGVkLWNvbnRlbnQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { FaqsService } from 'src/app/services/faqs.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-faq-detailed-content',\n templateUrl: './faq-detailed-content.component.html',\n styleUrls: ['./faq-detailed-content.component.scss'],\n})\nexport class FaqDetailedContentComponent implements OnInit {\n @Input() faq!: any;\n answer!: any;\n constructor(private route: ActivatedRoute, private faqsService: FaqsService) {}\n\n ngOnInit(): void {\n\n\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZmFxLWZlZWRiYWNrLWZvcm0vZmFxLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Form, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FaqsService } from 'src/app/services/faqs.service';\nimport { tResourceTariff } from 'src/app/services/glow.typings';\n\n@Component({\n selector: 'app-faq-feedback-form',\n templateUrl: './faq-feedback-form.component.html',\n styleUrls: ['./faq-feedback-form.component.scss']\n})\n\n\nexport class FaqFeedbackFormComponent implements OnInit {\n showPositiveFeedbackForm: boolean = false\n showNegativeFeedbackForm: boolean = false\n showThankyouMessage: boolean = false\n positiveFeedbackForm!: FormGroup;\n negativeFeedbackForm!: FormGroup;\n showWarning: boolean = false\n\n @Input() faq\n constructor(private fb: FormBuilder, private faqsService: FaqsService) { }\n\n ngOnInit(): void {\n this.createPositiveFeedbackForm()\n this.createNegativeFeedbackForm()\n }\n\n showFeedbackForm(answer: string) {\n if (answer == 'yes') {\n this.showPositiveFeedbackForm = !this.showPositiveFeedbackForm\n\n } else this.showNegativeFeedbackForm = true\n }\n\n createPositiveFeedbackForm() {\n this.positiveFeedbackForm = this.fb.group({\n positiveFeedback: ['', [\n Validators.required,\n Validators.minLength(1),\n // no empty white space validator\n Validators.pattern(/^(\\s+\\S+\\s*)*(?!\\s).*$/),\n ]]\n })\n }\n\n createNegativeFeedbackForm() {\n this.negativeFeedbackForm = this.fb.group({\n negativeFeedback: ['', [\n Validators.required,\n Validators.minLength(1),\n Validators.pattern(/^(\\s+\\S+\\s*)*(?!\\s).*$/)\n\n ]],\n radioFeedback: ['', [Validators.required],],\n\n })\n\n }\n postFeedback(feedback, isPositive, reason?) {\n this.showWarning = false\n if (!this.positiveFeedbackForm.valid && !this.negativeFeedbackForm.valid) {\n this.showWarning = true\n return false\n } else {\n this.faqsService.postFeedback(this.faq.id, feedback, isPositive, reason)\n this.displayThankyouMessage()\n }\n }\n\n displayThankyouMessage() {\n this.showThankyouMessage = true\n this.showNegativeFeedbackForm = false\n this.showPositiveFeedbackForm = false\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZmFxLXF1ZXN0aW9uLWZvcm0vZmFxLXF1ZXN0aW9uLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { FaqsService } from 'src/app/services/faqs.service';\nimport { Form, FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n\n@Component({\n selector: 'app-faq-question-form',\n templateUrl: './faq-question-form.component.html',\n styleUrls: ['./faq-question-form.component.scss']\n})\nexport class FaqQuestionFormComponent implements OnInit {\n suggestionForm: FormGroup\n showWarning:boolean=false\n showThankyouMessage: boolean = false\n constructor(private faqsService: FaqsService,\n private fb: FormBuilder) { }\n\n ngOnInit(): void {\n this.createSuggestionForm()\n }\n\n createSuggestionForm() {\n this.suggestionForm = this.fb.group({\n suggestion: ['', [\n Validators.required,\n Validators.minLength(1),\n Validators.pattern(/^(\\s+\\S+\\s*)*(?!\\s).*$/)\n ]]\n })\n }\n\n postSuggestion(suggestion) {\n if (!this.suggestionForm.valid){\n this.showWarning=true\n return false\n } else {\n this.faqsService.postSuggestion(suggestion)\n this.displayThankyouMessage()\n }\n }\n displayThankyouMessage() {\n this.showThankyouMessage = true\n // this.showNegativeFeedbackForm = false\n // this.showPositiveFeedbackForm = false\n }\n \n}\n","export default \".search-result:hover {\\n background-color: #f985a6;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2ZhcXMtc2VhcmNoYmFyL2ZhcXMtc2VhcmNoYmFyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2ZhcXMtc2VhcmNoYmFyL2ZhcXMtc2VhcmNoYmFyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0kseUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZmFxcy1zZWFyY2hiYXIvZmFxcy1zZWFyY2hiYXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2VhcmNoLXJlc3VsdDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ODVhNjtcbiAgXG59XG4iLCIuc2VhcmNoLXJlc3VsdDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOTg1YTY7XG59Il19 */\"","import { Component, OnInit, Output, EventEmitter, HostListener, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { FaqsService } from 'src/app/services/faqs.service';\nimport { SearchService } from 'src/app/services/search.service';\n\n@Component({\n selector: 'app-faqs-searchbar',\n templateUrl: './faqs-searchbar.component.html',\n styleUrls: ['./faqs-searchbar.component.scss'],\n})\nexport class FaqsSearchbarComponent implements OnInit {\n @HostListener('document:click', ['$event']) onDocumentClick(event) {\n //checks if doc has been clicked to close menu\n this.results = [];\n this.faqHover = '';\n }\n\n @Output() isSearching: EventEmitter = new EventEmitter();\n @Input() placeholder: string = 'Search...';\n results: any = [];\n faqHover;\n selectedQuestion;\n\n constructor(private faqsService: FaqsService, private router: Router, private searchService: SearchService) {}\n\n ngOnInit(): void {}\n\n async searchFAQs(event: any) {\n event.stopPropagation();\n event.target.value\n ? (this.results = (await this.searchService.searchAllFAQs(event.target.value)).hits)\n : (this.results = []);\n }\n\n navigateToFAQ(faq: any) {\n this.router.navigateByUrl(`/support/${faq.faq_topics[0].slug}/${faq.slug}`);\n }\n\n updateIsSearching(isSearching: boolean) {\n this.isSearching.emit(isSearching);\n }\n\n faqOnHover(result) {\n this.faqHover = result;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZmFxcy1zdWJ0b3BpYy1ub24tZmFxLWNvbnRlbnQvZmFxcy1zdWJ0b3BpYy1ub24tZmFxLWNvbnRlbnQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { InputEditorComponent } from 'ng2-smart-table/lib/components/cell/cell-editors/input-editor.component';\n\n@Component({\n selector: 'app-faqs-subtopic-non-faq-content',\n templateUrl: './faqs-subtopic-non-faq-content.component.html',\n styleUrls: ['./faqs-subtopic-non-faq-content.component.scss']\n})\nexport class FaqsSubtopicNonFaqContentComponent implements OnInit {\n @Input() contentArray:any[]=[]\n @Input() sliceStart:number = 0\n @Input() sliceEnd:number\n @Input() contentType:string\n constructor() { }\n\n ngOnInit() {\n this.sliceEnd?null:this.sliceEnd=this.contentArray.length\n }\n\ncontentRelativePath(content:any){\n return `/home/${this.contentType}/${content.attributes.slug}`\n}\n\n}\n","export default \"button,\\nbutton:hover {\\n letter-spacing: 0px;\\n border: none;\\n padding: 0;\\n all: unset;\\n}\\n\\nbutton:hover {\\n color: #f6658e;\\n}\\n\\n.separator {\\n display: flex;\\n flex-basis: 100%;\\n align-items: center;\\n color: #2b2b2b;\\n margin: 8px 0;\\n}\\n\\n.separator:after {\\n content: \\\"\\\";\\n flex-grow: 1;\\n background: #f64928;\\n height: 1px;\\n font-size: 0;\\n line-height: 0;\\n margin: 0 8px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2ZhcXMtc3VidG9waWNzL2ZhcXMtc3VidG9waWNzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2ZhcXMtc3VidG9waWNzL2ZhcXMtc3VidG9waWNzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLFVBQUE7RUFDQSxVQUFBO0FDQ0Y7O0FERUE7RUFDRSxjQUFBO0FDQ0Y7O0FERUE7RUFDRSxhQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGNBQUE7RUFDQSxhQUFBO0FDQ0Y7O0FEQ0U7RUFDRSxXQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9mYXFzLXN1YnRvcGljcy9mYXFzLXN1YnRvcGljcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImJ1dHRvbixcbmJ1dHRvbjpob3ZlciB7XG4gIGxldHRlci1zcGFjaW5nOiAwcHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgYWxsOiB1bnNldDtcbn1cblxuYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6ICNmNjY1OGU7XG59XG5cbi5zZXBhcmF0b3Ige1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWJhc2lzOiAxMDAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogIzJiMmIyYjtcbiAgbWFyZ2luOiA4cHggMDtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBiYWNrZ3JvdW5kOiAjZjY0OTI4O1xuICAgIGhlaWdodDogMXB4O1xuICAgIGZvbnQtc2l6ZTogMDtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBtYXJnaW46IDAgOHB4O1xuICB9XG59XG4iLCJidXR0b24sXG5idXR0b246aG92ZXIge1xuICBsZXR0ZXItc3BhY2luZzogMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIGFsbDogdW5zZXQ7XG59XG5cbmJ1dHRvbjpob3ZlciB7XG4gIGNvbG9yOiAjZjY2NThlO1xufVxuXG4uc2VwYXJhdG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1iYXNpczogMTAwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sb3I6ICMyYjJiMmI7XG4gIG1hcmdpbjogOHB4IDA7XG59XG4uc2VwYXJhdG9yOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZmxleC1ncm93OiAxO1xuICBiYWNrZ3JvdW5kOiAjZjY0OTI4O1xuICBoZWlnaHQ6IDFweDtcbiAgZm9udC1zaXplOiAwO1xuICBsaW5lLWhlaWdodDogMDtcbiAgbWFyZ2luOiAwIDhweDtcbn0iXX0= */\"","import { Component, Input, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FaqsService } from 'src/app/services/faqs.service';\nimport { Utils } from 'src/utils';\n@Component({\n selector: 'app-faqs-subtopics',\n templateUrl: './faqs-subtopics.component.html',\n styleUrls: ['./faqs-subtopics.component.scss'],\n})\nexport class FaqsSubtopicsComponent implements OnInit {\n @Input() topic!: any;\n isSystemIncidents: boolean = false;\n constructor(\n private faqsService: FaqsService,\n private route: ActivatedRoute,\n private router: Router,\n private ref: ChangeDetectorRef\n ) {\n this.route.queryParams.subscribe((params) => {\n this.navigateToSubtopic(params.subtopic);\n });\n }\n\n ngOnInit(): void {\n this.isSystemIncidents = this.checkIsSystemIncidents();\n }\n ngOnChanges() {\n this.isSystemIncidents = this.checkIsSystemIncidents();\n }\n\n slugifyFAQ(faq: any) {\n return faq.attributes.question\n .split(' ')\n .map((word: string) => word.toLowerCase())\n .join('-');\n }\n // navigateToFAQ(faq:any){\n // this.router.navigateByUrl(`/faqs/${this.topic.attributes.slug}/${faq.attributes.slug}`)\n // }\n\n faqRelativePath(faq: any) {\n return `/support/${this.topic.attributes.slug}/${faq.attributes.slug}`;\n }\n\n blogRelativePath(blog: any) {\n return `/home/blogs/${blog.attributes.slug}`;\n }\n\n contentRelativePath() {}\n\n noFaqs() {\n return !(\n this.topic &&\n this.topic.attributes.faq_sub_topics.data.length > 0 &&\n this.topic.attributes.faq_sub_topics.data.some((subtopic) => subtopic.attributes.faqs.data.length > 0)\n );\n }\n\n checkIsSystemIncidents() {\n return this.topic.attributes.slug === 'system-incidents';\n }\n navigateToSubtopic(subtopicSlug: string) {\n Utils.waitForElemById(subtopicSlug).then((elm) =>\n elm.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n })\n );\n // this.router.navigate([], { fragment: subtopicSlug });\n }\n}\n","export default \"@media only screen and (min-width: 767px) {\\n .faq-topic {\\n margin: 5px;\\n height: 130px;\\n }\\n}\\n.faq-topic:hover {\\n transform: scale(1.1);\\n box-shadow: -10px 0px 13px -7px #d0d4d9, 10px 0px 13px -7px #d0d4d9, 0px 0px 15px 3px rgba(223, 224, 229, 0);\\n}\\n.faq-topic {\\n transition: transform 0.2s ease;\\n}\\nbutton,\\nbutton:hover {\\n border: none;\\n text-decoration: none;\\n padding: 0;\\n margin: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2ZhcXMtdG9waWNzL2ZhcXMtdG9waWNzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2ZhcXMtdG9waWNzL2ZhcXMtdG9waWNzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBO0VBQ0U7SUFDRSxXQUFBO0lBQ0EsYUFBQTtFQ0FGO0FBQ0Y7QURNQTtFQUNFLHFCQUFBO0VBRUEsNEdBQUE7QUNKRjtBRGFBO0VBQ0UsK0JBQUE7QUNWRjtBRFlBOztFQUVFLFlBQUE7RUFDQSxxQkFBQTtFQUNBLFVBQUE7RUFDQSxTQUFBO0FDVEYiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2ZhcXMtdG9waWNzL2ZhcXMtdG9waWNzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3R5bGluZyBmb3Igc2NyZWVuIHNpemVzIGFib3ZlICdtZCdcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY3cHgpIHtcbiAgLmZhcS10b3BpYyB7XG4gICAgbWFyZ2luOiA1cHg7XG4gICAgaGVpZ2h0OiAxMzBweDtcbiAgfVxufVxuXG4vLyAuZmFxLXRvcGljOmhvdmVyIHtcbi8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ5LCAyNDksIDI0OSk7XG4vLyB9XG4uZmFxLXRvcGljOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IC0xMHB4IDBweCAxM3B4IC03cHggI2QwZDRkOSwgMTBweCAwcHggMTNweCAtN3B4ICNkMGQ0ZDksIDBweCAwcHggMTVweCAzcHggcmdiYSgyMjMsMjI0LDIyOSwwKTsgXG4gIGJveC1zaGFkb3c6IC0xMHB4IDBweCAxM3B4IC03cHggI2QwZDRkOSwgMTBweCAwcHggMTNweCAtN3B4ICNkMGQ0ZDksIDBweCAwcHggMTVweCAzcHggcmdiYSgyMjMsMjI0LDIyOSwwKTtcbiAgLy8gYmFja2dyb3VuZC1jb2xvcjogI2ZlZjZmODtcbiAgLy8gYmFja2dyb3VuZC1jb2xvcjogd2hpdGVcbiAgLy8gYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOVxuICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiODQ3XG4gIC8vIGJhY2tncm91bmQ6IHJnYigyNDYsNzMsNDApO1xuICAvLyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjQ2LDczLDQwLDAuMjM3MTU0MjM2Njk0Njc3ODMpIDElLCByZ2JhKDI1NSwxMzYsMTUsMC4yMDM1NDA3OTEzMTY1MjY1OCkgNDclLCByZ2JhKDI1NSwxODQsNzEsMC4yNTk1NjMyMDAyODAxMTIwNCkgOTklKTtcbn1cblxuLmZhcS10b3BpYyB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG59XG5idXR0b24sXG5idXR0b246aG92ZXIge1xuICBib3JkZXI6IG5vbmU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuIiwiQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjdweCkge1xuICAuZmFxLXRvcGljIHtcbiAgICBtYXJnaW46IDVweDtcbiAgICBoZWlnaHQ6IDEzMHB4O1xuICB9XG59XG4uZmFxLXRvcGljOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IC0xMHB4IDBweCAxM3B4IC03cHggI2QwZDRkOSwgMTBweCAwcHggMTNweCAtN3B4ICNkMGQ0ZDksIDBweCAwcHggMTVweCAzcHggcmdiYSgyMjMsIDIyNCwgMjI5LCAwKTtcbiAgYm94LXNoYWRvdzogLTEwcHggMHB4IDEzcHggLTdweCAjZDBkNGQ5LCAxMHB4IDBweCAxM3B4IC03cHggI2QwZDRkOSwgMHB4IDBweCAxNXB4IDNweCByZ2JhKDIyMywgMjI0LCAyMjksIDApO1xufVxuXG4uZmFxLXRvcGljIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcbn1cblxuYnV0dG9uLFxuYnV0dG9uOmhvdmVyIHtcbiAgYm9yZGVyOiBub25lO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FaqsService } from 'src/app/services/faqs.service';\n\n@Component({\n selector: 'app-faqs-topics',\n templateUrl: './faqs-topics.component.html',\n styleUrls: ['./faqs-topics.component.scss'],\n})\nexport class FaqsTopicsComponent implements OnInit {\n loading: boolean = true;\n\n topics: any;\n constructor(private faqsService:FaqsService,private router:Router) {}\n\n ngOnInit(): void {this.getFAQsTopics()\n\n\n\n \n\n }\n\n\n async getFAQsTopics() {\n this.topics = await this.faqsService.getFAQsTopics()\n this.loading = false;\n }\n\n navigateToTopic(topic:any){\n // this.faqsService.setTopicId(topic.id)\n this.router.navigateByUrl(`/support/${topic.attributes.slug}`)\n }\n\n topicRelativePath(topic){\n return `/support/${topic.attributes.slug}`\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, ElementRef, HostListener, Input, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { on } from 'events';\n\n// https://netbasal.com/how-to-implement-file-uploading-in-angular-reactive-forms-89a3fffa1a03\n\n@Component({\n selector: 'app-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: FileUploadComponent,\n multi: true,\n },\n ],\n})\nexport class FileUploadComponent implements OnInit {\n @Input() accept = '';\n @Input() multiple = false;\n @Input() inputId = '';\n onChange: Function;\n private file: File | null = null;\n\n @HostListener('change', ['$event.target.files']) emitFiles(event: FileList) {\n console.log(event)\n if (this.multiple) {\n console.log('multiple')\n this.onChange(event);\n } else {\n console.log(event, event.item(0))\n const file = event && event.item(0);\n this.onChange(file);\n this.file = file;\n }\n }\n\n constructor(private host: ElementRef) {}\n\n ngOnInit() {}\n\n writeValue(value: null) {\n // clear file input\n this.host.nativeElement.value = '';\n this.file = null;\n }\n\n registerOnChange(fn: Function) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function) {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileUploadComponent } from './file-upload.component';\n\n\n\n@NgModule({\n declarations: [FileUploadComponent],\n imports: [\n CommonModule\n ],\n\n exports: [FileUploadComponent]\n})\nexport class FileUploadModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZmxvb3IvZmxvb3IuY29tcG9uZW50LnNjc3MifQ== */\"","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslateDefaultParser } from '@ngx-translate/core';\nimport { isTomorrow } from 'date-fns';\nimport { SchematicsComponent } from 'src/app/pages/schematics/schematics.component';\nimport { AddRadiatorModalComponent } from '../add-radiator-modal/add-radiator-modal.component';\nimport { AddRooomModalComponent } from '../add-room-modal/add-room-modal.component';\n\n@Component({\n selector: 'app-floor',\n templateUrl: './floor.component.html',\n styleUrls: ['./floor.component.scss'],\n})\nexport class FloorComponent implements OnInit {\n public floor: any;\n public schematicsComponent: SchematicsComponent;\n\n rooms: any = {};\n\n roomOptions = [\n { imgPath: '../../../assets/images/schematics/bedroom.jpeg', title: 'Bedroom', id: 'bedroom' },\n { imgPath: '../../../assets/images/schematics/living-room.jpeg', title: 'Living Room', id: 'livingRoom' },\n { imgPath: '../../../assets/images/schematics/kitchen.jpeg', title: 'Kitchen', id: 'kitchen' },\n { imgPath: '../../../assets/images/schematics/bathroom.jpeg', title: 'Bathroom', id: 'bathroom' },\n { imgPath: '../../../assets/images/schematics/other.jpeg', title: 'Other', id: 'other' },\n ];\n\n constructor(private modalService: NgbModal) {}\n\n ngOnInit() {\n this.getRoomNumbers(this.floor);\n }\n\n displayImage(room) {\n return room.flooring\n ? { 'background-image': `url(\"../../../assets/images/schematics/${room['flooring'].toLowerCase()}.png\")` }\n : { 'background-image': 'url(\"../../../assets/images/soft-orange.jpg\")' };\n }\n\n getRoomNumbers(floor) {\n for (let roomType of this.roomOptions) {\n this.rooms[roomType.id] = floor.rooms.filter((room) => room.type === roomType.id).length;\n }\n }\n\n // openAddRoom() {\n // const addRoomModal = this.modalService.open(AddRooomModalComponent, {\n // scrollable: true,\n // // backdrop: 'static',\n // centered: true,\n // size: 'xl',\n // });\n // addRoomModal.componentInstance.floor = this.floor;\n // addRoomModal.result.then((result) => {\n // // console.log(result);\n // this.openAddRadiator({\n // type: result.type,\n // title: `${result.title} ${this.rooms[result.type] + 1}`,\n // id: `${result.type}${this.rooms[result.type] + 1}`,\n // });\n // // if (result.rooms) {\n // // // console.log(result);\n // // // this.addFloor(result)\n // // this.floor = result;\n // // this.updateSchematic(this.floor);\n // // // console.log(\"schematics\",this.schematics)\n // // }\n // });\n // }\n\n // openAddRadiator(room) {\n // const addRadiatorModal = this.modalService.open(AddRadiatorModalComponent, {\n // scrollable: true,\n // // backdrop: 'static',\n // centered: true,\n // size: 'xl',\n // });\n // addRadiatorModal.componentInstance.room = room;\n // addRadiatorModal.componentInstance.floor = this.floor;\n // addRadiatorModal.result.then((result) => {\n // if (result.radiators || result.height) {\n // this.updateRoom(result);\n // }\n // });\n // }\n\n // updateRoom(room) {\n // const index = this.floor.rooms.map((r) => r.id).indexOf(room.id);\n // if (index > -1) {\n // room.radiators = room.radiators.map((rad) => {\n // const updated = { ...rad };\n // updated.id = rad.id + '-' + room.id;\n // return updated;\n // });\n // this.floor.rooms[index] = { ...room };\n // } else {\n // this.rooms[room.type] += 1;\n // room.id = `${room.type}-${this.floor.id}-${this.rooms[room.type]}`;\n // room.title = this.roomOptions.find((roomType) => roomType.id === room.type).title + ` ${this.rooms[room.type]}`;\n // room.radiators = room.radiators.map((rad) => {\n // const updated = { ...rad };\n // updated.id = rad.id + '-' + room.id;\n // return updated;\n // });\n // this.floor.rooms.push(room);\n // }\n // this.updateEstimatedFloorArea();\n // this.updateSchematic(this.floor);\n // }\n\n // updateEstimatedFloorArea() {\n // this.floor.estimatedArea = this.floor.rooms\n // .map((room) => room.length * room.width)\n // .reduce((accumulator, currentValue) => accumulator + currentValue, 0);\n // }\n\n // removeRoom(room) {\n // const index = this.floor.rooms.map((r) => r.id).indexOf(room.id);\n // const roomNum = room.title.split(' ').slice(-1)[0];\n // this.floor.rooms.splice(index, 1);\n\n // this.floor.rooms = this.floor.rooms.map((r) => {\n // const rNum = r.title.split(' ').slice(-1)[0];\n // if (rNum > roomNum && r.type == room.type) {\n // const updatedRoom = { ...r };\n // const splitTitle = room.title.split(' ');\n // splitTitle[splitTitle.length - 1] = String(Number(rNum) - 1);\n // updatedRoom.title = splitTitle.join(' ');\n // updatedRoom.id = splitTitle.join('');\n // return updatedRoom;\n // } else {\n // return r;\n // }\n // });\n // this.rooms[room.type] -= 1;\n // this.updateEstimatedFloorArea();\n // this.updateSchematic(this.floor);\n // }\n\n // getRadiatorsArray(room) {\n // return room.radiators ? Object.values(room.radiators).flat() : [];\n // }\n\n // getRadSvgPath(rad) {\n // return `../../../assets/images/schematics/${rad.type}Icon.svg`;\n // }\n\n // removeSelf() {\n // this.schematicsComponent.removeFloor(this.floor.id);\n // }\n\n // updateSchematic(floor) {\n // this.schematicsComponent.schematics.floors = this.schematicsComponent.schematics.floors.map((f) => {\n // if (f.id === floor.id) {\n // f = { ...floor };\n // }\n // return f;\n // });\n // this.schematicsComponent.setSchematics();\n // }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FloorComponent } from './floor.component';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { AddRadiatorModalComponent } from '../add-radiator-modal/add-radiator-modal.component';\nimport { AddRadiatorModalModule } from '../add-radiator-modal/add-radiator-modal.module';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\nimport { AddHeatingSystemModalComponent } from '../add-heating-system-modal/add-heating-system-modal.component';\n\n@NgModule({\n declarations: [FloorComponent],\n imports: [CommonModule,NgbModule, AddRadiatorModalModule, AngularSvgIconModule],\n exports: [FloorComponent],\n entryComponents:[FloorComponent,AddRadiatorModalComponent]\n})\nexport class FloorModule {}\n","export default \".text:hover {\\n text-decoration: underline;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkE7RUFDRywwQkFBQTtBQ2xCSCIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGZvb3RlciByZXNwb25zaXZlIG9uIG1vYmlsZVxuLy8gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuLy8gICAgIGZvb3RlciB7XG4vLyAgICAgICAgIGhlaWdodDo1MHB4O1xuLy8gICAgICAudGV4dCB7XG4vLyAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuLy8gICAgICAgICB0ZXh0LWFsaWduOiBzdGFydCAhaW1wb3J0YW50O1xuLy8gICAgICB9XG4vLyAgICAgIHN2ZyAge1xuLy8gICAgICAgICBoZWlnaHQ6NDBweDtcbi8vICAgICAgICAgd2lkdGg6MTAwcHg7XG4vLyAgICAgIH1cbi8vICAgICB9XG4vLyB9XG5cbi8vIGJ1dHRvbiB7XG4vLyAgICBhbGw6IHVuc2V0O1xuLy8gIH1cblxuLnRleHQ6aG92ZXJ7XG4gICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgXG59IiwiLnRleHQ6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn0iXX0= */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TermsconditionsModalComponent } from '../termsconditions-modal/termsconditions-modal.component';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n})\nexport class FooterComponent implements OnInit {\n loading = true;\n public hasValidAccessToken = false;\n loginStatus: string;\n\n // year for copyright\n year = new Date().getFullYear();\n pages = []\n innerWidth;\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n constructor(private modalService: NgbModal, private router: Router, public oauthService: OAuthService) {\n\n const navEndEvent$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n navEndEvent$.subscribe((e: NavigationEnd) => {\n this.hasValidAccessToken = this.oauthService.hasValidAccessToken();\n this.loginStatus = this.hasValidAccessToken ? 'logged in' : localStorage.length > 0 && localStorage.getItem('id_token') ? 'logged in' : 'logged out';\n this.setPagesOnLoginStatus()\n });\n }\n\n ngOnInit() { \n this.hasValidAccessToken = this.oauthService.hasValidAccessToken();\n // console.log(this.hasValidAccessToken)\n this.onResize()\n\n }\n ngAfterViewInit() {\n this.loading = true;\n }\n\n openTermsConditions() {\n const termsconditionsRef = this.modalService.open(TermsconditionsModalComponent, {\n scrollable: true,\n centered: true,\n size: 'xl',\n });\n termsconditionsRef.componentInstance.displayForm = false\n termsconditionsRef.componentInstance.title = 'Glow'\n\n\n }\n\n navigateToCookiePolicy() {\n this.router.navigate(['/cookies'])\n\n }\n\nsetPagesOnLoginStatus(){\n this.pages = [{\n name: 'Heat Pump Resources',\n pages: [\n { title: 'Resources', path: '/community/heat-pump' },\n { title: 'Case Studies', path: '/case-studies' },\n { path: '/find-a-professional', title: 'Find an installer' },\n\n { title: 'Heat Pump Cost Estimation', path: this.loginStatus === 'logged in' ? '/pages/tools/heat-pump-cost-estimation' : '/login', },\n { title: 'Heat Retention Score', path: this.loginStatus === 'logged in' ? '/pages/tools/estimated-thermal-performance' : '/login' },\n { title: 'Heating by Room', path: this.loginStatus === 'logged in' ? '/pages/tools/heating-by-room': '/login' },\n ]\n },\n {\n name: 'Energy Data',\n pages: [\n { title: 'Resources', path: '/community/energy-data' },\n { title: 'Download your data', path: this.loginStatus === 'logged in'? '/pages/property/energy-data' : '/login'},\n // { title: 'About Energy Data', path: '' }\n ]\n },\n {\n name: 'Our Services',\n pages: [\n { title: 'Bright', path: '/bright' },\n // { title: 'Installers', path: '/installers' },\n { title: 'Visit our forum', path: 'https://forum.glowmarkt.com/' },\n { title: 'Visit our shop', path: 'https://shop.glowmarkt.com/' }\n ]\n },\n {\n name: 'Support',\n pages: [\n { title: 'Apps', path: '/support/apps' },\n { title: 'Data', path: '/support/data' },\n { title: 'Heat pump', path: '/support/heat-pump' },\n { title: 'Hardware', path: '/support/hardware' },\n { title: 'System incidents', path: '/support/system-incidents' },\n { title: 'Glossary', path: '/glossary' }\n ]\n },\n // {\n // name: 'About',\n // pages: [\n // { title: 'About us', path: '' },\n \n // ]\n // },\n]\n}\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FooterComponent } from './footer.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [FooterComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [FooterComponent]\n})\nexport class FooterModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZm9ybS12YWxpZGF0aW9uLW1lc3NhZ2UvZm9ybS12YWxpZGF0aW9uLW1lc3NhZ2UuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-form-validation-message',\n templateUrl: './form-validation-message.component.html',\n styleUrls: ['./form-validation-message.component.scss']\n})\nexport class FormValidationMessageComponent implements OnInit {\n @Input() error;\n @Input()success;\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormValidationMessageComponent } from './form-validation-message.component';\n\n\n\n@NgModule({\n declarations: [FormValidationMessageComponent],\n imports: [\n CommonModule\n ],\n exports: [FormValidationMessageComponent]\n})\nexport class FormValidationMessageModule { }\n","export default \"button {\\n all: unset;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2dsb3NzYXJ5LWNhcmQvZ2xvc3NhcnktY2FyZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9nbG9zc2FyeS1jYXJkL2dsb3NzYXJ5LWNhcmQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxVQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2dsb3NzYXJ5LWNhcmQvZ2xvc3NhcnktY2FyZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImJ1dHRvbntcbiAgICBhbGw6IHVuc2V0O1xuIH0iLCJidXR0b24ge1xuICBhbGw6IHVuc2V0O1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-glossary-card',\n templateUrl: './glossary-card.component.html',\n styleUrls: ['./glossary-card.component.scss']\n})\nexport class GlossaryCardComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n glossaryRelativePath(){\n return `/glossary`\n }\n\n}\n","export default \"input {\\n padding-left: 2.375rem;\\n}\\n\\n.bi {\\n position: absolute;\\n z-index: 2;\\n display: block;\\n width: 2.375rem;\\n height: 2.375rem;\\n line-height: 2.5rem;\\n text-align: center;\\n pointer-events: none;\\n color: #aaa;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2dsb3NzYXJ5LXNlYXJjaGJhci9nbG9zc2FyeS1zZWFyY2hiYXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvZ2xvc3Nhcnktc2VhcmNoYmFyL2dsb3NzYXJ5LXNlYXJjaGJhci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLHNCQUFBO0FDQ0o7O0FERUE7RUFDSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0VBQ0EsV0FBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9nbG9zc2FyeS1zZWFyY2hiYXIvZ2xvc3Nhcnktc2VhcmNoYmFyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiaW5wdXQge1xuICAgIHBhZGRpbmctbGVmdDogMi4zNzVyZW1cbn1cblxuLmJpIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMi4zNzVyZW07XG4gICAgaGVpZ2h0OiAyLjM3NXJlbTtcbiAgICBsaW5lLWhlaWdodDogMi41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBjb2xvcjogI2FhYTtcbn1cblxuIiwiaW5wdXQge1xuICBwYWRkaW5nLWxlZnQ6IDIuMzc1cmVtO1xufVxuXG4uYmkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMi4zNzVyZW07XG4gIGhlaWdodDogMi4zNzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAyLjVyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGNvbG9yOiAjYWFhO1xufSJdfQ== */\"","import { invalid } from '@angular/compiler/src/render3/view/util';\nimport { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SearchService } from 'src/app/services/search.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n@Component({\n selector: 'app-glossary-searchbar',\n templateUrl: './glossary-searchbar.component.html',\n styleUrls: ['./glossary-searchbar.component.scss'],\n})\nexport class GlossarySearchbarComponent implements OnInit {\n @Output() resultsChange = new EventEmitter();\n tagsToFilter: any[] = [];\n searchTerm: string = '';\n tags: any[];\n\n searchParametersForm: FormGroup;\n\n constructor(private searchService: SearchService, private strapiService: StrapiService, private fb: FormBuilder, private router: Router) {\n\n }\n\n ngOnInit() {\n this.initTagsForm()\n this.strapiService\n .getAllOfContentType('tags')\n .then((tags) => (this.tags = tags.filter((tag) => tag.attributes.isCommunity)));\n }\n\n initTagsForm() {\n this.searchParametersForm = this.fb.group({\n tags: [[], Validators.required],\n searchTerm: [''],\n });\n }\n\n async search() {\n const results = await this.searchService.filterContentWithTags('glossary-term', this.searchTerm, this.tagsToFilter);\n this.resultsChange.emit({\n glossaryTerms: results.map((result) => Utils.fromatSearchContent(result)),\n searchTerm: this.searchTerm,\n tagsToFilter: this.tagsToFilter,\n });\n }\n\n async redirectToGlossaryResults() {\n this.router.navigateByUrl(`/glossary?q[s]=${this.searchTerm}&q[tags]=${this.tagsToFilter.join(',')}`);\n }\n\n setTagsAndSearchTerm(tags: any[]) {\n const tagsWithoutNull = tags.filter((tag) => tag && (typeof tag === 'string' || tag.label));\n if (tags.length || tagsWithoutNull.length) {\n this.tagsToFilter = tagsWithoutNull.filter((tag) => typeof tag === 'string');\n this.searchTerm = tagsWithoutNull\n .filter((tag) => typeof tag != 'string')\n .map((tag) => tag.label)\n .join(' ');\n }\n return tagsWithoutNull;\n }\n\n setSearchParameters(searchParameters) {\n const tagsWithoutNull = this.setTagsAndSearchTerm(searchParameters);\n if (searchParameters.length || tagsWithoutNull.length) {\n this.searchParametersForm.setValue({ searchTerm: this.searchTerm, tags: this.tagsToFilter });\n }\n }\n\n setTagsToFilter(tags:string[]){\n this.tagsToFilter=tags\n this.searchParametersForm.setValue({tags:tags})\n }\n\n setSearchTerm(inputEvent) {\n this.searchTerm = inputEvent.target.value;\n if (!this.searchTerm) this.search();\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZ2xvc3Nhcnktc2lkZWJhci9nbG9zc2FyeS1zaWRlYmFyLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-glossary-sidebar',\n templateUrl: './glossary-sidebar.component.html',\n styleUrls: ['./glossary-sidebar.component.scss'],\n})\nexport class GlossarySidebarComponent implements OnInit {\n @Input() communities;\n content;\n\n constructor(private strapiService: StrapiService, private router: Router) {}\n\n ngOnInit() {\n if (!this.communities) {\n this.getCommunities().then((communities) => {\n this.communities = communities;\n });\n }\n }\n async getCommunities() {\n const communities = await this.strapiService.getAllOfContentType('communities', null, ['top_glossary_term']);\n return communities;\n }\n\n navigateToTopTermsPage(slug) {\n this.router.navigateByUrl(`/glossary/${slug}`);\n }\n}\n","export default \".list-group-item {\\n border-top: none !important;\\n border-left: none !important;\\n border-right: none !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2dsb3NzYXJ5LXRlcm0vZ2xvc3NhcnktdGVybS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9nbG9zc2FyeS10ZXJtL2dsb3NzYXJ5LXRlcm0uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSwyQkFBQTtFQUNBLDRCQUFBO0VBQ0EsNkJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZ2xvc3NhcnktdGVybS9nbG9zc2FyeS10ZXJtLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZSAgIWltcG9ydGFudDtcbiAgICBib3JkZXItbGVmdDogbm9uZSAgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmUgICFpbXBvcnRhbnQ7XG59IiwiLmxpc3QtZ3JvdXAtaXRlbSB7XG4gIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbiAgYm9yZGVyLWxlZnQ6IG5vbmUgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQ7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-glossary-term',\n templateUrl: './glossary-term.component.html',\n styleUrls: ['./glossary-term.component.scss']\n})\nexport class GlossaryTermComponent implements OnInit {\n @Input() glossaryTerm:any\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","export default \".right.dropdown-menu {\\n width: 100vh !important;\\n max-width: auto;\\n left: -170% !important;\\n background-color: #2b2b2b;\\n color: white !important;\\n}\\n\\nul,\\nli,\\na,\\n.collapse {\\n height: auto;\\n}\\n\\n.navbar {\\n align-self: center;\\n}\\n\\n.nav-link {\\n font-size: 1rem;\\n}\\n\\n.nav-up {\\n top: -40px;\\n}\\n\\n.fixed-top {\\n animation: fadeInDown 0.5s;\\n}\\n\\na:hover {\\n color: #f2638c !important;\\n}\\n\\n@media only screen and (max-width: 992px) {\\n .property.dropdown-menu {\\n width: 1rem !important;\\n left: -400% !important;\\n }\\n\\n .tools.dropdown-menu {\\n width: 1rem !important;\\n left: -730% !important;\\n }\\n}\\n\\n.translate-middle {\\n transform: translate(0%, -30%) !important;\\n}\\n\\n.notification-badge, .border-light {\\n transform: translate(-100%, -50%) !important;\\n border-color: none !important;\\n padding: 0.4rem !important;\\n}\\n\\n#my-account-notification-badge {\\n transform: translate(0%, -20%) !important;\\n}\\n\\n@media only screen and (min-width: 1600px) {\\n .account-menu.account {\\n right: 13% !important;\\n }\\n\\n .account-menu.tools {\\n right: 13% !important;\\n }\\n}\\n\\n.open-menu {\\n background-color: #2b2b2b;\\n color: white;\\n z-index: 5000 !important;\\n position: absolute;\\n width: 100% !important;\\n animation: fade-in 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) both;\\n top: 55px;\\n right: 0px;\\n}\\n\\n.account-menu {\\n background-color: #2b2b2b;\\n color: white;\\n z-index: 5000 !important;\\n position: absolute;\\n animation: fade-in 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) both;\\n top: 55px;\\n}\\n\\n.account-menu.account {\\n right: 1.5%;\\n}\\n\\n.account-menu.tools {\\n right: 3%;\\n}\\n\\n.btn-close {\\n color: white;\\n}\\n\\n/* ----------------------------------------\\n* animation fade-in\\n* ----------------------------------------\\n*/\\n\\n@keyframes fade-in {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n/* ----------------------------------------------\\n* Generated by Animista on 2023-2-20 12:51:12\\n* Licensed under FreeBSD License.\\n* See http://animista.net/license for more info. \\n* w: http://animista.net, t: @cssanimista\\n* ---------------------------------------------- */\\n\\n/**\\n* ----------------------------------------\\n* animation fade-out\\n* ----------------------------------------\\n*/\\n\\n@keyframes fade-out {\\n 0% {\\n opacity: 1;\\n }\\n 100% {\\n opacity: 0;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHVCQUFBO0VBQ0EsZUFBQTtFQUNBLHNCQUFBO0VBQ0EseUJBQUE7RUFDQSx1QkFBQTtBQ0NGOztBREVBOzs7O0VBSUUsWUFBQTtBQ0NGOztBREVBO0VBQ0Usa0JBQUE7QUNDRjs7QURFQTtFQUNFLGVBQUE7QUNDRjs7QURLQTtFQUNFLFVBQUE7QUNGRjs7QURVQTtFQUNFLDBCQUFBO0FDUEY7O0FEVUE7RUFDRSx5QkFBQTtBQ1BGOztBRFdBO0VBQ0U7SUFDRSxzQkFBQTtJQUNBLHNCQUFBO0VDUkY7O0VEV0E7SUFDRSxzQkFBQTtJQUNBLHNCQUFBO0VDUkY7QUFDRjs7QURZQTtFQUNFLHlDQUFBO0FDVkY7O0FEY0E7RUFDRSw0Q0FBQTtFQUNBLDZCQUFBO0VBQ0EsMEJBQUE7QUNYRjs7QURhQTtFQUNFLHlDQUFBO0FDVkY7O0FEMEJBO0VBQ0U7SUFDRSxxQkFBQTtFQ3ZCRjs7RUQwQkE7SUFDRSxxQkFBQTtFQ3ZCRjtBQUNGOztBRDJCQTtFQUNFLHlCQUFBO0VBQ0EsWUFBQTtFQUNBLHdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxzQkFBQTtFQUNBLGdFQUFBO0VBQ0EsU0FBQTtFQUNBLFVBQUE7QUN6QkY7O0FENkJBO0VBQ0UseUJBQUE7RUFDQSxZQUFBO0VBQ0Esd0JBQUE7RUFDQSxrQkFBQTtFQUVBLGdFQUFBO0VBQ0EsU0FBQTtBQzNCRjs7QURnQ0E7RUFDRSxXQUFBO0FDN0JGOztBRGdDQTtFQUNFLFNBQUE7QUM3QkY7O0FEZ0NBO0VBQ0UsWUFBQTtBQzdCRjs7QURnQ0E7OztDQUFBOztBQUlBO0VBQ0U7SUFDRSxVQUFBO0VDN0JGO0VEZ0NBO0lBQ0UsVUFBQTtFQzlCRjtBQUNGOztBRGlDQTs7Ozs7a0RBQUE7O0FBTUE7Ozs7Q0FBQTs7QUFLQTtFQUNFO0lBQ0UsVUFBQTtFQy9CRjtFRGtDQTtJQUNFLFVBQUE7RUNoQ0Y7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5yaWdodC5kcm9wZG93bi1tZW51IHtcbiAgd2lkdGg6IDEwMHZoICFpbXBvcnRhbnQ7XG4gIG1heC13aWR0aDogYXV0bztcbiAgbGVmdDogLTE3MCUgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJiMmIyYjtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbnVsLFxubGksXG5hLFxuLmNvbGxhcHNlIHtcbiAgaGVpZ2h0OiBhdXRvXG59XG5cbi5uYXZiYXIge1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG59XG5cbi5uYXYtbGluayB7XG4gIGZvbnQtc2l6ZTogMXJlbTtcblxufVxuXG5cblxuLm5hdi11cCB7XG4gIHRvcDogLTQwcHg7IC8vIHNhbWUgYXMgaGVhZGVyIGhlaWdodFxufVxuXG4vL2NvbW1lbnRlZCBvdXQgYXMgaXQgb3ZlcmxhcHMgd2l0aCBodGMgbW9kYWxcbmhlYWRlciB7XG4gIC8vIHotaW5kZXg6MjAwMCAhaW1wb3J0YW50XG59XG5cbi5maXhlZC10b3Age1xuICBhbmltYXRpb246IGZhZGVJbkRvd24gLjVzO1xufVxuXG5hOmhvdmVyIHtcbiAgY29sb3I6ICNmMjYzOGMgIWltcG9ydGFudDtcblxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MnB4KSB7XG4gIC5wcm9wZXJ0eS5kcm9wZG93bi1tZW51IHtcbiAgICB3aWR0aDogMXJlbSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IC00MDAlICFpbXBvcnRhbnQ7XG4gIH1cblxuICAudG9vbHMuZHJvcGRvd24tbWVudSB7XG4gICAgd2lkdGg6IDFyZW0gIWltcG9ydGFudDtcbiAgICBsZWZ0OiAtNzMwJSAhaW1wb3J0YW50O1xuICB9XG5cbn1cbi8vZm9yIG5vdGlmaWNhdGlvbiBiYWRnZSBvbiAnTm90aWZpY2F0aW9ucydcbi50cmFuc2xhdGUtbWlkZGxlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTAlLCAtMzAlKSAhaW1wb3J0YW50O1xufVxuXG4vL2ZvciBub3RpZmljYXRpb24gYmFkZ2Ugb24gUHJvZmlsZSBpY29uXG4ubm90aWZpY2F0aW9uLWJhZGdlLC5ib3JkZXItbGlnaHR7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAlLCAtNTAlKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IG5vbmUgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMC40cmVtICFpbXBvcnRhbnRcbn1cbiNteS1hY2NvdW50LW5vdGlmaWNhdGlvbi1iYWRnZSB7XG4gIHRyYW5zZm9ybTp0cmFuc2xhdGUoMCUsIC0yMCUpICFpbXBvcnRhbnRcbn1cblxuLy8gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTJweCkge1xuLy8gICAucHJvcGVydHkuZHJvcGRvd24tbWVudSB7XG4vLyAgICAgd2lkdGg6IDFyZW0gIWltcG9ydGFudDtcbi8vICAgICBsZWZ0OiAtNDAwJSAhaW1wb3J0YW50O1xuLy8gICB9XG5cbi8vICAgLnRvb2xzLmRyb3Bkb3duLW1lbnUge1xuLy8gICAgIHdpZHRoOiAxcmVtICFpbXBvcnRhbnQ7XG4vLyAgICAgbGVmdDogLTcwMCUgIWltcG9ydGFudDtcbi8vICAgfVxuXG4vLyB9IFxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE2MDBweCkge1xuICAuYWNjb3VudC1tZW51LmFjY291bnQge1xuICAgIHJpZ2h0OiAxMyUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5hY2NvdW50LW1lbnUudG9vbHMge1xuICAgIHJpZ2h0OiAxMyUgIWltcG9ydGFudDtcbiAgfVxuXG59XG5cbi5vcGVuLW1lbnUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmIyYjJiO1xuICBjb2xvcjogd2hpdGU7XG4gIHotaW5kZXg6IDUwMDAgIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBhbmltYXRpb246IGZhZGUtaW4gMC42cyBjdWJpYy1iZXppZXIoMC4zOTAsIDAuNTc1LCAwLjU2NSwgMS4wMDApIGJvdGg7XG4gIHRvcDogNTVweDtcbiAgcmlnaHQ6IDBweDtcblxufVxuXG4uYWNjb3VudC1tZW51IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJiMmIyYjtcbiAgY29sb3I6IHdoaXRlO1xuICB6LWluZGV4OiA1MDAwICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgLy8gd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgYW5pbWF0aW9uOiBmYWRlLWluIDAuNnMgY3ViaWMtYmV6aWVyKDAuMzkwLCAwLjU3NSwgMC41NjUsIDEuMDAwKSBib3RoO1xuICB0b3A6IDU1cHg7XG5cblxufVxuXG4uYWNjb3VudC1tZW51LmFjY291bnQge1xuICByaWdodDogMS41JTtcbn1cblxuLmFjY291bnQtbWVudS50b29scyB7XG4gIHJpZ2h0OiAzJVxufVxuXG4uYnRuLWNsb3NlIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4qIGFuaW1hdGlvbiBmYWRlLWluXG4qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiovXG5Aa2V5ZnJhbWVzIGZhZGUtaW4ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiBHZW5lcmF0ZWQgYnkgQW5pbWlzdGEgb24gMjAyMy0yLTIwIDEyOjUxOjEyXG4qIExpY2Vuc2VkIHVuZGVyIEZyZWVCU0QgTGljZW5zZS5cbiogU2VlIGh0dHA6Ly9hbmltaXN0YS5uZXQvbGljZW5zZSBmb3IgbW9yZSBpbmZvLiBcbiogdzogaHR0cDovL2FuaW1pc3RhLm5ldCwgdDogQGNzc2FuaW1pc3RhXG4qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qKlxuKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4qIGFuaW1hdGlvbiBmYWRlLW91dFxuKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4qL1xuQGtleWZyYW1lcyBmYWRlLW91dCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufSIsIi5yaWdodC5kcm9wZG93bi1tZW51IHtcbiAgd2lkdGg6IDEwMHZoICFpbXBvcnRhbnQ7XG4gIG1heC13aWR0aDogYXV0bztcbiAgbGVmdDogLTE3MCUgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJiMmIyYjtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbnVsLFxubGksXG5hLFxuLmNvbGxhcHNlIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4ubmF2YmFyIHtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG4ubmF2LWxpbmsge1xuICBmb250LXNpemU6IDFyZW07XG59XG5cbi5uYXYtdXAge1xuICB0b3A6IC00MHB4O1xufVxuXG4uZml4ZWQtdG9wIHtcbiAgYW5pbWF0aW9uOiBmYWRlSW5Eb3duIDAuNXM7XG59XG5cbmE6aG92ZXIge1xuICBjb2xvcjogI2YyNjM4YyAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MnB4KSB7XG4gIC5wcm9wZXJ0eS5kcm9wZG93bi1tZW51IHtcbiAgICB3aWR0aDogMXJlbSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IC00MDAlICFpbXBvcnRhbnQ7XG4gIH1cblxuICAudG9vbHMuZHJvcGRvd24tbWVudSB7XG4gICAgd2lkdGg6IDFyZW0gIWltcG9ydGFudDtcbiAgICBsZWZ0OiAtNzMwJSAhaW1wb3J0YW50O1xuICB9XG59XG4udHJhbnNsYXRlLW1pZGRsZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAlLCAtMzAlKSAhaW1wb3J0YW50O1xufVxuXG4ubm90aWZpY2F0aW9uLWJhZGdlLCAuYm9yZGVyLWxpZ2h0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCUsIC01MCUpICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogbm9uZSAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwLjRyZW0gIWltcG9ydGFudDtcbn1cblxuI215LWFjY291bnQtbm90aWZpY2F0aW9uLWJhZGdlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCUsIC0yMCUpICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTYwMHB4KSB7XG4gIC5hY2NvdW50LW1lbnUuYWNjb3VudCB7XG4gICAgcmlnaHQ6IDEzJSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmFjY291bnQtbWVudS50b29scyB7XG4gICAgcmlnaHQ6IDEzJSAhaW1wb3J0YW50O1xuICB9XG59XG4ub3Blbi1tZW51IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJiMmIyYjtcbiAgY29sb3I6IHdoaXRlO1xuICB6LWluZGV4OiA1MDAwICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgYW5pbWF0aW9uOiBmYWRlLWluIDAuNnMgY3ViaWMtYmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSkgYm90aDtcbiAgdG9wOiA1NXB4O1xuICByaWdodDogMHB4O1xufVxuXG4uYWNjb3VudC1tZW51IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJiMmIyYjtcbiAgY29sb3I6IHdoaXRlO1xuICB6LWluZGV4OiA1MDAwICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYW5pbWF0aW9uOiBmYWRlLWluIDAuNnMgY3ViaWMtYmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSkgYm90aDtcbiAgdG9wOiA1NXB4O1xufVxuXG4uYWNjb3VudC1tZW51LmFjY291bnQge1xuICByaWdodDogMS41JTtcbn1cblxuLmFjY291bnQtbWVudS50b29scyB7XG4gIHJpZ2h0OiAzJTtcbn1cblxuLmJ0bi1jbG9zZSB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiBhbmltYXRpb24gZmFkZS1pblxuKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4qL1xuQGtleWZyYW1lcyBmYWRlLWluIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiBHZW5lcmF0ZWQgYnkgQW5pbWlzdGEgb24gMjAyMy0yLTIwIDEyOjUxOjEyXG4qIExpY2Vuc2VkIHVuZGVyIEZyZWVCU0QgTGljZW5zZS5cbiogU2VlIGh0dHA6Ly9hbmltaXN0YS5uZXQvbGljZW5zZSBmb3IgbW9yZSBpbmZvLiBcbiogdzogaHR0cDovL2FuaW1pc3RhLm5ldCwgdDogQGNzc2FuaW1pc3RhXG4qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qKlxuKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4qIGFuaW1hdGlvbiBmYWRlLW91dFxuKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4qL1xuQGtleWZyYW1lcyBmYWRlLW91dCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn0iXX0= */\"","import { Component, HostListener, Input, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { filter } from 'rxjs/operators';\nimport { AuthenticationService } from 'src/app/services/authentication.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { LandingSearchbarComponent } from '../landing-searchbar/landing-searchbar.component';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { Subscription, interval } from 'rxjs';\nimport { ConfigService } from 'src/app/services/app-config.service';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\n\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\n\nexport class HeaderComponent implements OnInit {\n\n @Input() url;\n @ViewChild('searchBar', { static: true }) searchBar: LandingSearchbarComponent;\n\n public navbarCollapsed = true;\n loginStatus: string;\n heatPumpServices: boolean = false;\n energyData: boolean = false;\n ourServices: boolean = false\n tools: boolean = false;\n search: boolean = false;\n offCanvas: boolean = false\n accountMenu: boolean = false;\n toolsMenu: boolean = false;\n innerWidth: number;\n virtualEntities\n roles\n user\n notificationLength;\n customerNotificationsLength;\n estimateRequests\n accountPages = false;\n notificationsRefreshSubscription: Subscription\n roleSubscription: Subscription\n notificationsStatusSubscription: Subscription\n subscriptionVirtualEntityList: Subscription\n accountPageNames = ['/pages/account', '/pages/property', '/pages/tools', '/professional/account', 'professional/landing', 'professional/tools']\n lastScrollPos = window.pageYOffset || document.documentElement.scrollTop;\n public hasValidAccessToken = false;\n headerPages = []\n @HostListener('document:click', ['$event']) onDocumentClick(event) {\n //checks if doc has been clicked to close menu\n this.navbarCollapsed = true;\n }\n @HostListener('mouseleave', ['$event']) onLeave(e: MouseEvent) {\n this.closeMenus()\n }\n\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n if (this.innerWidth >= 992) {\n this.closeMenus()\n }\n }\n\n @HostListener('window:scroll', []) addStyles() {\n const stickyNav: any = document.querySelector('.navbar-sticky');\n // const stickyHeight = stickyNav.offsetHeight;\n const stickyHeight = stickyNav.scrollHeight;\n // const stickySpace: any = document.querySelector('#sticky-space');\n const scTop = window.pageYOffset || document.documentElement.scrollTop;\n if (stickyNav) {\n if (scTop < this.lastScrollPos && scTop > 0) {\n // stickySpace.addClass('active');\n // (document.querySelector('#sticky-space.active') as any).style.height = stickyHeight + 'px';\n if (!stickyNav.className.includes('fixed-top')) {\n stickyNav.addClass('fixed-top');\n stickyNav.style.top = '0';\n }\n this.lastScrollPos = scTop;\n } else {\n // stickySpace.removeClass('active');\n // stickySpace.style.height = '0px';\n stickyNav.removeClass('fixed-top');\n stickyNav.style.top = `${-stickyHeight}`;\n this.lastScrollPos = scTop;\n }\n }\n }\n\n constructor(\n private router: Router,\n private glowService: GlowService,\n private auth: AuthenticationService,\n public oauthService: OAuthService,\n private invitationsService: InvitationsService,\n private configService: ConfigService,\n private veService: VirtualEntityService,\n\n ) {\n this.onResize();\n\n this.roleSubscription = this.auth.roleSet.subscribe((resp) => {\n this.roles = resp\n this.setPagesOnLoginStatus()\n })\n\n const navEndEvent$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n navEndEvent$.subscribe((e: NavigationEnd) => {\n this.hasValidAccessToken = this.oauthService.hasValidAccessToken();\n this.loginStatus = this.hasValidAccessToken ? 'logged in' : localStorage.length > 0 && localStorage.getItem('id_token') ? 'logged in' : 'logged out';\n if (this.hasValidAccessToken) {\n this.getRoleFromLocalStorage()\n }\n this.setPagesOnLoginStatus()\n });\n\n this.notificationsStatusSubscription = this.invitationsService.PendingAcceptanceEstimateAnnouncer.subscribe((resp) => {\n if (resp.estimateRequests) {\n this.notificationLength = resp.estimateRequests.length\n } else this.notificationLength = 0\n })\n this.subscriptionVirtualEntityList = this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n if (veList && veList.length) {\n this.processVeList(veList)\n if (this.estimateRequests && this.estimateRequests.length) {\n await this.invitationsService.validateVirtualEntitites(this.virtualEntities)\n if (this.invitationsService.validVEs.length) {\n this.notificationLength = this.estimateRequests.length\n } else {\n this.notificationLength = 1\n }\n } else { this.notificationLength = 0 }\n } else {\n if (this.estimateRequests && this.estimateRequests.length) {\n this.notificationLength = 1\n\n }\n }\n });\n this.notificationsStatusSubscription = this.invitationsService.EstimatesAnnouncer.subscribe((resp) => {\n if (resp.valid) {\n this.estimateRequests = resp.estimateRequests.filter(estimateRequest => estimateRequest.estimateRequestState == 'pending-user-eligibility')\n this.veService.findVirtualEntities()\n } else {\n this.notificationLength = 0\n }\n })\n\n\n this.setPagesOnLoginStatus()\n\n }\n\n ngOnInit(): void {\n\n this.stickyOn();\n this.checkIfUrlIsAccountPage();\n this.hasValidAccessToken = this.oauthService.hasValidAccessToken();\n // this.checkNotifications()\n this.initialiseTimeObservables()\n if (this.hasValidAccessToken) {\n this.invitationsService.getAllEstimateRequestsByState('pending-professional-acceptance')\n } else {\n this.invitationsService.getAllEstimateRequests()\n }\n }\n \n ngOnDestroy() {\n if (this.notificationsRefreshSubscription) {\n this.notificationsRefreshSubscription.unsubscribe()\n }\n if (this.notificationsStatusSubscription) {\n this.notificationsStatusSubscription.unsubscribe()\n }\n }\n getRoleFromLocalStorage() {\n this.roles = this.auth.getOIDCUserRolesFromLocalStorage()\n this.setPagesOnLoginStatus()\n\n }\n\n\n private initialiseTimeObservables() {\n let eventTimeConfigation = this.configService.getRefreshRateConfigurations();\n\n if (!this.notificationsRefreshSubscription) {\n this.notificationsRefreshSubscription = interval(eventTimeConfigation.notifications).subscribe(() => {\n this.checkNotifications()\n })\n }\n }\n processVeList(veList) {\n this.virtualEntities = veList;\n }\n\n checkNotifications() {\n if (this.hasValidAccessToken) {\n // console.log('checking notifs')\n this.invitationsService.getAllEstimateRequestsByState('pending-professional-acceptance')\n } else {\n\n this.invitationsService.getAllEstimateRequests()\n }\n }\n getLogInStatus() {\n return this.loginStatus\n }\n ngAfterContentChecked() {\n this.checkIfUrlIsAccountPage();\n }\n\n stickyOn() {\n const stickyNav: any = document.querySelector('.navbar-sticky');\n }\n\n //determines header on account page on phone screens\n checkIfUrlIsAccountPage() {\n this.accountPages = false\n if (!this.url) {\n this.accountPages = false;\n return;\n }\n const url = this.url\n this.accountPageNames.forEach((page) => {\n if (url.includes(page)) {\n this.accountPages = true;\n }\n })\n }\n\n goToLanding() {\n this.closeMenus()\n this.router.navigateByUrl('/home');\n }\n\n goToLogin() {\n this.closeMenus()\n this.router.navigateByUrl('/login');\n }\n\n logOut() {\n if (this.hasValidAccessToken) {\n this.auth.signout();\n this.router.navigateByUrl('/login');\n } else {\n this.glowService.logout().subscribe(\n (resp) => {\n // // console.log('logout', resp);\n this.router.navigateByUrl('/login');\n },\n (err) => {\n console.warn(err);\n }\n );\n }\n }\n\n closeMenus(e?) {\n this.heatPumpServices = false\n this.energyData = false\n this.ourServices = false\n this.tools = false\n this.search = false\n this.offCanvas = false\n this.accountMenu = false\n }\n\n openOffCanvas(event) {\n if (this.offCanvas) {\n this.closeMenus()\n event.stopPropagation();\n } else this.offCanvas = true\n }\n\n\n openMenu(event, menu) {\n this.closeMenus()\n event.stopPropagation()\n switch (menu) {\n case 'Heat pump services':\n return this.heatPumpServices = true\n case 'Energy data':\n return this.energyData = true;\n case 'Our services':\n return this.ourServices = true\n case 'Tools':\n return this.tools = true;\n case 'Search':\n return this.search = true\n case 'Account menu':\n return this.accountMenu = true;\n default:\n return;\n }\n }\n\n\n setPagesOnLoginStatus() {\n let pages = [{\n name: 'Heat Pump Resources',\n pages: [\n { path: '/community/heat-pump', title: 'Resources' },\n { path: '/case-studies', title: 'Case Studies' },\n { path: '/about-community/heat-pump', title: 'About Heat Pump Community' },\n { path: '/find-a-professional', title: 'Find an installer' },\n { path: this.loginStatus === 'logged in' ? '/pages/tools/heat-pump-cost-estimation' : '/login', title: 'Heat Pump Cost Estimation' },\n { path: this.loginStatus === 'logged in' ? '/pages/tools/heating-by-room' : '/login', title: 'Heating by room' },\n { path: this.loginStatus === 'logged in' ? '/pages/tools/estimated-thermal-performance' : '/login', title: 'Heat Retention Score' },\n ],\n },\n {\n name: 'Energy data',\n pages: [\n { path: '/community/energy-data', title: 'Resources' },\n { path: '/about-community/energy-data', title: 'About Energy Data' },\n { path: this.loginStatus === 'logged in' ? '/pages/property/energy-data' : '/login', title: 'Download your data' },\n ],\n },\n {\n name: 'Our services',\n pages: [\n { path: '/bright', title: 'Bright' },\n // { path: '/installers', title: 'Installers' },\n { path: 'https://forum.glowmarkt.com/', title: 'Visit our forum' },\n { path: 'https://shop.glowmarkt.com/', title: 'Visit our shop' },\n\n\n ],\n },\n {\n name: 'Tools',\n pages: [\n { path: '/pages/tools/heating-by-room', title: 'Heating by Room' },\n { path: '/pages/tools/estimated-thermal-performance', title: 'Heat Retention Score' },\n { path: '/pages/tools/heat-pump-cost-estimation', title: 'Heat Pump Cost Estimation' },\n { path: '/pages/tools/case-study-creator', title: 'Case Study Creator' },\n ]\n },\n {\n name: 'Account pages',\n pages: [\n { path: this.hasValidAccessToken ? 'professional/landing' : '/pages/property', title: this.hasValidAccessToken ? 'Dashboard' : 'Properties', icon: 'bi bi-house-door' },\n\n { path: this.hasValidAccessToken ? '/professional/account/settings/profile' : '/pages/account/settings/account-settings', title: 'Settings', icon: 'bi bi-gear' },\n\n ]\n }\n ]\n\n let propertyPassportPage = { path: '/pages/account/property-passport', title: 'Property Passport', icon: 'bi bi-newspaper' }\n let invitationsPage = { path: this.hasValidAccessToken ? 'professional/account/invitations' : '/pages/account/invitations', title: 'Invitations', icon: 'bi bi-envelope' }\n let professionalNotificationsPage = { path: this.hasValidAccessToken ? '/professional/account/notifications' : '/pages/account/notifications', title: 'Notifications', icon: 'bi bi-bell' }\n let index = pages.findIndex(p => p.name == 'Account pages')\n\n //inserts property passport page for customers only \n !this.hasValidAccessToken ? pages[index].pages.splice(1, 0, propertyPassportPage) : null\n\n // insert invitations and notifications for customers and installer professional accounts only\n !this.hasValidAccessToken || this.hasValidAccessToken && this.roles[0].role == 'installer' ? pages[index].pages.splice(1, 0, invitationsPage) : null\n\n !this.hasValidAccessToken || this.hasValidAccessToken && this.roles[0].role == 'installer' ? pages[index].pages.splice(1, 0, professionalNotificationsPage) : null\n\n this.headerPages = pages\n }\n\n\n\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeaderComponent } from './header.component';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { LandingSearchBarModule } from '../landing-searchbar/landing-searchbar.module';\nimport { PublicPagesModule } from 'src/app/public/public.module';\n\n@NgModule({\n declarations: [HeaderComponent],\n imports: [CommonModule, NgbModule, SharedModule, LandingSearchBarModule ],\n exports:[HeaderComponent]\n})\nexport class HeaderModule {}","export default \".table-wrapper {\\n width: 300px;\\n color: white;\\n}\\n\\ntable {\\n border: none !important;\\n}\\n\\nth {\\n border: none;\\n}\\n\\ntr {\\n display: flex;\\n justify-content: space-between;\\n}\\n\\n.ratings {\\n width: 100%;\\n display: flex;\\n padding: 0px;\\n border: none;\\n}\\n\\n.result {\\n display: flex;\\n justify-content: flex-end;\\n padding: 0px;\\n border: none;\\n}\\n\\ntr {\\n width: 100%;\\n}\\n\\n.rating {\\n width: 60px;\\n padding: 5px;\\n color: white;\\n font-size: 1.1rem;\\n font-weight: 600;\\n}\\n\\n.result-on-arrow {\\n width: 40px;\\n padding: 5px;\\n color: white;\\n display: flex;\\n justify-content: flex-end;\\n font-size: 1rem;\\n font-weight: 600;\\n align-self: center;\\n}\\n\\n.arrow {\\n border-top: 20px solid transparent;\\n border-bottom: 20px solid transparent;\\n border-right: 20px solid green;\\n float: right;\\n}\\n\\n.rating-name {\\n display: flex;\\n justify-content: flex-end;\\n padding: 5px;\\n color: white;\\n font-size: 1rem;\\n font-weight: 600;\\n}\\n\\n.text {\\n font-size: 0.8rem;\\n font-weight: 600;\\n color: #676767;\\n}\\n\\n.table > :not(caption) > * > * {\\n padding: 0px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2hlYXQtbG9zcy1wYXJhbWV0ZXItc2NhbGUvaGVhdC1sb3NzLXBhcmFtZXRlci1zY2FsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9oZWF0LWxvc3MtcGFyYW1ldGVyLXNjYWxlL2hlYXQtbG9zcy1wYXJhbWV0ZXItc2NhbGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxZQUFBO0VBQ0EsWUFBQTtBQ0NKOztBREdBO0VBQ0ksdUJBQUE7QUNBSjs7QURJQTtFQUNJLFlBQUE7QUNESjs7QURJQTtFQUNJLGFBQUE7RUFDQSw4QkFBQTtBQ0RKOztBRElBO0VBQ0ksV0FBQTtFQUNBLGFBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtBQ0RKOztBRElBO0VBQ0ksYUFBQTtFQUNBLHlCQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7QUNESjs7QURJQTtFQUNJLFdBQUE7QUNESjs7QURJQTtFQUNJLFdBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7QUNESjs7QURJQTtFQUNJLFdBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSx5QkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0FDREo7O0FETUE7RUFDSSxrQ0FBQTtFQUNBLHFDQUFBO0VBQ0EsOEJBQUE7RUFDQSxZQUFBO0FDSEo7O0FETUE7RUFDSSxhQUFBO0VBQ0EseUJBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUVBLGVBQUE7RUFDQSxnQkFBQTtBQ0pKOztBRE9BO0VBQ0ksaUJBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7QUNKSjs7QURNQTtFQUNJLFlBQUE7QUNISiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaGVhdC1sb3NzLXBhcmFtZXRlci1zY2FsZS9oZWF0LWxvc3MtcGFyYW1ldGVyLXNjYWxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRhYmxlLXdyYXBwZXIge1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBjb2xvcjogd2hpdGU7XG4gIFxufVxuXG50YWJsZSB7XG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgLy8gbWFyZ2luOiAyMHB4IDA7XG59XG5cbnRoIHtcbiAgICBib3JkZXI6IG5vbmU7XG59XG5cbnRyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLnJhdGluZ3Mge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGJvcmRlcjogbm9uZVxufVxuXG4ucmVzdWx0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxudHIge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ucmF0aW5nIHtcbiAgICB3aWR0aDogNjBweDtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5yZXN1bHQtb24tYXJyb3cge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGZvbnQtc2l6ZTogMS4wcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuXG5cbn1cblxuLmFycm93IHtcbiAgICBib3JkZXItdG9wOiAyMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b206IDIwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJpZ2h0OiAyMHB4IHNvbGlkIGdyZWVuO1xuICAgIGZsb2F0OiByaWdodDtcbn1cblxuLnJhdGluZy1uYW1lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgIGZvbnQtc2l6ZTogMS4wcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi50ZXh0IHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAjNjc2NzY3XG59XG4udGFibGUgPiA6bm90KGNhcHRpb24pID4gKiA+ICp7XG4gICAgcGFkZGluZzogMHB4XG59IiwiLnRhYmxlLXdyYXBwZXIge1xuICB3aWR0aDogMzAwcHg7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxudGFibGUge1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxudGgge1xuICBib3JkZXI6IG5vbmU7XG59XG5cbnRyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4ucmF0aW5ncyB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAwcHg7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLnJlc3VsdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmc6IDBweDtcbiAgYm9yZGVyOiBub25lO1xufVxuXG50ciB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ucmF0aW5nIHtcbiAgd2lkdGg6IDYwcHg7XG4gIHBhZGRpbmc6IDVweDtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDEuMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnJlc3VsdC1vbi1hcnJvdyB7XG4gIHdpZHRoOiA0MHB4O1xuICBwYWRkaW5nOiA1cHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG59XG5cbi5hcnJvdyB7XG4gIGJvcmRlci10b3A6IDIwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1ib3R0b206IDIwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogMjBweCBzb2xpZCBncmVlbjtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuXG4ucmF0aW5nLW5hbWUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBwYWRkaW5nOiA1cHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4udGV4dCB7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogIzY3Njc2Nztcbn1cblxuLnRhYmxlID4gOm5vdChjYXB0aW9uKSA+ICogPiAqIHtcbiAgcGFkZGluZzogMHB4O1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-heat-loss-parameter-scale',\n templateUrl: './heat-loss-parameter-scale.component.html',\n styleUrls: ['./heat-loss-parameter-scale.component.scss']\n})\n\nexport class HeatLossParameterScaleComponent implements OnInit {\n\n @Input()HLP: Number = 0\n\n constructor() { }\n\n ngOnInit() { }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeatLossParameterScaleComponent } from './heat-loss-parameter-scale.component';\n\n@NgModule({\n declarations: [HeatLossParameterScaleComponent],\n imports: [\n CommonModule\n ],\n exports: [HeatLossParameterScaleComponent],\n entryComponents: [HeatLossParameterScaleComponent]\n})\n\nexport class HeatLossParameterScaleModule { }","export default \"form .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2hlYXQtcHVtcC1jb3N0LWVzdGltYXRpb24tcGFyYW1zLWZvcm0vaGVhdC1wdW1wLWNvc3QtZXN0aW1hdGlvbi1wYXJhbXMtZm9ybS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9oZWF0LXB1bXAtY29zdC1lc3RpbWF0aW9uLXBhcmFtcy1mb3JtL2hlYXQtcHVtcC1jb3N0LWVzdGltYXRpb24tcGFyYW1zLWZvcm0uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUk7RUFDSSwyQkFBQTtBQ0RSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9oZWF0LXB1bXAtY29zdC1lc3RpbWF0aW9uLXBhcmFtcy1mb3JtL2hlYXQtcHVtcC1jb3N0LWVzdGltYXRpb24tcGFyYW1zLWZvcm0uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcblxuICAgIC5uZy10b3VjaGVkLm5nLWludmFsaWQge1xuICAgICAgICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHg7XG4gICAgfVxuICAgIC8vIC5uZy10b3VjaGVkLm5nLWludmFsaWQ6bm90KCNtc2NzLW51bWJlcikge1xuICAgIC8vICAgICBib3JkZXI6IHNvbGlkIHJlZCAwLjVweDtcbiAgICAvLyB9XG59IiwiZm9ybSAubmctdG91Y2hlZC5uZy1pbnZhbGlkIHtcbiAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xufSJdfQ== */\"","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\n\n@Component({\n selector: 'app-heat-pump-cost-estimation-params-form',\n templateUrl: './heat-pump-cost-estimation-params-form.component.html',\n styleUrls: ['./heat-pump-cost-estimation-params-form.component.scss'],\n})\nexport class HeatPumpCostEstimationParamsFormComponent implements OnInit {\n @Output() submit = new EventEmitter();\n @Input() inputs: any = {};\n @Input() checkValidity: boolean=false\n\n loading = false;\n detailsForm;\n formErrorMessage: boolean;\n constructor(private fb: FormBuilder, private formValidationService: FormValidationService) {}\n\n ngOnInit() {\n this.initDetailsForm();\n if (!this.detailsForm.valid && this.checkValidity) {\n this.showErrorMsg();\n }\n }\n\n initDetailsForm() {\n this.detailsForm = this.fb.group({\n annualGasConsumption: [this.inputs.annualGasConsumption, [Validators.required, Validators.min(1)]],\n unitRateGas: [this.inputs.unitRateGas, [Validators.required, Validators.min(1)]],\n standingChargeGas: [this.inputs.standingChargeGas, [Validators.required, Validators.min(1)]],\n unitRateElectricity: [this.inputs.unitRateElectricity, [Validators.required, Validators.min(1)]],\n standingChargeElectricity: [this.inputs.standingChargeElectricity, [Validators.required, Validators.min(1)]],\n heatPumpCop: [this.inputs.heatPumpCop ? this.inputs.heatPumpCop : 3.7, [Validators.required, Validators.min(1)]],\n });\n }\n\n checkFormValidity(formControlName, translateKey?) {\n return this.formValidationService.checkFormValidity(this.detailsForm, formControlName, translateKey);\n }\n\n showErrorMsg() {\n this.formErrorMessage = true;\n this.formValidationService.markFormGroup(this.detailsForm, 'touched');\n }\n resetErrorMsg() {\n this.formErrorMessage = false;\n }\n\n onSubmit() {\n // console.log(this.detailsForm.valid);\n if (!this.detailsForm.valid) {\n this.showErrorMsg();\n } else {\n this.loading = true;\n this.submit.emit(this.detailsForm.value);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeatPumpCostEstimationParamsFormComponent } from './heat-pump-cost-estimation-params-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\n\n@NgModule({\n declarations: [HeatPumpCostEstimationParamsFormComponent],\n imports: [CommonModule, SharedModule, FormValidationMessageModule],\n exports: [HeatPumpCostEstimationParamsFormComponent],\n})\nexport class HeatPumpCostEstimationParamsFormModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaGVscC1tb2RhbC9oZWxwLW1vZGFsLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-help-modal',\n templateUrl: './help-modal.component.html',\n styleUrls: ['./help-modal.component.scss'],\n})\n\nexport class HelpModalComponent implements OnInit {\n\n @Input() pageTitle: string;\n @Input() modalBodyContent: string;\n\n constructor(public activeModal: NgbActiveModal) { }\n\n ngOnInit() { }\n\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HelpModalComponent } from './help-modal.component';\nimport { PipesModule } from 'src/app/shared/pipes/pipes.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [HelpModalComponent],\n imports: [\n CommonModule,\n SharedModule\n ],\n exports: [HelpModalComponent],\n entryComponents: [HelpModalComponent]\n})\n\nexport class HelpModalModule { }","export default \".line {\\n background-color: #a2a2a2;\\n height: 100%;\\n width: 2px;\\n}\\n\\n.line.complete {\\n background-color: #24b795;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2hwLWpvdXJuZXktbW9kYWwvaHAtam91cm5leS1tb2RhbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9ocC1qb3VybmV5LW1vZGFsL2hwLWpvdXJuZXktbW9kYWwuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSx5QkFBQTtFQUNBLFlBQUE7RUFDQSxVQUFBO0FDQ0o7O0FERUE7RUFDSSx5QkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9ocC1qb3VybmV5LW1vZGFsL2hwLWpvdXJuZXktbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubGluZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE2MiwgMTYyLCAxNjIpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMnB4O1xuICBcbn1cbi5saW5lLmNvbXBsZXRlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjRiNzk1O1xuXG5cblxufSIsIi5saW5lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2EyYTJhMjtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMnB4O1xufVxuXG4ubGluZS5jb21wbGV0ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNGI3OTU7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormArray, Validators } from '@angular/forms';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { HpJourneyService } from 'src/app/services/hp-journey.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\nimport { Utils } from 'src/utils';\ndeclare var require: any;\nvar FileSaver = require('file-saver');\n@Component({\n selector: 'app-hp-journey-modal',\n templateUrl: './hp-journey-modal.component.html',\n styleUrls: ['./hp-journey-modal.component.scss']\n})\nexport class HpJourneyModalComponent implements OnInit {\n invitationForm: FormGroup\n siteVisitForm: FormGroup\n stepNumber: Number = 1\n steps\n error: boolean\n sendEstimateRequestError: boolean\n schematicDocument\n loading: boolean = false\n allVESensorList\n passport;\n account: any\n loadObj: tLoadingElement\n lastMonth: string\n lastYear: string\n installers: Array\n emailError: boolean\n setDateErrorMessage: string\n errorMessage: string\n successMessage: string\n acceptedEstimateRequests = []\n estimateRequestsWithSnapshot\n allEstimateRequests;\n allEstimates = []\n mostRecentSnapshot\n manualHTC\n virtualEntities\n pendingEstimateRequests;\n validVEs\n invalidVEs\n respondToInviteError: boolean\n stepsSubscription: Subscription\n schematicSubscription: Subscription\n subscriptionSensorVirtualEntityList: Subscription\n estimateRequestsSubscription: Subscription\n subscriptionVirtualEntityList: Subscription\n constructor(private activeModal: NgbActiveModal,\n private hpJourneyService: HpJourneyService,\n private glowService: GlowService,\n private fb: FormBuilder,\n private formValidationService: FormValidationService,\n private veService: VirtualEntityService,\n private router: Router,\n private schematicService: SchematicsService,\n private invitationsService: InvitationsService,\n private ServiceSelectorSvc: ServiceSelectorSvc) {\n\n\n this.stepsSubscription = this.hpJourneyService.stepsAnnouncer.subscribe(steps => {\n this.steps = steps\n\n })\n this.siteVisitForm = this.fb.group({ estimateRequest: FormArray })\n this.estimateRequestsSubscription = this.invitationsService.EstimateRequestsByVeIdAnnouncer.subscribe((resp) => {\n this.acceptedEstimateRequests = []\n if (resp.valid) {\n this.allEstimateRequests = resp.estimateRequests\n\n this.pendingEstimateRequests = resp.estimateRequests.filter(estimateRequest => estimateRequest.estimateRequestState == 'pending-user-eligibility' || estimateRequest.estimateRequestState == 'pending-user-acceptance')\n\n if (this.checkPendingEstimateRequests()) {\n this.hpJourneyService.setField('pendingInvitations', true)\n } else {\n this.hpJourneyService.setField('pendingInvitations', false)\n }\n\n\n this.estimateRequestsWithSnapshot = resp.estimateRequests.filter(estimateRequest => estimateRequest.estimateRequestState == 'estimate-request-accepted-by-user'\n || estimateRequest.estimateRequestState == 'estimate-request-accepted-by-professional'\n || estimateRequest.estimateRequestState === 'estimate-response-submitted' || estimateRequest.estimateRequestState === 'site-visit-arranged' || estimateRequest.estimateRequestState === 'pending-professional-acceptance' || estimateRequest.estimateRequestState === 'pending-professional-registration')\n\n this.acceptedEstimateRequests = this.invitationsService.getAllActiveEstimateRequests(resp)\n\n\n if (this.acceptedEstimateRequests.length) {\n this.enableSteps(['stepTwoDisable'])\n // this.stepNumber = 2\n }\n this.createFormGroup(this.acceptedEstimateRequests)\n this.getEstimate(this.acceptedEstimateRequests)\n //to do - get pending - professioanl acceptance\n if (this.estimateRequestsWithSnapshot.length) {\n this.getSnapshot(this.estimateRequestsWithSnapshot[this.estimateRequestsWithSnapshot.length - 1].snapshotIds[0].snapshotId)\n }\n } else {\n this.error = true\n // this.loading = false\n }\n })\n\n this.subscriptionSensorVirtualEntityList = this.veService.sensorVirtualEntities$.subscribe(async (sensorList) => {\n if (sensorList && Array.isArray(sensorList)) {\n this.allVESensorList = sensorList;\n this.manualHTC = await this.getLatestHTC()\n \n }\n });\n this.schematicSubscription = this.schematicService.schematicDocumentsAnnouncer.subscribe(schem => {\n this.schematicDocument = schem\n })\n\n this.invitationForm = this.fb.group({\n installers: ['', [Validators.required]],\n installationDate: ['', [Validators.required]],\n spaceHotWaterTank: ['', [Validators.required]],\n // selectedService: ['', [Validators.required]],\n radiatorSchematic: ['', []],\n newRadiatorsInstalled: ['', [Validators.required]],\n htc: ['', []]\n });\n\n\n }\n\n\n\n\n async ngOnInit() {\n this.hpJourneyService.resetSteps()\n this.loadObj = { ...this.loadObj, loadError: false, loading: false, errorString: '' };\n const accountId = localStorage.getItem(\"id\");\n this.getAccount(accountId)\n this.getAssessmentPeriodsDate()\n this.schematicDocument = await this.hpJourneyService.getSchematicDocuments()\n // console.log(this.schematicDocument)\n this.passport = await this.hpJourneyService.getPropertyPassport()\n this.veService.findVirtualEntities();\n this.getEstimateRequests()\n this.checkFormStatus()\n\n }\n\n\n checkPendingEstimateRequests() {\n return this.pendingEstimateRequests && this.pendingEstimateRequests.length\n }\n\n updateHTCStep() {\n if (this.invitationForm.controls.htc.value) {\n this.hpJourneyService.setField('htc', true)\n }\n }\n // checkCanAcceptRequest() {\n // return (!this.invitationForm.controls.installationDate.valid && !this.invitationForm.controls.spaceHotWaterTank.valid\n // && !this.invitationForm.controls.newRadiatorsInstalled.valid && this.passport && !this.loading ||\n // !this.invitationForm.controls.installationDate.valid && !this.invitationForm.controls.spaceHotWaterTank.valid\n // && !this.invitationForm.controls.newRadiatorsInstalled.valid && !this.passport && !this.loading || this.loading)\n\n // }\n updateSchematicStep() {\n if (this.invitationForm.controls.radiatorSchematic.value) { this.hpJourneyService.setField('schematic', true) }\n }\n async getLatestHTC() {\n const selectedService = this.ServiceSelectorSvc.getSelectedService()\n this.glowService.getHTCHistory(selectedService.veId).toPromise().then((resp: any) => {\n if (resp.valid) {\n this.manualHTC = resp.data[0]\n // console.log(resp)\n return resp.data[0]\n\n }\n else return\n }, (err) => {\n\n })\n\n }\n\n\n\n\n\n enableSteps(steps) {\n steps.forEach(step => {\n this.hpJourneyService.setField(step, true)\n })\n }\n\n\n\n\n createFormGroup(estimateRequests) {\n let estimateRequestForms = []\n estimateRequests.forEach(er => {\n estimateRequestForms.push(this.fb.group({ siteVisitDate: ['', [Validators.required]], estimateRequestId: [er.estimateRequestId] }))\n })\n this.siteVisitForm = this.fb.group({\n estimateRequests: new FormArray(estimateRequestForms)\n })\n\n }\n setQuestionsOnFormFromSnapshot(questions) {\n \n this.invitationForm.patchValue({ 'spaceHotWaterTank': questions.spaceHotWaterTank ? 'Yes' : 'No' })\n this.invitationForm.patchValue({ 'newRadiatorsInstalled': questions.newRadiatorsInstalled ? 'Yes' : 'No' })\n this.invitationForm.patchValue({ 'installationDate': questions.installationDate })\n this.checkFormStatus()\n }\n\n getSnapshot(id) {\n this.glowService.getSnapshotBySnapshotId(id).subscribe(async resp => {\n if (resp) {\n \n this.mostRecentSnapshot = resp\n this.setQuestionsOnFormFromSnapshot(this.mostRecentSnapshot.overview)\n }\n return resp\n })\n }\n\n checkEmailValidity(installerArray) {\n this.emailError = false;\n let sanitisedEmails = [];\n installerArray.forEach((obj) => {\n sanitisedEmails.push({ value: obj['value'].replace(/[ \\t]+$/, '') });\n });\n this.installers = sanitisedEmails;\n sanitisedEmails.forEach((obj) => {\n if (FormValidator.isEmailValid(obj)) {\n this.emailError = true;\n } else {\n this.hpJourneyService.setInstallers(installerArray)\n }\n\n });\n }\n\n setInstallerEmail(event) {\n if (event.length) {\n this.installers = event;\n this.checkEmailValidity(event);\n } else {\n this.hpJourneyService.setInstallers(event)\n }\n\n\n\n }\n\n resetError(formControl) {\n this.invitationForm.controls[formControl].markAsUntouched();\n this.error = false;\n }\n\n changeSection(e) {\n this.stepNumber = e\n\n }\n\n getSchematics() {\n this.schematicDocument = this.hpJourneyService.schematicDocuments\n // console.log(this.schematicDocument)\n\n }\n checkFormValidity(formControlName, translateKey?) {\n return this.formValidationService.checkFormValidity(this.invitationForm, formControlName, translateKey);\n }\n\n checkFormStatus() {\n if (this.invitationForm.controls.spaceHotWaterTank.valid && this.invitationForm.controls.installationDate.valid && this.invitationForm.controls.newRadiatorsInstalled.valid) {\n this.hpJourneyService.setField('formFilledOut', true)\n } else return\n }\n\n getStyle(completion, icon?) {\n if (completion) {\n return `text-success ${icon ? icon : ''} `\n } else return `text-dark fw-bolder ${icon ? icon : ''} `\n\n\n }\n\n\n navigateToSchematicsPage() {\n this.router.navigateByUrl('/pages/tools/heating-by-room/')\n this.activeModal.dismiss()\n\n }\n getDateIn30Days() {\n return Utils.getDateIn30Days();\n }\n\n selectSchematic(doc) {\n const schematicControl = this.invitationForm.controls['radiatorSchematic']\n schematicControl.setValue(doc)\n schematicControl.markAsTouched()\n }\n\n\n sendInvite() {\n if (this.invitationForm.valid) {\n this.invitationForm.value.installers.forEach((installer) => {\n this.generateEstimateRequest(installer.value);\n });\n\n } else {\n this.invitationForm.markAllAsTouched();\n this.errorMessage = 'Please complete form';\n }\n }\n\n getAccount(accountId: string) {\n this.glowService.getAccount().subscribe(account => {\n this.account = account\n }, error => {\n console.warn(\"An error occurred when retrieving account\");\n console.warn(error)\n });\n }\n getEstimateRequests() {\n const selectedService = this.ServiceSelectorSvc.getSelectedService()\n this.invitationsService.getEstimateRequestsByVeIdAndState(selectedService.veId, true)\n\n }\n generateEstimateRequest(installer) {\n this.error = false\n this.loading = true;\n\n const selectedService = this.ServiceSelectorSvc.getSelectedService()\n const body = {\n username: this.account.email,\n estimateType: 'heat-pump-estimate',\n initiatedBy: 'customer',\n professionalUsername: installer,\n needsToBeAcceptedBy: this.getDateIn30Days(),\n assessmentPeriodStart: this.lastYear,\n assessmentPeriodEnd: this.lastMonth,\n // htc: this.invitationForm.value.htc,\n overview: {\n hotWaterTankSpace: this.invitationForm.value.spaceHotWaterTank == 'Yes' ? true : false,\n newRadiatorsFitted: this.invitationForm.value.newRadiatorsInstalled == 'Yes' ? true : false,\n installationDate: this.invitationForm.value.installationDate,\n },\n heatingSystem: {\n veDocId: this.invitationForm.value.radiatorSchematic.documentId\n }\n }\n this.glowService.createEstimateRequest(body, selectedService.veId).subscribe((resp) => {\n // this.loading = true;\n if (!resp.valid) {\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: true,\n errorString: 'Unable to send invitation'\n };\n this.sendEstimateRequestError = true;\n this.loading = false;\n // this.invitationsService.getAllEstimateRequests();\n } else {\n this.loadObj = {\n ...this.loadObj,\n loadError: false,\n loading: false,\n };\n this.loading = false;\n this.error = false;\n this.invitationForm.controls['installers'].reset()\n this.hpJourneyService.setField('installerField', false)\n this.successMessage = \"Invitation sent successfully\"\n // this.invitationsService.getAllEstimateRequests();\n }\n }, (err) => {\n this.sendEstimateRequestError = true\n this.loading = false\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: true,\n errorString: 'An error occurred. Try again later.'\n };\n })\n\n }\n getAssessmentPeriodsDate() {\n var date = new Date(new Date().setMonth(new Date().getMonth() - 1));\n this.lastMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0).toISOString().split('T')[0] + 'T23:59:59';\n\n var t = new Date();\n let lastYear = new Date(new Date(new Date(t.setFullYear(t.getFullYear() - 1))).setDate(1));\n this.lastYear = new Date(lastYear).toISOString().split('T')[0] + 'T00:00:00';\n }\n\n\n\n getEstimate(estimateRequests) {\n let allEstimates = []\n let estimateIds = []\n estimateRequests.forEach(er => {\n if (er.estimateIds) {\n er.estimateIds.map(x => estimateIds.push(x))\n }\n })\n estimateIds.forEach(id => {\n this.getEstimateByEstimateId(id.estimateId).then(resp => { allEstimates.push(resp) })\n\n })\n this.allEstimates = allEstimates\n\n }\n\n\n getEstimateByEstimateId(estimateId) {\n const response = this.glowService.getEstimateCustomer(estimateId).toPromise()\n return response\n\n }\n\n async downloadFile(estimate) {\n const ve = this.ServiceSelectorSvc.getSelectedService()\n estimate.veDocIds.forEach(doc => {\n this.glowService.getVEDocumentByIDMedia(ve.veId, doc.veDocId).then(resp => {\n this.saveAsBlob(resp)\n })\n })\n }\n\n saveAsBlob(resp) {\n var blob = new Blob([resp], { type: 'application/pdf' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob);\n link.download = 'file';\n const event = new MouseEvent('click')\n link.dispatchEvent(event)\n\n }\n\n setSiteVisit(estimateRequestId, siteVisitDate) {\n const body = { siteVisitDate: siteVisitDate }\n this.glowService.updateEstimateRequestByCustomer(estimateRequestId, body).subscribe(resp => {\n if (resp.valid) {\n this.getEstimateRequests()\n this.loadObj = {\n ...this.loadObj,\n loadError: false,\n loading: false,\n };\n } else {\n this.setDateErrorMessage = 'An error occurred. Please try again later.'\n }\n\n }, (err) => {\n this.setDateErrorMessage = 'An error occurred. Please try again later.'\n\n })\n }\n\n\n getEstimateRequestStateFormat(state) {\n return this.invitationsService.formatEstimateRequestState(state)\n }\n\n getReadableDate(date) {\n return Utils.getReadableDateFromIso(date)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HpJourneyModalComponent } from './hp-journey-modal.component';\nimport { HpJourneyStepperModule } from '../hp-journey-stepper/hp-journey-stepper.module';\nimport { PropertyPassportModule } from 'src/app/pages/property-passport/property-passport.module';\nimport { RadiatorSchematicSelectorModalModule } from '../radiator-schematic-selector-modal/radiator-schematic-selector-modal.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { RadiatorSchematicCardModule } from '../radiator-schematic-card/radiator-schematic-card.module';\nimport { EstimateRequestCardModule } from '../estimate-request-card/estimate-request-card.module';\n\n\n\n@NgModule({\n declarations: [HpJourneyModalComponent],\n imports: [\n CommonModule, HpJourneyStepperModule, PropertyPassportModule, SharedModule, FormValidationMessageModule, RadiatorSchematicCardModule, EstimateRequestCardModule\n ],\n exports: [HpJourneyModalComponent],\n entryComponents: [HpJourneyModalComponent]\n})\nexport class HpJourneyModalModule { }\n","export default \".line {\\n background-color: grey;\\n height: 40px;\\n width: 1px;\\n margin-left: 8px;\\n margin-bottom: 20px;\\n}\\n\\n.long-line {\\n height: 100%;\\n background-color: #bdb9b9;\\n width: 1px;\\n margin-left: 8px;\\n margin-bottom: 20px;\\n}\\n\\n.horizontal-line {\\n width: 30px;\\n background-color: grey;\\n height: 1px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2hwLWpvdXJuZXktc3RlcHBlci9ocC1qb3VybmV5LXN0ZXBwZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvaHAtam91cm5leS1zdGVwcGVyL2hwLWpvdXJuZXktc3RlcHBlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLFVBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0FDQ0o7O0FEVUE7RUFDSSxZQUFBO0VBQ0EseUJBQUE7RUFDQSxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtBQ1BKOztBRFVBO0VBQ0ksV0FBQTtFQUNBLHNCQUFBO0VBQ0EsV0FBQTtBQ1BKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9ocC1qb3VybmV5LXN0ZXBwZXIvaHAtam91cm5leS1zdGVwcGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmxpbmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHdpZHRoOiAxcHg7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4uc21hbGwtbGluZSB7XG4gICAgLy8gYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgICAvLyBoZWlnaHQ6IDIwcHg7XG4gICAgLy8gd2lkdGg6IDFweDtcbiAgICAvLyBtYXJnaW4tbGVmdDogOHB4O1xuICAgIC8vIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5sb25nLWxpbmUge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTg5LCAxODUsIDE4NSk7XG4gICAgd2lkdGg6IDFweDtcbiAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5ob3Jpem9udGFsLWxpbmUge1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgLy8gbWFyZ2luLWxlZnQ6IDhweDtcbiAgICAvLyBtYXJnaW4tYm90dG9tOiAyMHB4O1xufSIsIi5saW5lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogMXB4O1xuICBtYXJnaW4tbGVmdDogOHB4O1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4ubG9uZy1saW5lIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRiOWI5O1xuICB3aWR0aDogMXB4O1xuICBtYXJnaW4tbGVmdDogOHB4O1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4uaG9yaXpvbnRhbC1saW5lIHtcbiAgd2lkdGg6IDMwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gIGhlaWdodDogMXB4O1xufSJdfQ== */\"","import { Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { HpJourneyService } from 'src/app/services/hp-journey.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n\n@Component({\n selector: 'app-hp-journey-stepper',\n templateUrl: './hp-journey-stepper.component.html',\n styleUrls: ['./hp-journey-stepper.component.scss']\n})\nexport class HpJourneyStepperComponent implements OnInit {\n loading: boolean\n steps;\n hasPassport;\n @Input() currentStep: Number = 1;\n selectedService: any\n stepsSubscription: Subscription\n hasCompletedSchematics: boolean\n innerWidth: Number\n @Output() step: EventEmitter = new EventEmitter();\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n constructor(private hpJourneyService: HpJourneyService) {\n this.stepsSubscription = this.hpJourneyService.stepsAnnouncer.subscribe(steps => {\n this.steps = steps\n\n\n })\n }\n\n ngOnInit() {\n this.onResize()\n this.setSteps()\n\n }\n\n\n async setSteps() {\n this.loading = true\n this.hasPassport = await this.hpJourneyService.getPropertyPassport()\n this.hasCompletedSchematics = await this.hpJourneyService.getSchematicDocuments()\n // get last estimate request and prefill forms\n this.loading = false\n\n\n }\n showStep(step) {\n this.currentStep = step\n this.step.emit(step)\n }\n\n getStyle(completion, icon?) {\n if (completion) {\n return `text-success ${icon ? icon : ''} `\n } else return `text-dark fw-bolder ${icon ? icon : ''} `\n }\n\n getCurrentStep() {\n return this.steps.filter(step => step.step == this.currentStep)\n\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HpJourneyStepperComponent } from './hp-journey-stepper.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [HpJourneyStepperComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [HpJourneyStepperComponent]\n})\nexport class HpJourneyStepperModule { }\n","export default \".label {\\n margin: 0px;\\n color: #A2A8CA;\\n}\\n\\n.list-class {\\n color: #2b2b2b;\\n font-size: 1rem;\\n z-index: 4;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2h0Yy1jYXJkL2h0Yy1jYXJkLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2h0Yy1jYXJkL2h0Yy1jYXJkLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksV0FBQTtFQUNBLGNBQUE7QUNDSjs7QURDQztFQUNHLGNBQUE7RUFDQSxlQUFBO0VBQ0EsVUFBQTtBQ0VKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9odGMtY2FyZC9odGMtY2FyZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5sYWJlbHtcbiAgICBtYXJnaW46MHB4O1xuICAgIGNvbG9yOiAjQTJBOENBXG59XG4gLmxpc3QtY2xhc3Mge1xuICAgIGNvbG9yOiAjMmIyYjJiO1xuICAgIGZvbnQtc2l6ZTogMS4wcmVtO1xuICAgIHotaW5kZXg6IDQ7XG4gfSIsIi5sYWJlbCB7XG4gIG1hcmdpbjogMHB4O1xuICBjb2xvcjogI0EyQThDQTtcbn1cblxuLmxpc3QtY2xhc3Mge1xuICBjb2xvcjogIzJiMmIyYjtcbiAgZm9udC1zaXplOiAxcmVtO1xuICB6LWluZGV4OiA0O1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { HelpModalComponent } from '../help-modal/help-modal.component';\n\n@Component({\n selector: 'app-htc-card',\n templateUrl: './htc-card.component.html',\n styleUrls: ['./htc-card.component.scss']\n})\n\nexport class HtcCardComponent implements OnInit {\n\n @Input() htcValue;\n @Input() accountPageView;\n @Input() htcConfidenceIntervalNegative;\n @Input() htcConfidenceIntervalPositive;\n @Input() hlpValue;\n @Input() toDate;\n @Input() fromDate;\n @Input() createdAt\n @Input() manualHTC;\n @Input() requiredPeakDemand\n @Input() designInternalTemperature\n @Input() designExternalTemperature\n\n hlpDefinition: string = 'The normalised thermal performance by usable space (HTC divided by the floor area). Measured in Watts per square meter per degree Celsius (W/m²/°C).'\n HTC = 'Heat Transfer Coefficient (HTC)'\n HLP = 'Heat Loss Parameter (HLP)'\n HTC_CONFIDENCE_INTERVAL = 'HTC Confidence Interval'\n htcDefinition: string = 'Thermal performance during the measurement period. Measured in Watts per degree Celsius (W/°C). Read more about what HTC is here.'\n confidenceIntervalDefinition;\n modalRef;\n requiredPeakDemandDefinition = \"The peak heat demand is the maximum heating power requirement for your home on the coldest predicted winter day at your home's location, it is used to determine the required size of heating system (e.g. heat pump) for your home. It is calculated by multiplying the HTC by the internal - external design temperature difference.\"\n designExternalTemperatureDefinition = \"The external temperature is determined based on the location and altitude of the site as per CIBSE guidelines.\"\n designInternalTemperatureDefinition = \"The internal temperature is set by default to 20 degrees.\"\n\n constructor(private modalService: NgbModal) { }\n\n ngOnInit() {\n this.confidenceIntervalDefinition = `

    Your HTC confidence interval is [${this.htcConfidenceIntervalNegative}, + ${this.htcConfidenceIntervalPositive}].

    No measurement can be made with 100% accuracy. The confidence interval is a range of values that is likely to contain the true value. For example, if the HTC result is 100W/°C with a confidence interval of [-15, +10]W/°C, we think the HTC is 100W/°C and the true value is likely (95% chance) to be between 85W/°C and 110W/°C.

    `\n }\n\n openInfoModal(title, definition) {\n this.modalRef = this.modalService.open(HelpModalComponent, { scrollable: true, centered: true, size: 'lg' });\n this.modalRef.componentInstance.pageTitle = title;\n this.modalRef.componentInstance.modalBodyContent = definition\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HtcCardComponent } from './htc-card.component';\nimport { HeatLossParameterScaleModule } from '../heat-loss-parameter-scale/heat-loss-parameter-scale.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n declarations: [HtcCardComponent],\n imports: [\n CommonModule,\n TranslateModule,\n HeatLossParameterScaleModule\n ],\n exports: [HtcCardComponent]\n})\n\nexport class HtcCardModule { }","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaHRjLWZ1bGwtaW5mby9odGMtZnVsbC1pbmZvLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-htc-full-info',\n templateUrl: './htc-full-info.component.html',\n styleUrls: ['./htc-full-info.component.scss'],\n})\nexport class HtcFullInfoComponent implements OnInit {\n accountPageView: boolean;\n pageTitle: string = 'Heat retention score';\n displayTitle: string = 'Your home’s heat retention score';\n toolLink: string = '/pages/tools/estimated-thermal-performance';\n shouldShowToolLink: boolean = false;\n selectedService: any;\n manualHTC: any;\n loadObj;\n HTCDate;\n loading = true;\n htcDefinition: any;\n noManualHTCMessage: string = 'No information available; to calculate yours use our tool here. ';\n subscriptionSelectedService: Subscription;\n constructor(private serviceSelectorSvc: ServiceSelectorSvc, private route: ActivatedRoute, private glowService: GlowService, private router: Router, private strapService: StrapiService) {\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.getLatestHTC();\n });\n }\n\n ngOnInit() {\n this.strapService.getOneContent('glossary-terms', 10, []).then((t) => (this.htcDefinition = t.attributes.shortDefinition));\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n // this.checkForManualHTC()\n this.getUrl();\n this.getLatestHTC();\n }\n\n getLatestHTC() {\n this.glowService.getHTCHistory(this.selectedService.veId).subscribe(\n async (resp: any) => {\n if (resp.valid) {\n this.shouldShowToolLink = true;\n this.manualHTC = resp.data[0];\n this.HTCDate = new Date(resp.data[0].created_date).toLocaleDateString('en-GB');\n this.loading = false;\n } else {\n console.log(this.manualHTC);\n this.loading = false;\n this.shouldShowToolLink = false;\n this.loadObj = { ...this.loadObj, loadError: true, loading: false };\n }\n },\n (err) => {\n this.manualHTC = '';\n this.loading = false;\n this.loadObj = { ...this.loadObj, loadError: true, loading: false };\n }\n );\n }\n regenerateHTC() {\n this.manualHTC = false;\n // this.router.navigateByUrl('/pages/tools/estimated-thermal-performance');\n }\n getUrl() {\n //check if on acc pages\n let url = this.route.snapshot.url.map((segment) => segment.path);\n if (url[0] == 'building-fabric') {\n this.accountPageView = true;\n }\n }\n\n formatHouseAttachmentString(str) {\n return str.replace(/([A-Z][a-z])/g, ' $1');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HtcFullInfoComponent } from './htc-full-info.component';\nimport { HtcCardModule } from '../htc-card/htc-card.module';\nimport { AccountNoDataCardModule } from '../account-no-data-card/account-no-data-card.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\n@NgModule({\n declarations: [HtcFullInfoComponent],\n imports: [\n CommonModule, HtcCardModule, AccountNoDataCardModule,SpinnerModule\n ],\n exports: [HtcFullInfoComponent]\n})\n\nexport class HtcFullInfoModule { }","export default \".modal-container {\\n z-index: 5000 !important;\\n position: relative;\\n}\\n\\n.modal-container .loading-htc-data .modal-body {\\n height: 200px;\\n}\\n\\nbutton {\\n margin: 0px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2h0Yy1tb2RhbC9odGMtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvaHRjLW1vZGFsL2h0Yy1tb2RhbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLHdCQUFBO0VBQ0Esa0JBQUE7QUNDSjs7QURFQTtFQUNJLGFBQUE7QUNDSjs7QURDQTtFQUNJLFdBQUE7QUNFSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaHRjLW1vZGFsL2h0Yy1tb2RhbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tb2RhbC1jb250YWluZXIge1xuICAgIHotaW5kZXg6IDUwMDAgIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5tb2RhbC1jb250YWluZXIgLmxvYWRpbmctaHRjLWRhdGEgLm1vZGFsLWJvZHkge1xuICAgIGhlaWdodDogMjAwcHg7XG59XG5idXR0b24ge1xuICAgIG1hcmdpbjogMHB4O1xufSIsIi5tb2RhbC1jb250YWluZXIge1xuICB6LWluZGV4OiA1MDAwICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm1vZGFsLWNvbnRhaW5lciAubG9hZGluZy1odGMtZGF0YSAubW9kYWwtYm9keSB7XG4gIGhlaWdodDogMjAwcHg7XG59XG5cbmJ1dHRvbiB7XG4gIG1hcmdpbjogMHB4O1xufSJdfQ== */\"","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { NgcCookieConsentService } from 'ngx-cookieconsent';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { GlowService } from 'src/app/services/glow.service';\n\n@Component({\n selector: 'app-htc-modal',\n templateUrl: './htc-modal.component.html',\n styleUrls: ['./htc-modal.component.scss', '../../pages/pages.component.scss'], // shared css file\n})\n\nexport class HtcModalComponent implements OnInit {\n\n @Input() veId: string;\n @Input() propertyPassportId: string;\n @Input() resources: any;\n @Input() epc: any;\n @Output() updatePassport: EventEmitter = new EventEmitter();\n\n temperatureResources: any = [];\n loadObj: tLoadingElement;\n formInfo: FormGroup;\n maxDate: string = new Date(Date.now() - 86400000).toISOString().split(\"T\")[0];\n passport: any;\n currentHtc: any;\n showSuccess: boolean = false;\n\n constructor(\n public activeModal: NgbActiveModal,\n private uiConfigService: CustomUIConfigService,\n private formBuilder: FormBuilder,\n private glowService: GlowService,\n private ccService: NgcCookieConsentService\n ) {\n this.formInfo = this.formBuilder.group({\n toDate: ['', [Validators.required]]\n })\n\n this.formInfo.controls['toDate'].setValue(this.maxDate)\n }\n\n ngOnInit() {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans();\n\n const elecMatch = this.resources.find(x => x.classifier == \"electricity.consumption\")\n\n if (Array.isArray(this.resources) && this.resources.length > 0 && elecMatch && this.epc) {\n this.getDevices()\n } else {\n let errorString = '';\n\n if (!this.epc) {\n errorString += \"

  • We can't find an EPC attached to your property; we need it to calculate your Smart HTC value. For more information please email support@glowmarkt.com
  • \";\n }\n\n if (!elecMatch) {\n errorString += \"
  • We can't find a smart electricity meter assigned to your account; we need it to calculate your Smart HTC value. For more information please email support@glowmarkt.com
  • \";\n }\n this.loadObj = { ...this.loadObj, loadError: true, loading: false, errorString }\n }\n }\n\n getDevices() {\n\n this.glowService.getDevices().subscribe(async resp => {\n // // console.log('getDevices', resp);\n\n const sensorTypeArr = [\"05a115ed-0135-45ad-b677-130a5e971998\", \"ba06dbab-e759-4ad9-8b0e-e56a45b56a91\"]\n const tempSensor = resp.filter(x => sensorTypeArr.includes(x.deviceTypeId));\n // // console.log('tempSensor', tempSensor);\n\n if (Array.isArray(tempSensor) && tempSensor.length > 0) {\n\n let resourceArray = []\n\n await tempSensor.map(x => {\n x.protocol.sensors.map(resource => {\n if (resource.protocolId == 'temp' || resource.protocolId == 'temperature') {\n resourceArray.push({ resourceId: resource.resourceId })\n }\n })\n });\n\n if (Array.isArray(resourceArray) && resourceArray.length > 0) {\n\n this.temperatureResources = resourceArray;\n this.loadObj.loaded = true;\n\n } else {\n this.loadObj = { ...this.loadObj, loadError: true, loading: false, errorString: \"We can't find a temperature sensor assigned to your account; we need it to calculate your Smart HTC value. Order one here.\" }\n }\n } else {\n this.loadObj = { ...this.loadObj, loadError: true, loading: false, errorString: \"We can't find a temperature sensor assigned to your account; we need it to calculate your Smart HTC value. Order one here.\" }\n }\n\n }, (err) => {\n console.warn(err);\n this.loadObj = { ...this.loadObj, loadError: true, loading: false, errorString: \"We can't find a temperature sensor assigned to your account; we need it to calculate your Smart HTC value. Order one here.\" }\n });\n }\n\n getCurrentHtc(htcRecords) {\n return htcRecords ? htcRecords.sort((a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf())[0] : null\n }\n\n calculateHTC() {\n\n const payload = {\n veId: this.veId,\n propertyPassportId: this.propertyPassportId,\n temperatureResources: this.temperatureResources,\n to: new Date(this.formInfo.controls['toDate'].value).toISOString()\n }\n // // console.log('calculateHTC', payload)\n\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans();;\n this.sendGAEvent({ event: 'generateHTC' })\n\n this.glowService.calculateHTC(payload).subscribe(async resp => {\n // // console.log('calculateHTC resp', resp)\n if (resp.valid) {\n this.passport = resp;\n this.currentHtc = this.getCurrentHtc(resp.htcRecords)\n this.showSuccess = true;\n } else {\n this.loadObj = { ...this.loadObj, loadError: true, loading: false, errorString: resp.errorMsg }\n }\n }, (err) => {\n console.warn(err);\n this.loadObj = { ...this.loadObj, loadError: true, loading: false, errorString: 'Looks like we are having trouble generating your HTC value! Please try again later.' }\n });\n }\n\n close() {\n this.updatePassport.emit(this.passport);\n }\n\n sendGAEvent(params) {\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n window.dataLayer.push(params)\n }\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HtcModalComponent } from './htc-modal.component';\nimport { SpinnerModule } from '../spinner/spinner.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [HtcModalComponent],\n imports: [\n CommonModule,\n SpinnerModule,\n FormsModule,\n ReactiveFormsModule\n ],\n exports: [HtcModalComponent],\n entryComponents: [HtcModalComponent]\n})\n\nexport class HtcModalModule { }","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaW1hZ2UtbW9kYWwvaW1hZ2UtbW9kYWwuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-image-modal',\n templateUrl: './image-modal.component.html',\n styleUrls: ['./image-modal.component.scss']\n})\nexport class ImageModalComponent implements OnInit {\n\n @Input() imageUrl: string;\n\n constructor(private activeModal: NgbActiveModal) { }\n\n ngOnInit() { }\n\n close() {\n this.activeModal.dismiss()\n }\n\n\n}\n","export default \"button {\\n all: unset;\\n}\\n\\nimg {\\n width: 100%;\\n height: auto;\\n}\\n\\n@media only screen and (max-width: 576px) {\\n .card,\\n.row {\\n height: 100% !important;\\n padding: 10px;\\n }\\n}\\n\\n.summary {\\n font-family: \\\"PT Serif\\\", serif;\\n max-width: 100%;\\n display: -webkit-box;\\n overflow: hidden;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n text-overflow: ellipsis;\\n margin: 5px;\\n font-size: 1rem;\\n line-height: 1.5rem;\\n height: 3rem;\\n}\\n\\n.p-wrapper {\\n height: 70px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2luZm9ncmFwaGljLWNhcmQvaW5mb2dyYXBoaWMtY2FyZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9pbmZvZ3JhcGhpYy1jYXJkL2luZm9ncmFwaGljLWNhcmQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxVQUFBO0FDQ0o7O0FERUU7RUFDRSxXQUFBO0VBQ0EsWUFBQTtBQ0NKOztBRENFO0VBQ0U7O0lBRUUsdUJBQUE7SUFDQSxhQUFBO0VDRUo7QUFDRjs7QURNRTtFQUNFLDhCQUFBO0VBQ0EsZUFBQTtFQUNBLG9CQUFBO0VBQ0UsZ0JBQUE7RUFDQSxxQkFBQTtFQUNBLDRCQUFBO0VBQ0EsdUJBQUE7RUFDRixXQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtBQ0pKOztBRE9FO0VBQ0UsWUFBQTtBQ0pKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9pbmZvZ3JhcGhpYy1jYXJkL2luZm9ncmFwaGljLWNhcmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJidXR0b24ge1xuICAgIGFsbDogdW5zZXQ7XG4gIH1cbiAgXG4gIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc2cHgpIHtcbiAgICAuY2FyZCxcbiAgICAucm93IHtcbiAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICB9XG4gIH1cbiAgXG4gIC8vIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLy8gICBpbWcge1xuICAvLyAgICAgaGVpZ2h0OiA1MCUgIWltcG9ydGFudFxuICAvLyAgIH1cbiAgLy8gfVxuICAuc3VtbWFyeSB7XG4gICAgZm9udC1mYW1pbHk6ICdQVCBTZXJpZicsc2VyaWY7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBtYXJnaW46IDVweDsgXG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gICAgaGVpZ2h0OiAzcmVtO1xuICB9XG4gIFxuICAucC13cmFwcGVyIHtcbiAgICBoZWlnaHQ6IDcwcHg7XG4gIH1cbiAgIiwiYnV0dG9uIHtcbiAgYWxsOiB1bnNldDtcbn1cblxuaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzZweCkge1xuICAuY2FyZCxcbi5yb3cge1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gIH1cbn1cbi5zdW1tYXJ5IHtcbiAgZm9udC1mYW1pbHk6IFwiUFQgU2VyaWZcIiwgc2VyaWY7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG1hcmdpbjogNXB4O1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gIGhlaWdodDogM3JlbTtcbn1cblxuLnAtd3JhcHBlciB7XG4gIGhlaWdodDogNzBweDtcbn0iXX0= */\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n@Component({\n selector: 'app-infographic-card',\n templateUrl: './infographic-card.component.html',\n styleUrls: ['./infographic-card.component.scss']\n})\nexport class InfographicCardComponent implements OnInit {\n @Input() infographic;\n @Input() shouldDisplaySummary: boolean = true;\n @Input() shouldDisplayCommunityTag: boolean = false;\n @Input() titleStyle: any = {};\n @Input() backgroundStyle: any = {}\n @Input() titleLineHeight: any = {}\n @Input() displayTimeToRead: boolean = true\n innerWidth;\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n constructor(private router: Router\n , private strapiService: StrapiService) { \n this.onResize(); }\n \n\n ngOnInit() {\n }\n\n getDisplayImageUrl() {\n return this.strapiService.getSmallDisplayImageUrl(this.infographic);\n }\n\ninfographicRelativePath(){\n return `/home/infographics/${this.infographic.attributes.slug}`\n }\n\n // getTimeToRead() {\n // return Utils.getTimeToRead(this.infographic.attributes.content);\n // }\n getUpdatedAt() {\n return Utils.formatZDate(this.infographic.attributes.updatedAt);\n }\n}\n","export default \".hover_group:hover {\\n opacity: 1;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2luZm9ncmFwaGljcy9ocGotaW5mb2dyYXBoaWMvaHBqLWluZm9ncmFwaGljLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2luZm9ncmFwaGljcy9ocGotaW5mb2dyYXBoaWMvaHBqLWluZm9ncmFwaGljLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksVUFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9pbmZvZ3JhcGhpY3MvaHBqLWluZm9ncmFwaGljL2hwai1pbmZvZ3JhcGhpYy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5ob3Zlcl9ncm91cDpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfSIsIi5ob3Zlcl9ncm91cDpob3ZlciB7XG4gIG9wYWNpdHk6IDE7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-hpj-infographic',\n templateUrl: './hpj-infographic.component.html',\n styleUrls: ['./hpj-infographic.component.scss']\n})\nexport class HpjInfographicComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HpjInfographicComponent } from './hpj-infographic.component';\n\n\n\n@NgModule({\n declarations: [HpjInfographicComponent],\n imports: [\n CommonModule],\n exports: [HpjInfographicComponent]\n})\nexport class HpjInfographicModule { }\n","export default \".hover_group:hover {\\n opacity: 1;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2luZm9ncmFwaGljcy9pbnN0YWxsZXItam91cm5leS1pbmZvZ3JhcGhpYy9pbnN0YWxsZXItam91cm5leS1pbmZvZ3JhcGhpYy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9pbmZvZ3JhcGhpY3MvaW5zdGFsbGVyLWpvdXJuZXktaW5mb2dyYXBoaWMvaW5zdGFsbGVyLWpvdXJuZXktaW5mb2dyYXBoaWMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxVQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2luZm9ncmFwaGljcy9pbnN0YWxsZXItam91cm5leS1pbmZvZ3JhcGhpYy9pbnN0YWxsZXItam91cm5leS1pbmZvZ3JhcGhpYy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5ob3Zlcl9ncm91cDpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfSIsIi5ob3Zlcl9ncm91cDpob3ZlciB7XG4gIG9wYWNpdHk6IDE7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-installer-journey-infographic',\n templateUrl: './installer-journey-infographic.component.html',\n styleUrls: ['./installer-journey-infographic.component.scss']\n})\nexport class InstallerJourneyInfographicComponent implements OnInit {\n\n constructor() { }\n @Input() background;\n ngOnInit() {\n console.log(this.background)\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InstallerJourneyInfographicComponent } from './installer-journey-infographic.component';\n\n\n\n@NgModule({\n declarations: [InstallerJourneyInfographicComponent],\n imports: [\n CommonModule\n ],\n exports: [InstallerJourneyInfographicComponent]\n})\nexport class InstallerJourneyInfographicModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaW5zdGFsbGVyLWNhcmQvaW5zdGFsbGVyLWNhcmQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-installer-card',\n templateUrl: './installer-card.component.html',\n styleUrls: ['./installer-card.component.scss']\n})\nexport class InstallerCardComponent implements OnInit {\n @Input() installer\n constructor() { }\n\n ngOnInit() {\n }\n getMiles(meters) {\n return (meters / 1609.344).toFixed(1)\n }\n checkWebsiteURL(url) {\n return url.includes('http')\n\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InstallerCardComponent } from './installer-card.component';\nimport { TagModule } from '../tag/tag.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [InstallerCardComponent],\n imports: [\n CommonModule,\n TagModule,\n SharedModule\n ],\n exports: [InstallerCardComponent]\n})\nexport class InstallerCardModule { }\n","export default \"form .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2luc3RhbGxlci1pbnZpdGF0aW9uLW1vZGFsL2luc3RhbGxlci1pbnZpdGF0aW9uLW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2luc3RhbGxlci1pbnZpdGF0aW9uLW1vZGFsL2luc3RhbGxlci1pbnZpdGF0aW9uLW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVJO0VBQ0ksMkJBQUE7QUNEUiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaW5zdGFsbGVyLWludml0YXRpb24tbW9kYWwvaW5zdGFsbGVyLWludml0YXRpb24tbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcblxuICAgIC5uZy10b3VjaGVkLm5nLWludmFsaWR7XG4gICAgICAgIGJvcmRlcjogc29saWQgI2UzMmI0ZCAwLjVweDtcbiAgICB9XG4gICAgLy8gLm5nLXRvdWNoZWQubmctaW52YWxpZDpub3QoI21zY3MtbnVtYmVyKSB7XG4gICAgLy8gICAgIGJvcmRlcjogc29saWQgcmVkIDAuNXB4O1xuICAgIC8vIH1cbn0iLCJmb3JtIC5uZy10b3VjaGVkLm5nLWludmFsaWQge1xuICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHg7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-installer-invitation-modal',\n templateUrl: './installer-invitation-modal.component.html',\n styleUrls: ['./installer-invitation-modal.component.scss']\n})\nexport class InstallerInvitationModalComponent implements OnInit {\n\n constructor(public activeModal: NgbActiveModal, private professionalGlowService: ProfessionalGlowService, private fb: FormBuilder, private formValidationService: FormValidationService, private glowService: GlowService, private invitationService: InvitationsService) { }\n invitationForm: FormGroup\n addTag: boolean\n error;\n formErrorMessage;\n loading;\n errorMessage\n firstSection = true\n secondSection\n successMessage: boolean\n\n ngOnInit() {\n this.invitationForm = this.fb.group({\n email: ['', [Validators.required, FormValidator.isEmailValid]],\n firstLine: [''],\n postcode: [''],\n reference: ['']\n\n })\n }\n checkFormValidity(formControlName, translateKey?) {\n return this.formValidationService.checkFormValidity(this.invitationForm, formControlName, translateKey)\n }\n\n\n\n generateEstimateRequest() {\n\n if (this.invitationForm.valid) {\n this.loading = true\n\n const data = {\n \"username\": this.invitationForm.value.email,\n \"estimateType\": \"heat-pump-estimate\",\n \"needsToBeAcceptedBy\": this.getAcceptedByDate(),\n \"address\": {\n \"postcode\": this.invitationForm.value.postcode,\n \"firstLine\": this.invitationForm.value.firstLine,\n },\n\n \"externalReference\": this.invitationForm.value.reference\n }\n\n\n this.professionalGlowService.createEstimateRequestForCustomer(data).subscribe((resp) => { \n this.loading = true\n\n if (!resp.valid) {\n this.error = true\n this.formErrorMessage = 'Unable to send estimate request'\n this.invitationService.getAllProfessionalEstimateRequests()\n this.loading = false\n } else {\n this.error = false\n this.invitationService.getAllProfessionalEstimateRequests()\n this.loading = false\n this.successMessage = true\n // this.activeModal.dismiss()\n\n }\n }, (err) => {\n this.error = true\n this.loading = false\n this.errorMessage = \"Something went wrong, please try again later.\"\n\n })\n } else {\n this.invitationForm.markAllAsTouched()\n // this.error = true\n this.formErrorMessage = 'Please complete form'\n }\n }\n\n getAcceptedByDate() {\n return Utils.getDateIn30Days()\n\n }\n\n changeSection() {\n this.secondSection = true\n this.firstSection = false\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InstallerInvitationModalComponent } from './installer-invitation-modal.component';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [InstallerInvitationModalComponent],\n imports: [\n CommonModule, FormValidationMessageModule, SharedModule\n \n ],\n exports: [InstallerInvitationModalComponent],\n entryComponents: [InstallerInvitationModalComponent]\n})\nexport class InstallerInvitationModalModule { }\n","export default \"form .ng-touched.ng-invalid:not(#business-email) {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2luc3RhbGxlci1yZWdpc3Rlci1mb3JtL2luc3RhbGxlci1yZWdpc3Rlci1mb3JtLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2luc3RhbGxlci1yZWdpc3Rlci1mb3JtL2luc3RhbGxlci1yZWdpc3Rlci1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVJO0VBQ0ksMkJBQUE7QUNEUiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaW5zdGFsbGVyLXJlZ2lzdGVyLWZvcm0vaW5zdGFsbGVyLXJlZ2lzdGVyLWZvcm0uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcblxuICAgIC5uZy10b3VjaGVkLm5nLWludmFsaWQ6bm90KCNidXNpbmVzcy1lbWFpbCkge1xuICAgICAgICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHg7XG4gICAgfVxuICAgIC8vIC5uZy10b3VjaGVkLm5nLWludmFsaWQ6bm90KCNtc2NzLW51bWJlcikge1xuICAgIC8vICAgICBib3JkZXI6IHNvbGlkIHJlZCAwLjVweDtcbiAgICAvLyB9XG59IiwiZm9ybSAubmctdG91Y2hlZC5uZy1pbnZhbGlkOm5vdCgjYnVzaW5lc3MtZW1haWwpIHtcbiAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, FormGroupName, Validators } from '@angular/forms';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { tLoadingElementWithSuccess } from 'src/app/services/app-config.typings';\nimport { PostcodeCheckerService } from 'src/app/services/postcode-checker.service';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { TermsconditionsModalComponent } from 'src/app/components/termsconditions-modal/termsconditions-modal.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\n\n\n@Component({\n selector: 'app-installer-register-form',\n templateUrl: './installer-register-form.component.html',\n styleUrls: ['./installer-register-form.component.scss']\n})\nexport class InstallerRegisterFormComponent implements OnInit {\n\n registerForm: FormGroup;\n viewPassword: boolean = false;\n error = false\n postcodeObj: any = { area: '', isValid: null, error: false };\n installerCertifications: Array = [\n 'GasSafe',\n 'NICEIC',\n 'The IAA',\n 'OFTEC',\n 'NAPIT',\n 'MSC',\n 'HEATAS',\n 'APHC',\n 'CIPHA',\n 'Install under umbrella scheme'\n ];\n skills: Array = ['System design', 'System installation', 'Retrofit']\n technologies: Array = ['Air source heat pump', 'Exhaust air heat pump', 'Gas absorption heat pump', 'Solar assisted heat pump']\n regions: Array = ['East of England', 'East Midlands', 'London', 'North East', 'North West', 'South East', 'South West', 'West Midlands', 'Yorkshire and Humberside', 'Scotland', 'Wales', 'Northern Ireland']\n roles: Array = ['Installer'];\n options = ['Yes', 'No']\n roleSelected = '';\n loadObj: tLoadingElementWithSuccess;\n type: 'personal-details'\n success = false;\n constructor(\n private formBuilder: FormBuilder,\n private uiConfigService: CustomUIConfigService,\n private postcodeCheckerService: PostcodeCheckerService,\n private modalService: NgbModal,\n private router: Router,\n private route: ActivatedRoute,\n private translate: TranslateService,\n private glowService: GlowService,\n private formValidationService: FormValidationService,\n private professionalGlowService: ProfessionalGlowService\n\n ) {\n this.type = 'personal-details'\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.getParams()\n }\n })\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsgErrorObj(false);\n this.registerForm = this.formBuilder.group({\n role: ['Installer', Validators.required],\n firstName: ['', [Validators.required]],\n lastName: ['', [Validators.required]],\n workEmail: ['', [Validators.required, FormValidator.isEmailValid]],\n password: ['', [Validators.required, FormValidator.isPasswordStrong]],\n confirmPassword: ['', [Validators.required, FormValidator.isPasswordSame]],\n businessEmail: ['', []],\n businessPhoneNumber: ['', [Validators.required, FormValidator.isPhoneNumberValid]],\n businessName: ['', [Validators.required]],\n mcsNumber: ['', []],\n businessURL: ['', []],\n location: ['', [Validators.required]],\n regionsCovered: ['', [Validators.required]],\n technologies: ['', [Validators.required]],\n skills: ['', [Validators.required]],\n certifications: ['', [Validators.required]],\n isOrganisation: ['', [Validators.required]],\n boilerUpgradeScheme: ['', [Validators.required]]\n })\n }\n\n\n\n\n ngOnInit() {\n // resets form to beginning on refresh\n this.router.navigateByUrl('/professionals-register/installer?type=personal-details');\n this.getParams()\n }\n\n back() {\n history.back()\n }\n\n togglePassword(viewPassword) {\n this.viewPassword = viewPassword ? false : true;\n }\n\n selectRole(role) {\n this.roleSelected = role;\n }\n\n checkFormValidity(formControlName, translateKey?) {\n return this.formValidationService.checkFormValidity(this.registerForm, formControlName, translateKey)\n }\n\n resetError() {\n this.postcodeObj.error = false\n this.error = false\n }\n doRegister() {\n\n const role = this.registerForm.get('role').value;\n const firstName = this.registerForm.get('firstName').value;\n const lastName = this.registerForm.get('lastName').value;\n const workEmail = this.registerForm.get('workEmail').value;\n const password = this.registerForm.get('password').value;\n const businessEmail = this.registerForm.get('businessEmail').value;\n const businessPhoneNumber = '+44' + this.registerForm.get('businessPhoneNumber').value.substring(1);\n const businessName = this.registerForm.get('businessName').value;\n const mcsNumber = this.registerForm.get('mcsNumber').value;\n const businessURL = this.registerForm.get('businessURL').value;\n const location = this.registerForm.get('location').value;\n const regionsCovered = this.registerForm.get('regionsCovered').value;\n const technologies = this.registerForm.get('technologies').value;\n const skills = this.registerForm.get('skills').value;\n const certifications = this.registerForm.get('certifications').value;\n const isOrganisation = this.registerForm.get('isOrganisation').value;\n const boilerUpgradeScheme = this.registerForm.get('boilerUpgradeScheme').value == 'Yes' ? true : false;\n const body = { role, firstName, lastName, workEmail, password, businessEmail, businessPhoneNumber, businessName, mcsNumber, businessURL, location, regionsCovered, technologies, skills, certifications, isOrganisation, boilerUpgradeScheme }\n // console.log(body)\n\n if (this.registerForm.valid) {\n // console.log(body)\n this.professionalGlowService.registerServiceAgent(body).subscribe(\n (response) => {\n // console.log('registerServiceAgent', response);\n if (response.valid) {\n this.loadObj = {\n ...this.loadObj,\n loading: false,\n loaded: true,\n loadedMessage: 'Professional account successfully created.',\n };\n this.router.navigateByUrl('/login')\n } else {\n this.loadObj = {\n ...this.loadObj,\n loading: false,\n loadError: true,\n errorString: 'Failed to create a professional account.',\n };\n }\n },\n (errResp) => {\n console.warn(errResp.error.error);\n this.loadObj = {\n ...this.loadObj,\n loading: false,\n loadError: true,\n errorString: 'Failed to create a professional account.',\n };\n }\n );\n } else\n this.error = true\n this.markFormGroup(this.registerForm, 'touched')\n\n }\n\n async checkPostcode() {\n let messages = [];\n await this.checkPostcodeisValid().then((resp) => {\n if (!this.postcodeObj.isValid) {\n messages.push('Invalid postcode');\n }\n return messages\n });\n return\n }\n\n async checkPostcodeisValid() {\n let postcode;\n if (this.registerForm.get('location').touched) {\n postcode = this.registerForm.value.location;\n\n await this.postcodeCheckerService\n .checkPostcode(postcode)\n .then((resp: any) => {\n // console.log('IS POSTCODEVALID', resp);\n this.postcodeObj.area = resp.result['admin_district'];\n this.postcodeObj.isValid = true;\n this.postcodeObj.error = false;\n })\n .catch((err) => {\n console.warn('postcode errr', err);\n this.postcodeObj.area = '';\n this.postcodeObj.isValid = false;\n this.postcodeObj.error = true;\n\n });\n }\n }\n\n openTermsConditions() {\n const termsconditionsRef = this.modalService.open(TermsconditionsModalComponent, {\n scrollable: true,\n centered: true,\n size: 'xl',\n });\n termsconditionsRef.componentInstance.displayForm = false;\n termsconditionsRef.componentInstance.title = 'Glow';\n termsconditionsRef.componentInstance.professional = true\n }\n\n navigateForm(param) {\n this.error = false\n if (param == 'business' && this.registerForm.get('firstName').valid && this.registerForm.get('lastName').valid && this.registerForm.get('password').valid && this.registerForm.get('confirmPassword').valid) {\n //untouches form when navigating so errors don't display on next page\n this.markFormGroup(this.registerForm, 'untouched')\n this.router.navigateByUrl('/professionals-register/installer?type=business-details');\n\n } else if (param == 'skills' && this.registerForm.get('businessName').valid && this.registerForm.get('businessPhoneNumber').valid) {\n //untouches form when navigating so errors don't display on next page\n this.markFormGroup(this.registerForm, 'untouched')\n this.router.navigateByUrl('/professionals-register/installer?type=skills');\n }\n else {\n this.error = true\n this.markFormGroup(this.registerForm, 'touched')\n }\n this.getParams()\n }\n\n markFormGroup(formGroup: FormGroup, type) {\n this.formValidationService.markFormGroup(formGroup, type)\n }\n\n getParams() {\n this.route.queryParams.subscribe((params) => {\n if (params.type) {\n this.type = params.type\n }\n else this.type = 'personal-details'\n });\n\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InstallerRegisterFormComponent } from './installer-register-form.component';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { ProfessionalRegisterStepperModule } from '../professional-register-stepper/professional-register-stepper.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [InstallerRegisterFormComponent],\n imports: [\n CommonModule, SharedModule, FormsModule, ReactiveFormsModule, FormValidationMessageModule, NgSelectModule, ProfessionalRegisterStepperModule\n ],\n exports: [InstallerRegisterFormComponent]\n})\nexport class InstallerRegisterFormModule { }\n","export default \"li {\\n padding-bottom: 12px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2luc3RhbGxlci1zdXBwb3J0LW1vZGFsL2luc3RhbGxlci1zdXBwb3J0LW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2luc3RhbGxlci1zdXBwb3J0LW1vZGFsL2luc3RhbGxlci1zdXBwb3J0LW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBO0VBQ0ksb0JBQUE7QUNKSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaW5zdGFsbGVyLXN1cHBvcnQtbW9kYWwvaW5zdGFsbGVyLXN1cHBvcnQtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAjaW1nLTI6OmJlZm9yZSB7XG4vLyAgICAgd2lkdGg6IDc1JTtcbi8vICAgICBjb250ZW50OiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2luc3RhbGxlci1zdXBwb3J0LW1vZGFsL2ludml0ZS1jdXN0b21lcl8xLmdpZlwiKTtcbi8vIH1cblxubGkge1xuICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xufSIsImxpIHtcbiAgcGFkZGluZy1ib3R0b206IDEycHg7XG59Il19 */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-installer-support-modal',\n templateUrl: './installer-support-modal.component.html',\n styleUrls: ['./installer-support-modal.component.scss']\n})\nexport class InstallerSupportModalComponent implements OnInit {\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n\n firstSection: boolean = true\n secondSection: boolean\n innerWidth;\n thirdSection: boolean;\n fourthSection: boolean;\n fifthSection: boolean;\n\n modalTitle: string = 'Welcome to Glowmarkt'\n \n constructor(public activeModal: NgbActiveModal) { }\n\n ngOnInit() {\n this.onResize()\n }\n\n changeSection(section) {\n console.log(section)\n if (section == this.firstSection) {\n \n this.secondSection = true\n this.modalTitle = 'Step 1: Access customer property data '\n this.firstSection = !this.firstSection\n } else if (section = this.secondSection) {\n this.modalTitle = 'Step 1: Access customer property data'\n \n this.thirdSection = true\n this.secondSection = !this.secondSection\n } else if (section = this.thirdSection) {\n this.modalTitle = 'Step 2: View property data'\n\n\n \n this.fourthSection = true\n this.thirdSection = !this.thirdSection\n } else if (section = this.fourthSection) {\n this.modalTitle = 'More coming soon...'\n\n \n this.fifthSection = true\n this.fourthSection = !this.fourthSection\n }\n }\n\n back(section) {\n if (section == this.secondSection) {\n this.secondSection = !this.secondSection\n this.modalTitle = 'Welcome to Glowmarkt'\n this.firstSection = true\n } else if (section == this.thirdSection) {\n this.thirdSection = !this.thirdSection\n this.modalTitle = 'Step 1: Access customer property data'\n this.secondSection = true\n } else if (section == this.fourthSection) {\n this.fourthSection = !this.fourthSection\n this.modalTitle = 'Step 1: Access customer property data'\n this.thirdSection = true\n } else if (section == this.fifthSection) {\n this.modalTitle = 'Step 2: View property data'\n this.fifthSection = !this.fifthSection\n this.fourthSection = true\n }\n }\n\n getNumber() {\n if (this.firstSection) {\n return '1'\n } else if (this.secondSection) {\n return '2'\n } else if (this.thirdSection) {\n return '3'\n } else if (this.fourthSection) {\n return '4'\n } else if (this.fifthSection) {\n return '5'\n }\n }\n\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InstallerSupportModalComponent } from './installer-support-modal.component';\nimport { InstallerJourneyInfographicComponent } from '../infographics/installer-journey-infographic/installer-journey-infographic.component';\nimport { InstallerJourneyInfographicModule } from '../infographics/installer-journey-infographic/installer-journey-infographic.module';\n\n\n\n@NgModule({\n declarations: [InstallerSupportModalComponent],\n imports: [\n CommonModule,\n InstallerJourneyInfographicModule\n ],\n exports: [InstallerSupportModalComponent],\n entryComponents: [InstallerSupportModalComponent]\n})\nexport class InstallerSupportModalModule { }\n","export default \"form .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2ludml0YXRpb24tbW9kYWwvaW52aXRhdGlvbi1tb2RhbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9pbnZpdGF0aW9uLW1vZGFsL2ludml0YXRpb24tbW9kYWwuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUk7RUFDSSwyQkFBQTtBQ0RSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9pbnZpdGF0aW9uLW1vZGFsL2ludml0YXRpb24tbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcblxuICAgIC5uZy10b3VjaGVkLm5nLWludmFsaWR7XG4gICAgICAgIGJvcmRlcjogc29saWQgI2UzMmI0ZCAwLjVweDtcbiAgICB9XG4gICAgLy8gLm5nLXRvdWNoZWQubmctaW52YWxpZDpub3QoI21zY3MtbnVtYmVyKSB7XG4gICAgLy8gICAgIGJvcmRlcjogc29saWQgcmVkIDAuNXB4O1xuICAgIC8vIH1cbn0iLCJmb3JtIC5uZy10b3VjaGVkLm5nLWludmFsaWQge1xuICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHg7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { AuthenticationService } from 'src/app/services/authentication.service';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { Utils } from 'src/utils';\n@Component({\n selector: 'app-invitation-modal',\n templateUrl: './invitation-modal.component.html',\n styleUrls: ['./invitation-modal.component.scss'],\n})\nexport class InvitationModalComponent implements OnInit {\n invitationForm: FormGroup;\n hasSchematic;\n loading;\n error: boolean;\n errorMessage;\n emailError: boolean;\n firstSection = false;\n secondSection = false;\n installers = [];\n missingData;\n user;\n selectedService;\n schematicDocId;\n estimateRequestId;\n username;\n dropdownOptions;\n schematicDoc;\n successMessage: boolean;\n lastMonth;\n lastYear;\n completedSchematics;\n @Input() validVEs;\n @Input() invalidVEs;\n @Input() customerToInstallerInvitation: boolean;\n @Input() installerToCustomerInvitation: boolean;\n constructor(\n public activeModal: NgbActiveModal,\n private formValidationService: FormValidationService,\n private glowService: GlowService,\n private fb: FormBuilder,\n private auth: AuthenticationService,\n private serviceSelector: ServiceSelectorSvc,\n private invitationsService: InvitationsService,\n private schematicsService: SchematicsService\n ) { }\n\n ngOnInit() {\n \n this.invitationForm = this.fb.group({\n installers: ['', [this.customerToInstallerInvitation ? Validators.required : Validators.nullValidator]],\n installationDate: ['', [Validators.required]],\n spaceHotWaterTank: ['', [Validators.required]],\n selectedService: ['', [Validators.required]],\n radiatorSchematic: ['', [Validators.required]],\n newRadiatorsInstalled: ['', [Validators.required]],\n });\n if (this.validVEs) this.firstSection = true;\n this.selectedService = this.serviceSelector.getSelectedService();\n // this.invitationForm.get('selectedService').patchValue(this.dropdownOptions[0].name)\n this.getAssessmentPeriodsDate()\n if (this.selectedService && this.selectedService.veId) {\n this.schematicsService.getDocumentList(this.selectedService.veId).then((doc) => (this.schematicDoc = doc))\n }\n // this.getSchematicsByStatus()\n\n }\n\n \n getSchematics() {\n this.getSchematicsByStatus()\n }\n\n async getSchematicsByStatus() {\n // console.log(this.invitationForm)\n const documentList = await this.schematicsService.getSchematicsByStatus('complete', this.invitationForm.value.selectedService)\n this.completedSchematics = documentList\n // console.log(this.completedSchematics)\n }\n\n createInstallerGroup() {\n return this.fb.group({\n installerEmail: ['', [Validators.required]],\n });\n }\n\n showNextSection() {\n this.firstSection = false;\n this.secondSection = true;\n }\n selectSchematic(doc) {\n const schematicControl = this.invitationForm.controls['radiatorSchematic']\n schematicControl.setValue(doc)\n schematicControl.markAsTouched()\n }\n\n getValidVesToDisplay(ve) {\n return this.validVEs.find((virtualEntity) => virtualEntity.veId === ve.veId);\n }\n\n sendInvitation() {\n // console.log(this.invitationForm)\n if (this.invitationForm.valid) {\n if (this.customerToInstallerInvitation) {\n this.invitationForm.value.installers.forEach((installer) => {\n this.generateEstimateRequest(installer.value);\n });\n } else {\n if (this.installerToCustomerInvitation) {\n this.updateEstimateRequest();\n }\n }\n } else {\n this.invitationForm.markAllAsTouched();\n this.errorMessage = 'Please complete form';\n }\n }\n\n checkEmailValidity(installerArray) {\n this.emailError = false;\n let sanitisedEmails = [];\n installerArray.forEach((obj) => {\n //rid of white space\n sanitisedEmails.push({ value: obj['value'].replace(/[ \\t]+$/, '') });\n });\n this.installers = sanitisedEmails;\n // console.log(sanitisedEmails)\n sanitisedEmails.forEach((obj) => {\n if (FormValidator.isEmailValid(obj)) {\n this.emailError = true;\n // console.log(this.emailError)\n }\n });\n }\n\n setInstallerEmail(event) {\n // console.log(event)\n this.installers = event;\n this.checkEmailValidity(event);\n }\n\n checkFormValidity(formControlName, translateKey?) {\n return this.formValidationService.checkFormValidity(this.invitationForm, formControlName, translateKey);\n }\n\n resetError(formControl) {\n this.invitationForm.controls[formControl].markAsUntouched();\n this.error = false;\n }\n\n getDateIn30Days() {\n return Utils.getDateIn30Days();\n }\n\n getAssessmentPeriodsDate() {\n var date = new Date(new Date().setMonth(new Date().getMonth() - 1));\n this.lastMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0).toISOString().split('T')[0] + 'T23:59:59';\n\n var t = new Date();\n let lastYear = new Date(new Date(new Date(t.setFullYear(t.getFullYear() - 1))).setDate(1));\n this.lastYear = new Date(lastYear).toISOString().split('T')[0] + 'T00:00:00';\n }\n\n updateEstimateRequest() {\n this.loading = true;\n const selectedService = this.dropdownOptions.find((ss) => {\n return this.invitationForm.value.selectedService == ss.veId;\n });\n const body = {\n estimateRequestState: 'estimate-request-accepted-by-user',\n assessmentPeriodStart: this.lastYear,\n assessmentPeriodEnd: this.lastMonth,\n overview: {\n hotWaterTankSpace: this.invitationForm.value.spaceHotWaterTank == 'Yes' ? true : false,\n newRadiatorsFitted: this.invitationForm.value.newRadiatorsInstalled == 'Yes' ? true : false,\n installationDate: this.invitationForm.value.installationDate,\n },\n heatingSystem: {\n veDocId: this.schematicDoc[0].documentId,\n },\n };\n this.glowService.updateEstimateRequest(body, this.estimateRequestId, selectedService.veId).subscribe((resp) => {\n if (!resp.valid) {\n this.error = true;\n this.errorMessage = 'Unable to send invitation';\n this.invitationsService.getAllEstimateRequests();\n this.loading = false;\n } else {\n this.invitationsService.getAllEstimateRequests().then(resp => {\n this.loading = false\n this.activeModal.dismiss()\n this.error = false\n })\n\n }\n });\n }\n\n generateEstimateRequest(installer) {\n // this.error = false\n // console.log(this.invitationForm)\n const selectedService = this.dropdownOptions.find((ss) => {\n return this.invitationForm.value.selectedService == ss.veId;\n });\n const body = {\n username: this.username,\n estimateType: 'heat-pump-estimate',\n initiatedBy: 'customer',\n professionalUsername: installer,\n needsToBeAcceptedBy: this.getDateIn30Days(),\n assessmentPeriodStart: this.lastYear,\n assessmentPeriodEnd: this.lastMonth,\n overview: {\n hotWaterTankSpace: this.invitationForm.value.spaceHotWaterTank == 'Yes' ? true : false,\n newRadiatorsFitted: this.invitationForm.value.newRadiatorsInstalled == 'Yes' ? true : false,\n installationDate: this.invitationForm.value.installationDate,\n },\n heatingSystem: {\n veDocId: this.invitationForm.value.radiatorSchematic.documentId\n }\n }\n this.glowService.createEstimateRequest(body, selectedService.veId).subscribe((resp) => {\n this.loading = true;\n if (!resp.valid) {\n this.error = true;\n this.loading = false;\n this.errorMessage = 'Unable to send invitation';\n this.invitationsService.getAllEstimateRequests();\n } else {\n this.loading = false;\n this.error = false;\n this.invitationsService.getAllEstimateRequests();\n this.successMessage = true;\n\n // this.activeModal.dismiss()\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InvitationModalComponent } from './invitation-modal.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { FileUploadModule } from '../file-upload/file-upload.module';\nimport { RadiatorSchematicCardModule } from '../radiator-schematic-card/radiator-schematic-card.module';\n\n\n\n@NgModule({\n declarations: [InvitationModalComponent],\n imports: [\n CommonModule,\n SharedModule, FormValidationMessageModule, FileUploadModule, FormValidationMessageModule, RadiatorSchematicCardModule\n ],\n exports: [InvitationModalComponent],\n entryComponents: [InvitationModalComponent],\n})\nexport class InvitationModalModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1iYW5uZXIvbGFuZGluZy1iYW5uZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { CookieService } from 'ngx-cookie-service';\nimport { NgcCookieConsentService } from 'ngx-cookieconsent';\n\n@Component({\n selector: 'app-landing-banner',\n templateUrl: './landing-banner.component.html',\n styleUrls: ['./landing-banner.component.scss'],\n})\n\nexport class LandingBannerComponent implements OnInit {\n\n formInfo: FormGroup;\n regions = [\n 'Greater London',\n 'South East',\n 'South West',\n 'West Midlands',\n 'North West',\n 'North East',\n 'Yorkshire and the Humber',\n 'East Midlands',\n 'East of England',\n ];\n modalReference: any\n isRegisterSuccessfull = false\n bannerText = \"Are you an Installer? Stay updated on new features!\"\n cookieClass: boolean = false;\n\n constructor(\n private modalService: NgbModal,\n private formBuilder: FormBuilder,\n private strapiService: StrapiService,\n private ccService: NgcCookieConsentService\n ) {\n this.formInfo = this.formBuilder.group({\n firstName: ['', [Validators.required]],\n lastName: ['', Validators.required],\n email: [\n '',\n [\n Validators.required,\n Validators.pattern(\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n ),\n ],\n ],\n region: ['', Validators.required],\n businessName: ['', Validators.required],\n });\n\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n this.cookieClass = true\n }\n }\n\n ngOnInit() { }\n open(content) {\n this.modalReference = this.modalService.open(content, { ariaLabelledBy: 'Register modal' });\n }\n\n async register() {\n const response = await this.strapiService.addUpdatesInstallerSubscriber(this.formInfo.value)\n this.modalReference.close();\n this.bannerText = \"Thanks for registering!\"\n this.isRegisterSuccessfull = true\n this.sendGAEvent({ event: 'signUp' })\n // this.cookieService.set('preliminaryRegister', \"successfull\");\n }\n\n sendGAEvent(params) {\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n window.dataLayer.push(params)\n }\n }\n\n}","export default \".card-img-overlay {\\n background-image: linear-gradient(to bottom, rgba(116, 116, 116, 0), rgba(5, 5, 5, 0.851));\\n}\\n\\n*, *::before, *::after {\\n border-radius: 50% !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2xhbmRpbmctY2Fyb3VzZWwtY2FyZC9sYW5kaW5nLWNhcm91c2VsLWNhcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1jYXJvdXNlbC1jYXJkL2xhbmRpbmctY2Fyb3VzZWwtY2FyZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLDBGQUNBO0FDQUo7O0FER0E7RUFDSSw2QkFBQTtBQ0FKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sYW5kaW5nLWNhcm91c2VsLWNhcmQvbGFuZGluZy1jYXJvdXNlbC1jYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNhcmQtaW1nLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6XG4gICAgbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgxMTYsIDExNiwgMTE2LCAwKSwgcmdiYSg1LCA1LCA1LCAwLjg1MSkpIFxuICBcbn1cbiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xufSIsIi5jYXJkLWltZy1vdmVybGF5IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgxMTYsIDExNiwgMTE2LCAwKSwgcmdiYSg1LCA1LCA1LCAwLjg1MSkpO1xufVxuXG4qLCAqOjpiZWZvcmUsICo6OmFmdGVyIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG59Il19 */\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-landing-carousel-card',\n templateUrl: './landing-carousel-card.component.html',\n styleUrls: ['./landing-carousel-card.component.scss'],\n})\nexport class LandingCarouselCardComponent implements OnInit {\n @Input() content;\n @Input() type;\n innerWidth;\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n constructor(private strapiService: StrapiService) {}\n\n ngOnInit() {\n this.onResize();\n }\n\n contentRelativePath() {\n return `/home/${this.type}/${this.content.attributes.slug}`;\n }\n\n getDisplayImageUrl(content) {\n const url = this.strapiService.getSmallDisplayImageUrl(content);\n return { 'background-image': `url(${url})` };\n }\n}\n","export default \".carousel-text {\\n width: 50%;\\n}\\n\\nimg {\\n width: 60%;\\n}\\n\\n.carousel.carousel-control-prev, .carousel-control-next {\\n bottom: 90% !important;\\n}\\n\\n@media only screen and (max-width: 576px) {\\n .carousel-text {\\n width: 100%;\\n }\\n\\n img {\\n width: 80%;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2xhbmRpbmctY2Fyb3VzZWwvbGFuZGluZy1jYXJvdXNlbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sYW5kaW5nLWNhcm91c2VsL2xhbmRpbmctY2Fyb3VzZWwuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxVQUFBO0FDREo7O0FES0E7RUFDSSxVQUFBO0FDRko7O0FESUE7RUFDSSxzQkFBQTtBQ0RKOztBRElBO0VBRUE7SUFDSSxXQUFBO0VDRkY7O0VES0E7SUFDRSxVQUFBO0VDRkY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1jYXJvdXNlbC9sYW5kaW5nLWNhcm91c2VsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbi5jYXJvdXNlbC10ZXh0e1xuICAgIHdpZHRoOiA1MCVcblxufVxuXG5pbWd7XG4gICAgd2lkdGg6IDYwJVxufVxuLmNhcm91c2VsLmNhcm91c2VsLWNvbnRyb2wtcHJldiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gICAgYm90dG9tOiA5MCUgIWltcG9ydGFudDtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjU3NnB4KSB7XG5cbi5jYXJvdXNlbC10ZXh0e1xuICAgIHdpZHRoOiAxMDAlXG5cbn1cbiAgaW1ne1xuICAgIHdpZHRoOiA4MCVcbiAgfVxufSIsIi5jYXJvdXNlbC10ZXh0IHtcbiAgd2lkdGg6IDUwJTtcbn1cblxuaW1nIHtcbiAgd2lkdGg6IDYwJTtcbn1cblxuLmNhcm91c2VsLmNhcm91c2VsLWNvbnRyb2wtcHJldiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gIGJvdHRvbTogOTAlICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc2cHgpIHtcbiAgLmNhcm91c2VsLXRleHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogODAlO1xuICB9XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { NgbCarouselConfig, NgbCarouselModule } from '@ng-bootstrap/ng-bootstrap';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-landing-carousel',\n templateUrl: './landing-carousel.component.html',\n styleUrls: ['./landing-carousel.component.scss'],\n providers: [NgbCarouselConfig],\n})\nexport class LandingCarouselComponent implements OnInit {\n showNavigationArrows = false;\n showNavigationIndicators = false;\n featuredContent;\n loading=true;\n constructor(config: NgbCarouselConfig, private strapiService: StrapiService) {\n config.showNavigationArrows = true;\n config.showNavigationIndicators = true;\n config.wrap = true;\n config.interval = 5000;\n\n\n this.getFeaturedContent().then((allContent) => {\n // this.allContent = this.formatContentArray(allContent);\n this.loading=false;\n this.featuredContent = allContent;\n });\n }\n\n ngOnInit(): void {}\n\n async getFeaturedContent() {\n const content = await this.strapiService.getContentBySlug('tags', 'featured');\n return content;\n }\n}\n","export default \"@media only screen and (max-width: 768px) {\\n h4 {\\n font-size: 1.25rem;\\n }\\n\\n .view-more {\\n font-size: 1rem;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2xhbmRpbmctY29tbXVuaXRpZXMtY29udGVudC9sYW5kaW5nLWNvbW11bml0aWVzLWNvbnRlbnQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1jb21tdW5pdGllcy1jb250ZW50L2xhbmRpbmctY29tbXVuaXRpZXMtY29udGVudC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNBO0lBQ0ksa0JBQUE7RUNDRjs7RURDRjtJQUNJLGVBQUE7RUNFRjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sYW5kaW5nLWNvbW11bml0aWVzLWNvbnRlbnQvbGFuZGluZy1jb21tdW5pdGllcy1jb250ZW50LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuaDQge1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbn1cbi52aWV3LW1vcmUge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbn1cbn1cblxuIiwiQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICB9XG5cbiAgLnZpZXctbW9yZSB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICB9XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\nimport _ from 'underscore';\n\nexport type CommunityLayout = 'leftVerticalHero' | 'rightHorizontalHero';\n\n@Component({\n selector: 'app-landing-communities-content',\n templateUrl: './landing-communities-content.component.html',\n styleUrls: ['./landing-communities-content.component.scss'],\n})\nexport class LandingCommunitiesContentComponent implements OnInit {\n @Input() community;\n @Input() layout: CommunityLayout;\n featuredContent: any[] = [];\n heroContent: any;\n\n constructor(private strapiService: StrapiService) {}\n\n ngOnInit() {\n this.featuredContent = this.getFeaturedContent(this.community)\n .flat()\n .filter((c) => c);\n\n }\n goToCommunityPage() {\n return `/community/${this.community.attributes.slug}`;\n }\n\n getFeaturedContent(community) {\n const featuredArticles = community.attributes.featured_articles\n ? community.attributes.featured_articles.data.map((article) =>\n Object.assign(article, { contentType: 'articles' })\n )\n : [];\n const featuredBlogs = community.attributes.featured_blogs\n ? community.attributes.featured_blogs.data.map((blog) => Object.assign(blog, { contentType: 'blogs' }))\n : [];\n const featuredTutorials = community.attributes.featured_tutorials\n ? community.attributes.featured_tutorials.data.map((tutorial) =>\n Object.assign(tutorial, { contentType: 'tutorials' })\n )\n : [];\n const featuredInfographics = community.attributes.featured_infographics\n ? community.attributes.featured_infographics.data.map((infographic) =>\n Object.assign(infographic, { contentType: 'infographics' })\n )\n : [];\n return _.zip(featuredArticles, featuredBlogs, featuredTutorials, featuredInfographics);\n }\n\n}\n","export default \".horizontal-cards:not(:last-child) {\\n border-right: solid 1px #E7E7E9;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2xhbmRpbmctY29tbXVuaXR5LWxheW91dHMvbGVmdC1ob3Jpem9udGFsLWhlcm8vbGVmdC1ob3Jpem9udGFsLWhlcm8uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1jb21tdW5pdHktbGF5b3V0cy9sZWZ0LWhvcml6b250YWwtaGVyby9sZWZ0LWhvcml6b250YWwtaGVyby5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLCtCQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2xhbmRpbmctY29tbXVuaXR5LWxheW91dHMvbGVmdC1ob3Jpem9udGFsLWhlcm8vbGVmdC1ob3Jpem9udGFsLWhlcm8uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaG9yaXpvbnRhbC1jYXJkczpub3QoOmxhc3QtY2hpbGQpe1xuICAgIGJvcmRlci1yaWdodDogc29saWQgMXB4ICNFN0U3RTk7XG59IiwiLmhvcml6b250YWwtY2FyZHM6bm90KDpsYXN0LWNoaWxkKSB7XG4gIGJvcmRlci1yaWdodDogc29saWQgMXB4ICNFN0U3RTk7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-left-horizontal-hero',\n templateUrl: './left-horizontal-hero.component.html',\n styleUrls: ['./left-horizontal-hero.component.scss'],\n})\nexport class LeftHorizontalHeroComponent implements OnInit {\n @Input() allContent: any[] = [];\n @Input() heroContent: any;\n sideContent = [];\n bottomContent;\n constructor(private strapiService: StrapiService) {}\n\n ngOnInit() {\n this.sideContent = this.allContent.length == 4 ? this.allContent.slice(0, 2) : this.allContent.slice(0, 3);\n this.bottomContent = this.allContent.length == 4 ? this.allContent.slice(2) : this.allContent.slice(3);\n }\n contentRelativePath(content: any) {\n return `/home/${content.contentType}/${content.attributes.slug}`;\n }\n\n getTimeToRead(content) {\n if (content.contentType === 'tutorials') {\n let totalMin = 1;\n content.attributes.tutorial_sections.data.forEach((c: any) => {\n totalMin = totalMin + Utils.getTimeToRead(c.attributes.content);\n });\n return totalMin;\n } else {\n return content.attributes.content ? Utils.getTimeToRead(content.attributes.content) : 3;\n }\n }\n\n getDisplayImageUrl(content) {\n const url = this.strapiService.getSmallDisplayImageUrl(content);\n return { 'background-image': `url(${url})` };\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1jb21tdW5pdHktbGF5b3V0cy9sZWZ0LXZlcnRpY2FsLWhlcm8vbGVmdC12ZXJ0aWNhbC1oZXJvLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-left-vertical-hero',\n templateUrl: './left-vertical-hero.component.html',\n styleUrls: ['./left-vertical-hero.component.scss'],\n})\nexport class LeftVerticalHeroComponent implements OnInit {\n @Input() allContent;\n @Input() heroContent:any\n constructor(private strapiService: StrapiService) {}\n\n ngOnInit() {}\n\n contentRelativePath(content: any) {\n return `/home/${content.contentType}/${content.attributes.slug}`;\n }\n\n\n getTimeToRead(content) {\n if (content.contentType === 'tutorials') {\n let totalMin = 1;\n content.attributes.tutorial_sections.data.forEach((c: any) => {\n totalMin = totalMin + Utils.getTimeToRead(c.attributes.content);\n });\n return totalMin;\n } else {\n return content.attributes.content?Utils.getTimeToRead(content.attributes.content):3\n }\n }\n\n getDisplayImageUrl(content) {\n const url = this.strapiService.getSmallDisplayImageUrl(content);\n return { 'background-image': `url(${url})` };\n }\n}\n","export default \".horizontal-cards:not(:last-child) {\\n border-right: solid 1px #E7E7E9;\\n}\\n\\n.card {\\n height: 100% !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2xhbmRpbmctY29tbXVuaXR5LWxheW91dHMvcmlnaHQtaG9yaXpvbnRhbC1oZXJvL3JpZ2h0LWhvcml6b250YWwtaGVyby5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sYW5kaW5nLWNvbW11bml0eS1sYXlvdXRzL3JpZ2h0LWhvcml6b250YWwtaGVyby9yaWdodC1ob3Jpem9udGFsLWhlcm8uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSwrQkFBQTtBQ0NKOztBREVBO0VBQ0ksdUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1jb21tdW5pdHktbGF5b3V0cy9yaWdodC1ob3Jpem9udGFsLWhlcm8vcmlnaHQtaG9yaXpvbnRhbC1oZXJvLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmhvcml6b250YWwtY2FyZHM6bm90KDpsYXN0LWNoaWxkKXtcbiAgICBib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAjRTdFN0U5O1xufVxuXG4uY2FyZHtcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn0iLCIuaG9yaXpvbnRhbC1jYXJkczpub3QoOmxhc3QtY2hpbGQpIHtcbiAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAxcHggI0U3RTdFOTtcbn1cblxuLmNhcmQge1xuICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-right-horizontal-hero',\n templateUrl: './right-horizontal-hero.component.html',\n styleUrls: ['./right-horizontal-hero.component.scss'],\n})\nexport class RightHorizontalHeroComponent implements OnInit {\n @Input() content: any[] = [];\n @Input() heroContent: any;\n displayImageUrl;\n constructor(private strapiService: StrapiService) {}\n\n ngOnInit() {}\n ngOnChanges() {\n this.displayImageUrl = this.getDisplayImageUrl(this.content);\n }\n\n contentRelativePath(content: any) {\n return `/home/${content.contentType}/${content.attributes.slug}`;\n }\n\n getTimeToRead(content) {\n if (content.contentType === 'tutorials') {\n let totalMin = 1;\n content.attributes.tutorial_sections.data.forEach((c: any) => {\n totalMin = totalMin + Utils.getTimeToRead(c.attributes.content);\n });\n return totalMin;\n } else {\n return content.attributes.content ? Utils.getTimeToRead(content.attributes.content) : 3;\n }\n }\n\n getDisplayImageUrl(content) {\n const url = this.strapiService.getSmallDisplayImageUrl(content);\n return { 'background-image': `url(${url})` };\n }\n}\n","export default \"@media only screen and (max-width: 575px) {\\n .col-sm-4 {\\n padding-top: 10px;\\n width: 75%;\\n }\\n}\\n.input-group-text {\\n background-color: #eeeeee;\\n border: 1px solid #e2e1e1;\\n border-radius: 75px 0px 0px 75px;\\n color: #b6b6b6;\\n}\\n.ng-select {\\n width: 100%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2xhbmRpbmctc2VhcmNoYmFyL2xhbmRpbmctc2VhcmNoYmFyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2xhbmRpbmctc2VhcmNoYmFyL2xhbmRpbmctc2VhcmNoYmFyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0E7SUFDSSxpQkFBQTtJQUNBLFVBQUE7RUNDRjtBQUNGO0FERUE7RUFDSSx5QkFBQTtFQUNBLHlCQUFBO0VBQ0EsZ0NBQUE7RUFDQSxjQUFBO0FDQUo7QURHQTtFQUNJLFdBQUE7QUNBSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1zZWFyY2hiYXIvbGFuZGluZy1zZWFyY2hiYXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA1NzVweCl7XG4uY29sLXNtLTR7IFxuICAgIHBhZGRpbmctdG9wOjEwcHg7XG4gICAgd2lkdGg6IDc1JTtcbn1cbn1cblxuLmlucHV0LWdyb3VwLXRleHQge1xuICAgIGJhY2tncm91bmQtY29sb3I6I2VlZWVlZTsgXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2UyZTFlMTsgXG4gICAgYm9yZGVyLXJhZGl1czogNzVweCAwcHggMHB4IDc1cHg7IFxuICAgIGNvbG9yOiByZ2IoMTgyLCAxODIsIDE4MikgXG59XG5cbi5uZy1zZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlXG59IiwiQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAuY29sLXNtLTQge1xuICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgIHdpZHRoOiA3NSU7XG4gIH1cbn1cbi5pbnB1dC1ncm91cC10ZXh0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UyZTFlMTtcbiAgYm9yZGVyLXJhZGl1czogNzVweCAwcHggMHB4IDc1cHg7XG4gIGNvbG9yOiAjYjZiNmI2O1xufVxuXG4ubmctc2VsZWN0IHtcbiAgd2lkdGg6IDEwMCU7XG59Il19 */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { set } from 'core-js/core/dict';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { SearchService } from 'src/app/services/search.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-landing-searchbar',\n templateUrl: './landing-searchbar.component.html',\n styleUrls: ['./landing-searchbar.component.scss'],\n})\nexport class LandingSearchbarComponent implements OnInit {\n @Output() searchResults = new EventEmitter();\n @Output() searchParameters = new EventEmitter();\n @Input() placeholder: string = 'Search Glowmarkt by tags or keywords...';\n @Input() communityTag: string;\n @Input() searchBarClass: string = '';\n //set isDropdownOpen to null for normal behaviour, set to true fo always open, set to false for always closed\n @Input() isDropdownOpen: boolean = false;\n @Output() state = new EventEmitter();\n @ViewChild('ngSelect', { static: true }) ngSelect: NgSelectComponent;\n tags!: any[];\n results: any[] | boolean = [];\n searchTerm = '';\n tagsToFilter = [];\n selectedTags = [];\n\n searchParametersForm: FormGroup;\n currentSearchTerm = '';\n\n community = '';\n constructor(\n private landingService: LandingService,\n private router: Router,\n private searchService: SearchService,\n private strapiService: StrapiService,\n private fb: FormBuilder\n ) {}\n\n ngOnInit(): void {\n // this.searchService.updateSearchSettingsForSearchableContent()\n // this.strapiService.getAllOfContentType('tags').then((tags) => (this.tags = tags));\n this.initSearchParametersForm();\n }\n\n initSearchParametersForm() {\n this.searchParametersForm = this.fb.group({\n searchParameters: [[], Validators.required],\n });\n }\n\n processCurrentSearchTerm(event) {\n this.currentSearchTerm = event.items[0];\n if (\n event.items.length == 1 &&\n event.term.toLowerCase().split(' ').join('') === this.currentSearchTerm.toLowerCase().split(' ').join('')\n ) {\n this.setTagsAndSearchTerm([this.currentSearchTerm]);\n } else {\n this.setTagsAndSearchTerm([{ label: event.term }]);\n }\n }\n\n focusSearchBar() {\n this.ngSelect.focus()\n }\n\n async searchAllContent() {\n if (this.searchTerm || this.tagsToFilter.length) {\n this.results = await this.searchService.filterAllContentWithTags('landing', this.searchTerm, this.tagsToFilter);\n this.emitSearchResults();\n // if (!this.searchTerm.length) {\n // this.emitSearchResults();\n // }\n } else {\n this.results = [];\n this.emitSearchResults();\n }\n }\n\n redirectToSearchResultsPage() {\n this.emitCloseMenu('true');\n // console.log('redirectToSearchResultsPage');\n const tagsAsString =\n this.communityTag && !this.tagsToFilter.includes(this.communityTag)\n ? `${this.communityTag},${this.tagsToFilter.join(',')}`\n : this.tagsToFilter.join(',');\n this.router.navigateByUrl(`search?q[s]=${this.searchTerm}&&q[tags]=${tagsAsString}`);\n }\n\n setTagsAndSearchTerm(tags: any[], community?: string) {\n const tagsWithoutNull = tags.filter((tag) => tag && (typeof tag === 'string' || tag.label));\n if (tags.length || tagsWithoutNull.length) {\n this.community = community ? community : '';\n this.tagsToFilter = tagsWithoutNull.filter((tag) => typeof tag === 'string');\n this.searchTerm = tagsWithoutNull\n .filter((tag) => typeof tag != 'string')\n .map((tag) => tag.label)\n .join(' ');\n }\n return tagsWithoutNull;\n }\n\n setSearchParameters(tags: any[], community?: string) {\n const tagsWithoutNull = this.setTagsAndSearchTerm(tags, community);\n if (tags.length || tagsWithoutNull.length) {\n this.searchParametersForm.setValue({ searchParameters: tagsWithoutNull });\n }\n this.emitSearchParameters();\n }\n\n async setSearchParametersAndSearch(tags: any[], community?: string) {\n this.setSearchParameters(tags, community);\n this.redirectToSearchResultsPage();\n }\n\n emitSearchResults(results = this.results) {\n this.searchResults.emit({\n results: results,\n searchTerm: this.searchTerm,\n tagsToFilter: this.tagsToFilter,\n communityTag: this.getCommunityFiltered(),\n });\n }\n\n emitSearchParameters(tags = this.searchParametersForm.value.searchParameters) {\n this.searchParameters.emit({\n tags: tags,\n searchTerm: this.searchTerm,\n tagsToFilter: this.tagsToFilter,\n communityTag: this.getCommunityFiltered(),\n });\n }\n\n getCommunityFiltered() {\n if (this.tagsToFilter && this.tagsToFilter.length && this.tags && this.tags.length) {\n const communityTags = this.tagsToFilter.filter((tag) => {\n const t = this.tags.filter((ft) => ft.attributes.title == tag)[0];\n return t && t.attributes.isCommunity;\n });\n return communityTags[0];\n }\n }\n\n // navigateToContent(content) {\n // const idFragments = content.id.split('-');\n // this.landingService.setContentToDisplayId(idFragments[idFragments.length - 1]);\n // idFragments.pop();\n // this.router.navigateByUrl(`home/${idFragments.join('-')}/${content.title}`);\n // }\n\n emitCloseMenu(value: string) {\n this.state.emit(value);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LandingSearchbarComponent } from './landing-searchbar.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [LandingSearchbarComponent],\n imports: [\n CommonModule,\n SharedModule\n ],\n exports: [LandingSearchbarComponent]\n})\nexport class LandingSearchBarModule { }","export default \".list-group-item {\\n border: none;\\n padding: 0px;\\n margin: none;\\n}\\n\\n.community-text {\\n font-size: 1rem;\\n font-weight: 500;\\n}\\n\\np {\\n font-size: 0.8rem;\\n}\\n\\n.btn {\\n letter-spacing: 0px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2xhbmRpbmctc2lkZWJhci9sYW5kaW5nLXNpZGViYXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1zaWRlYmFyL2xhbmRpbmctc2lkZWJhci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFlBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtBQ0NKOztBREVBO0VBQ0ksZUFBQTtFQUNBLGdCQUFBO0FDQ0o7O0FEQ0E7RUFDSSxpQkFBQTtBQ0VKOztBREFBO0VBQ0csbUJBQUE7QUNHSCIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbGFuZGluZy1zaWRlYmFyL2xhbmRpbmctc2lkZWJhci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5saXN0LWdyb3VwLWl0ZW17XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBtYXJnaW46bm9uZTtcbn1cblxuLmNvbW11bml0eS10ZXh0IHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cbnB7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG59XG4uYnRuIHtcbiAgIGxldHRlci1zcGFjaW5nOiAwcHg7XG59IiwiLmxpc3QtZ3JvdXAtaXRlbSB7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMHB4O1xuICBtYXJnaW46IG5vbmU7XG59XG5cbi5jb21tdW5pdHktdGV4dCB7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxucCB7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG4uYnRuIHtcbiAgbGV0dGVyLXNwYWNpbmc6IDBweDtcbn0iXX0= */\"","import { Component, OnInit, Output, EventEmitter, Input, SimpleChanges } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-landing-sidebar',\n templateUrl: './landing-sidebar.component.html',\n styleUrls: ['./landing-sidebar.component.scss'],\n})\nexport class LandingSidebarComponent implements OnInit {\n @Output() selectCommunity = new EventEmitter();\n @Input()communityTag\n communities = [];\n selectedCommunity:any\n constructor(private strapiService: StrapiService) {\n }\n\n ngOnInit() {\n this.getCommunities().then(communities=> this.communities = communities)\n }\n\n ngOnChanges(changes:SimpleChanges){\n this.selectedCommunity=this.getCommunityFromTag(changes.communityTag.currentValue)\n }\n // async getCommunityTags() {\n // const tags = await this.strapiService.getAllOfContentType('tags');\n // this.communities = tags.filter((tag) => tag.attributes.isCommunity);\n // }\n\n getCommunityFromTag(tagTitle){\n return this.communities.filter(community=>community.attributes.name==tagTitle)[0]\n }\n\n async getCommunities(){\n const communities = await this.strapiService.getAllOfContentType(\"communities\")\n return communities\n }\n\n emitSelectedCommunity(community){\n this.selectedCommunity=community\n this.selectCommunity.emit(community)\n }\n}\n","export default \"form .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2xvY2FsLWF1dGhvcml0eS1yZWdpc3Rlci1mb3JtL2xvY2FsLWF1dGhvcml0eS1yZWdpc3Rlci1mb3JtLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2xvY2FsLWF1dGhvcml0eS1yZWdpc3Rlci1mb3JtL2xvY2FsLWF1dGhvcml0eS1yZWdpc3Rlci1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVJO0VBQ0ksMkJBQUE7QUNEUiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbG9jYWwtYXV0aG9yaXR5LXJlZ2lzdGVyLWZvcm0vbG9jYWwtYXV0aG9yaXR5LXJlZ2lzdGVyLWZvcm0uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcblxuICAgIC5uZy10b3VjaGVkLm5nLWludmFsaWR7XG4gICAgICAgIGJvcmRlcjogc29saWQgI2UzMmI0ZCAwLjVweDtcbiAgICB9XG5cbn0iLCJmb3JtIC5uZy10b3VjaGVkLm5nLWludmFsaWQge1xuICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHg7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\nimport { FormValidator } from 'src/app/services/user-validators';\n\n@Component({\n selector: 'app-local-authority-register-form',\n templateUrl: './local-authority-register-form.component.html',\n styleUrls: ['./local-authority-register-form.component.scss']\n})\nexport class LocalAuthorityRegisterFormComponent implements OnInit {\n registerForm: FormGroup\n loadObj;\n viewPassword: boolean = false;\n\n error;\n constructor(private formBuilder: FormBuilder,\n private professionalGlowService: ProfessionalGlowService,\n private formValidationService: FormValidationService, private glowService: GlowService, private router: Router) {\n this.registerForm = this.formBuilder.group({\n firstName: ['', [Validators.required]],\n lastName: ['', [Validators.required]],\n workEmail: ['', [Validators.required, FormValidator.isEmailValid]],\n password: ['', [Validators.required, FormValidator.isPasswordStrong]],\n confirmPassword: ['', [Validators.required, FormValidator.isPasswordSame]],\n localAuthority: ['', [Validators.required]],\n jobRole: ['', Validators.required],\n role: ['Local Authority', Validators.required],\n\n })\n }\n\n ngOnInit() {\n }\n checkFormValidity(formControlName, translateKey?) {\n\n return this.formValidationService.checkFormValidity(this.registerForm, formControlName, translateKey)\n\n }\n doRegister() {\n const role = this.registerForm.get('role').value;\n const firstName = this.registerForm.get('firstName').value;\n const lastName = this.registerForm.get('lastName').value;\n const workEmail = this.registerForm.get('workEmail').value;\n const password = this.registerForm.get('password').value;\n const jobRole = this.registerForm.get('jobRole').value;\n const businessName = this.registerForm.get('localAuthority').value;\n\n // console.log(this.registerForm)\n const body = { role, firstName, lastName, workEmail, password, jobRole, businessName }\n if (this.registerForm.valid) {\n // console.log(body)\n this.professionalGlowService.registerServiceAgent(body).subscribe(\n (response) => {\n // console.log('registerServiceAgent', response);\n if (response.valid) {\n this.loadObj = {\n ...this.loadObj,\n loading: false,\n loaded: true,\n loadedMessage: 'Professional account successfully created.',\n };\n this.router.navigateByUrl('/login')\n } else {\n this.loadObj = {\n ...this.loadObj,\n loading: false,\n loadError: true,\n errorString: 'Failed to create a professional account.',\n };\n }\n },\n (errResp) => {\n console.warn(errResp.error.error);\n this.loadObj = {\n ...this.loadObj,\n loading: false,\n loadError: true,\n errorString: 'Failed to create a professional account.',\n };\n }\n );\n } else\n this.error = true\n this.formValidationService.markFormGroup(this.registerForm, 'touched')\n\n }\n resetError() {\n\n this.error = false\n }\n togglePassword(viewPassword) {\n this.viewPassword = viewPassword ? false : true;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LocalAuthorityRegisterFormComponent } from './local-authority-register-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\n\n\n\n@NgModule({\n declarations: [LocalAuthorityRegisterFormComponent],\n imports: [\n CommonModule, SharedModule, FormValidationMessageModule\n ],\n exports: [LocalAuthorityRegisterFormComponent]\n})\nexport class LocalAuthorityRegisterFormModule { }\n","export default \".logo-text {\\n font-family: \\\"DIN Next LT Pro\\\" !important;\\n font-weight: 500;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL2xvZ2luLW1vZGFsL2xvZ2luLW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2xvZ2luLW1vZGFsL2xvZ2luLW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0kseUNBQUE7RUFDQSxnQkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1tb2RhbC9sb2dpbi1tb2RhbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5sb2dvLXRleHQge1xuICAgIGZvbnQtZmFtaWx5OiAnRElOIE5leHQgTFQgUHJvJyAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbiIsIi5sb2dvLXRleHQge1xuICBmb250LWZhbWlseTogXCJESU4gTmV4dCBMVCBQcm9cIiAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogNTAwO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationStart, Router } from '@angular/router';\n\nimport { Validators, FormBuilder, FormGroup } from '@angular/forms';\nimport { GlowService } from '../../services/glow.service';\nimport { tLoginInfo, tTermsConditionsUserCreateRes, tUserOrganization } from '../../services/glow.typings';\n// import { UserGroupSelectorService } from \"../../services/usergroup-selector.service\";\n// import { GlowEventService } from \"../../services/event.service\";\nimport { CustomUIConfigService } from '../../services/custom-ui-config.service';\nimport { tLoadingElementWithSuccess } from '../../services/app-config.typings';\nimport { TermsConditionsService } from '../../services/termsconditions.service';\nimport { tTermsConditionsUiConfig } from 'src/app/components/component.typings';\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TermsconditionsModalComponent } from 'src/app/components/termsconditions-modal/termsconditions-modal.component';\n// import { GoogleAnalyticsEventsService } from 'app/services/google-analytics-events-service';\n\n@Component({\n selector: 'app-login-modal',\n templateUrl: './login-modal.component.html',\n styleUrls: ['./login-modal.component.scss'],\n})\nexport class LoginModalComponent implements OnInit {\n loginDetailsForm: FormGroup;\n loadObj: tLoadingElementWithSuccess;\n isOpenTermsAndConditionsModal: boolean = false;\n termsConditionsUiConfig: tTermsConditionsUiConfig = {\n allowModalToExit: false,\n showPermissions: true,\n requireAccept: true,\n };\n viewPassword: boolean = false;\n\n termsconditionsRef: any;\n\n constructor(\n private modalService: NgbModal,\n private activeModal: NgbActiveModal,\n private formBuilder: FormBuilder,\n private authService: GlowService,\n // private glowEventService: GlowEventService,\n private termsConditionsService: TermsConditionsService,\n private route: ActivatedRoute,\n private router: Router,\n private uiConfigService: CustomUIConfigService // private userGroupSelectorService: UserGroupSelectorService, // private analytics: GoogleAnalyticsEventsService\n ) {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false);\n\n this.loginDetailsForm = this.formBuilder.group({\n username: ['', Validators.required],\n password: ['', Validators.required],\n });\n router.events.subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.closeModal(\"NavigationStart\")\n }})\n\n route.queryParams.subscribe((params) => {\n this.loginDetailsForm.get('username').setValue(params['email']);\n const missingElements = [];\n const incorrectElements = [];\n // scope ccould also be a property, but it is not required\n const incomingRequiredProperties = ['applicationId', 'token', 'userKey'];\n const replaceCharacters = [/%0D/g, /%0A/g, /%0D%0A/g, /\\r/g, /\\n/g];\n const incomingValues: any = Object.keys(params).reduce((acc, incomingProperty) => {\n const sanitisedPropertyName = replaceCharacters.reduce(\n (acc, characterToReplace) => acc.replace(characterToReplace, ''),\n incomingProperty\n );\n if (\n incomingRequiredProperties.indexOf(sanitisedPropertyName) > -1 ||\n incomingRequiredProperties.indexOf(incomingProperty) > -1\n ) {\n const sanitisedValue = replaceCharacters.reduce(\n (acc, characterToReplace) => acc.replace(characterToReplace, ''),\n params[incomingProperty] || params[sanitisedPropertyName]\n );\n acc[sanitisedPropertyName] = sanitisedValue;\n }\n return acc;\n }, {});\n incomingRequiredProperties.forEach((property) => {\n if (!incomingValues[property]) {\n missingElements.push(property);\n console.warn('Missing element: ' + property);\n }\n });\n const { applicationId, token, userKey } = incomingValues;\n const emailVerificationIncomingParams = { applicationId, token, usernameHash: userKey };\n // if (missingElements.length === 0 && incorrectElements.length === 0) {\n // this.submitEmailVerificationInformation(emailVerificationIncomingParams)\n // }\n this.submitEmailVerificationInformation(emailVerificationIncomingParams);\n });\n }\n\n ngOnInit(): void {}\n\n\n closeModal(result) {\n this.activeModal.close(result);\n // this.router.navigateByUrl('/support/system-incidents');\n }\n\n submitEmailVerificationInformation(emailVerificationIncomingParams) {\n this.authService.verify(emailVerificationIncomingParams).subscribe(\n (verificationResponse) => {\n if (verificationResponse.valid === true) {\n // console.log('Email successfully verified');\n } else {\n // console.log('email address could not be verified.');\n }\n },\n (err) => {\n // console.log('email verification error', err);\n console.warn(err.error);\n }\n );\n }\n\n sanitiseDetails(loginDetailsForm: tLoginInfo): tLoginInfo {\n // Lowercase Username:\n if (loginDetailsForm && loginDetailsForm.username) {\n loginDetailsForm.username = loginDetailsForm.username.toLowerCase();\n loginDetailsForm.username = loginDetailsForm.username.replace(/\\s+/g, '');\n }\n\n if (loginDetailsForm.password) {\n loginDetailsForm.password = loginDetailsForm.password.replace(/\\s+$/, ''); // Trailing spaces\n loginDetailsForm.password = loginDetailsForm.password.replace(/^\\s+/g, ''); // Spaces at the start of the string\n }\n\n return loginDetailsForm;\n }\n\n togglePassword(viewPassword) {\n this.viewPassword = viewPassword ? false : true;\n }\n\n logOut() {\n this.authService.logout().subscribe(\n (resp) => {\n // // console.log('logout', resp);\n // // console.log(\"Log Out user as T&Cs cound not happen\")\n },\n (err) => {\n console.warn(err);\n }\n );\n // this.isOpenTermsAndConditionsModal = false\n }\n\n goToNextPage(userOrganizations: tUserOrganization[]) {\n this.router.navigateByUrl('/pages/my-data');\n\n // if (userOrganizations && Array.isArray(userOrganizations) && userOrganizations.length > 1) {\n // this.router.navigateByUrl('/pages/usergroup');\n // } else if (userOrganizations.length == 1) {\n // this.userGroupSelectorService.setUserOrganization(userOrganizations[0])\n // this.router.navigateByUrl('/pages/overview');\n // } else {\n // console.warn(\"No user Organizations found\")\n // this.router.navigateByUrl('/pages/user-management');\n // }\n }\n\n openTermsConditionsModal(termsConditions) {\n this.termsconditionsRef = this.modalService.open(TermsconditionsModalComponent, {\n scrollable: true,\n backdrop: 'static',\n centered: true,\n size: 'xl',\n });\n // this.termsconditionsRef.componentInstance.termsConditions=termsConditions\n }\n\n findUserOrganizations() {\n this.authService.getUserOrganizationsOfUser().subscribe(\n (userOrganizations) => {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loaded: true,\n loadedMessage: 'Success',\n };\n // this.goToNextPage(userOrganizations);\n this.closeModal('success');\n },\n (error) => {\n console.warn(error);\n // // console.log('User Organizations loading error is : ' + error);\n }\n );\n }\n\n async checkTermsConditions() {\n let userTcObj;\n try {\n userTcObj = await this.termsConditionsService.checkIfUserHasAcceptedCurrentTermsAndConditions();\n } catch (e) {\n console.warn(e);\n if (e && e.message) {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString: e.message,\n };\n } else {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString: 'ERROR',\n };\n }\n }\n // console.log('userTcObj', userTcObj);\n if (userTcObj && userTcObj.hasUserAcceptedTermsConditions === true) {\n this.findUserOrganizations();\n } else {\n // console.log('NOT ACCEPTED TERMS');\n this.isOpenTermsAndConditionsModal = true;\n const ts = await this.termsConditionsService.getCurrentTermsConditionsSync();\n this.openTermsConditionsModal(ts);\n this.termsconditionsRef.result.then(\n (data) => {\n // // console.log('RESULT CLOSE', data);\n if (data.reference && data.data) {\n this.termsConditionsService.setUserTermsConditions(data);\n this.findUserOrganizations();\n } else {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString: 'Terms and conditions must be accepted to continue',\n };\n }\n },\n (err) => {\n console.warn(err);\n }\n );\n }\n }\n\n // async termsConditionsAggreed(termsConditionsUser: tTermsConditionsUserCreateRes) {\n // let userTcObj;\n // try {\n // userTcObj = await this.termsConditionsService.checkIfUserHasAcceptedCurrentTermsAndConditions();\n // } catch (e) {\n // console.warn(e)\n // }\n // if (userTcObj && userTcObj.hasUserAcceptedTermsConditions === true) {\n // this.findUserOrganizations()\n // } else {\n // this.loadObj = {\n // ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n // loadError: true,\n // errorString: \"ERROR_TERMS_CONDITIONS_NOT_ACCEPTED\"\n // }\n // this.logOut()\n // }\n // }\n\n // Attempt to login in through our User service\n doLogin() {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(true);\n\n // console.log('Login attempt');\n let loginDetails = this.sanitiseDetails({ ...this.loginDetailsForm.value });\n this.authService.login(loginDetails).subscribe(\n (authResponse) => {\n if (authResponse === true) {\n // this.glowEventService.sendEvent({}, 'login')\n const isTempAuth = this.authService.isTempAuth();\n if (isTempAuth === true) {\n // console.log('Temp auth credentials detected, going straight to home');\n this.findUserOrganizations();\n } else {\n // authentication success | Check T&Cs and consent\n this.checkTermsConditions();\n // this.analytics.emitEvent('Login', 'Loggin Event')\n }\n } else {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString: 'Access Denied',\n };\n }\n },\n (err) => {\n console.warn(err);\n let errorString = 'An error has occurred';\n // try {\n // const errJson = err.json()\n // if (errJson.error) {\n // errorString = errJson.error\n // } else if (errJson.valid === false ) {\n // errorString = 'Invalid username or password'\n // }\n try {\n if (err.error && typeof err.error === 'string') {\n errorString = err.error;\n } else if ((err.error && !err.error.valid) || err.valid === false) {\n errorString = 'Invalid username or password';\n }\n } catch (e) {\n console.warn(e);\n }\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString,\n };\n }\n );\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { Utils } from 'src/utils';\nimport { InvitationModalComponent } from '../invitation-modal/invitation-modal.component';\nimport { async } from '@angular/core/testing';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\n\n@Component({\n selector: 'app-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n})\nexport class NotificationComponent implements OnInit {\n @Input() notification;\n @Input() readOnlyNotification: boolean\n @Input() installerToCustomerNotification: boolean\n @Input() customerToInstallerNotification: boolean\n @Input() validVEs\n @Input() virtualEntities\n invitationAccepted;\n errorMessage;\n invitationDeclined;\n loading = false;\n veForm: FormGroup\n constructor(private glowService: GlowService, private professionalGlowService: ProfessionalGlowService, private invitationsService: InvitationsService, private fb: FormBuilder, private modalService: NgbModal) {\n\n\n }\n\n ngOnInit() {\n }\n\n getReadableDateFromIso(string) {\n return Utils.getReadableDateFromIso(string);\n\n\n }\n\n\n\n openInvitationModal(estimateRequestId) {\n const modalRef = this.modalService.open(InvitationModalComponent, { scrollable: true, centered: true, size: 'lg', backdrop: 'static' });\n // modalRef.componentInstance.hasSchematic = this.isSchematicComplete\n // modalRef.componentInstance.schematicDocId = this.schematicDoc[0].documentId\n // modalRef.componentInstance.username = this.account.email\n modalRef.componentInstance.estimateRequestId = estimateRequestId\n modalRef.componentInstance.missingData = []\n modalRef.componentInstance.validVEs = this.validVEs\n modalRef.componentInstance.dropdownOptions = this.virtualEntities\n\n modalRef.componentInstance.installerToCustomerInvitation = true\n\n }\n async declineFromCustomer(id) {\n this.loading = true\n const body = {\n estimateRequestState: 'estimate-request-rejected-by-user',\n };\n this.glowService.updateEstimateRequestUserState(body, id).subscribe(async (resp) => {\n if (resp.valid) {\n this.loading = false\n this.invitationDeclined = true\n } else {\n this.loading = false\n this.errorMessage = 'An error has occured';\n }\n await this.invitationsService.getAllEstimateRequests()\n })\n\n\n }\n async handleRequest(id, decision) {\n this.loading = true;\n let state;\n decision == 'accepted' ? (state = 'estimate-request-accepted-by-professional') : (state = 'estimate-request-rejected-by-professional');\n const body = {\n estimateRequestState: state,\n };\n this.professionalGlowService.updateEstimateRequestProfessionalState(body, id).subscribe(async (resp) => {\n if (resp.valid) {\n decision == 'accepted' ? (this.invitationAccepted = true) : (this.invitationDeclined = true);\n } else {\n this.errorMessage = 'An error has occured';\n this.loading = false\n }\n\n await this.invitationsService.getAllEstimateRequestsByState('pending-professional-acceptance');\n this.loading = false;\n });\n await this.invitationsService.getAllProfessionalEstimateRequests();\n this.loading = false;\n }\n \n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NotificationComponent } from './notification.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [NotificationComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [NotificationComponent]\n})\nexport class NotificationModule { }\n","export default \".line {\\n background-color: #c6c6c6;\\n height: 60px;\\n width: 2px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3Byb2Zlc3Npb25hbC1hY2NvdW50LXNpZGUtbWVudS9wcm9mZXNzaW9uYWwtYWNjb3VudC1zaWRlLW1lbnUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvcHJvZmVzc2lvbmFsLWFjY291bnQtc2lkZS1tZW51L3Byb2Zlc3Npb25hbC1hY2NvdW50LXNpZGUtbWVudS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNJLHlCQUFBO0VBQ0EsWUFBQTtFQUNBLFVBQUE7QUNBSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcHJvZmVzc2lvbmFsLWFjY291bnQtc2lkZS1tZW51L3Byb2Zlc3Npb25hbC1hY2NvdW50LXNpZGUtbWVudS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLmxpbmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTgsIDE5OCwgMTk4KTtcbiAgICBoZWlnaHQ6IDYwcHg7XG4gICAgd2lkdGg6IDJweDtcbiAgXG59IiwiLmxpbmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzZjNmM2O1xuICBoZWlnaHQ6IDYwcHg7XG4gIHdpZHRoOiAycHg7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'app-professional-account-side-menu',\n templateUrl: './professional-account-side-menu.component.html',\n styleUrls: ['./professional-account-side-menu.component.scss']\n})\nexport class ProfessionalAccountSideMenuComponent implements OnInit {\n @Input() pageTitle\n @Input() currentPage\n @Input() estimateRequestId;\n pages: any = []\n\n constructor(private router: Router, private route: ActivatedRoute) {\n route.url.subscribe((url) => {\n console.log(this.route.snapshot.url.map((segment) => segment.path))\n console.log('params',url)\n \n })\n\n }\n ngOnInit() {\n this.setPages()\n console.log(this.currentPage)\n }\n\n setPages (){\n this.pages = [\n {\n name: 'Home and energy data',\n path: 'home-energy-data',\n },\n {\n name: 'Manage quotes and estimates',\n path: 'estimate-quotes',\n },\n {\n name: 'Update customer heating system',\n path: '',\n disabled: true\n },\n {\n name: 'Submit to DNO, share with peers',\n path: '',\n disabled: true\n },\n ]\n\n\n }\n navigateToPage(path) {\n this.router.navigate([`professional/property/${this.estimateRequestId}/`+ path]);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProfessionalAccountSideMenuComponent } from './professional-account-side-menu.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [ProfessionalAccountSideMenuComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [ProfessionalAccountSideMenuComponent]\n})\nexport class ProfessionalAccountSideMenuModule { }\n","export default \".line {\\n margin-top: 20px;\\n height: 2px;\\n}\\n\\n@media only screen and (max-width: 360px) {\\n .bi, p {\\n font-size: 14px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3Byb2Zlc3Npb25hbC1yZWdpc3Rlci1zdGVwcGVyL3Byb2Zlc3Npb25hbC1yZWdpc3Rlci1zdGVwcGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL3Byb2Zlc3Npb25hbC1yZWdpc3Rlci1zdGVwcGVyL3Byb2Zlc3Npb25hbC1yZWdpc3Rlci1zdGVwcGVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksZ0JBQUE7RUFDQSxXQUFBO0FDQ0o7O0FERUE7RUFFRTtJQUNFLGVBQUE7RUNBRjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9wcm9mZXNzaW9uYWwtcmVnaXN0ZXItc3RlcHBlci9wcm9mZXNzaW9uYWwtcmVnaXN0ZXItc3RlcHBlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5saW5le1xuICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgaGVpZ2h0OiAycHg7XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzYwcHgpIHtcbiAgICBcbiAgLmJpLCBwe1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgfVxuICB9XG4iLCIubGluZSB7XG4gIG1hcmdpbi10b3A6IDIwcHg7XG4gIGhlaWdodDogMnB4O1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM2MHB4KSB7XG4gIC5iaSwgcCB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG59Il19 */\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-professional-register-stepper',\n templateUrl: './professional-register-stepper.component.html',\n styleUrls: ['./professional-register-stepper.component.scss']\n})\nexport class ProfessionalRegisterStepperComponent implements OnInit {\n innerWidth;\n // @HostListener('window:resize', []) onResize() {\n // // checks size of window to view specific menu\n // this.innerWidth = window.innerWidth;\n // if (this.innerWidth <= 360) {\n // this.removeLinesOnSmallerScreens()\n // }\n // }\n constructor() { }\n @Input() state;\n ngOnInit() {\n\n }\n // removeLinesOnSmallerScreens() {\n // const lineOne = document.getElementById('line-one')\n // const lineTwo = document.getElementById('line-two')\n // lineOne.remove()\n // lineTwo.remove()\n\n // }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProfessionalRegisterStepperComponent } from './professional-register-stepper.component';\n\n\n\n@NgModule({\n declarations: [ProfessionalRegisterStepperComponent],\n imports: [\n CommonModule\n ],\n exports: [ProfessionalRegisterStepperComponent]\n})\nexport class ProfessionalRegisterStepperModule { }\n","export default \"form .ng-touched.ng-invalid:not(#business-email) {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3Byb2ZpbGUtbW9kYWwvcHJvZmlsZS1tb2RhbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9wcm9maWxlLW1vZGFsL3Byb2ZpbGUtbW9kYWwuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUk7RUFDSSwyQkFBQTtBQ0RSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9wcm9maWxlLW1vZGFsL3Byb2ZpbGUtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcblxuICAgIC5uZy10b3VjaGVkLm5nLWludmFsaWQ6bm90KCNidXNpbmVzcy1lbWFpbCkge1xuICAgICAgICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHg7XG4gICAgfVxuICAgIC8vIC5uZy10b3VjaGVkLm5nLWludmFsaWQ6bm90KCNtc2NzLW51bWJlcikge1xuICAgIC8vICAgICBib3JkZXI6IHNvbGlkIHJlZCAwLjVweDtcbiAgICAvLyB9XG59IiwiZm9ybSAubmctdG91Y2hlZC5uZy1pbnZhbGlkOm5vdCgjYnVzaW5lc3MtZW1haWwpIHtcbiAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { PostcodeCheckerService } from 'src/app/services/postcode-checker.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\nimport { ServiceAgentService } from 'src/app/services/service-agent.service';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { Utils } from 'src/utils';\n@Component({\n selector: 'app-profile-modal',\n templateUrl: './profile-modal.component.html',\n styleUrls: ['./profile-modal.component.scss']\n})\nexport class ProfileModalComponent implements OnInit {\n @Input() serviceAgent\n @Input() heatPumpManufacturerList\n @Input() logoImageSrc\n @Input() profileImageSrc\n postcodeObj: any = { area: '', isValid: null, error: false };\n showPersonalInfoForm: boolean\n showBusinessDetailsForm: boolean\n showAccountForm: boolean\n showPasswordForm: boolean\n personalInfoForm: FormGroup\n businessDetailsForm: FormGroup\n accountForm: FormGroup\n emailForm: FormGroup\n photoForm: FormGroup\n logoForm: FormGroup\n passwordForm: FormGroup\n serviceAgentSubscription: Subscription\n loading: boolean\n imageSizeErrorMessage = \"Please upload an image smaller than 1mb\"\n showPhotoSizeErrorMessage: boolean = false\n showLogoSizeErrorMessage: boolean = false\n\n error: boolean\n errorMessage: string\n formattedSelectedCertifications: Array\n regions: Array = ['East of England', 'East Midlands', 'London', 'North East', 'North West', 'South East', 'South West', 'West Midlands', 'Yorkshire and Humberside', 'Scotland', 'Wales', 'Northern Ireland']\n installerCertifications: Array = [\n 'GasSafe',\n 'NICEIC',\n 'The IAA',\n 'OFTEC',\n 'NAPIT',\n 'MSC',\n 'HEATAS',\n 'APHC',\n 'CIPHA',\n 'Install under umbrella scheme'\n ];\n skills: Array = ['System design', 'System installation', 'Retrofit']\n technologies: Array = ['Air source heat pump', 'Exhaust air heat pump', 'Gas absorption heat pump', 'Solar assisted heat pump']\n constructor(public activeModal: NgbActiveModal, \n private fb: FormBuilder, \n public formValidationService: FormValidationService,\n public postcodeCheckerService: PostcodeCheckerService, \n private glowService: GlowService, \n private serviceAgentService: ServiceAgentService,\n private professionalGlowService: ProfessionalGlowService\n ) {\n this.serviceAgentSubscription = this.serviceAgentService.serviceAgentAnnouncer.subscribe(resp => {\n this.serviceAgent = resp\n // console.log(this.serviceAgent)\n this.loading = false\n this.activeModal.dismiss()\n\n })\n }\n\n ngOnInit() {\n this.getCertifications()\n this.personalInfoForm = this.fb.group({\n firstName: [this.serviceAgent.profile.firstName, [Validators.required]],\n lastName: [this.serviceAgent.profile.lastName, [Validators.required]],\n regionsCovered: [this.serviceAgent.regionsCovered, [Validators.required]],\n location: [this.serviceAgent.location, [Validators.required]],\n technologies: [this.serviceAgent.technologies, [Validators.required]],\n skills: [this.serviceAgent.skills, [Validators.required]],\n certifications: [this.formattedSelectedCertifications, [Validators.required]],\n businessEmail: [this.serviceAgent.businessEmail, []],\n businessName: [this.serviceAgent.businessName, [Validators.required]],\n mcsNumber: [this.serviceAgent.mcsNumber, []],\n businessURL: [this.serviceAgent.businessURL, []],\n brands: [this.serviceAgent.brands, []],\n professionalDescription: [this.serviceAgent.professionalDescription, []],\n relevantExperience: [this.serviceAgent.relevantExperience, []],\n\n\n })\n this.photoForm = this.fb.group({\n photo: [[], []],\n\n })\n this.logoForm = this.fb.group({\n logo: [[], []]\n })\n\n this.accountForm = this.fb.group({\n businessPhoneNumber: ['0' + this.serviceAgent.phone.phone.substring(3), [Validators.required, FormValidator.isPhoneNumberValid]],\n email: [this.serviceAgent.email.email, [Validators.required]]\n })\n\n this.passwordForm = this.fb.group({\n password: ['', [Validators.required, FormValidator.isPasswordStrong]],\n confirmPassword: ['', [Validators.required, FormValidator.isPasswordSame]]\n })\n\n }\n\n\n close() {\n this.activeModal.dismiss()\n }\n\n findChangedValues(form) {\n const updatedValues = {};\n for (let x in form.controls) {\n if (form.controls[x].touched) {\n updatedValues[x] = form.controls[x].value\n }\n }\n // console.log(updatedValues)\n return updatedValues\n }\n\n\n\n getCertifications() {\n\n this.formattedSelectedCertifications = this.serviceAgent.certifications.map(c => c.certification)\n }\n\n\n getModalTitle() {\n if (this.showAccountForm) {\n return 'Update account details'\n } else if (this.showPersonalInfoForm) {\n return 'Update profile'\n } else if (this.showBusinessDetailsForm) {\n return 'Update business details'\n } else if (this.showPasswordForm) {\n return 'Update password'\n }\n }\n\n checkFormValidity(form, formControlName, translateKey?) {\n\n return this.formValidationService.checkFormValidity(form, formControlName, translateKey)\n }\n\n async checkPostcode() {\n let messages = [];\n await this.checkPostcodeisValid().then((resp) => {\n if (!this.postcodeObj.isValid) {\n messages.push('Invalid postcode');\n }\n return messages\n });\n return\n }\n\n async checkPostcodeisValid() {\n let postcode;\n if (this.personalInfoForm.get('location').touched) {\n postcode = this.personalInfoForm.value.location;\n await this.postcodeCheckerService\n .checkPostcode(postcode)\n .then((resp: any) => {\n // console.log('IS POSTCODEVALID', resp);\n this.postcodeObj.area = resp.result['admin_district'];\n this.postcodeObj.isValid = true;\n this.postcodeObj.error = false;\n })\n .catch((err) => {\n console.warn('postcode errr', err);\n this.postcodeObj.area = '';\n this.postcodeObj.isValid = false;\n this.postcodeObj.error = true;\n\n });\n }\n }\n\n getForm() {\n if (this.showAccountForm) {\n return this.accountForm\n } else if (this.showPersonalInfoForm) {\n return this.personalInfoForm\n } else if (this.showPasswordForm) {\n return this.passwordForm\n }\n }\n\n async updateDetails() {\n (!this.photoForm.pristine) ? this.checkImageChange('photo', this.photoForm) : '';\n (!this.logoForm.pristine) ? this.checkImageChange('logo', this.logoForm) : ''\n const form = this.getForm()\n let body: any = this.findChangedValues(form)\n if (form.valid && !this.showLogoSizeErrorMessage && !this.showPhotoSizeErrorMessage) {\n this.error = false\n this.loading = true\n if (form == this.personalInfoForm) {\n if (body.firstName && !body.lastName) {\n body.lastName = this.serviceAgent.profile.lastName\n } else if (body.lastName && !body.firstName) {\n body.firstName = this.serviceAgent.profile.firstName\n }\n this.updatePersonalDetails(body)\n } else if (form == this.passwordForm) {\n this.updatePassword(body)\n } else if (form == this.accountForm) {\n if (body.businessPhoneNumber) {\n body = { businessPhoneNumber: '+44' + body.businessPhoneNumber.substring(1) }\n this.updatePhone(body)\n } else if (body.email) {\n this.updateEmail(body)\n } else this.activeModal.dismiss()\n } else { this.activeModal.dismiss() }\n\n } else {\n this.error = true\n this.errorMessage = 'Please complete form'\n }\n }\n\n\n\n updatePersonalDetails(body) {\n this.professionalGlowService.updateServiceAgentDetails(body).subscribe((resp) => {\n console.log(resp)\n this.serviceAgentService.getServiceAgent()\n }, err => {\n this.setError()\n\n })\n }\n\n updateEmail(body) {\n this.professionalGlowService.updateServiceAgentEmail(body).subscribe((resp) => {\n // console.log(resp)\n this.serviceAgentService.getServiceAgent()\n }, err => {\n this.setError()\n\n })\n }\n\n updatePassword(body) {\n this.professionalGlowService.updateServiceAgentPassword(body).subscribe((resp) => {\n // console.log(resp)\n this.serviceAgentService.getServiceAgent()\n }, err => {\n this.setError()\n\n })\n }\n \n updatePhone(body) {\n this.professionalGlowService.updateServiceAgentPhone(body).subscribe((resp) => {\n // console.log(resp)\n this.serviceAgentService.getServiceAgent()\n }, err => {\n this.setError()\n })\n }\n\n updatePhoto(body, imageType) {\n this.professionalGlowService.updateServiceAgentPhoto(body, imageType).subscribe((resp) => {\n // console.log(resp)\n // this.serviceAgentService.getServiceAgent()\n }, err => {\n console.warn(err.statusCode)\n console.log('error', err.error.statusCode)\n this.setError()\n })\n }\n\n\n setError() {\n this.errorMessage = 'Something went wrong'\n this.error = true\n this.loading = false\n }\n async setImageSourceAndClass(blob, id) {\n const imgElm = await Utils.waitForElemById(id);\n if (!imgElm) return;\n const scr = (await Utils.getBlobImageSource(blob)) as string;\n imgElm.setAttribute('src', scr);\n }\n\n async fileInputChange(event, controlName, form: FormGroup) {\n this.error = false\n this.showPhotoSizeErrorMessage = false\n this.showLogoSizeErrorMessage = false\n const files = event.target.files[0];\n console.log(files.size)\n if (files.size > 1000000 && controlName == 'photo') {\n this.showPhotoSizeErrorMessage = true\n }\n if (files.size > 1000000 && controlName == 'logo') {\n this.showLogoSizeErrorMessage = true\n }\n form.get(controlName).setValue(files);\n await this.setImageSourceAndClass(files, controlName)\n\n\n }\n\n async checkImageChange(controlName, form) {\n // console.log(form.controls[controlName].value)\n const files = form.controls[controlName].value\n const formData: any = await Utils.formDataFromImgFile(files, '')\n this.updatePhoto(formData, controlName)\n }\n\n\n\n\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProfileModalComponent } from './profile-modal.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { FileUploadModule } from '../file-upload/file-upload.module';\n\n\n\n@NgModule({\n declarations: [ProfileModalComponent],\n imports: [\n CommonModule, SharedModule, FormValidationMessageModule, FileUploadModule\n ],\n exports: [ProfileModalComponent],\n entryComponents: [ProfileModalComponent]\n})\nexport class ProfileModalModule { }\n","export default \"form .ng-touched.ng-invalid:not(#file) {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3F1b3RlLW1vZGFsL3F1b3RlLW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL3F1b3RlLW1vZGFsL3F1b3RlLW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdJO0VBQ0ksMkJBQUE7QUNGUiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcXVvdGUtbW9kYWwvcXVvdGUtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcbmZvcm0ge1xuXG4gICAgLm5nLXRvdWNoZWQubmctaW52YWxpZDpub3QoI2ZpbGUpIHtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xuICAgIH1cbiAgICAvLyAubmctdG91Y2hlZC5uZy1pbnZhbGlkOm5vdCgjbXNjcy1udW1iZXIpIHtcbiAgICAvLyAgICAgYm9yZGVyOiBzb2xpZCByZWQgMC41cHg7XG4gICAgLy8gfVxufSIsImZvcm0gLm5nLXRvdWNoZWQubmctaW52YWxpZDpub3QoI2ZpbGUpIHtcbiAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-quote-modal',\n templateUrl: './quote-modal.component.html',\n styleUrls: ['./quote-modal.component.scss']\n})\nexport class QuoteModalComponent implements OnInit {\n fileForm: FormGroup\n @Input() estimateRequestId\n thumbnail;\n formError: boolean;\n loadObj: tLoadingElement\n success: boolean\n\n constructor(private activeModal: NgbActiveModal, private glowService: GlowService,\n private fb: FormBuilder, private formValidationService: FormValidationService, \n private invitationsService: InvitationsService,\n private professionalGlowService: ProfessionalGlowService) {\n this.fileForm = this.fb.group({\n file: ['', [Validators.required]],\n amount: ['', [Validators.required]],\n\n })\n }\n\n ngOnInit() {\n this.loadObj = { ...this.loadObj, loadError: false, loading: false, errorString: '' };\n\n }\n async fileInputChange(event, controlName, form: FormGroup) {\n const files = event.target.files[0];\n form.get(controlName).setValue(files)\n await this.setImageSourceAndClass(files)\n\n\n }\n async setImageSourceAndClass(blob) {\n const reader = new FileReader()\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n this.thumbnail = reader.result;\n };\n }\n\n\n\n async checkFileChangeAndUpload(controlName, form) {\n let file = form.controls[controlName].value\n file = { file: file, 'estimateType': 'heat-pump-estimate', 'amount': this.fileForm.value.amount }\n const formData: any = await Utils.toFormData(file)\n // for (var pair of formData.entries()) {\n // console.log(pair[0] + ', ' + pair[1]);\n // }\n this.updateFile(this.estimateRequestId, formData)\n }\n\n async updateDetails(controlName, form: FormGroup) { \n this.loadObj.loading = true\n\n console.log(form)\n if (form.valid) {\n this.checkFileChangeAndUpload(controlName, form)\n } else {\n this.formError = true\n this.fileForm.markAllAsTouched()\n }\n }\n\n updateFile(estimateRequestId: string, data: any) {\n this.professionalGlowService.uploadQuoteOrEstimate(data, estimateRequestId).subscribe((resp: any) => {\n\n if (resp.valid) {\n this.loadObj = {\n ...this.loadObj,\n loadError: false,\n loading: false,\n };\n this.success = true\n this.invitationsService.getEstimateRequestById(this.estimateRequestId)\n\n } else {\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: false,\n errorString: 'An error occurred. Please try again later.'\n };\n }\n }, (err) => {\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: false,\n errorString: 'An error occurred. Please try again later.'\n };\n }\n )\n }\n\n checkFormValidity(form, formControlName, translateKey?) {\n return this.formValidationService.checkFormValidity(form, formControlName, translateKey)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { QuoteModalComponent } from './quote-modal.component';\nimport { FileUploadModule } from '../file-upload/file-upload.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\n\n\n\n@NgModule({\n declarations: [QuoteModalComponent],\n imports: [\n CommonModule, FileUploadModule, SharedModule, FormValidationMessageModule\n ],\n exports: [QuoteModalComponent],\n entryComponents: [QuoteModalComponent]\n})\nexport class QuoteModalModule { }\n","export default \".aspect-ratio-container::before {\\n content: \\\"\\\";\\n display: block;\\n padding-top: 56.25%;\\n /* 16:9 aspect ratio (height divided by width) */\\n}\\n\\n.aspect-ratio-container > .rounded-0 {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3JhZGlhdG9yLXNjaGVtYXRpYy1jYXJkL3JhZGlhdG9yLXNjaGVtYXRpYy1jYXJkLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL3JhZGlhdG9yLXNjaGVtYXRpYy1jYXJkL3JhZGlhdG9yLXNjaGVtYXRpYy1jYXJkLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksV0FBQTtFQUNBLGNBQUE7RUFDQSxtQkFBQTtFQUNBLGdEQUFBO0FDQ0o7O0FERUU7RUFDRSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSw0QkFBQTtFQUNBLHNCQUFBO0VBQ0EsMkJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcmFkaWF0b3Itc2NoZW1hdGljLWNhcmQvcmFkaWF0b3Itc2NoZW1hdGljLWNhcmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYXNwZWN0LXJhdGlvLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG4gICAgLyogMTY6OSBhc3BlY3QgcmF0aW8gKGhlaWdodCBkaXZpZGVkIGJ5IHdpZHRoKSAqL1xuICB9XG4gIFxuICAuYXNwZWN0LXJhdGlvLWNvbnRhaW5lcj4ucm91bmRlZC0wIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIH0iLCIuYXNwZWN0LXJhdGlvLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG4gIC8qIDE2OjkgYXNwZWN0IHJhdGlvIChoZWlnaHQgZGl2aWRlZCBieSB3aWR0aCkgKi9cbn1cblxuLmFzcGVjdC1yYXRpby1jb250YWluZXIgPiAucm91bmRlZC0wIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SchematicsService } from 'src/app/services/schematics.service';\n\n@Component({\n selector: 'app-radiator-schematic-card',\n templateUrl: './radiator-schematic-card.component.html',\n styleUrls: ['./radiator-schematic-card.component.scss'],\n})\nexport class RadiatorSchematicCardComponent implements OnInit {\n @Input() schematicDocument: any;\n @Input() isNewAction: boolean;\n completionStatus = 'In progress';\n completionStatusColor = 'warning';\n heatEmitterNumber = 0;\n constructor() {}\n\n ngOnInit() {\n this.completionStatus = this.getCompletionStatus();\n this.completionStatusColor = this.getCompletionStatusColor();\n if (this.schematicDocument) this.heatEmitterNumber = this.getHeatEmitterNumber();\n }\n\n \n getCompletionStatus() {\n if (!this.schematicDocument) return 'Not started';\n if (!this.schematicDocument.status) {\n return this.completionStatus;\n }\n return this.schematicDocument.status.replace('-', ' ').charAt(0).toUpperCase() + this.schematicDocument.status.slice(1);\n }\n\n getCompletionStatusColor() {\n if (!this.schematicDocument) return 'danger';\n if (!this.schematicDocument.status) {\n return this.completionStatusColor;\n }\n switch (this.schematicDocument.status) {\n case 'complete':\n return 'success';\n case 'in-progress':\n return 'warning';\n case 'not-started':\n return 'danger';\n default:\n return 'warning';\n }\n }\n\n getHeatEmitterNumber() {\n return this.schematicDocument.data.floors.reduce((acc, floor) => {\n return (\n acc +\n floor.rooms.reduce((acc, room) => {\n return acc + room.radiators.length;\n }, 0)\n );\n }, 0);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RadiatorSchematicCardComponent } from './radiator-schematic-card.component';\n\n@NgModule({\n declarations: [RadiatorSchematicCardComponent],\n imports: [CommonModule],\n exports: [RadiatorSchematicCardComponent],\n})\nexport class RadiatorSchematicCardModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcmFkaWF0b3Itc2NoZW1hdGljLXNlbGVjdG9yLW1vZGFsL3JhZGlhdG9yLXNjaGVtYXRpYy1zZWxlY3Rvci1tb2RhbC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { SchematicsService } from 'src/app/services/schematics.service';\n\n@Component({\n selector: 'app-radiator-schematic-selector-modal',\n templateUrl: './radiator-schematic-selector-modal.component.html',\n styleUrls: ['./radiator-schematic-selector-modal.component.scss'],\n})\nexport class RadiatorSchematicSelectorModalComponent implements OnInit {\n @Input() veId: string;\n schematicDocuments = [];\n\n constructor(private activeModal: NgbActiveModal, private schematicsService: SchematicsService) {}\n\n ngOnInit() {\n this.setSchematicDocuments();\n }\n\n ngOnChanges() {\n this.setSchematicDocuments();\n }\n\n setSchematicDocuments() {\n this.schematicsService.getSchematicsByStatus('complete', this.veId).then((documents) => {\n this.schematicDocuments = documents;\n\n // if (documents && documents.length > 1) {\n // this.schematicDocuments = documents;\n // } else if (documents && documents.length === 1) {\n // this.selectSchematicDocument(documents[0]);\n // }\n });\n }\n\n selectSchematicDocument(schematicDocument) {\n this.activeModal.close(schematicDocument);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RadiatorSchematicSelectorModalComponent } from './radiator-schematic-selector-modal.component';\nimport { RadiatorSchematicCardModule } from '../radiator-schematic-card/radiator-schematic-card.module';\n\n@NgModule({\n declarations: [RadiatorSchematicSelectorModalComponent],\n imports: [CommonModule, RadiatorSchematicCardModule],\n exports: [RadiatorSchematicSelectorModalComponent],\n entryComponents: [RadiatorSchematicSelectorModalComponent],\n})\nexport class RadiatorSchematicSelectorModalModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcmFkaWF0b3Itc2NoZW1hdGljL3JhZGlhdG9yLXNjaGVtYXRpYy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, HostListener, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport Konva from 'konva';\nimport { Subscription } from 'rxjs';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { AddRadiatorModalComponent } from '../add-radiator-modal/add-radiator-modal.component';\nimport { AddHeatingSystemModalComponent } from '../add-heating-system-modal/add-heating-system-modal.component';\nimport { KonvaUtils } from './raditator-schematic.utils';\nimport { Utils } from 'src/utils';\nimport { AuthenticationService } from 'src/app/services/authentication.service';\n\n@Component({\n selector: 'app-radiator-schematic',\n templateUrl: './radiator-schematic.component.html',\n styleUrls: ['./radiator-schematic.component.scss'],\n})\nexport class RadiatorSchematicComponent implements OnInit {\n @Input() schematicDocument;\n @Input() schematicId;\n @HostListener('window:resize', []) onResize() {\n this.fitStageIntoParentContainer();\n }\n @Input() isEditing: boolean = false;\n @Input() isCustomWidth: boolean = false;\n schematic: any;\n\n container: HTMLElement;\n displayTitle: string = 'Heating elements schematic';\n toolLink: string = '/pages/tools/heating-by-room';\n shouldShowToolLink: boolean = true;\n selectedService;\n width = 0;\n height = 0;\n\n layerWidth;\n layerHeight;\n\n // rectSpacing = 50;\n rectSpacing = window.innerWidth > 500 ? 40 : 30;\n rectH = 100;\n rectW = 190;\n\n pipeHeight = 20;\n pipeWidth = 8;\n\n radWidth = this.rectW + this.pipeWidth * 2;\n radHeight = this.rectH + this.pipeHeight / 2;\n\n titleBoxHeight = window.innerWidth >= 992 ? this.rectSpacing : 110;\n schematicDescriptionBoxHeight = window.innerWidth >= 992 ? 220 : 320;\n\n sideBarWidth = window.innerWidth >= 992 ? 300 : 0;\n\n maxX = 0;\n\n layer: Konva.Layer;\n // targets: any;\n\n // connectors: any;\n stage: Konva.Stage;\n\n floorGroups: any;\n\n schematicSubscription: Subscription;\n subscriptionSelectedService: Subscription;\n\n drawingAttributes: any = { floors: {} };\n\n colors;\n\n iconPaths = {\n trash: '../../../assets/icons/trash3-fill.svg',\n edit: '../../../assets/icons/pencil-square.svg',\n add: '../../../assets/icons/plus-circle.svg',\n };\n\n pipeworkColors;\n pipeworkSizeColor = {};\n\n isInstaller: boolean = false;\n constructor(private schematicService: SchematicsService, private modalService: NgbModal, private auth: AuthenticationService) {}\n\n ngOnInit() {\n this.isInstaller = this.auth.checkIsRole('installer');\n this.container = document.querySelector('#container');\n this.setColors();\n this.initStage();\n this.setSizes();\n this.onResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes && changes.schematicDocument && changes.schematicDocument.currentValue.data && (!changes.schematicDocument.currentValue.data.version || changes.schematicDocument.currentValue.data.version < 2.0)) {\n this.schematicDocument = this.schematicService.addVersionSchematicDocument(changes.schematicDocument.currentValue);\n this.schematicDocument = this.schematicService.addUnitsSchematicDocument(this.schematicDocument);\n }\n this.schematic = { ...this.schematicDocument.data };\n this.updateDrawing();\n }\n\n ngOnDestroy() {\n if (this.schematicSubscription) {\n this.schematicSubscription.unsubscribe();\n }\n }\n\n setColors() {\n //defined in _variables.scss :root\n const styles = getComputedStyle(document.documentElement);\n this.colors = {\n black: styles.getPropertyValue('--black'),\n white: styles.getPropertyValue('--white'),\n dark: styles.getPropertyValue('--dark'),\n 'gray-100': styles.getPropertyValue('--gray-100'),\n 'gray-400': styles.getPropertyValue('--gray-400'),\n 'gray-500': styles.getPropertyValue('--gray-500'),\n 'grey-purple': styles.getPropertyValue('--grey-purple'),\n purple: styles.getPropertyValue('--purple'),\n 'light-purple': styles.getPropertyValue('--light-purple'),\n blue: styles.getPropertyValue('--blue'),\n 'mid-yellow': styles.getPropertyValue('--mid-yellow'),\n 'light-yellow': styles.getPropertyValue('--light-yellow'),\n yellow: styles.getPropertyValue('--yellow'),\n red: styles.getPropertyValue('--red'),\n 'light-red': styles.getPropertyValue('--light-red'),\n orange: styles.getPropertyValue('--orange'),\n 'dark-orange': styles.getPropertyValue('--dark-orange'),\n pink: styles.getPropertyValue('--pink'),\n green: styles.getPropertyValue('--green'),\n 'light-green': styles.getPropertyValue('--light-green'),\n };\n this.pipeworkColors = [this.colors['pink'], this.colors['yellow'], this.colors['orange'], this.colors['red'], this.colors['blue'], this.colors['purple'], this.colors['green']];\n }\n\n shouldBreak(breakpoint) {\n const width = this.isCustomWidth ? this.container.offsetWidth : window.innerWidth;\n switch (breakpoint) {\n case 'sm':\n return width < 576;\n case 'md':\n return width < 768;\n case 'lg':\n return width < 992;\n case 'xl':\n return width < 1200;\n default:\n return false;\n }\n }\n\n setSizes() {\n this.rectSpacing = this.shouldBreak('sm') ? 30 : 40;\n this.radWidth = this.rectW + this.pipeWidth * 2;\n this.radHeight = this.rectH + this.pipeHeight / 2;\n this.sideBarWidth = this.shouldBreak('xl') ? 0 : 250;\n this.titleBoxHeight = this.shouldBreak('xl') ? 110 : this.rectSpacing;\n // this.schematicDescriptionBoxHeight = this.shouldBreak('sm') ? (this.isEditing ? 400 : 410) : this.shouldBreak('lg') ? (this.isEditing ? 330 : 320) : this.isEditing ? 230 : 220;\n this.schematicDescriptionBoxHeight = this.getSchematicDescriptionBoxHeight();\n this.width = this.container.offsetWidth;\n\n this.height = this.getHeight(this.schematic);\n this.layerWidth = this.width;\n this.layerHeight = this.height;\n this.layer.width(this.layerWidth);\n this.layer.height(this.layerHeight);\n this.stage.width(this.width);\n this.stage.height(this.height);\n this.maxX = this.layerWidth - this.radWidth - this.rectSpacing - this.sideBarWidth;\n }\n\n initStage() {\n this.layer = new Konva.Layer({});\n this.stage = new Konva.Stage({\n container: 'container',\n width: this.width,\n height: this.height,\n });\n this.stage.add(this.layer);\n }\n\n getSchematicDescriptionBoxHeight() {\n const schematicDescription = this.generateSchematicDescription(0, 0, this.layerWidth - 40, false);\n return schematicDescription.height() + 40;\n }\n\n getHeight(schematic) {\n let height = this.schematicDescriptionBoxHeight;\n schematic.floors\n ? schematic.floors.forEach((floor) => {\n height += this.getFloorGroupHeight(floor);\n })\n : null;\n return height;\n }\n\n getFloorGroupHeight(floor) {\n let radNumber = 0;\n let x = 0;\n let rows = 1;\n let rowHeight = this.rectH + this.pipeHeight / 2 + this.rectSpacing;\n\n floor.rooms\n ? floor.rooms.forEach((room) => {\n room.radiators && room.radiators.length > 0 ? (radNumber += room.radiators.length) : (radNumber += 1);\n })\n : null;\n\n for (let i = 0; i < radNumber; i++) {\n if (x * (this.radWidth + this.rectSpacing) >= this.maxX) {\n x = 1;\n rows += 1;\n } else {\n x++;\n }\n }\n const height = this.isEditing ? rows * rowHeight + this.titleBoxHeight * 1.5 : rows * rowHeight + this.titleBoxHeight;\n return radNumber ? height : rowHeight;\n }\n\n fitStageIntoParentContainer() {\n this.updateDrawing();\n }\n\n updateDrawing() {\n if (this.stage) {\n this.pipeworkSizeColor = this.getPipeworkSizeColor(this.schematic);\n this.layer.destroyChildren();\n this.setSizes();\n this.drawSchematic(this.schematic);\n }\n }\n\n updateObjects(targets, connectors) {\n targets.forEach((target) => {\n var node = this.layer.findOne('#' + target.id);\n node.x(target.x);\n node.y(target.y);\n });\n connectors.forEach((connect) => {\n var line = this.layer.findOne('#' + connect.id) as any;\n var fromNode = this.layer.findOne('#' + connect.from);\n var toNode = this.layer.findOne('#' + connect.to);\n\n // const points = this.getConnectorPoints(fromNode.position(), toNode.position());\n const points = KonvaUtils.getConnectorPoints(fromNode, toNode);\n line.points(points);\n });\n }\n\n fitGroupIntoWidth(group, width) {\n if (group.width() > width) {\n const scale = width / group.width();\n group.scale({ x: scale, y: scale });\n group.width(group.width() * scale);\n group.height(group.height() * scale);\n }\n }\n\n getPipeworkSizeColor(schematic) {\n const pipeworkSizeColor = {};\n let pipeworkCount = 0;\n schematic.floors.forEach((floor) => {\n floor.rooms.forEach((room) => {\n if (!(room.pipework && room.pipework.length)) {\n return;\n }\n // assumes there is only one pipe per room\n const internalDiameter = room.pipework[0].internalDiameter;\n if (!pipeworkSizeColor[internalDiameter]) {\n if (!this.pipeworkColors[pipeworkCount]) {\n // get random color - not ideal but will do for now as not expecting more than 7 different sizes\n pipeworkSizeColor[internalDiameter] = '#' + Math.floor(Math.random() * 16777215).toString(16);\n } else {\n pipeworkSizeColor[internalDiameter] = this.pipeworkColors[pipeworkCount];\n }\n pipeworkCount++;\n }\n });\n });\n return pipeworkSizeColor;\n }\n\n drawSchematic(schematic) {\n let h = 0;\n schematic.floors\n ? schematic.floors.forEach((floor, i) => {\n h = this.drawFloor(floor, h);\n })\n : null;\n\n this.generateDashedLinesBetweenFloors();\n const yPosBuildingDescription = this.stage.height() - this.schematicDescriptionBoxHeight;\n this.generateSchematicDescriptionBorder(this.schematicDescriptionBoxHeight, 0, yPosBuildingDescription);\n this.generateSchematicDescription(this.schematicDescriptionBoxHeight / 2, 0, yPosBuildingDescription + 20);\n\n this.schematicService.setStage(this.stage);\n }\n\n drawFloor(floor, totalHeight) {\n let floorHeight = this.getFloorGroupHeight(floor);\n totalHeight += floorHeight;\n const yOffset = -totalHeight;\n const y = this.stage.height() - this.schematicDescriptionBoxHeight + yOffset;\n const floorGroup = new Konva.Group({ id: floor.id, width: this.layerWidth, height: floorHeight, x: 0, y });\n floorGroup.addName('floorGroup' + floor.id);\n const radGroup = new Konva.Group({ id: floor.id, width: this.layerWidth, height: floorHeight, x: 0, y: 0 });\n radGroup.addName('radGroup' + floor.id);\n const border = new Konva.Rect({ x: 0, y: 0, width: this.layerWidth, height: floorHeight, fill: this.colors['white'] });\n const leftBorder = KonvaUtils.generateSolidLine(0, 0, 0, floorHeight, this.colors['purple']);\n const rightBorder = KonvaUtils.generateSolidLine(this.layerWidth, 0, this.layerWidth, floorHeight, this.colors['purple']);\n floorGroup.add(border);\n floorGroup.add(leftBorder);\n floorGroup.add(rightBorder);\n const targets = this.generateTargets(floor.rooms, floorHeight);\n const connectors = this.generateConnectors(targets);\n this.generateNodes(connectors, targets, radGroup, floor);\n let minX;\n let maxX;\n if (targets.length) {\n minX = targets.reduce((prev, curr) => (prev.x < curr.x ? prev : curr)).x;\n maxX = targets.reduce((prev, curr) => (prev.x > curr.x ? prev : curr)).x;\n }\n\n radGroup.width(maxX + this.radWidth + this.rectSpacing - minX);\n this.alignRadGroup(radGroup, this.layerWidth);\n floorGroup.add(radGroup);\n const floorTitleYpos = floorHeight > this.rectSpacing ? this.rectSpacing : 5;\n this.generateFloorTitle(floor, this.titleBoxHeight / 2, floorTitleYpos);\n floorGroup.add(this.drawingAttributes.floorTitle);\n if (this.isEditing) {\n this.generateAddRoomButton(floor, floorGroup, this.drawingAttributes.floorTitle.y() + this.drawingAttributes.floorTitle.height() + 5);\n }\n this.drawingAttributes.floors[floor.id] = floorGroup;\n this.layer.add(floorGroup);\n this.updateObjects(targets, connectors);\n return totalHeight;\n }\n\n generateTargets(roomsArray = [], floorGroupHeight) {\n const result = [];\n let yOffset = -1.5 * this.radHeight;\n let offsetXPos = 0;\n let direction = 1;\n for (let room of roomsArray) {\n let radNumber = (room.radiators && room.radiators.length) || 1;\n let rowNum = 0;\n for (let i = 0; i < radNumber; i++) {\n let x = offsetXPos * (this.radWidth + this.rectSpacing);\n if (x >= this.maxX || x < 0) {\n yOffset -= this.radHeight + this.rectSpacing;\n direction = direction * -1;\n offsetXPos = direction > 0 ? offsetXPos + 1 : offsetXPos - 1;\n x = offsetXPos * (this.radWidth + this.rectSpacing);\n if (radNumber > 1 && i > 0) {\n rowNum++;\n }\n }\n const title = (room.radiators[i] && room.radiators[i].title) || 'No Heating Elements';\n const radH = (room.radiators[i] && room.radiators[i].height) || 0;\n const radL = (room.radiators[i] && room.radiators[i].length) || 0;\n const radOutput = (room.radiators[i] && room.radiators[i].output) || 0;\n const id = (room.radiators[i] && room.radiators[i].id) || `no-radiators-${room.id}`;\n result.push({ roomObj: room, rowInRoom: rowNum, room: room.title, roomH: room.height, roomW: room.width, roomL: room.length, roomFloorArea: room.floorArea, title, radH, radL, radOutput, id, x: x, y: floorGroupHeight + yOffset });\n offsetXPos = direction > 0 ? offsetXPos + 1 : offsetXPos - 1;\n }\n }\n return result;\n }\n\n generateConnectors(targets) {\n const result = [];\n for (let i = 0; i < targets.length; i++) {\n const from = targets[i].id;\n const to = targets[i + 1] ? targets[i + 1].id : targets[i].id;\n if (from === to) {\n continue;\n }\n result.push({\n id: `connector-${from}-${to}`,\n from: from,\n to: to,\n });\n }\n return result;\n }\n\n generateSchematicDescriptionBorder(height, x = 0, y = 0) {\n const border = new Konva.Group({ x, y, width: this.layerWidth, height: height });\n border.addName('schematicDescriptionBorder');\n const background = new Konva.Rect({\n x: 0,\n y: 0,\n width: this.layerWidth,\n height: height,\n stroke: this.colors['purple'],\n strokeWidth: 1,\n fill: this.colors['white'],\n });\n border.add(background);\n this.layer.add(border);\n return border;\n }\n\n generateWaterCylinderDescription(x, y) {\n const waterCylinderDescription = new Konva.Group({ x, y, width: this.layerWidth });\n waterCylinderDescription.addName('waterCylinderDescription');\n let text = 'TBC';\n let sizeText = 'TBC';\n if (this.schematic.heatingSystem && this.schematic.heatingSystem.DHWHasCylinder) {\n text = this.schematic.heatingSystem.DHWHasCylinder;\n if (this.schematic.heatingSystem.DHWHasCylinder == 'No') {\n sizeText = 'N/A';\n } else if (this.schematic.heatingSystem.DHWHasCylinder == 'Yes') {\n sizeText = this.schematic.heatingSystem.DHWCylinderSize ? `${this.schematic.heatingSystem.DHWCylinderSize} L` : 'TBC';\n }\n }\n\n const textGroup = new Konva.Group({ x: 0, y: 0 });\n textGroup.addName('waterCylinderDescriptionTextGroup');\n const cylinderGroup = new Konva.Group({ x: 0, y: 0 });\n cylinderGroup.addName('waterCylinderDescriptionCylinderGroup');\n const cylinderTitle = new Konva.Text({\n text: 'Water Cylinder:',\n fontSize: 18,\n y: 0,\n fontStyle: 'bold',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'center',\n });\n const waterCylinder = new Konva.Text({\n text,\n fontSize: 18,\n y: 0,\n x: cylinderTitle.width(),\n fontStyle: 'normal',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'center',\n });\n cylinderGroup.add(cylinderTitle);\n cylinderGroup.add(waterCylinder);\n cylinderGroup.height(cylinderTitle.height());\n cylinderGroup.width(cylinderTitle.width() + waterCylinder.width());\n\n const sizeGroup = new Konva.Group({ x: 0, y: 0 });\n sizeGroup.addName('waterCylinderDescriptionSizeGroup');\n const sizeTitle = new Konva.Text({\n text: 'Size:',\n fontSize: 18,\n y: 0,\n fontStyle: 'bold',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'center',\n });\n const sizeValue = new Konva.Text({\n text: sizeText,\n fontSize: 18,\n y: 0,\n x: sizeTitle.width(),\n fontStyle: 'normal',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'center',\n });\n\n sizeGroup.add(sizeTitle);\n sizeGroup.add(sizeValue);\n sizeGroup.height(sizeTitle.height());\n sizeGroup.width(sizeTitle.width() + sizeValue.width());\n\n cylinderGroup.y(0);\n sizeGroup.y(cylinderGroup.height());\n\n textGroup.add(cylinderGroup);\n textGroup.add(sizeGroup);\n textGroup.width(Math.max(cylinderGroup.width(), sizeGroup.width()));\n textGroup.height(cylinderGroup.height() + sizeGroup.height());\n\n const background = new Konva.Rect({\n x: 0,\n y: 0,\n width: Math.max(cylinderGroup.width(), sizeGroup.width()) + 20,\n height: cylinderGroup.height() + sizeGroup.height() + 20,\n // stroke: this.colors['grey-purple'],\n fill: this.colors['light-red'],\n });\n\n KonvaUtils.virticalAlignCenter(textGroup, background.y() + background.height() / 2);\n\n waterCylinderDescription.add(background);\n waterCylinderDescription.add(textGroup);\n waterCylinderDescription.width(background.width());\n waterCylinderDescription.height(background.height());\n return waterCylinderDescription;\n }\n\n generateHeatingSystemDescription(x, y, maxW) {\n let heatingSystemDescription = new Konva.Group({ x, y });\n heatingSystemDescription.addName('heatingSystemDescription');\n let heatingSystemType, heatingSystemManufacturer, heatingSystemModel, background, editIconGroup;\n let textGroup = new Konva.Group({});\n textGroup.addName('heatingSystemDescriptionTextGroup');\n heatingSystemType = new Konva.Text({\n text: this.schematic.heatingSystem && this.schematic.heatingSystem.type ? `${this.schematic.heatingSystem.type}` : `Heating System`,\n fontSize: 18,\n fontStyle: 'bold',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'start',\n });\n heatingSystemManufacturer = new Konva.Text({\n text: this.schematic.heatingSystem && this.schematic.heatingSystem.manufacturer ? `${this.schematic.heatingSystem.manufacturer}:` : 'Manufacturer TBC:',\n fontSize: 18,\n fontStyle: 'bold',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'start',\n });\n heatingSystemModel = new Konva.Text({\n text: this.schematic.heatingSystem && this.schematic.heatingSystem.model ? `${this.schematic.heatingSystem.model}` : 'Model TBC',\n fontSize: 18,\n\n x: heatingSystemManufacturer.width(),\n fontStyle: 'normal',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'start',\n });\n\n if (this.isEditing) {\n //attach edit icon to heating system type\n const { iconGroup, tr, icon } = KonvaUtils.attachIconToNode(heatingSystemType, this.iconPaths.edit, 20, 20, heatingSystemType.width() + 5, heatingSystemType.height() - 25, this.stage);\n iconGroup.on('pointerup', () => {\n this.openAddHeatingSystemModal();\n });\n editIconGroup = iconGroup;\n textGroup.add(tr);\n }\n\n const linedText = KonvaUtils.breakTextIntoLines(heatingSystemModel, maxW);\n heatingSystemModel.text(linedText);\n\n textGroup.add(heatingSystemType);\n textGroup.add(heatingSystemManufacturer);\n textGroup.add(heatingSystemModel);\n textGroup.width(Math.max(heatingSystemManufacturer.width() + heatingSystemModel.width(), heatingSystemType.width() + ((editIconGroup && editIconGroup.width()) || 0)));\n textGroup.height(heatingSystemType.height() + Math.max(heatingSystemManufacturer.height(), heatingSystemModel.height()));\n\n background = new Konva.Rect({\n width: textGroup.width() + 20,\n height: textGroup.height() + 20,\n fill: this.colors['mid-yellow'],\n });\n\n heatingSystemDescription.add(background);\n heatingSystemDescription.add(textGroup);\n\n heatingSystemDescription.width(background.width());\n heatingSystemDescription.height(background.height());\n heatingSystemDescription.x(0);\n background.position({ x: 0, y: 0 });\n\n heatingSystemType.y(0);\n heatingSystemManufacturer.y(heatingSystemType.height());\n //on the same line as heatingSystemManufacturer\n heatingSystemModel.y(heatingSystemManufacturer.y());\n KonvaUtils.virticalAlignCenter(textGroup, background.y() + background.height() / 2);\n\n return heatingSystemDescription;\n }\n\n generateFloorAreaDescription(x, y, maxW) {\n const floorAreaDescription = new Konva.Group({\n x: x,\n y: y,\n width: this.layerWidth,\n });\n floorAreaDescription.addName('floorAreaDescription');\n const floorAreaTitle = new Konva.Text({\n text: `Floor Area:`,\n fontSize: 18,\n fontStyle: 'bold',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'start',\n });\n const floorArea = new Konva.Text({\n text: `${Utils.getNumberToDecimalPlace(this.schematic.totalFloorArea) || 0} m²`,\n x: floorAreaTitle.width(),\n fontSize: 18,\n fontStyle: 'normal',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'start',\n });\n\n const linedText = KonvaUtils.breakTextIntoLines(floorArea, maxW);\n floorArea.text(linedText);\n\n floorAreaDescription.add(floorArea);\n floorAreaDescription.add(floorAreaTitle);\n floorAreaDescription.width(floorArea.width() + floorAreaTitle.width());\n floorAreaDescription.height(Math.max(floorArea.height(), floorAreaTitle.height()));\n return floorAreaDescription;\n }\n\n generateHeatingPowerOutputDescription(x, y, maxW) {\n const heatingPowerOutputDescription = new Konva.Group({ x, y, width: this.layerWidth });\n heatingPowerOutputDescription.addName('heatingPowerOutputDescription');\n const heatingPowerOutputTitle = new Konva.Text({\n text: `Heating Power Output:`,\n fontSize: 18,\n fontStyle: 'bold',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'center',\n });\n\n const heatingPowerOutput = new Konva.Text({\n text: `${Utils.getNumberToDecimalPlace(this.schematic.totalHeatingPowerOutput) || 0} W`,\n fontSize: 18,\n x: heatingPowerOutputTitle.width(),\n fontStyle: 'normal',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'start',\n });\n\n const linedText = KonvaUtils.breakTextIntoLines(heatingPowerOutput, maxW);\n heatingPowerOutput.text(linedText);\n heatingPowerOutputDescription.add(heatingPowerOutput);\n heatingPowerOutputDescription.add(heatingPowerOutputTitle);\n heatingPowerOutputDescription.width(heatingPowerOutput.width() + heatingPowerOutputTitle.width());\n heatingPowerOutputDescription.height(Math.max(heatingPowerOutput.height(), heatingPowerOutputTitle.height()));\n return heatingPowerOutputDescription;\n }\n\n generateBuildingDescription(x, y, maxW) {\n const buildingDescription = new Konva.Group({ x, y, width: this.layerWidth });\n buildingDescription.addName('buildingDescription');\n const textGroup = new Konva.Group({ x: 0, y: 0 });\n textGroup.addName('buildingDescriptionTextGroup');\n const totalArea = this.generateFloorAreaDescription(0, 0, maxW);\n const totalHeatingPowerOutput = this.generateHeatingPowerOutputDescription(0, totalArea.height(), maxW);\n textGroup.add(totalArea);\n textGroup.add(totalHeatingPowerOutput);\n textGroup.width(Math.max(totalArea.width(), totalHeatingPowerOutput.width()));\n textGroup.height(totalArea.height() + totalHeatingPowerOutput.height());\n const background = new Konva.Rect({\n x: 0,\n y: 0,\n width: Math.max(totalArea.width(), totalHeatingPowerOutput.width()) + 20,\n height: totalArea.height() + totalHeatingPowerOutput.height() + 20,\n fill: this.colors['light-yellow'],\n });\n\n KonvaUtils.virticalAlignCenter(textGroup, background.y() + background.height() / 2);\n\n buildingDescription.add(background);\n buildingDescription.add(textGroup);\n buildingDescription.width(background.width());\n buildingDescription.height(background.height());\n return buildingDescription;\n }\n\n generateHeatingDescription(x, y, maxW) {\n const heatingSystemAndWaterCylinderGroup = new Konva.Group({ x, y });\n heatingSystemAndWaterCylinderGroup.addName('heatingSystemAndWaterCylinderGroup');\n const heatingSystemDescription = this.generateHeatingSystemDescription(x, y, maxW);\n const waterCylinderDescription = this.generateWaterCylinderDescription(heatingSystemDescription.x() + heatingSystemDescription.width() + this.rectSpacing, 0);\n this.alignHsAndWcDescription(heatingSystemDescription, waterCylinderDescription);\n const points = KonvaUtils.getConnectorPoints(waterCylinderDescription, heatingSystemDescription);\n const connector = KonvaUtils.generateSolidLine(points[0], points[1], points[2], points[3], this.colors['gray-400'], 3);\n\n heatingSystemAndWaterCylinderGroup.add(heatingSystemDescription);\n heatingSystemAndWaterCylinderGroup.add(connector);\n heatingSystemAndWaterCylinderGroup.add(waterCylinderDescription);\n if (heatingSystemDescription.y() == waterCylinderDescription.y()) {\n heatingSystemAndWaterCylinderGroup.height(Math.max(heatingSystemDescription.height(), waterCylinderDescription.height()));\n heatingSystemAndWaterCylinderGroup.width(heatingSystemDescription.width() + waterCylinderDescription.width() + connector.width());\n } else {\n heatingSystemAndWaterCylinderGroup.height(heatingSystemDescription.height() + waterCylinderDescription.height() + connector.height());\n heatingSystemAndWaterCylinderGroup.width(Math.max(heatingSystemDescription.width(), waterCylinderDescription.width()));\n }\n return { heatingSystemAndWaterCylinderGroup, heatingSystemDescription, waterCylinderDescription };\n }\n\n generateSchematicDescription(height, x = 0, y = 10, addToLayer = true) {\n const groupH = height;\n const groupW = this.layerWidth;\n const descriptionGroup = new Konva.Group({ x, y, width: groupW, height: groupH });\n descriptionGroup.addName('schematicDescription');\n\n let addFloorButton, heatingSystemAndWaterCylinderGroup;\n\n const buildingDescription = this.generateBuildingDescription(this.rectSpacing, 0, this.layerWidth - 40);\n if (this.isEditing) {\n addFloorButton = this.generateAddFloorButton(buildingDescription.x(), buildingDescription.y() + buildingDescription.height() + 5);\n descriptionGroup.add(addFloorButton);\n }\n descriptionGroup.add(buildingDescription);\n ({ heatingSystemAndWaterCylinderGroup } = this.generateHeatingDescription(buildingDescription.x() + buildingDescription.width() + this.rectSpacing, 0, this.layerWidth - 40));\n descriptionGroup.add(heatingSystemAndWaterCylinderGroup);\n\n this.alignSchematicDescription(heatingSystemAndWaterCylinderGroup, buildingDescription, addFloorButton);\n\n if (buildingDescription.y() === heatingSystemAndWaterCylinderGroup.y()) {\n descriptionGroup.height(Math.max(buildingDescription.height(), heatingSystemAndWaterCylinderGroup.height()) + (addFloorButton ? addFloorButton.height() + 5 : 0));\n } else {\n descriptionGroup.height(buildingDescription.height() + heatingSystemAndWaterCylinderGroup.height() + (addFloorButton ? addFloorButton.height() + 5 : 0));\n }\n\n this.drawingAttributes.schematicDescription = descriptionGroup;\n if (addToLayer) {\n this.layer.add(descriptionGroup);\n }\n return descriptionGroup;\n }\n\n generateAddFloorButton(x: number = 0, y: number = 0) {\n const groupH = this.titleBoxHeight;\n const groupW = this.layerWidth;\n const buttonGroup = new Konva.Group({ x, y, width: groupW, height: groupH, listening: true });\n buttonGroup.addName('addFloorButton');\n const background = new Konva.Rect({\n width: groupW / 2,\n y: 0,\n fill: this.colors['purple'],\n shadowBlur: 0,\n stroke: '',\n strokeWidth: 1,\n cornerRadius: 0,\n });\n\n const textGroup = new Konva.Group({ x: 0, y: 0 });\n textGroup.addName('addFloorButtonText');\n\n const addFloor = new Konva.Text({\n text: `New Floor`,\n y: 0,\n x: 20,\n fontSize: 16,\n fontStyle: 'normal',\n fontFamily: 'Open Sans',\n fill: this.colors['white'],\n align: 'center',\n verticalAlign: 'middle',\n });\n const { iconGroup, tr, icon } = KonvaUtils.attachIconToNode(addFloor, this.iconPaths.add, 15, 15, addFloor.x() - 40, addFloor.y(), this.stage);\n textGroup.add(tr);\n textGroup.add(addFloor);\n textGroup.height(addFloor.height());\n textGroup.width(addFloor.width() + iconGroup.width());\n background.height(textGroup.height() + 15);\n background.width(textGroup.width() + 30);\n KonvaUtils.horizontalAlignCenter(textGroup, background.width() / 2);\n KonvaUtils.virticalAlignCenter(textGroup, background.y() + background.height() / 2);\n\n buttonGroup.add(background);\n buttonGroup.add(textGroup);\n buttonGroup.height(background.height());\n buttonGroup.width(background.width());\n buttonGroup.on('pointerup', () => {\n this.schematicService.addFloor(this.schematicDocument, this.schematicId, { title: `Floor ${this.schematic.floors.length + 1}`, id: `floor${this.schematic.floors.length + 1}`, rooms: [], estimatedArea: 0 });\n });\n buttonGroup.on('mouseenter', () => {\n this.stage.container().style.cursor = 'pointer';\n });\n buttonGroup.on('mouseleave', () => {\n this.stage.container().style.cursor = 'default';\n });\n\n this.drawingAttributes.addFloorButton = buttonGroup;\n return buttonGroup;\n }\n\n generateAddRoomButton(floor, floorGroup, yPos) {\n const groupH = this.titleBoxHeight;\n const groupW = this.layerWidth;\n const buttonGroup = new Konva.Group({ x: 0, y: yPos, width: groupW, height: groupH, listening: true });\n buttonGroup.addName('addRoomButton');\n\n const background = new Konva.Rect({\n y: 0.1 * groupH,\n fill: this.colors['purple'],\n shadowBlur: 0,\n padding: 5,\n strokeWidth: 1,\n cornerRadius: 0,\n });\n\n const textGroup = new Konva.Group({ y: 0.1 * groupH });\n textGroup.addName('addRoomButtonText');\n\n const addRoom = new Konva.Text({\n text: `New Room`,\n y: 0,\n x: 20,\n fontSize: 16,\n fontStyle: 'normal',\n fontFamily: 'Open Sans',\n fill: this.colors['white'],\n align: 'center',\n verticalAlign: 'middle',\n });\n\n //add icon to left of text\n const { iconGroup, tr, icon } = KonvaUtils.attachIconToNode(addRoom, this.iconPaths.add, 15, 15, addRoom.x() - 40, addRoom.y(), this.stage);\n textGroup.add(tr);\n textGroup.add(addRoom);\n textGroup.width(addRoom.width() + iconGroup.width());\n textGroup.height(addRoom.height());\n\n background.height(textGroup.height() + 15);\n background.width(textGroup.width() + 30);\n //center text in background\n KonvaUtils.horizontalAlignCenter(textGroup, background.width() / 2);\n KonvaUtils.virticalAlignCenter(textGroup, background.y() + background.height() / 2);\n buttonGroup.add(background);\n buttonGroup.add(textGroup);\n buttonGroup.height(background.height());\n buttonGroup.width(background.width());\n\n this.alignAddRoomButton(buttonGroup, groupW);\n\n buttonGroup.on('pointerup', () => {\n this.openAddRoomModal({}, floor);\n });\n buttonGroup.on('mouseenter', () => {\n this.stage.container().style.cursor = 'pointer';\n });\n buttonGroup.on('mouseleave', () => {\n this.stage.container().style.cursor = 'default';\n });\n\n this.drawingAttributes.addRoomButton = buttonGroup;\n floorGroup.add(buttonGroup);\n }\n\n generateFloorTitle(floor, height, yPos = 0) {\n const groupH = height;\n const groupW = this.layerWidth;\n const iconH = 15;\n const iconW = 15;\n let deleteButton, trashIcon;\n const titleGroup = new Konva.Group({\n x: 0,\n y: yPos,\n width: groupW,\n height: groupH,\n });\n titleGroup.addName('floorTitle');\n\n const title = new Konva.Text({\n text: `${floor.title} (${Utils.getNumberToDecimalPlace(floor.estimatedArea)} m²)`,\n fontSize: 18,\n fontStyle: 'bold',\n fontFamily: 'Open Sans',\n // fill: this.colors['purple'],\n fill: this.colors['dark'],\n // width: groupW / 2,\n padding: 5,\n align: 'center',\n y: 0.1 * groupH,\n });\n\n const background = new Konva.Rect({\n y: 0.1 * groupH,\n fill: this.colors['light-yellow'],\n // stroke: this.colors['grey-purple'],\n shadowBlur: 0,\n cornerRadius: 0,\n });\n\n background.width(title.width() + 10);\n background.height(title.height());\n titleGroup.add(background);\n titleGroup.add(title);\n titleGroup.width(background.width());\n titleGroup.height(background.height());\n\n if (this.isEditing) {\n const { iconGroup, tr, icon } = KonvaUtils.attachIconToNode(title, this.iconPaths.trash, 15, 15, title.width() + 5, title.height() - 20, this.stage);\n iconGroup.on('pointerup', () => {\n this.schematicService.removeFloor(this.schematic, this.schematicId, floor.id);\n });\n deleteButton = iconGroup;\n trashIcon = icon;\n background.width(title.width() + 20 + iconGroup.width());\n titleGroup.add(tr);\n }\n this.alignFloorTitle(titleGroup, groupW);\n\n this.drawingAttributes.floorTitle = titleGroup;\n\n return titleGroup;\n }\n\n getRadiatorShape(backgroundColor) {\n const rad = new Konva.Group({\n width: this.radWidth,\n height: this.radHeight,\n draggable: false,\n });\n\n rad.addName('radiatorShape');\n const radBody = new Konva.Rect({ x: this.pipeHeight, y: 0, fill: backgroundColor, width: this.rectW, height: this.rectH, shadowBlur: 0, stroke: this.colors['purple'], strokeWidth: 1 });\n const rightPipeGroup = new Konva.Group({ x: radBody.x() + radBody.width(), y: this.rectH - 10 });\n rightPipeGroup.addName('rightPipeGroup');\n const virticalPart = new Konva.Rect({ fill: 'transparent', width: this.pipeWidth, height: this.pipeHeight, x: this.pipeWidth / 2, y: 0, shadowBlur: 0, stroke: this.colors['purple'], strokeWidth: 1 });\n const horizontalPart = new Konva.Rect({ fill: this.colors['light-purple'], width: this.pipeHeight, height: this.pipeWidth, x: 0, y: 0, shadowBlur: 0, stroke: this.colors['purple'], strokeWidth: 1 });\n rightPipeGroup.add(virticalPart);\n rightPipeGroup.add(horizontalPart);\n const leftPipeGroup = new Konva.Group({ x: 0, y: this.rectH - 10 });\n leftPipeGroup.addName('leftPipeGroup');\n const virticalPartLeft = new Konva.Rect({ fill: 'transparent', width: this.pipeWidth, height: this.pipeHeight, x: this.pipeWidth / 2, y: 0, shadowBlur: 0, stroke: this.colors['purple'], strokeWidth: 1 });\n const horizontalPartLeft = new Konva.Rect({ fill: this.colors['light-purple'], width: this.pipeHeight, height: this.pipeWidth, x: 0, y: 0, shadowBlur: 0, stroke: this.colors['purple'], strokeWidth: 1 });\n leftPipeGroup.add(virticalPartLeft);\n leftPipeGroup.add(horizontalPartLeft);\n rad.add(radBody);\n rad.add(rightPipeGroup);\n rad.add(leftPipeGroup);\n return rad;\n }\n\n generateRadiatorBox(target, group, floor) {\n const backgroundColor = target.id.includes('no-radiators') ? this.colors['light-purple'] : this.colors['mid-yellow'];\n const nodeGroup = new Konva.Group({\n id: target.id,\n width: this.radHeight,\n height: this.radWidth,\n draggable: false,\n });\n nodeGroup.addName('radiator-' + target.id);\n\n const rad = this.getRadiatorShape(backgroundColor);\n nodeGroup.add(rad);\n const roomTitle = `${target.room.toUpperCase()}`;\n\n let roomInfo = ``;\n if (target.roomFloorArea) {\n roomInfo += `\\nFloor Area: ${target.roomFloorArea} m²`;\n } else {\n const floorArea = target.roomL * target.roomW;\n roomInfo += `\\nFloor Area: ${Utils.getNumberToDecimalPlace(floorArea)} m²`;\n }\n roomInfo += `; Height: ${target.roomH}m`;\n\n let heatingElementInfo = target.id.includes('no-radiators')\n ? `\\n\\n${target.title}\\n\\n\\n`\n : target.title === 'Under-floor Heating'\n ? `\\n\\nL ${target.radH}m x W ${target.radL}m\\n${target.title}\\n\\n`\n : `\\n\\nH ${target.radH}cm x L ${target.radL}cm\\n${target.title}\\n\\n`;\n\n if (target.radOutput && !isNaN(target.radOutput)) {\n heatingElementInfo += `Output: ${Utils.getNumberToDecimalPlace(target.radOutput)}W @ 50°C`;\n }\n const roomTitleBox = new Konva.Text({ x: this.pipeHeight, text: roomTitle, fontSize: 15, fontStyle: 'bold', fontFamily: 'Open sans', fill: this.colors['dark'], padding: 3, y: 5, align: 'start', verticalAlign: 'top' });\n nodeGroup.add(roomTitleBox);\n\n const roomInfoBox = new Konva.Text({ x: this.pipeHeight, text: roomInfo, fontSize: 15, fontFamily: 'Open sans', fill: this.colors['dark'], width: this.rectW, padding: 3, y: 5, align: 'start' });\n nodeGroup.add(roomInfoBox);\n\n const radInfoBox = new Konva.Text({ x: this.pipeHeight, text: heatingElementInfo, fontSize: 15, fontFamily: 'Open sans', fill: this.colors['dark'], width: this.rectW, padding: 3, y: roomInfoBox.height(), align: 'start' });\n nodeGroup.add(radInfoBox);\n\n const trashBox = new Konva.Rect({ fill: 'transparent' });\n let editIconGroup;\n if (floor && this.isEditing) {\n //attach edit icon to room title\n const { iconGroup, tr, icon } = KonvaUtils.attachIconToNode(roomTitleBox, this.iconPaths.edit, 10, 10, roomTitleBox.width() + roomTitleBox.x() + 5, roomTitleBox.y() + 3, this.stage);\n editIconGroup = iconGroup;\n iconGroup.on('pointerup', () => {\n this.openAddRoomModal(target.roomObj, floor);\n });\n\n nodeGroup.add(iconGroup);\n nodeGroup.add(tr);\n\n //attach trash icon to bottom right corner\n if (!target.id.includes('no-radiators')) {\n const { iconGroup, tr, icon } = KonvaUtils.attachIconToNode(trashBox, this.iconPaths.trash, 15, 15, this.rectW + this.pipeWidth - 10, this.rectH - 20, this.stage);\n iconGroup.on('pointerup', () => {\n this.schematicService.removeRadiator(this.schematic, this.schematicId, target.id, target.roomObj.id);\n });\n nodeGroup.add(iconGroup);\n nodeGroup.add(tr);\n }\n }\n\n while (radInfoBox.height() + roomInfoBox.height() > this.rectH) {\n radInfoBox.fontSize(radInfoBox.fontSize() - 0.1);\n roomTitleBox.fontSize(roomInfoBox.fontSize() - 0.1);\n editIconGroup && editIconGroup.x(roomTitleBox.width() + roomTitleBox.x() + 5) && editIconGroup.y(roomTitleBox.y() + 3);\n roomInfoBox.fontSize(roomInfoBox.fontSize() - 0.1);\n radInfoBox.y(0.5 * roomInfoBox.height());\n }\n group.add(nodeGroup);\n }\n\n generateNodes(connectors, targets, group, floor) {\n connectors.forEach((connect) => {\n var line = new Konva.Line({\n id: connect.id,\n fill: 'transparent',\n points: [],\n });\n group.add(line);\n });\n\n floor.rooms.forEach((room) => {\n const roomTargets = targets.filter((target) => target.roomObj.id === room.id);\n // const roomBorder = this.generateRoomBorder(roomTargets);\n // group.add(roomBorder);\n const roomPipes = this.generateRoomPipe(roomTargets, floor);\n roomPipes.forEach((pipe) => {\n group.add(pipe);\n });\n roomTargets.forEach((target) => {\n this.generateRadiatorBox(target, group, floor);\n });\n });\n }\n\n generateRoomPipe(targets, floor) {\n // this function assumes there is only one pipe per room\n const rowInRoom = new Set(targets.map((target) => target.rowInRoom));\n const numRows = rowInRoom.size;\n const pipeLines = [];\n const rowPadding = 10;\n // assumes only one pipe per room\n const pipe = targets[0].roomObj.pipework && targets[0].roomObj.pipework[0];\n let pipeColor = this.colors['grey-purple'];\n if (pipe) {\n pipeColor = this.pipeworkSizeColor[pipe.internalDiameter];\n }\n for (let i = 0; i < numRows; i++) {\n const targetsInRow = targets.filter((target) => target.rowInRoom === i);\n const xCoords = targetsInRow.map((target) => target.x);\n const minX = Math.min(...xCoords);\n const maxX = Math.max(...xCoords) + this.radWidth + this.rectSpacing;\n const maxY = Math.max(...targetsInRow.map((target) => target.y)) + this.radHeight + rowPadding;\n const pipeGroup = new Konva.Group({});\n const pipeLine = KonvaUtils.generateSolidLine(minX, maxY, maxX, maxY, pipeColor, 3);\n if (pipe) {\n const pipeLabel = new Konva.Text({\n text: pipe.internalDiameter + ' ' + pipe.units.internalDiameter + ' ' + pipe.material,\n fontSize: 12,\n y: maxY,\n x: minX,\n fontStyle: 'regular',\n fontFamily: 'Open Sans',\n fill: this.colors['dark'],\n padding: 5,\n align: 'center',\n });\n\n pipeGroup.add(pipeLabel);\n }\n pipeGroup.add(pipeLine);\n pipeLines.push(pipeGroup);\n if (this.isEditing && this.isInstaller) {\n pipeGroup.on('mouseenter', () => {\n this.stage.container().style.cursor = 'pointer';\n });\n pipeGroup.on('mouseleave', () => {\n this.stage.container().style.cursor = 'default';\n });\n pipeGroup.on('pointerup', () => {\n this.openAddRoomModal(targets[0].roomObj, floor);\n });\n }\n }\n return pipeLines;\n }\n\n generateRoomBorder(roomTargets) {\n const roomGroup = new Konva.Group({});\n const cornerCoords = KonvaUtils.getCorners(roomTargets, this.radWidth, this.radHeight);\n const edges = KonvaUtils.getEdgeCoordsFromCorners(cornerCoords);\n roomGroup.addName('roomBorder');\n const roomBorder = new Konva.Shape({\n fill: this.colors['light-success'],\n stroke: this.colors['purple'],\n strokeWidth: 1,\n draggable: false,\n sceneFunc: function (context) {\n context.beginPath();\n context.moveTo(edges[0][0][0], edges[0][0][1]);\n edges.forEach((edge) => {\n context.lineTo(edge[1][0], edge[1][1]);\n });\n context.closePath();\n // Konva specific method\n context.fillStrokeShape(this);\n },\n });\n roomGroup.add(roomBorder);\n return roomGroup;\n }\n\n generateDashedLinesBetweenFloors() {\n const floors = Object.values(this.drawingAttributes.floors);\n floors.forEach((floor: any, index) => {\n if (index === floors.length - 1) {\n const topBorder = KonvaUtils.generateSolidLine(0, floor.y(), floor.width(), floor.y(), this.colors['purple'], 2);\n this.layer.add(topBorder);\n }\n if (index !== floors.length - 1) {\n const line = KonvaUtils.generateDashedLine(0, floor.y(), floor.width(), floor.y(), this.colors['purple']);\n this.layer.add(line);\n }\n });\n }\n\n alignRadGroup(radGroup, groupW) {\n if (this.shouldBreak('xl')) {\n KonvaUtils.horizontalAlignCenter(radGroup, groupW / 2);\n } else {\n KonvaUtils.horizontalAlignRight(radGroup, groupW - 2 * this.rectSpacing);\n }\n }\n\n alignPipe(pipe, groupW) {\n if (this.shouldBreak('xl')) {\n KonvaUtils.horizontalAlignCenter(pipe, groupW / 2);\n }\n }\n\n alignFloorTitle(titleGroup, groupW) {\n if (this.shouldBreak('xl')) {\n KonvaUtils.horizontalAlignCenter(titleGroup, groupW / 2);\n } else {\n KonvaUtils.horizontalAlignLeft(titleGroup, this.rectSpacing);\n }\n }\n\n alignAddRoomButton(buttonGroup, groupW) {\n if (this.shouldBreak('xl')) {\n KonvaUtils.horizontalAlignCenter(buttonGroup, groupW / 2);\n } else {\n KonvaUtils.horizontalAlignLeft(buttonGroup, this.rectSpacing);\n }\n }\n\n alignHsAndWcDescription(heatingSystemDescription, waterCylinderDescription) {\n if (!this.shouldBreak('xl')) return;\n if (this.shouldBreak('lg')) {\n const maxW = Math.max(heatingSystemDescription.width(), waterCylinderDescription.width());\n heatingSystemDescription.children[0].width(maxW);\n heatingSystemDescription.width(maxW);\n heatingSystemDescription.x(0);\n // KonvaUtils.horizontalAlignCenter(heatingSystemDescription, this.layerWidth / 2);\n if (waterCylinderDescription) {\n waterCylinderDescription.y(heatingSystemDescription.y() + heatingSystemDescription.height() + 5);\n //extend background size\n waterCylinderDescription.children[0].width(maxW);\n waterCylinderDescription.width(maxW);\n waterCylinderDescription.x(0);\n // KonvaUtils.horizontalAlignCenter(waterCylinderDescription, this.layerWidth / 2);\n }\n }\n }\n\n alignSchematicDescription(heatingSystemAndWaterCylinderGroup, buildingDescription, addFloorButton) {\n const hsWcXPos = heatingSystemAndWaterCylinderGroup.x();\n const isOutside = hsWcXPos + heatingSystemAndWaterCylinderGroup.width() + this.rectSpacing >= this.layerWidth;\n if (!this.shouldBreak('xl') && !isOutside) return;\n\n if (this.shouldBreak('lg')) {\n this.resizeHsAndWcDescription(heatingSystemAndWaterCylinderGroup, buildingDescription);\n KonvaUtils.horizontalAlignCenter(buildingDescription, this.layerWidth / 2);\n if (addFloorButton) {\n KonvaUtils.horizontalAlignCenter(addFloorButton, this.layerWidth / 2);\n }\n }\n if (isOutside || this.shouldBreak('lg')) {\n heatingSystemAndWaterCylinderGroup.y(buildingDescription.y() + buildingDescription.height() + 10 + ((addFloorButton && addFloorButton.height() + 5) || 0));\n\n heatingSystemAndWaterCylinderGroup.x(buildingDescription.x());\n }\n }\n\n resizeHsAndWcDescription(heatingSystemAndWaterCylinderGroup, buildingDescription) {\n let maxW = Math.max(buildingDescription.width(), heatingSystemAndWaterCylinderGroup.width());\n if (maxW > this.layerWidth) {\n maxW = this.layerWidth - this.rectSpacing;\n }\n const rectChildren = heatingSystemAndWaterCylinderGroup.children\n .filter((child) => child.getClassName() === 'Group')\n .map((group) => group.children)\n .flat()\n .filter((child) => child.getClassName() === 'Rect');\n const rectChildrenBuildDesc = buildingDescription.children.filter((child) => child.getClassName() === 'Rect');\n\n rectChildrenBuildDesc.forEach((rect) => {\n rect.width(maxW);\n });\n rectChildren.forEach((rect) => {\n rect.width(maxW);\n });\n heatingSystemAndWaterCylinderGroup.width(maxW);\n buildingDescription.width(maxW);\n }\n\n openAddRoomModal(room, floor) {\n const addRadiatorModal = this.modalService.open(AddRadiatorModalComponent, {\n scrollable: true,\n // backdrop: 'static',\n centered: true,\n size: 'xl',\n });\n addRadiatorModal.componentInstance.room = room;\n addRadiatorModal.componentInstance.floor = floor;\n addRadiatorModal.result.then((result) => {\n if (result.msg && result.msg === 'deleteRoom') {\n this.schematicService.removeRoom(this.schematic, this.schematicId, room, floor);\n } else if (result.radiators || result.height) {\n this.schematicService.updateRoom(this.schematicDocument, this.schematicId, result, floor);\n }\n });\n }\n\n openAddHeatingSystemModal() {\n const addHeatingSystemModal = this.modalService.open(AddHeatingSystemModalComponent, {\n scrollable: true,\n // backdrop: 'static',\n centered: true,\n size: 'xl',\n });\n addHeatingSystemModal.componentInstance.heatingSystem = this.schematic.heatingSystem;\n addHeatingSystemModal.result.then((result) => {\n if (result && result.heatingSystem && result.domesticHotWater) {\n const heatingSystem = { ...result.heatingSystem, ...result.domesticHotWater };\n this.schematicService.updateHeatingSystem(this.schematicDocument, this.schematicId, heatingSystem);\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RadiatorSchematicComponent } from './radiator-schematic.component';\nimport { AddHeatingSystemModalModule } from '../add-heating-system-modal/add-heating-system-modal.module';\n\n@NgModule({\n declarations: [RadiatorSchematicComponent],\n imports: [CommonModule, AddHeatingSystemModalModule],\n exports: [RadiatorSchematicComponent],\n entryComponents: [RadiatorSchematicComponent],\n})\nexport class RadiatorSchematicModule {}\n","import Konva from 'konva';\n\nexport class KonvaUtils {\n public static attachIconToNode(node, iconSVGSource, iconW, iconH, xPosition, yPosition, stage) {\n const tr = new Konva.Transformer({\n node: node,\n height: iconH,\n borderEnabled: false,\n anchorStroke: '',\n enabledAnchors: ['top-left', 'top-center', 'top-right', 'middle-right', 'middle-left', 'bottom-left', 'bottom-center', 'bottom-right'],\n resizeEnabled: false,\n rotateEnabled: false,\n });\n const iconGroup = new Konva.Group({\n height: iconH,\n width: iconW,\n });\n let iconObj = new Image();\n iconObj.src = iconSVGSource;\n let icon = new Konva.Image({\n width: iconW,\n height: iconH,\n image: iconObj,\n });\n iconGroup.add(icon);\n tr.add(iconGroup);\n iconGroup.position({ x: xPosition, y: yPosition });\n iconGroup.on('mouseenter', () => {\n stage.container().style.cursor = 'pointer';\n });\n iconGroup.on('mouseleave', () => {\n stage.container().style.cursor = 'default';\n });\n return { iconGroup, tr, icon };\n }\n\n public static resizeImageHeight(image, newHeight) {\n let ratio = image.height() / image.width();\n image.height(newHeight);\n image.width(newHeight / ratio);\n return image;\n }\n\n public static virticalAlignCenter(node, y) {\n node.y(y - node.height() / 2);\n }\n\n public static horizontalAlignCenter(node, x) {\n node.x(x - node.width() / 2);\n }\n\n public static horizontalAlignRight(node, x) {\n node.x(x - node.width());\n }\n\n public static horizontalAlignLeft(node, x) {\n node.x(x);\n }\n\n public static getNumberToDecimalPlace(number, decimalPlace = 1) {\n if (!number) {\n return 0;\n }\n return Math.round(number * Math.pow(10, decimalPlace)) / Math.pow(10, decimalPlace);\n }\n\n public static generateSolidLine(x1, y1, x2, y2, stroke, strokeWidth = 1) {\n const line = new Konva.Line({\n points: [x1, y1, x2, y2],\n stroke: stroke,\n strokeWidth,\n });\n return line;\n }\n\n public static breakTextIntoLines(konvaText, maxWidth) {\n let isOutside = konvaText.x()+konvaText.width() > maxWidth;\n if(!isOutside)return konvaText.text();\n let startingPoint = konvaText.x();\n const text = konvaText.text();\n const words = text.split(' ');\n let line = '';\n let lines = [];\n for (let i = 0; i < words.length; i++) {\n const testLine = line + words[i] + ' ';\n const testWidth = konvaText.getTextWidth(testLine);\n isOutside = startingPoint+testWidth >= maxWidth; \n if (isOutside) {\n lines.push(line);\n konvaText.x(0)\n startingPoint = 0; \n line = words[i] + ' ';\n } else {\n line = testLine;\n }\n }\n lines.push(line);\n return lines.join('\\n'); \n }\n\n public static generateDashedLine(x1, y1, x2, y2, stroke) {\n const line = new Konva.Line({\n points: [x1, y1, x2, y2],\n stroke: stroke,\n strokeWidth: 1,\n dash: [10, 5],\n });\n return line;\n }\n\n public static getCenter(node) {\n return {\n x: node.x() + node.width() / 2,\n y: node.y() + node.height() / 2,\n };\n }\n\n public static getRectangleBorderPoint(radians, size, sideOffset = 0) {\n const width = size.width + sideOffset * 2;\n\n const height = size.height + sideOffset * 2;\n\n radians %= 2 * Math.PI;\n if (radians < 0) {\n radians += Math.PI * 2;\n }\n\n const phi = Math.atan(height / width);\n\n let x, y;\n if ((radians >= 2 * Math.PI - phi && radians <= 2 * Math.PI) || (radians >= 0 && radians <= phi)) {\n x = width / 2;\n y = Math.tan(radians) * x;\n } else if (radians >= phi && radians <= Math.PI - phi) {\n y = height / 2;\n x = y / Math.tan(radians);\n } else if (radians >= Math.PI - phi && radians <= Math.PI + phi) {\n x = -width / 2;\n y = Math.tan(radians) * x;\n } else if (radians >= Math.PI + phi && radians <= 2 * Math.PI - phi) {\n y = -height / 2;\n x = y / Math.tan(radians);\n }\n\n return {\n x: -Math.round(x),\n y: Math.round(y),\n };\n }\n\n public static getConnectorPoints(from, to) {\n const c1 = this.getCenter(from);\n const c2 = this.getCenter(to);\n\n const dx = c1.x - c2.x;\n const dy = c1.y - c2.y;\n const angle = Math.atan2(-dy, dx);\n\n const startOffset = this.getRectangleBorderPoint(angle + Math.PI, from.size());\n const endOffset = this.getRectangleBorderPoint(angle, to.size());\n\n const start = {\n x: c1.x - startOffset.x,\n y: c1.y - startOffset.y,\n };\n\n const end = {\n x: c2.x - endOffset.x,\n y: c2.y - endOffset.y,\n };\n\n return [start.x, start.y, end.x, end.y];\n }\n\n public static getCorners(targets, radWidth, radHeight) {\n let maxY = targets.reduce((prev, curr) => (prev.y > curr.y ? prev : curr), 0).y + radHeight;\n const cornerCoords = [];\n const existingCoords = {};\n const rowInRoom = new Set(targets.map((target) => target.rowInRoom));\n const numRows = rowInRoom.size;\n for (let i = 0; i < numRows; i++) {\n const rowTargets = targets.filter((target) => target.rowInRoom === i);\n const rowMaxY = maxY - i * radHeight;\n const rowMinY = rowMaxY - radHeight;\n const rowMaxX = rowTargets.reduce((prev, curr) => (prev.x > curr.x ? prev : curr), 0).x + radWidth;\n const rowMinX = rowTargets.reduce((prev, curr) => (prev.x < curr.x ? prev : curr), 0).x;\n const corner1Id = `${rowMinX}-${rowMaxY}`;\n const corner2Id = `${rowMaxX}-${rowMaxY}`;\n const corner3Id = `${rowMaxX}-${rowMinY}`;\n const corner4Id = `${rowMinX}-${rowMinY}`;\n if (!existingCoords[corner1Id]) {\n cornerCoords.push([rowMinX, rowMaxY]);\n existingCoords[corner1Id] = true;\n }\n if (!existingCoords[corner2Id]) {\n cornerCoords.push([rowMaxX, rowMaxY]);\n existingCoords[corner2Id] = true;\n }\n if (!existingCoords[corner3Id]) {\n cornerCoords.push([rowMaxX, rowMinY]);\n existingCoords[corner3Id] = true;\n }\n if (!existingCoords[corner4Id]) {\n cornerCoords.push([rowMinX, rowMinY]);\n existingCoords[corner4Id] = true;\n }\n }\n return cornerCoords;\n }\n\n public static findCentroid(points) {\n const n = points.length;\n let cx = 0,\n cy = 0;\n\n for (let i = 0; i < n; i++) {\n cx += points[i][0];\n cy += points[i][1];\n }\n\n return [cx / n, cy / n];\n }\n\n public static sortCorners(coordinates) {\n const centroid = KonvaUtils.findCentroid(coordinates);\n\n coordinates.sort((a, b) => {\n const angleA = Math.atan2(a[1] - centroid[1], a[0] - centroid[0]);\n const angleB = Math.atan2(b[1] - centroid[1], b[0] - centroid[0]);\n\n return angleA - angleB;\n });\n\n return coordinates;\n }\n\n public static getEdgeCoordsFromCorners(corners) {\n corners = KonvaUtils.sortCorners(corners); // Access the static member 'sortCorners' of the 'KonvaUtils' class\n const edges = [];\n\n for (let i = 0; i < corners.length; i++) {\n const startPoint = corners[i];\n const endPoint = corners[(i + 1) % corners.length];\n\n edges.push([startPoint, endPoint]);\n }\n\n return edges;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcmVsYXRlZC1mYXFzLXNpZGViYXIvcmVsYXRlZC1mYXFzLXNpZGViYXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-related-faqs-sidebar',\n templateUrl: './related-faqs-sidebar.component.html',\n styleUrls: ['./related-faqs-sidebar.component.scss']\n})\nexport class RelatedFaqsSidebarComponent implements OnInit {\n@Input() relatedFaqs\n constructor() { }\n\n ngOnInit() {\n \n }\n faqRelativePath(faq:any){\n \n return `/support/${faq.faq_topics.data[0].attributes.slug}/${faq.slug}`\n }\n}\n","export default \"button {\\n all: unset;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3Jlc291cmNlcy1saXN0LWNhcmQvcmVzb3VyY2VzLWxpc3QtY2FyZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9yZXNvdXJjZXMtbGlzdC1jYXJkL3Jlc291cmNlcy1saXN0LWNhcmQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRyxVQUFBO0FDREgiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3Jlc291cmNlcy1saXN0LWNhcmQvcmVzb3VyY2VzLWxpc3QtY2FyZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vc3R5bGVzIHdoZW4gbmF2aWdhdGluZyB3aXRoIGtleWJvYXJkXG5cbmJ1dHRvbntcbiAgIGFsbDogdW5zZXQ7XG59XG5cbi8vIGg1e1xuLy8gICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG5cbi8vIH0iLCJidXR0b24ge1xuICBhbGw6IHVuc2V0O1xufSJdfQ== */\"","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LandingService } from 'src/app/services/landing.service';\n\n@Component({\n selector: 'app-resources-list-card',\n templateUrl: './resources-list-card.component.html',\n styleUrls: ['./resources-list-card.component.scss'],\n})\nexport class ResourcesListCardComponent implements OnInit {\n @Input() resourcesList!: any;\n @Input() blog!: any;\n @Input() shouldDisplaySummary: boolean = false;\n @Input() shouldDisplayCommunityTag: boolean = false;\n @Input() titleStyle: any = {};\n @Input() backgroundStyle: any = {}\n @Input() titleLineHeight: any = {}\n @Input() displayTimeToRead: boolean = true\n \n constructor(private router: Router, private landingService: LandingService) {}\n\n ngOnInit() {\n }\n\n navigateToResources() {\n this.router.navigateByUrl(`home/resources-lists/${this.resourcesList.attributes.slug}` );\n }\n\n resourcesRelativePath(){\n return `/home/resources-lists/${this.resourcesList.attributes.slug}`\n }\n}\n","export default \"#resource-list-sm li {\\n list-style: none;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3Jlc291cmNlcy1saXN0LWNvbnRlbnQvcmVzb3VyY2VzLWxpc3QtY29udGVudC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9yZXNvdXJjZXMtbGlzdC1jb250ZW50L3Jlc291cmNlcy1saXN0LWNvbnRlbnQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxnQkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9yZXNvdXJjZXMtbGlzdC1jb250ZW50L3Jlc291cmNlcy1saXN0LWNvbnRlbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjcmVzb3VyY2UtbGlzdC1zbSBsaSB7XG4gICAgbGlzdC1zdHlsZTpub25lO1xufVxuLy8gLmJvcmRlci1ib3R0b206bnRoLWNoaWxkKG9kZCl7XG4vLyAgICAgYmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO1xuLy8gfSIsIiNyZXNvdXJjZS1saXN0LXNtIGxpIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn0iXX0= */\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-resources-list-content',\n templateUrl: './resources-list-content.component.html',\n styleUrls: ['./resources-list-content.component.scss'],\n})\nexport class ResourcesListContentComponent implements OnInit {\n @Input() resourcesList!: any;\n innerWidth;\n @Input() url;\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n\n constructor() {}\n\n ngOnInit() {\n this.onResize();\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcmVzcG9uc2UtbW9kYWwvcmVzcG9uc2UtbW9kYWwuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\n\n@Component({\n selector: 'app-response-modal',\n templateUrl: './response-modal.component.html',\n styleUrls: ['./response-modal.component.scss'],\n host: { class: 'd-block' },\n})\n\nexport class ResponseModalComponent implements OnInit {\n\n @Input() resources: any;\n // @Output() updateHtcCard: EventEmitter = new EventEmitter();\n\n loadObj: tLoadingElement;\n showSuccess: boolean = false;\n\n constructor(\n public activeModal: NgbActiveModal,\n private uiConfigService: CustomUIConfigService,\n ) {\n\n\n }\n\n ngOnInit() {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(true);\n\n if (this.resources && this.resources.length > 0) {\n\n this.loadObj.loadError = this.resources.filter(x => x.valid == false).length > 0 ? true : false\n this.showSuccess = this.resources.filter(x => x.valid == false).length > 0 ? false : true\n\n }\n\n }\n\n\n close() {\n this.activeModal.dismiss()\n }\n\n\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResponseModalComponent } from './response-modal.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\n@NgModule({\n declarations: [ResponseModalComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SpinnerModule,\n FormsModule\n ],\n exports: [ResponseModalComponent],\n entryComponents: [ResponseModalComponent],\n \n})\n\nexport class ResponseModalModule { }","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc2NoZW1hdGljLXRvb2wvc2NoZW1hdGljLXRvb2wuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { HelpModalComponent } from '../help-modal/help-modal.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-schematic-tool',\n templateUrl: './schematic-tool.component.html',\n styleUrls: ['./schematic-tool.component.scss'],\n})\nexport class SchematicToolComponent implements OnInit {\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n innerWidth: number;\n pageTitle = 'Heating by Room';\n currentPage = 'Heating by Room';\n schematic: any;\n schematicDocument: any;\n completionStatus = 'In progress';\n completionStatusColor = 'warning';\n loading = true;\n\n subscriptionSelectedService: Subscription;\n schematicSubscription: Subscription;\n schematicId;\n\n constructor(private schematicsService: SchematicsService, private route: ActivatedRoute, private serviceSelectorSvc: ServiceSelectorSvc, private router: Router, private glowService: GlowService, private modalService: NgbModal) {\n route.params.subscribe(async (params) => {\n if (params['id']) {\n this.schematicId = params['id'];\n const veId = this.serviceSelectorSvc.getSelectedService().veId;\n this.schematicDocument = await this.schematicsService.getSchematic(veId, params['id']);\n this.schematic = { ...this.schematicDocument.data };\n\n this.completionStatus = this.getCompletionStatus();\n if (this.completionStatus === 'Complete') {\n this.schematicsService.setIsEditing(false);\n }\n this.completionStatusColor = this.getCompletionStatusColor();\n this.loading = false;\n }\n });\n\n route.queryParams.subscribe(async (params) => {\n if (params['edit'] && JSON.parse(params['edit'])) {\n this.schematicsService.setIsEditing(JSON.parse(params['edit']));\n }\n });\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe(async (selectedService) => {\n this.schematicsService.setSelectedService(selectedService);\n this.router.navigate(['/pages/tools/heating-by-room']);\n });\n\n this.schematicSubscription = this.schematicsService.schematicDocument$.subscribe((schematicDocument) => {\n this.schematicDocument = schematicDocument;\n this.schematic = { ...schematicDocument.data };\n this.completionStatus = this.getCompletionStatus();\n if (this.completionStatus === 'Complete') {\n this.schematicsService.setIsEditing(false);\n }\n this.completionStatusColor = this.getCompletionStatusColor();\n this.loading = false;\n });\n }\n\n ngOnInit() {\n this.onResize()\n this.schematicsService.setSelectedService(this.serviceSelectorSvc.getSelectedService());\n }\n\n ngOnDestroy() {\n if (this.subscriptionSelectedService) this.subscriptionSelectedService.unsubscribe();\n if (this.schematicSubscription) this.schematicSubscription.unsubscribe();\n }\n\n getCompletionStatus() {\n if (!this.schematicDocument) return 'Not started';\n if (!this.schematicDocument.status) {\n return this.completionStatus;\n }\n return this.schematicDocument.status.replace('-', ' ').charAt(0).toUpperCase() + this.schematicDocument.status.slice(1);\n }\n\n getCompletionStatusColor() {\n if (!this.schematicDocument) return 'danger';\n if (!this.schematicDocument.status) {\n return this.completionStatusColor;\n }\n switch (this.schematicDocument.status) {\n case 'complete':\n return 'success';\n case 'in-progress':\n return 'warning';\n case 'not-started':\n return 'danger';\n default:\n return 'warning';\n }\n }\n\n async edit() {\n if (this.completionStatus === 'Complete') {\n const newSchematic = await this.schematicsService.createNewSchematicFromExisting(this.schematicDocument);\n this.router.navigate(['/pages/tools/heating-by-room/schematic/' + newSchematic.documentId], { queryParams: { edit: true } });\n } else {\n this.schematicsService.setIsEditing(true);\n }\n }\n\n async save() {\n this.schematicDocument['status'] = 'in-progress';\n await this.schematicsService.setSchematicsAndUpdateSchematicsDocument(this.schematicDocument, this.schematicId);\n this.schematicsService.setIsEditing(false);\n }\n\n async complete() {\n this.loading = true;\n const validity = this.checkValidity();\n if (!validity) {\n const modalRef = this.modalService.open(HelpModalComponent, { size: 'lg', centered: true, scrollable: true });\n modalRef.componentInstance.pageTitle = 'Error';\n const heatingSystemValidityMessage = this.isHeatingSystemValid() ? '' : '
  • Please complete all heating system details - including the type of heating system, manufacturer and model.
  • ';\n const heatEmitterValidityMessage = this.hasMoreThanOneHeatEmitter() ? '' : '
  • You have not added a valid number of heat emitters. Please add at least one heat emitter.
  • ';\n modalRef.componentInstance.modalBodyContent = '

    ' + 'Some information is missing from your schematic:' + '

    ' + '
      ' + heatingSystemValidityMessage + heatEmitterValidityMessage + '
    ';\n } else {\n await this.schematicsService.updateSchematicsDocumentStatus(this.schematicDocument, this.schematicId, 'complete');\n this.schematicsService.setIsEditing(false);\n }\n this.loading = false;\n }\n\n isHeatingSystemValid() {\n const heatingSystem = this.schematic.heatingSystem;\n const isHeatingSystemValid = heatingSystem && heatingSystem.type && heatingSystem.manufacturer && heatingSystem.model;\n return isHeatingSystemValid;\n }\n\n hasMoreThanOneHeatEmitter() {\n console.log('schematic', this.schematic)\n const floors = this.schematic.floors;\n const hasMoreThanOneHeatEmitter =\n floors.reduce((acc, floor) => {\n return (\n acc +\n floor.rooms.reduce((acc, room) => {\n return acc + room.radiators.length;\n }, 0)\n );\n }, 0) > 0;\n return hasMoreThanOneHeatEmitter;\n }\n\n checkValidity() {\n const heatingSystemValidity = this.isHeatingSystemValid();\n const heatEmitterValidity = this.hasMoreThanOneHeatEmitter();\n return heatingSystemValidity && heatEmitterValidity;\n }\n\n async deleteSchematic() {\n await this.glowService.deleteVEDocumentByID(this.serviceSelectorSvc.getSelectedService().veId, this.schematicId).toPromise();\n this.router.navigateByUrl('/pages/tools/heating-by-room/in-progress');\n }\n\n downloadURI({ fileName, uri }) {\n const element = document.createElement('a');\n element.download = fileName;\n element.href = uri;\n element.setAttribute('download', fileName);\n const event = new MouseEvent('click');\n element.dispatchEvent(event);\n }\n\n downloadImage() {\n const dataURL = this.schematicsService.getCanvasDataUrl(2);\n this.downloadURI({ fileName: 'radiator-schematic', uri: dataURL });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SchematicToolComponent } from './schematic-tool.component';\nimport { RadiatorSchematicModule } from '../radiator-schematic/radiator-schematic.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\n@NgModule({\n declarations: [SchematicToolComponent],\n imports: [CommonModule, RadiatorSchematicModule, SpinnerModule],\n exports: [SchematicToolComponent],\n})\nexport class SchematicToolModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc2NoZW1hdGljcy1ob21lcGFnZS1zdGF0dXMvc2NoZW1hdGljcy1ob21lcGFnZS1zdGF0dXMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-schematics-homepage-status',\n templateUrl: './schematics-homepage-status.component.html',\n styleUrls: ['./schematics-homepage-status.component.scss'],\n})\nexport class SchematicsHomepageStatusComponent implements OnInit {\n schematicDocuments: any;\n schematicDocumentsDisplay: any;\n schematicDocumentsSubscripion: Subscription;\n subscriptionSelectedService: Subscription;\n statusToFilterBy = 'in-progress';\n //ping observable\n ping: EventEmitter = new EventEmitter();\n shouldPing: boolean = false;\n statusToPing: string;\n\n constructor(private schematicsService: SchematicsService, private serviceSelectorSvc: ServiceSelectorSvc, private router: Router, private route: ActivatedRoute) {\n route.params.subscribe(async (params) => {\n this.statusToFilterBy = params['status'];\n this.schematicDocumentsDisplay = await this.schematicsService.getSchematicsByStatus(this.statusToFilterBy);\n this.setPing();\n });\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe(async (selectedService) => {\n this.schematicsService.setSelectedService(selectedService);\n this.schematicDocumentsDisplay = await this.schematicsService.getSchematicsByStatus(this.statusToFilterBy);\n });\n }\n\n ngOnInit() {\n const selectedService = this.serviceSelectorSvc.getSelectedService();\n this.serviceSelectorSvc.announceSelectedService(selectedService);\n }\n\n setPing() {\n this.shouldPing = !(this.schematicDocumentsDisplay && this.schematicDocumentsDisplay.length > 0);\n if (this.shouldPing) {\n this.statusToPing = 'new';\n }\n this.ping.emit({ shouldPing: this.shouldPing, statusToPing: this.statusToPing });\n }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SchematicsHomepageStatusComponent } from './schematics-homepage-status.component';\nimport { RadiatorSchematicCardModule } from '../radiator-schematic-card/radiator-schematic-card.module';\n\n@NgModule({\n declarations: [SchematicsHomepageStatusComponent],\n imports: [CommonModule, RadiatorSchematicCardModule],\n exports: [SchematicsHomepageStatusComponent],\n})\nexport class SchematicsHomepageStatusModule {}\n","export default \".progress-container {\\n width: 100%;\\n height: 6px;\\n background: transparent;\\n overflow: hidden;\\n}\\n\\n.progress-bar {\\n background: #F2638C;\\n width: 0%;\\n transition-timing-function: ease-out;\\n transition: width 0.5s;\\n height: 100vh;\\n z-index: 1000 !important;\\n}\\n\\n.progress-nav {\\n z-index: 2000 !important;\\n}\\n\\n.fixed-top {\\n animation: fadeInDown 0.5s;\\n}\\n\\nheader {\\n margin: 0px;\\n}\\n\\n@media only screen and (max-width: 576px) {\\n h5 {\\n font-size: 0.9rem !important;\\n margin: 0px;\\n }\\n\\n .progress-container {\\n height: 4px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3Njcm9sbC1wcm9ncmVzcy1iYXIvc2Nyb2xsLXByb2dyZXNzLWJhci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9zY3JvbGwtcHJvZ3Jlc3MtYmFyL3Njcm9sbC1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxXQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBO0VBQ0EsZ0JBQUE7QUNDRjs7QURFQTtFQUNFLG1CQUFBO0VBUUEsU0FBQTtFQUNBLG9DQUFBO0VBQ0Esc0JBQUE7RUFDQSxhQUFBO0VBQ0Esd0JBQUE7QUNORjs7QURTQTtFQUNJLHdCQUFBO0FDTko7O0FEU0E7RUFDSSwwQkFBQTtBQ05KOztBRFNBO0VBQ0UsV0FBQTtBQ05GOztBRFFBO0VBQ0k7SUFDRSw0QkFBQTtJQUNBLFdBQUE7RUNMSjs7RURRRTtJQUVFLFdBQUE7RUNOSjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9zY3JvbGwtcHJvZ3Jlc3MtYmFyL3Njcm9sbC1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucHJvZ3Jlc3MtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNnB4O1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZDogI0YyNjM4QztcbiAgLy8gYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQobGVmdCwgcmdiYSgyMzcsMjU1LDE4NCwxKSAwJSwgI0YyNjM4QyAgMTAwJSk7XG4gIC8vIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGVmdCB0b3AsIHJpZ2h0IHRvcCwgY29sb3Itc3RvcCgwJSwgcmdiYSgyMzcsMjU1LDE4NCwxKSksIGNvbG9yLXN0b3AoMTAwJSwgI0YyNjM4QyApKTtcbiAgLy8gYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgcmdiYSgyMzcsMjU1LDE4NCwxKSAwJSwgI0YyNjM4QyAgMTAwJSk7XG4gIC8vIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCByZ2JhKDIzNywyNTUsMTg0LDEpIDAlLCAjRjI2MzhDIDEwMCUpO1xuICAvLyBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KGxlZnQsIHJnYmEoMjM3LDI1NSwxODQsMSkgMCUsICNGMjYzOEMgIDEwMCUpO1xuICAvLyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjM3LDI1NSwxODQsMSkgMCUsICNGMjYzOEMgIDEwMCUpO1xuICAvLyBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudCggc3RhcnRDb2xvcnN0cj0nI2VkZmZiOCcsIGVuZENvbG9yc3RyPScjNjFjOTAwJywgR3JhZGllbnRUeXBlPTEgKTtcbiAgd2lkdGg6IDAlO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG4gIHRyYW5zaXRpb246IHdpZHRoIDAuNXM7XG4gIGhlaWdodDogMTAwdmg7XG4gIHotaW5kZXg6MTAwMCAhaW1wb3J0YW50XG59XG5cbi5wcm9ncmVzcy1uYXZ7XG4gICAgei1pbmRleDoyMDAwICFpbXBvcnRhbnQ7XG59XG5cbi5maXhlZC10b3B7XG4gICAgYW5pbWF0aW9uOiBmYWRlSW5Eb3duIC41cztcbn1cblxuaGVhZGVye1xuICBtYXJnaW46IDBweDtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCkge1xuICAgIGg1IHtcbiAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7XG4gICAgICBtYXJnaW46MHB4O1xuXG4gICAgfVxuICAgIC5wcm9ncmVzcy1jb250YWluZXIge1xuXG4gICAgICBoZWlnaHQ6IDRweDtcbiAgfVxufSIsIi5wcm9ncmVzcy1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA2cHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZDogI0YyNjM4QztcbiAgd2lkdGg6IDAlO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG4gIHRyYW5zaXRpb246IHdpZHRoIDAuNXM7XG4gIGhlaWdodDogMTAwdmg7XG4gIHotaW5kZXg6IDEwMDAgIWltcG9ydGFudDtcbn1cblxuLnByb2dyZXNzLW5hdiB7XG4gIHotaW5kZXg6IDIwMDAgIWltcG9ydGFudDtcbn1cblxuLmZpeGVkLXRvcCB7XG4gIGFuaW1hdGlvbjogZmFkZUluRG93biAwLjVzO1xufVxuXG5oZWFkZXIge1xuICBtYXJnaW46IDBweDtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzZweCkge1xuICBoNSB7XG4gICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDBweDtcbiAgfVxuXG4gIC5wcm9ncmVzcy1jb250YWluZXIge1xuICAgIGhlaWdodDogNHB4O1xuICB9XG59Il19 */\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { Utils } from 'src/utils';\n\ntype Target = Document | Element;\n\n@Component({\n selector: 'app-scroll-progress-bar',\n templateUrl: './scroll-progress-bar.component.html',\n styleUrls: ['./scroll-progress-bar.component.scss'],\n})\nexport class ScrollProgressBarComponent implements OnInit {\n @Input() title: string;\n contentElement;\n lastScrollPos = window.pageYOffset || document.documentElement.scrollTop;\n displayProgressNav = false;\n @HostListener('window:scroll', []) addStyles() {\n const scTop = window.pageYOffset || document.documentElement.scrollTop;\n if(scTop>400){\n this.displayProgressNav=true\n Utils.waitForElemById('content').then((el) => {\n this.contentElement = document.getElementById('content');\n this.getScrollAsStream() // Defaults to Document if no Element supplied.\n .subscribe((percent: number): void => {\n document.getElementById('scrollBar').style.width = percent + '%';\n });\n });\n const stickyNav: any = document.querySelector('.progress-nav');\n // const height = stickyNav.clientHeight\n const stickyHeight = stickyNav.offsetHeight;\n // const stickySpace: any = document.querySelector('#sticky-space');\n if (stickyNav) {\n if (scTop > this.lastScrollPos) {\n // stickySpace.removeClass('active');\n // stickySpace.style.height = '0px';\n stickyNav.addClass('fixed-top');\n stickyNav.style.transform = 'translateY(0px)';\n this.lastScrollPos = scTop;\n } else {\n // stickySpace.addClass('active');\n // (document.querySelector('#sticky-space.active') as any).style.height = stickyHeight + 'px';\n stickyNav.removeClass('fixed-top');\n stickyNav.style.transform = 'translateY(' + stickyHeight + 'px)';\n this.lastScrollPos = scTop;\n }\n }\n }else{\n this.displayProgressNav=false\n }\n \n }\n\n constructor(private router: Router) {}\n\n ngOnInit() {\n this.stickyOn();\n\n }\n\n goToLanding() {\n this.router.navigateByUrl('/home');\n }\n\n stickyOn() {\n const stickyNav: any = document.querySelector('.progress-nav');\n stickyNav ? stickyNav.insertAdjacentHTML('afterend', '
    ') : null;\n }\n\n // I return the current scroll percentage (0,100) of the given DOM node.\n getScroll(node: Target = document): number {\n var currentScroll = this.getCurrentScroll(node);\n var maxScroll = this.getMaxScroll(node);\n\n // Ensure that the percentage falls strictly within (0,1).\n var percent = currentScroll / Math.max(maxScroll, 1);\n percent = Math.max(percent, 0);\n percent = Math.min(percent, 1);\n\n // Return the percentage in a more human-consumable format.\n return percent * 100;\n }\n\n // I return the current scroll percentage (0,100) of the given DOM node as a STREAM.\n // --\n // NOTE: The resultant STREAM is a COLD stream, which means that it won't actually\n // subscribe to the underlying DOM events unless something in the calling context\n // subscribes to the COLD stream.\n getScrollAsStream(node: Target = document): Observable {\n if (node instanceof Document) {\n // When we watch the DOCUMENT, we need to pull the scroll event from the\n // WINDOW, but then check the scroll offsets of the DOCUMENT.\n var stream = fromEvent(window, 'scroll').pipe(\n map((event: UIEvent): number => {\n return this.getScroll(document);\n })\n );\n } else {\n // When we watch an ELEMENT node, we can pull the scroll event and the scroll\n // offsets from the same ELEMENT node (unlike the Document version).\n var stream = fromEvent(node, 'scroll').pipe(\n map((event: UIEvent): number => {\n return this.getScroll(node);\n })\n );\n }\n\n return stream;\n }\n\n // ---\n // METHODS.\n // ---\n\n // I return the current scroll offset (in pixels) of the given DOM node.\n getCurrentScroll(node: Target): number {\n if (node instanceof Document) {\n return window.pageYOffset;\n } else {\n return node.scrollTop;\n }\n }\n\n // I return the maximum scroll offset (in pixels) of the given DOM node.\n getMaxScroll(node: Target): number {\n // When we want to get the available scroll height of the DOCUMENT, things get\n // a little peculiar from a cross-browser consistency standpoint. As such, when\n // dealing with the Document node, we have to look in a few different places.\n // --\n // READ MORE: https://javascript.info/size-and-scroll-window\n if (node instanceof Document) {\n var scrollHeight = Math.max(\n node.body.scrollHeight,\n node.body.offsetHeight,\n node.body.clientHeight,\n node.documentElement.scrollHeight,\n node.documentElement.offsetHeight,\n node.documentElement.clientHeight\n );\n\n var clientHeight = node.documentElement.clientHeight;\n\n return scrollHeight - clientHeight;\n } else {\n return node.scrollHeight - node.clientHeight;\n }\n }\n}\n\n\n","export default \"form .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3NldHVwLXNtYXJ0LW1ldGVyLW1vZGFsL3NldHVwLXNtYXJ0LW1ldGVyLW1vZGFsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL3NldHVwLXNtYXJ0LW1ldGVyLW1vZGFsL3NldHVwLXNtYXJ0LW1ldGVyLW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNFO0VBQ0UsMkJBQUE7QUNBSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc2V0dXAtc21hcnQtbWV0ZXItbW9kYWwvc2V0dXAtc21hcnQtbWV0ZXItbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcbiAgLm5nLXRvdWNoZWQubmctaW52YWxpZCB7XG4gICAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xuICB9XG59XG4iLCJmb3JtIC5uZy10b3VjaGVkLm5nLWludmFsaWQge1xuICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHg7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { shareReplay } from 'rxjs/operators';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { MeterPointVerificationConsentManagementService } from 'src/app/services/meter-point-verification-consent-management.service';\nimport { PostcodeCheckerService } from 'src/app/services/postcode-checker.service';\nimport { TermsConditionsService } from 'src/app/services/termsconditions.service';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-setup-smart-meter-modal',\n templateUrl: './setup-smart-meter-modal.component.html',\n styleUrls: ['./setup-smart-meter-modal.component.scss'],\n})\nexport class SetupSmartMeterModalComponent implements OnInit {\n @Input() type: string;\n @Input() parentActivatedRoute;\n formErrorMessage;\n modalRef: any;\n loading: boolean = false;\n displayImages: boolean = false;\n ihdForm: FormGroup;\n postcodeObj: any = { area: '', isValid: false, error: false };\n euiObj: any = { error: '', missingElements: [], incorrectElements: [], isValid: false };\n mpanForm: FormGroup;\n mpanObj: any = { error: '', isValid: false };\n\n constructor(\n public activeModal: NgbActiveModal,\n private router: Router,\n private modalService: NgbModal,\n private route: ActivatedRoute,\n private fb: FormBuilder,\n private postcodeCheckerService: PostcodeCheckerService,\n private glowService: GlowService,\n private formValidationService: FormValidationService,\n private veService: VirtualEntityService,\n private meterPointVerificationService: MeterPointVerificationConsentManagementService,\n private termsConditionsService: TermsConditionsService\n ) {\n // listen to query params\n this.route.queryParams.subscribe((params) => {\n if (params['type']) {\n this.type = params['type'];\n this.initForms();\n }\n console.log('params', params);\n });\n }\n\n ngOnInit() {\n this.initForms();\n this.termsConditionsService.checkIfUserHasAcceptedCurrentTermsAndConditions().then((userTcObj) => {\n console.log('userTcObj', userTcObj);\n });\n }\n\n initForms() {\n switch (this.type) {\n case 'ihd':\n this.initIhdForm();\n break;\n case 'mpan':\n this.initMpanForm();\n break;\n default:\n break;\n }\n }\n\n // ************* MODAL OPERATIONS *******************\n close() {\n this.modalService.dismissAll();\n this.router.navigate(['..'], { relativeTo: this.parentActivatedRoute });\n this.meterPointVerificationService.getVerificationStatus();\n }\n\n // ************* START SCREEN *******************\n\n navigateToIHD() {\n this.router.navigate(['.'], { relativeTo: this.parentActivatedRoute, queryParams: { type: 'ihd' } });\n }\n\n navigateToMPAN() {\n this.router.navigate(['.'], { relativeTo: this.parentActivatedRoute, queryParams: { type: 'mpan' } });\n }\n\n navigateToBright() {\n this.router.navigate(['.'], { relativeTo: this.parentActivatedRoute, queryParams: { type: 'bright' } });\n }\n\n // ************* IHD SCREEN *******************\n\n initIhdForm() {\n this.ihdForm = this.fb.group({\n postcode: ['', [Validators.required]],\n eui: ['', [Validators.required, FormValidator.isEUIValid]],\n });\n }\n\n showImages() {\n this.displayImages = !this.displayImages;\n }\n\n async checkPostcode() {\n let messages = [];\n await this.checkPostcodeIsValid().then((resp) => {\n if (!this.postcodeObj.isValid) {\n messages.push('Invalid postcode');\n }\n return messages;\n });\n return;\n }\n showErrorMessage() {\n if (this.type == 'ihd') {\n if (!this.ihdForm.valid) {\n this.formErrorMessage = true;\n this.formValidationService.markFormGroup(this.ihdForm, 'touched');\n }\n } else if (!this.mpanForm.valid && this.type == 'mpan') {\n this.formErrorMessage = true;\n this.formValidationService.markFormGroup(this.mpanForm, 'touched');\n }\n }\n resetErrorMsg() {\n this.formErrorMessage = false;\n }\n async checkPostcodeIsValid() {\n let postcode;\n if (this.ihdForm.get('postcode').dirty) {\n postcode = this.ihdForm.value.postcode;\n // console.log(postcode)\n\n await this.postcodeCheckerService\n .checkPostcode(postcode)\n .then((resp: any) => {\n // // console.log('IS POSTCODEVALID', resp);\n this.postcodeObj.area = resp.result['admin_district'];\n this.postcodeObj.isValid = true;\n this.postcodeObj.error = false;\n })\n .catch((err) => {\n console.warn('postcode errr', err);\n this.postcodeObj.area = '';\n this.postcodeObj.isValid = false;\n this.postcodeObj.error = true;\n });\n }\n }\n\n checkFormValidity(formControlName, translateKey?) {\n if (this.type == 'ihd') {\n return this.formValidationService.checkFormValidity(this.ihdForm, formControlName, translateKey);\n } else if (this.type == 'mpan') {\n return this.formValidationService.checkFormValidity(this.mpanForm, formControlName, translateKey);\n }\n }\n\n sanitiseEUI(eui) {\n return eui.replace(/-|\\s+/g, '');\n }\n async checkEui() {\n const eui = this.sanitiseEUI(this.ihdForm.value.eui);\n const postcode = this.ihdForm.value.postcode;\n await this.glowService\n .checkSmetsIhdPostcodeIsEligible({ postcode: postcode, eui: eui })\n .toPromise()\n .then((resp: any) => {\n this.euiObj = resp.valid\n ? { error: '', missingElements: [], incorrectElements: [], isValid: resp.valid }\n : {\n error: 'Postcode and EUI do not match',\n missingElements: [],\n incorrectElements: [],\n isValid: resp.valid,\n };\n // // console.log('RESPP', resp);\n })\n .catch((err) => {\n console.warn('ERRRR', err);\n this.euiObj = {\n error: err.error.error,\n missingElements: err.error.missingElements,\n incorrectElements: err.error.incorrectElements,\n isValid: err.error.isValid,\n };\n });\n }\n\n async checkPostcodeAndEui() {\n // // console.log('Checking postcode and eui');\n await this.checkEui();\n await this.checkPostcode();\n }\n\n async onboard() {\n if (!this.ihdForm.valid) {\n this.showErrorMessage();\n } else {\n this.loading = true;\n const eui = this.sanitiseEUI(this.ihdForm.value.eui);\n const postcode = this.ihdForm.value.postcode;\n await this.checkPostcodeAndEui();\n // // console.log('**********', this.euiObj.isValid && this.postcodeObj.isValid);\n if (this.euiObj.isValid && this.postcodeObj.isValid) {\n await this.glowService\n .onboardSmartMeterEuiPostcode({ eui, postcode })\n .toPromise()\n .then((resp) => {\n // // console.log('onboard resp', resp);\n this.navigateToSuccess();\n // this.loading = false;\n })\n .catch((err) => {\n console.warn('onboard err', err);\n this.euiObj = { error: 'Something went wrong - please try again later', missingElements: [], incorrectElements: [], isValid: false };\n this.loading = false;\n });\n }\n }\n this.loading = false;\n }\n\n navigateToSuccess() {\n this.veService.findVirtualEntities();\n this.router.navigate(['.'], { relativeTo: this.parentActivatedRoute, queryParams: { type: 'success' } });\n }\n\n // ************* MPAN SCREEN *******************\n\n initMpanForm() {\n this.mpanForm = this.fb.group({\n mpan: ['', [Validators.required, FormValidator.isMpanValid]],\n });\n }\n\n updateMpanObj() {\n this.mpanObj = this.mpanForm.value.mpan.length > 12 && !this.mpanForm.valid ? { isValid: false, error: 'Invalid MPAN' } : { error: '', isValid: false };\n }\n\n async checkMpan() {\n if (!this.mpanForm.valid) {\n this.showErrorMessage();\n } else {\n this.loading = true;\n const mpxn = this.mpanForm.value.mpan;\n const [error, mpxnEligiblity] = await Utils.promiseHandler(this.glowService.checkSmetsMpxnIsEligible({ mpxn }).toPromise());\n if (error) {\n console.warn('mpan errrr', error);\n this.mpanObj = { isValid: false, error: 'Validation error - please check your details' };\n this.loading = false;\n return;\n }\n\n if (mpxnEligiblity && mpxnEligiblity.valid) {\n const userTcObj = await this.termsConditionsService.checkIfUserHasAcceptedCurrentTermsAndConditions();\n const consent = { tcId: userTcObj.record.tcId, reference: userTcObj.record.reference, acceptedAt: userTcObj.record.createdAt, data: {} };\n const [onBoardError, onBoardResp] = await Utils.promiseHandler(this.glowService.onboardSmartMeterMpxnAvs({ consent, mpxn }).toPromise());\n this.loading = false;\n if (onBoardError) {\n console.warn('onboard err', onBoardError);\n this.mpanObj = { isValid: false, error: 'Validation error - please check your details' };\n return;\n }\n if (onBoardResp) {\n console.log('onboard resp', onBoardResp);\n }\n this.navigateToEligible();\n } else {\n this.navigateToNotEligible();\n }\n }\n }\n\n navigateToEligible() {\n this.router.navigate(['.'], { relativeTo: this.parentActivatedRoute, queryParams: { type: 'eligible' } });\n }\n\n navigateToNotEligible() {\n this.router.navigate(['.'], { relativeTo: this.parentActivatedRoute, queryParams: { type: 'not-eligible' } });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SetupSmartMeterModalComponent } from './setup-smart-meter-modal.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { StripeCardFormModule } from '../stripe-card-form/stripe-card-form.module';\n\n@NgModule({\n declarations: [SetupSmartMeterModalComponent],\n imports: [CommonModule, SharedModule, SpinnerModule, FormValidationMessageModule, StripeCardFormModule],\n exports: [SetupSmartMeterModalComponent],\n entryComponents: [SetupSmartMeterModalComponent],\n})\nexport class SetupSmartMeterModalModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc2V0dXAtc21hcnQtbWV0ZXIvc2V0dXAtc21hcnQtbWV0ZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { SetupSmartMeterModalComponent } from '../setup-smart-meter-modal/setup-smart-meter-modal.component';\n\n@Component({\n selector: 'app-setup-smart-meter',\n templateUrl: './setup-smart-meter.component.html',\n styleUrls: ['./setup-smart-meter.component.scss'],\n})\nexport class SetupSmartMeterComponent implements OnInit {\n modalRef: any;\n constructor(private modalService: NgbModal, private route: ActivatedRoute, private router: Router) {\n console.log('Constructing')\n\n route.queryParams.subscribe((params) => {\n this.modalRef ? this.modalService.dismissAll() : null;\n this.open(params.type);\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.modalService.dismissAll();\n }\n open(type) {\n this.modalRef = this.modalService.open(SetupSmartMeterModalComponent, {\n scrollable: true,\n backdrop: 'static',\n centered: true,\n size: 'xl',\n });\n this.modalRef.componentInstance.type = type;\n this.modalRef.componentInstance.parentActivatedRoute = this.route;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SetupSmartMeterComponent } from './setup-smart-meter.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n declarations: [SetupSmartMeterComponent],\n imports: [CommonModule, RouterModule],\n exports: [SetupSmartMeterComponent],\n})\nexport class SetupSmartMeterModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc2lkZS1iYXIvc2lkZS1iYXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input } from '@angular/core';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport _ from 'underscore';\n\n@Component({\n selector: 'app-side-bar',\n templateUrl: './side-bar.component.html',\n styleUrls: ['./side-bar.component.scss'],\n})\nexport class SideBarComponent implements OnInit {\n @Input() content: any;\n userStories: any = [];\n blogs: any = [];\n articles: any = [];\n infographics: any = [];\n resourceLists: any = [];\n relatedContent: any = [];\n\n loading = true;\n constructor(private strapiService: StrapiService) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(): void {\n this.getAllRelatedContent().then(() => (this.loading = false));\n }\n\n async getAllRelatedContent(content?) {\n content ? (this.content = content) : null;\n this.blogs = this.getRelatedContent('blogs');\n this.articles = this.getRelatedContent('articles');\n this.infographics = this.getRelatedContent('infographics');\n this.relatedContent = _.shuffle([...this.blogs, ...this.articles]);\n }\n\n getContentObject(content, contentType) {\n return { ...content, contentType };\n }\n getRelatedContent(contentType) {\n const contents = this.content.attributes[contentType] && this.content.attributes[contentType].data ? this.content.attributes[contentType].data : [];\n return contents.map((content) => this.getContentObject(content, contentType));\n }\n}\n","export default \"button {\\n all: unset;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3NpZGViYXItY29udGVudC1jYXJkL3NpZGViYXItY29udGVudC1jYXJkLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL3NpZGViYXItY29udGVudC1jYXJkL3NpZGViYXItY29udGVudC1jYXJkLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQVEsVUFBQTtBQ0VSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9zaWRlYmFyLWNvbnRlbnQtY2FyZC9zaWRlYmFyLWNvbnRlbnQtY2FyZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImJ1dHRvbiB7YWxsOiB1bnNldDt9XG4iLCJidXR0b24ge1xuICBhbGw6IHVuc2V0O1xufSJdfQ== */\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-sidebar-content-card',\n templateUrl: './sidebar-content-card.component.html',\n styleUrls: ['./sidebar-content-card.component.scss'],\n})\nexport class SidebarContentCardComponent implements OnInit {\n @Input() content;\n @Input() shouldDisplaySummary;\n @Input() shouldDisplayTimeToRead;\n @Input() titleStyle;\n\n innerWidth;\n displayImageUrl;\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n constructor(private strapiService: StrapiService) {}\n\n ngOnInit() {\n this.onResize();\n }\n\n ngAfterContentChecked() {\n this.displayImageUrl = this.getDisplayImageUrl(this.content);\n }\n\n // navigateTocontent() {\n // this.router.navigateByUrl(`home/content/${this.content.attributes.slug}`);\n // }\n\n contentRelativePath() {\n return `/home/${this.content.contentType}/${this.content.attributes.slug}`;\n }\n\n getTimeToRead() {\n return Utils.getTimeToRead(this.content.attributes.content);\n }\n getUpdatedAt() {\n return Utils.formatZDate(this.content.attributes.updatedAt);\n }\n\n getCreatedAt() {\n return Utils.formatZDate(this.content.attributes.createdAt);\n }\n\n isBookmarked() {\n return this.strapiService.isContentBookmarked(this.content.attributes.slug);\n }\n\n bookmarkContent() {\n this.strapiService.bookmarkContent(this.content.attributes.slug, this.content.contentType);\n }\n\n unbookmarkContent() {\n this.strapiService.unbookmarkContent(this.content.attributes.slug);\n }\n\n getDisplayImageUrl(content) {\n return this.strapiService.getThumbnailDisplayImageUrl(content);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SidebarContentCardComponent } from './sidebar-content-card.component';\nimport { PipesModule } from 'src/app/shared/pipes/pipes.module';\n\n\n\n@NgModule({\n declarations: [SidebarContentCardComponent],\n imports: [\n CommonModule, PipesModule\n ],\n exports:[SidebarContentCardComponent]\n})\nexport class SidebarContentCardModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc29jaWFsLW1lZGlhLWJ1dHRvbnMvc29jaWFsLW1lZGlhLWJ1dHRvbnMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-social-media-buttons',\n templateUrl: './social-media-buttons.component.html',\n styleUrls: ['./social-media-buttons.component.scss'],\n})\nexport class SocialMediaButtonsComponent implements OnInit {\n @Input() content:any\n constructor(private router:Router) {}\n\n ngOnInit(): void {}\n\n getTwitterUrl() {\n return `https://twitter.com/intent/tweet?text=${this.content.attributes.title}&&url=${this.router.url}`;\n }\n\n getFacebookUrl(){\n return `https://www.facebook.com/sharer/sharer.php?u=${this.router.url}`\n }\n\n getEmailUrl(){\n return `mailto:?subject=${this.content.attributes.title}&body=I found this interesting, check it out ${this.router.url}`\n }\n\n getLinkedInUrl(){\n return `https://www.linkedin.com/sharing/share-offsite/?url=${this.router.url}`\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss']\n})\nexport class SpinnerComponent implements OnInit {\n @Input() loadingMessage:string\n @Input() smallSpinner:boolean = false\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpinnerComponent } from './spinner.component';\n\n\n\n@NgModule({\n declarations: [SpinnerComponent],\n imports: [\n CommonModule\n ],\n exports:[SpinnerComponent]\n})\nexport class SpinnerModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc3Rhci1yYXRpbmcvc3Rhci1yYXRpbmcuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-star-rating',\n templateUrl: './star-rating.component.html',\n styleUrls: ['./star-rating.component.scss']\n})\nexport class StarRatingComponent implements OnInit {\n @Input() rating: number = 0;\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { StarRatingComponent } from './star-rating.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [StarRatingComponent],\n imports: [\n CommonModule,\n SharedModule\n ],\n exports: [StarRatingComponent]\n})\nexport class StarRatingModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc3RyaXBlLWNhcmQtZm9ybS9zdHJpcGUtY2FyZC1mb3JtLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { th } from 'date-fns/locale';\nimport { ConfigService } from 'src/app/services/app-config.service';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { Utils } from 'src/utils';\n\ndeclare var Stripe;\n\n//removed auto-topup functionality\n\n@Component({\n selector: 'app-stripe-card-form',\n templateUrl: './stripe-card-form.component.html',\n styleUrls: ['./stripe-card-form.component.scss'],\n})\nexport class StripeCardFormComponent implements OnInit {\n @Output() onSuccessfulOperation: EventEmitter = new EventEmitter();\n stripe; // = Stripe(environment && environment.stripePublicKey);\n elements;\n loadObj: tLoadingElement;\n loadObjSetUp: tLoadingElement;\n clientSecret: string;\n\n constructor(private configService: ConfigService, private formBuilder: FormBuilder, private uiConfigService: CustomUIConfigService, private dialogService: NgbModal, public glowService: GlowService) {\n this.loadObjSetUp = this.uiConfigService.initialiseLoadingBooleans(true);\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(false);\n const configuration = this.configService.loadConfig();\n const env = this.glowService.getEnvironment() || 'prod';\n const publicStripeKey = configuration.environments[env].stripe.publicKey;\n this.stripe = Stripe(publicStripeKey);\n }\n\n ngOnInit() {\n this.setUp();\n }\n\n async setUp() {\n this.loadObjSetUp = this.uiConfigService.initialiseLoadingBooleans(true);\n const [error, customer] = await Utils.promiseHandler(this.glowService.srtipeSetUpCustomer().toPromise());\n if (error) {\n this.loadObjSetUp = {\n ...this.uiConfigService.initialiseLoadingBooleans(false),\n loadError: true,\n errorString: 'ERROR',\n };\n return;\n }\n this.setUpIntent()\n .then((clientSecret) => {\n if (clientSecret) {\n this.clientSecret = clientSecret;\n this.setupStripeElements();\n\n } else {\n console.warn('No Client Secret returns');\n this.loadObjSetUp = {\n ...this.uiConfigService.initialiseLoadingBooleans(false),\n loadError: true,\n errorString: 'ERROR',\n };\n }\n })\n .catch((err) => {\n console.warn(err);\n this.loadObjSetUp = {\n ...this.uiConfigService.initialiseLoadingBooleans(false),\n loadError: true,\n errorString: 'ERROR',\n };\n });\n }\n\n async setUpIntent() {\n const setUpIntent = await this.glowService.stripeSetupIntent().toPromise();\n return setUpIntent && setUpIntent.client_secret;\n }\n\n // https://docs.stripe.com/payments/payment-element/migration?integration-path=future\n setupStripeElements() {\n const styles = getComputedStyle(document.documentElement);\n const options = {\n mode: 'setup',\n currency: 'gbp',\n terms: {card:\"never\"}\n };\n // https://docs.stripe.com/elements/appearance-api\n const appearance = {\n rules: {\n '.Input': {\n padding: `${styles.getPropertyValue('--input-padding-y')} ${styles.getPropertyValue('--input-padding-x')}`,\n border: styles.getPropertyValue('--input-border-width').trim() + ' solid ' + styles.getPropertyValue('--input-border-color').trim(),\n borderRadius: styles.getPropertyValue('--input-border-radius').trim(),\n boxShadow: styles.getPropertyValue('--input-box-shadow').trim(),\n color: styles.getPropertyValue('--input-color').trim(),\n fontSize: styles.getPropertyValue('--input-font-size').trim(),\n fontFamily: 'inherit',\n fontWeight: styles.getPropertyValue('--input-font-weight').trim(),\n },\n '.Input--invalid': {\n border: styles.getPropertyValue('--input-border-width').trim() + ' solid ' + styles.getPropertyValue('--danger').trim(),\n boxShadow: 'none',\n },\n '.Input:focus': {\n borderColor: styles.getPropertyValue('--input-focus-border-color').trim(),\n boxShadow: styles.getPropertyValue('--input-focus-box-shadow').trim(),\n },\n },\n };\n\n this.elements = this.stripe.elements({ clientSecret: this.clientSecret, appearance: appearance });\n const paymentElement = this.elements.create('payment', options);\n this.loadObjSetUp = {\n ...this.uiConfigService.initialiseLoadingBooleans(false),\n loaded: true,\n };\n paymentElement.mount('#payment-element'); \n }\n\n async setUpPaymentMethod() {\n const { error: submitError } = await this.elements.submit();\n if (submitError) {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleans(false),\n loadError: false,\n errorString: null,\n };\n return;\n }\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(true);\n\n // Use the clientSecret and Elements instance to confirm the setup\n const { error } = await this.stripe.confirmSetup({\n elements: this.elements,\n clientSecret: this.clientSecret,\n // confirmParams: {\n // return_url: 'https://example.com/order/123/complete',\n // },\n // Uncomment below if you only want redirect for redirect-based payments\n redirect: 'if_required',\n });\n\n if (error) {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleans(false),\n loadError: true,\n errorString: error.message || 'ERROR',\n };\n return;\n }\n\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleans(false),\n loaded: true,\n };\n this.onSuccessfulOperation.emit({ isSuccess: true });\n\n console.log('error', error);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { StripeCardFormComponent } from './stripe-card-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\n@NgModule({\n declarations: [StripeCardFormComponent],\n imports: [CommonModule, SharedModule, FormValidationMessageModule, SpinnerModule],\n exports: [StripeCardFormComponent],\n})\nexport class StripeCardFormModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc3VjY2Vzcy1tb2RhbC9zdWNjZXNzLW1vZGFsLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-success-modal',\n templateUrl: './success-modal.component.html',\n styleUrls: ['./success-modal.component.scss'],\n})\nexport class SuccessModalComponent implements OnInit {\n successMessage: string;\n constructor(private activeModal: NgbActiveModal) {}\n\n ngOnInit() {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SuccessModalComponent } from './success-modal.component';\n\n@NgModule({\n declarations: [SuccessModalComponent],\n imports: [CommonModule],\n exports: [SuccessModalComponent],\n entryComponents: [SuccessModalComponent],\n})\nexport class SuccessModalModule {}\n","export default \".form-check-input:checked {\\n background-color: #5F6CBD;\\n background-image: #5F6CBD;\\n}\\n\\nform .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3N5c3RlbS1pbmNpZGVudC1zdWJzY3JpcHRpb24tbWFuYWdlbWVudC9zeXN0ZW0taW5jaWRlbnQtc3Vic2NyaXB0aW9uLW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvc3lzdGVtLWluY2lkZW50LXN1YnNjcmlwdGlvbi1tYW5hZ2VtZW50L3N5c3RlbS1pbmNpZGVudC1zdWJzY3JpcHRpb24tbWFuYWdlbWVudC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNHLHlCQUFBO0VBQ0EseUJBQUE7QUNDSDs7QURHRztFQUNJLDJCQUFBO0FDQVAiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3N5c3RlbS1pbmNpZGVudC1zdWJzY3JpcHRpb24tbWFuYWdlbWVudC9zeXN0ZW0taW5jaWRlbnQtc3Vic2NyaXB0aW9uLW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1jaGVjay1pbnB1dDpjaGVja2Vke1xuICAgYmFja2dyb3VuZC1jb2xvcjogICM1RjZDQkQ7XG4gICBiYWNrZ3JvdW5kLWltYWdlOiAgIzVGNkNCRDtcbn1cblxuZm9ybSB7XG4gICAubmctdG91Y2hlZC5uZy1pbnZhbGlkIHtcbiAgICAgICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHg7XG4gICB9XG59IiwiLmZvcm0tY2hlY2staW5wdXQ6Y2hlY2tlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1RjZDQkQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICM1RjZDQkQ7XG59XG5cbmZvcm0gLm5nLXRvdWNoZWQubmctaW52YWxpZCB7XG4gIGJvcmRlcjogc29saWQgI2UzMmI0ZCAwLjVweDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\nimport { SystemIncidentsMailSubscriptionModalComponent } from '../system-incidents-mail-subscription-modal/system-incidents-mail-subscription-modal.component';\n\n@Component({\n selector: 'app-system-incident-subscription-management',\n templateUrl: './system-incident-subscription-management.component.html',\n styleUrls: ['./system-incident-subscription-management.component.scss'],\n})\nexport class SystemIncidentSubscriptionManagementComponent implements OnInit {\n detailsForm: FormGroup;\n subscriptionId: string | number;\n saved = false;\n loadObj = { loading: true, error: false, success: false, errorMessage: '' };\n\n modalReference: any;\n constructor(\n private formBuilder: FormBuilder,\n private strapiService: StrapiService,\n private modalService: NgbModal,\n private glowService: GlowService,\n private formValidationService: FormValidationService\n\n ) {\n this.initDetailsForm();\n this.getSubscriptionId();\n }\n\n ngOnInit() {\n \n // Initialize the form\n }\n\n getSubscriptionId() {\n this.glowService.getUserActions('IncidentReportingSubscription').subscribe((resp) => {\n if (resp && resp.length > 0) {\n this.subscriptionId = resp.sort(\n (a: any, b: any) => new Date(b.createdAt).valueOf() - new Date(a.createdAt).valueOf()\n )[0].data.subscriptionId; // Get the latest subscription id (if there are multiple\n if (this.subscriptionId) {\n this.getSubscriberDetails(this.subscriptionId);\n }\n }\n this.loadObj.loading = false;\n });\n }\n\n initDetailsForm() {\n this.detailsForm = this.formBuilder.group({\n email: [\n '',\n [Validators.required,FormValidator.isEmailValid],\n ],\n noticeOfCompletion: [false],\n });\n }\n\n getSubscriberDetails(subscriptionId: string | number) {\n this.loadObj.loading = true;\n this.strapiService\n .getOneContent('system-incidents-mail-subscribers', subscriptionId, [])\n .then((resp) => {\n if (resp) {\n this.updateDetails(resp.attributes.email, resp.attributes.noticeOfCompletion);\n } else {\n this.subscriptionId = null;\n this.sendUserAction(this.userActionBody(null));\n }\n this.loadObj.loading = false;\n })\n .catch((err) => {\n this.loadObj.loading = false;\n this.loadObj.error = true;\n this.loadObj.errorMessage =\n \"We couldn't load your details. Please try again later. If the problem persists, please contact us at support@glowmarkt.com\";\n });\n }\n checkFormValidity(formControlName, translateKey?){\n return this.formValidationService.checkFormValidity(this.detailsForm,formControlName, translateKey)\n }\n\n updateDetails(email, noticeOfCompletion) {\n this.detailsForm.patchValue({\n email,\n noticeOfCompletion,\n });\n }\n\n userActionBody(id) {\n return {\n isNew: true,\n reference: 'IncidentReportingSubscription',\n data: {\n subscriptionId: id,\n },\n };\n }\n\n onSubmit() {\n if (this.detailsForm.invalid) {\n return;\n }\n this.strapiService\n .updateContent('system-incidents-mail-subscribers', this.subscriptionId, this.detailsForm.value)\n .then((resp) => {\n this.detailsForm.markAsPristine();\n this.saved = !this.saved;\n setTimeout(() => {\n this.saved = !this.saved;\n }, 1500);\n })\n .catch((err) => {\n this.loadObj.error = true;\n this.loadObj.errorMessage =\n \"We couldn't save your changes. Please try again later. If the problem persists, please contact us at support@glowmarkt.com\";\n });\n }\n\n unsubscribe() {\n this.loadObj.loading = true;\n this.strapiService\n .deleteSystemIncidentsMailSubscriber(this.subscriptionId)\n .then((resp) => {\n this.subscriptionId = null;\n this.sendUserAction(this.userActionBody(this.subscriptionId));\n this.loadObj.loading = false;\n this.loadObj.success = true;\n })\n .catch((err) => {\n this.loadObj.loading = false;\n this.loadObj.error = true;\n this.loadObj.errorMessage =\n \"We couldn't unsubscribe you. Please try again later. If the problem persists, please contact us at support@glowmarkt.com\";\n });\n }\n\n openConfirmationModal() {\n this.modalReference = this.modalService.open(ConfirmationModalComponent, { centered: true, size: 'lg' });\n this.modalReference.componentInstance.confirmationTitle = 'Are you sure you want to unsubscribe?';\n this.modalReference.componentInstance.confirmationText =\n 'You will no longer receive updates about upcoming system incidents/completions. If you wish to continue press \"Unsubscribe\".';\n this.modalReference.componentInstance.confirmationButtonText = 'Unsubscribe';\n this.modalReference.result.then((result) => {\n switch (result) {\n case 'confirm':\n this.unsubscribe();\n break;\n default:\n break;\n }\n });\n }\n\n openSubscribeModal() {\n // Open the modal\n this.modalReference = this.modalService.open(SystemIncidentsMailSubscriptionModalComponent, {\n ariaLabelledBy: 'Subscribe modal',\n backdrop: 'static',\n size: 'md',\n });\n this.modalReference.result.then(\n (result) => {\n if (result.status == 'success') {\n this.subscriptionId = result.response.data.id;\n this.updateDetails(result.response.data.attributes.email, result.response.data.attributes.noticeOfCompletion);\n } else if (result.error && result.status == 'error') {\n this.loadObj.error = true;\n this.loadObj.errorMessage =\n \"We couldn't subscribe you. Please try again later. If the problem persists, please contact us at support@glowmarkt.com\";\n }\n },\n (error) => {\n this.loadObj.error = true;\n this.loadObj.errorMessage =\n \"We couldn't subscribe you. Please try again later. If the problem persists, please contact us at support@glowmarkt.com\";\n }\n );\n }\n\n sendUserAction(action) {\n this.glowService.sendUserAction(action).subscribe(\n (resp) => {\n this.loadObj.loading = false;\n },\n (error) => {\n this.loadObj.loading = false;\n }\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SystemIncidentSubscriptionManagementComponent } from './system-incident-subscription-management.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\nimport { FormValidationMessageModule } from '../form-validation-message/form-validation-message.module';\n\n@NgModule({\n declarations: [SystemIncidentSubscriptionManagementComponent],\n imports: [CommonModule, SharedModule, SpinnerModule, FormValidationMessageModule],\n exports: [SystemIncidentSubscriptionManagementComponent],\n})\nexport class SystemIncidentSubscriptionManagementModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc3lzdGVtLWluY2lkZW50cy1jb250ZW50L3N5c3RlbS1pbmNpZGVudHMtY29udGVudC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { LoginModalComponent } from '../login-modal/login-modal.component';\nimport { SuccessModalComponent } from '../success-modal/success-modal.component';\nimport { SystemIncidentsMailSubscriptionModalComponent } from '../system-incidents-mail-subscription-modal/system-incidents-mail-subscription-modal.component';\n\n@Component({\n selector: 'app-system-incidents-content',\n templateUrl: './system-incidents-content.component.html',\n styleUrls: ['./system-incidents-content.component.scss'],\n})\nexport class SystemIncidentsContentComponent implements OnInit {\n subscribePrompt: string;\n isLoggedIn;\n isSubscribed;\n\n incidentTimeLines = [\n { title: 'Live incidents', id: 'live' },\n { title: 'Upcoming incidents', id: 'upcoming' },\n { title: 'Past incidents', id: 'past' },\n ];\n incidents: any[] = [];\n upcomingIncidents: any[] = [];\n pastIncidents: any[] = [];\n liveIncidents: any[] = [];\n modalReference: any;\n incidentTimeline = { title: 'Live incidents', id: 'live' };\n\n loading = true;\n error;\n constructor(\n private strapiService: StrapiService,\n private modalService: NgbModal,\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private router: Router,\n private glowService: GlowService\n ) {\n this.route.queryParams.subscribe((params) => {\n if (params && params.modal && params.modal === 'incidents-subscription') {\n if (!this.getIsLoggedIn()) {\n this.openLoginModal();\n } else {\n this.openSubscribeModal();\n }\n }\n if (params && params.incidentTimeline) {\n this.incidentTimeline = this.incidentTimeLines.filter((otl) => otl.id === params.incidentTimeline)[0];\n }\n });\n }\n\n ngOnInit() {\n this.getAllIncidents();\n this.isLoggedIn = this.getIsLoggedIn();\n this.getIsSubscribed();\n }\n\n // This function checks whether a user is logged in by checking\n // whether the id_token is stored in localStorage.\n getIsLoggedIn() {\n return localStorage.length > 0 && localStorage.getItem('id_token');\n }\n\n getIsSubscribed() {\n return false\n // this.glowService.getUserActions('IncidentReportingSubscription').subscribe((resp) => {\n // this.isSubscribed =\n // resp &&\n // resp.length > 0 &&\n // resp.sort((a: any, b: any) => new Date(b.createdAt).valueOf() - new Date(a.createdAt).valueOf())[0].data\n // .subscriptionId;\n // });\n }\n\n // Get the text for the subscribe button based on whether the user is logged in or not.\n // getSubscribePrompt() {\n // return this.isLoggedIn() ? ' ' : 'Sign in and register your details';\n // }\n\n openSubscribeModal() {\n // Open the modal\n this.modalReference = this.modalService.open(SystemIncidentsMailSubscriptionModalComponent, {\n ariaLabelledBy: 'Subscribe modal',\n backdrop: 'static',\n size: 'md',\n });\n this.modalReference.result.then(\n (result) => {\n if (result.status === 'success') {\n this.isSubscribed = true;\n this.openSuccessModal();\n } else if (result.status === 'dismiss') {\n this.router.navigate(['/support/system-incidents']);\n } else if (result.status === 'error') {\n // Error Modal\n }else{\n this.router.navigate(['/support/system-incidents']);\n }\n },\n (error) => {\n // Error Modal\n }\n );\n }\n\n openSuccessModal() {\n this.modalReference = this.modalService.open(SuccessModalComponent, {\n ariaLabelledBy: 'Success modal',\n backdrop: 'static',\n size: 'lg',\n });\n this.modalReference.componentInstance.successMessage =\n 'You have successfully subscribed to the Glowmarkt System Incidents mailing list!';\n this.modalReference.result.then(\n (result) => {\n this.router.navigateByUrl('/support/system-incidents');\n },\n (error) => {\n // Error Modal\n }\n );\n }\n\n openLoginModal() {\n this.modalReference = this.modalService.open(LoginModalComponent, {\n ariaLabelledBy: 'Login modal',\n backdrop: 'static',\n });\n this.modalReference.result.then(\n (result) => {\n // Login modal closed\n switch (result) {\n case 'success':\n // User logged in successfully\n this.openSubscribeModal();\n break;\n case 'dismiss':\n // User dismissed login modal\n this.router.navigate(['/support/system-incidents']);\n break;\n default:\n // this.router.navigate(['/support/system-incidents']);\n break;\n }\n },\n (error) => {\n // User logged in, but something went wrong\n // Error Modal\n }\n );\n }\n\n // This code returns all timelines except the current timeline.\n // The current timeline is the timeline that is currently displayed.\n // The other timelines are timelines that are not currently displayed.\n // The purpose of this code is to allow the user to switch timelines.\n getOtherTimelines() {\n return this.incidentTimeLines.filter((otl) => otl.id !== this.incidentTimeline.id);\n }\n\n // This code is used to calculate the estimated completion date of an incident.\n // If the incident has a targetCompletionDateTime, return that.\n // If the incident has a targetCompletionHours value, return an estimate based on the incidentDateTime plus the targetCompletionHours.\n // If the incident has neither a targetCompletionDateTime nor a targetCompletionHours, return an estimate based on the incidentDateTime plus 24 hours.\n\n getCompletionDateTime(incident) {\n const targetCompletionDateTime = incident.attributes.targetCompletionDateTime;\n const targetCompletionHours = incident.attributes.targetCompletionHours;\n const incidentDateTime = incident.attributes.incidentDateTime;\n\n // If the incident has a targetCompletionDateTime, return that.\n if (targetCompletionDateTime) {\n return targetCompletionDateTime;\n }\n\n // If the incident has a targetCompletionHours value, return an estimate based on the incidentDateTime plus the targetCompletionHours.\n if (targetCompletionHours && targetCompletionHours > 0) {\n const ms = targetCompletionHours * 3600000;\n return new Date(new Date(incidentDateTime).valueOf() + ms);\n }\n\n // If the incident has neither a targetCompletionDateTime nor a targetCompletionHours,\n // return an estimate based on the incidentDateTime plus 24 hours.\n const ms = 24 * 3600000;\n return new Date(new Date(incidentDateTime).valueOf() + ms);\n }\n\n async getAllIncidents() {\n // get all incidents from strapi\n this.loading = true;\n try {\n const incidents = await this.strapiService.getAllOfContentType('system-incidents', null, ['system_incident_affected_areas', 'system_incident_updates']);\n\n // filter upcoming incidents\n this.upcomingIncidents = incidents\n .filter(\n (incident) =>\n new Date() < new Date(incident.attributes.incidentDateTime) && !incident.attributes.completedDateTime\n )\n .sort(\n (o1, o2) =>\n new Date(o1.attributes.incidentDateTime).valueOf() - new Date(o2.attributes.incidentDateTime).valueOf()\n );\n\n // filter past incidents\n this.pastIncidents = incidents\n .filter((incident) => incident.attributes.completedDateTime)\n .sort(\n (o1, o2) =>\n new Date(o2.attributes.incidentDateTime).valueOf() - new Date(o1.attributes.incidentDateTime).valueOf()\n );\n\n // filter live incidents\n this.liveIncidents = incidents\n .filter(\n (incident) =>\n new Date() >= new Date(incident.attributes.incidentDateTime) && !incident.attributes.completedDateTime\n )\n .sort(\n (o1, o2) =>\n new Date(o1.attributes.incidentDateTime).valueOf() - new Date(o2.attributes.incidentDateTime).valueOf()\n );\n\n this.incidents = incidents;\n } catch (error) {\n this.error = error;\n console.error(error);\n } finally {\n this.loading = false;\n }\n }\n\n // A function that sorts an array of incident updates\n sortedUpdates(incident) {\n // Sort the incident updates by date\n return incident.attributes.system_incident_updates.data.sort(\n // Sort the updates by the date they were updated\n (update1, update2) => {\n // If either of the updates do not have a date, return 0\n if (!update1.attributes.updatedAt || !update2.attributes.updatedAt) return 0;\n // Otherwise, sort the updates by their date\n return new Date(update2.attributes.updatedAt).valueOf() - new Date(update1.attributes.updatedAt).valueOf();\n }\n );\n }\n}\n","export default \"form .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3N5c3RlbS1pbmNpZGVudHMtbWFpbC1zdWJzY3JpcHRpb24tbW9kYWwvc3lzdGVtLWluY2lkZW50cy1tYWlsLXN1YnNjcmlwdGlvbi1tb2RhbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9zeXN0ZW0taW5jaWRlbnRzLW1haWwtc3Vic2NyaXB0aW9uLW1vZGFsL3N5c3RlbS1pbmNpZGVudHMtbWFpbC1zdWJzY3JpcHRpb24tbW9kYWwuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0k7RUFDSSwyQkFBQTtBQ0FSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9zeXN0ZW0taW5jaWRlbnRzLW1haWwtc3Vic2NyaXB0aW9uLW1vZGFsL3N5c3RlbS1pbmNpZGVudHMtbWFpbC1zdWJzY3JpcHRpb24tbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcbiAgICAubmctdG91Y2hlZC5uZy1pbnZhbGlkIHtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xuICAgIH1cbn0iLCJmb3JtIC5uZy10b3VjaGVkLm5nLWludmFsaWQge1xuICBib3JkZXI6IHNvbGlkICNlMzJiNGQgMC41cHg7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { FormValidator } from 'src/app/services/user-validators';\n\n@Component({\n selector: 'app-system-incidents-mail-subscription-modal',\n templateUrl: './system-incidents-mail-subscription-modal.component.html',\n styleUrls: ['./system-incidents-mail-subscription-modal.component.scss'],\n})\nexport class SystemIncidentsMailSubscriptionModalComponent implements OnInit {\n formInfo: FormGroup;\n formErrorMessage: boolean\n constructor(\n private strapiService: StrapiService,\n private modalService: NgbModal,\n private formBuilder: FormBuilder,\n private router: Router,\n private activeModal: NgbActiveModal,\n private glowService: GlowService,\n private formValidationService: FormValidationService\n ) {}\n\n ngOnInit() {\n this.initFormInfo();\n }\n\n close(result) {\n this.activeModal.close(result);\n }\n checkFormValidity(formControlName, translateKey?){\n return this.formValidationService.checkFormValidity(this.formInfo,formControlName, translateKey)\n }\n showErrorMessage() {\n if (!this.formInfo.valid) {\n this.formErrorMessage = true\n this.formValidationService.markFormGroup(this.formInfo, 'touched')\n }\n }\n initFormInfo() {\n this.formInfo = this.formBuilder.group({\n firstName: ['', [Validators.required]],\n lastName: ['', [Validators.required]],\n email: [\n '',\n [Validators.required, FormValidator.isEmailValid],\n ],\n noticeOfCompletion: [false],\n });\n }\n\n async submitInfo() {\n if (!this.formInfo.valid){\n this.formValidationService.markFormGroup(this.formInfo, 'touched')\n } else {\n this.strapiService\n .addSystemIncidentsMailSubscriber(this.formInfo.value)\n .then((response) => {\n console.log(response);\n this.formInfo.reset();\n this.sendUserAction(this.userActionBody(response.data.id));\n this.close({ response, status: 'success' });\n return response;\n })\n .catch((error) => {\n this.formInfo.reset();\n this.formInfo.reset();\n this.close({ error, status: 'error' });\n return error;\n }); \n }\n }\n userActionBody(id) {\n return {\n isNew: true,\n reference: 'IncidentReportingSubscription',\n data: {\n subscriptionId: id,\n },\n };\n \n }\n\n sendUserAction(action) {\n this.glowService.sendUserAction(action).subscribe(\n (resp) => {\n },\n (error) => {\n }\n );\n }\n}\n","export default \".badge:hover {\\n background-color: #f0f1f3 !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3RhZy90YWcuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvdGFnL3RhZy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9DQUFBO0FDQ0oiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3RhZy90YWcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYmFkZ2U6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYxZjMgIWltcG9ydGFudDtcbn0iLCIuYmFkZ2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMWYzICFpbXBvcnRhbnQ7XG59Il19 */\"","import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-tag',\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n})\nexport class TagComponent implements OnInit {\n @Input() tag: any;\n @Input() shouldDisplayCommunity: boolean = false;\n @Input() isTagBgWhite: boolean = true;\n @Input() isButton: boolean = false;\n @Output() click: EventEmitter = new EventEmitter();\n constructor() {}\n\n ngOnInit(): void {}\n\n tagRelativePath(tag) {\n return tag.attributes.isCommunity ? `/community/${tag.attributes.slug}` : `/tag/${tag.attributes.slug}`;\n }\n\n tagClick() {\n this.click.emit(this.tag);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TagComponent } from './tag.component';\n\n\n\n@NgModule({\n declarations: [TagComponent],\n imports: [\n CommonModule\n ],\n exports:[TagComponent]\n})\nexport class TagModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvdGVtcGVyYXR1cmUtc2Vuc29yLWRhdGEtdGFibGUvdGVtcGVyYXR1cmUtc2Vuc29yLWRhdGEtdGFibGUuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { DateFormatService } from 'src/app/services/date-format.service';\nimport { GlowService } from 'src/app/services/glow.service';\n\ndeclare var require: any\nvar FileSaver = require(\"file-saver\");\n\n@Component({\n selector: 'app-temperature-sensor-data-table',\n templateUrl: './temperature-sensor-data-table.component.html',\n styleUrls: ['./temperature-sensor-data-table.component.scss']\n})\n\nexport class TemperatureSensorDataTableComponent implements OnInit {\n\n @Input() pageTitle = \"\"\n @Input() currentPage = \"\"\n @Input() sensorVEList: any\n @Input() innerWidth;\n @Output() selectResourceToDownload = new EventEmitter()\n\n constructor(private glowService: GlowService,\n private dateFormatService: DateFormatService,\n private route: ActivatedRoute\n ) {\n this.route.params.subscribe((params) => {\n this.pageTitle = params && params.sensor && params.sensor.replace(\"-\", \" \")\n this.currentPage = this.pageTitle\n });\n }\n\n ngOnInit() {\n if (this.sensorVEList) {\n this.processSensorData()\n }\n \n }\n\n ngOnChanges() {\n if (this.sensorVEList) {\n this.processSensorData()\n }\n }\n\n processResourceDownload(id) {\n this.selectResourceToDownload.emit(id)\n }\n\n processSensorData() {\n\n\n this.sensorVEList.map(async ve => {\n ve.resources = await ve.resources.sort((a, b) => a.name.localeCompare(b.name))\n ve.resources.map((x, i) => { if (x.classifier == \"illuminance\") { ve.resources.splice(i, 1); } })\n })\n }\n\n async getResourceDownloadData(resource,) {\n\n // Get last 10 days\n var from = new Date();\n const fromDate = this.dateFormatService.apiTimeFromFormat(new Date(from.setDate(from.getDate() - 11)));\n\n var to = new Date();\n const toDate = this.dateFormatService.apiTimeToFormat(new Date(to.setDate(to.getDate() - 1)));\n\n this.glowService.getResourceReadings(resource.resourceId, fromDate, toDate, 'PT30M').subscribe(response => {\n if (response && response.data) {\n this.downloadResult(response)\n }\n })\n }\n\n downloadResult(resource) {\n var date = new Date();\n var dateString = date.toISOString().split(\".\");\n var dateInFileName = dateString[0];\n var reportName = resource.name.replace(',', '');\n var filename = `${reportName}-${dateInFileName}.csv`;\n var csvContent = toCSV(resource.data, resource.units);\n var blob = new Blob([csvContent], { type: \"text/json\" });\n FileSaver.saveAs(blob, filename);\n }\n\n}\n\nfunction toCSV(json, units) {\n var jsonVal = Object.keys(json).map(function (e) { return json[e] })\n var csv = \"\";\n csv += ['timestamp', units, 'epoch'].join(\",\") + \"\\n\";\n for (var line of jsonVal) {\n csv += (line[0] / 1000) + \",\"\n csv += (line[1] ? (line[1]).toFixed(3) : '') + \",\"\n csv += epochToIso(line[0]) + '\\n'\n }\n return csv;\n}\n\nfunction epochToIso(epoch) {\n let newDate = new Date(epoch)\n let formattedDate = newDate.toISOString().split('T')\n let result = formattedDate[0] + ' ' + formattedDate[1].split('.')[0]\n return result\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TemperatureSensorDataTableComponent } from './temperature-sensor-data-table.component';\n\n\n\n@NgModule({\n declarations: [TemperatureSensorDataTableComponent],\n imports: [\n CommonModule\n ],\n exports:[TemperatureSensorDataTableComponent]\n})\nexport class TemperatureSensorDataTableModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvdGVybXMtYW5kLWNvbmRpdGlvbnMvdGVybXMtYW5kLWNvbmRpdGlvbnMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { TermsConditionsService } from 'src/app/services/termsconditions.service';\nimport { tTermsConditionsUiConfig } from '../component.typings';\n\n@Component({\n selector: 'app-terms-and-conditions',\n templateUrl: './terms-and-conditions.component.html',\n styleUrls: ['./terms-and-conditions.component.scss']\n})\nexport class TermsAndConditionsComponent implements OnInit {\n @Input() options: tTermsConditionsUiConfig | any = {\n allowModalToExit: true,\n showPermissions: true,\n requireAccept: true,\n referenceKey: null,\n };\n termsConditions\n constructor(private termsConditionsService: TermsConditionsService) { }\n\n ngOnInit() {\n this.termsConditionsService.getCurrentTermsConditionsSync(this.options.referenceKey).then((tc) => {\n this.termsConditions = tc;\n });\n\n\n }\n}","export default \".form-check-input:checked {\\n background-color: #5f6dbf;\\n border-color: #5f6dbf;\\n}\\n\\n.form-check-input:focus {\\n border-color: #5f6dbf;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3Rlcm1zY29uZGl0aW9ucy1tb2RhbC90ZXJtc2NvbmRpdGlvbnMtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvdGVybXNjb25kaXRpb25zLW1vZGFsL3Rlcm1zY29uZGl0aW9ucy1tb2RhbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHlCQUFBO0VBQ0EscUJBQUE7QUNDRjs7QURDQTtFQUNFLHFCQUFBO0FDRUYiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3Rlcm1zY29uZGl0aW9ucy1tb2RhbC90ZXJtc2NvbmRpdGlvbnMtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1jaGVjay1pbnB1dDpjaGVja2VkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVmNmRiZjtcbiAgYm9yZGVyLWNvbG9yOiAjNWY2ZGJmO1xufVxuLmZvcm0tY2hlY2staW5wdXQ6Zm9jdXMge1xuICBib3JkZXItY29sb3I6ICM1ZjZkYmY7XG59XG5cbiIsIi5mb3JtLWNoZWNrLWlucHV0OmNoZWNrZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWY2ZGJmO1xuICBib3JkZXItY29sb3I6ICM1ZjZkYmY7XG59XG5cbi5mb3JtLWNoZWNrLWlucHV0OmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiAjNWY2ZGJmO1xufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { tLoadingElementWithSuccess } from 'src/app/services/app-config.typings';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { tTermsConditions } from 'src/app/services/glow.typings';\nimport { TermsConditionsService } from 'src/app/services/termsconditions.service';\nimport { tTermsConditionsUiConfig } from '../component.typings';\nimport { data } from '../../../assets/content/professional-terms-conditions.json'\n@Component({\n selector: 'app-termsconditions-modal',\n templateUrl: './termsconditions-modal.component.html',\n styleUrls: ['./termsconditions-modal.component.scss'],\n})\nexport class TermsconditionsModalComponent implements OnInit {\n @Input() options: tTermsConditionsUiConfig | any = {\n allowModalToExit: true,\n showPermissions: true,\n requireAccept: true,\n referenceKey: null,\n };\n @Input() title;\n professionalTerms = data\n loadObj: tLoadingElementWithSuccess;\n requiresPermisssionReq: boolean = false;\n hasTermConditionDetails: boolean = false;\n termsConditionsRef: string;\n termsConditions: tTermsConditions;\n termsConditionsDetailList: any[];\n hasTermsConditions: boolean;\n termsConditionsForm: FormGroup;\n // formPermissionMetaData: tTermsConditionPermissionsDisplayData;\n formPermissionMetaData: any;\n displayForm: boolean = true\n @Input() professional: boolean = false\n constructor(\n private termsConditionsService: TermsConditionsService,\n private glowService: GlowService,\n private modalService: NgbModal,\n private router: Router,\n private formBuilder: FormBuilder,\n private activeModal: NgbActiveModal\n ) { }\n\n ngOnInit() {\n this.termsConditionsService.getCurrentTermsConditionsSync(this.options.referenceKey).then((tc) => {\n this.termsConditions = tc;\n this.processTC();\n });\n\n\n }\n\n processTC() {\n //July 2018: more strigent checks to be added\n // // console.log('processTC');\n // // console.log(this.termsConditions);\n // // console.log(this.options);\n\n if (this.termsConditions && this.termsConditions.reference) {\n this.termsConditionsRef = this.termsConditions.reference\n }\n\n if (this.termsConditions && this.termsConditions.hasOwnProperty('data')) {\n var permissionsForm = {};\n this.requiresPermisssionReq = false;\n this.formPermissionMetaData = {\n textStart: null,\n textEnd: null,\n permissionList: [],\n };\n if (this.termsConditions.data.hasOwnProperty('permissions') && this.options.showPermissions === true) {\n if (Array.isArray(this.termsConditions.data.permissions)) {\n this.termsConditions.data.permissions.forEach((permission) => {\n if (permission.hasOwnProperty('reference')) {\n //TO do check if you overwrtting the reference in PermisssionsForm\n this.formPermissionMetaData.permissionList.push(permission);\n } else {\n console.warn('No reference in permission element');\n console.warn(permission);\n }\n });\n } else if (this.termsConditions.data && this.termsConditions.data.permissions && Array.isArray(this.termsConditions.data.permissions.permissionList)) {\n this.formPermissionMetaData = {\n ...this.formPermissionMetaData,\n ...this.termsConditions.data.permissions,\n ...{ permissionList: [] },\n };\n this.termsConditions.data.permissions.permissionList.forEach((permission) => {\n if (permission.hasOwnProperty('reference')) {\n //TO do check if you overwrtting the reference in PermisssionsForm\n this.formPermissionMetaData.permissionList.push(permission);\n } else {\n console.warn('No reference in permission element');\n console.warn(permission);\n }\n });\n }\n this.formPermissionMetaData.permissionList.forEach((permission) => {\n const isRequiredPermission = permission.hasOwnProperty('isRequired') ? permission.isRequired : true;\n if (isRequiredPermission === true) {\n // // console.log('Permission is required' + permission.reference);\n permissionsForm[permission.reference] = [false, Validators.requiredTrue];\n } else {\n permissionsForm[permission.reference] = [false];\n }\n });\n // // console.log('this.formPermissionMetaData');\n\n // // console.log(this.formPermissionMetaData);\n this.requiresPermisssionReq = true;\n this.termsConditionsForm = this.formBuilder.group(permissionsForm);\n // // console.log(this.termsConditionsForm);\n\n this.hasTermsConditions = true;\n } else {\n if (this.options.requireAccept === true) {\n this.termsConditionsForm = this.formBuilder.group([]);\n this.requiresPermisssionReq = true;\n }\n }\n if (this.termsConditions.data.hasOwnProperty('details') && Array.isArray(this.termsConditions.data.details)) {\n // TO DO validate it is valid an a parsable\n this.hasTermConditionDetails = true;\n this.hasTermsConditions = true;\n this.termsConditionsDetailList = this.termsConditions.data.details;\n }\n this.loadObj = { ...this.loadObj, ...{ loaded: true, loading: false } };\n } else {\n console.warn('Unexpected Terms and condition object');\n console.warn(this.termsConditions);\n this.loadObj = { ...this.loadObj, ...{ loadError: true, loading: false, errorString: 'ERROR' } };\n }\n }\n}\n","export default \"button {\\n all: unset;\\n}\\n\\nimg {\\n width: 100%;\\n height: auto;\\n}\\n\\n@media only screen and (max-width: 576px) {\\n .card,\\n.row {\\n height: 100% !important;\\n padding: 10px;\\n }\\n}\\n\\n.summary {\\n font-family: \\\"PT Serif\\\", serif;\\n max-width: 100%;\\n display: -webkit-box;\\n overflow: hidden;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n text-overflow: ellipsis;\\n margin: 5px;\\n font-size: 1rem;\\n line-height: 1.5rem;\\n height: 3rem;\\n}\\n\\n.p-wrapper {\\n height: 70px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3R1dG9yaWFsLWNhcmQvdHV0b3JpYWwtY2FyZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy90dXRvcmlhbC1jYXJkL3R1dG9yaWFsLWNhcmQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxVQUFBO0FDQ0Y7O0FERUE7RUFDRSxXQUFBO0VBQ0EsWUFBQTtBQ0NGOztBRENBO0VBQ0U7O0lBRUUsdUJBQUE7SUFDQSxhQUFBO0VDRUY7QUFDRjs7QURDQTtFQUNFLDhCQUFBO0VBQ0EsZUFBQTtFQUNBLG9CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxxQkFBQTtFQUNBLDRCQUFBO0VBQ0EsdUJBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtBQ0NGOztBREVBO0VBQ0UsWUFBQTtBQ0NGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy90dXRvcmlhbC1jYXJkL3R1dG9yaWFsLWNhcmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJidXR0b24ge1xuICBhbGw6IHVuc2V0O1xufVxuXG5pbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzZweCkge1xuICAuY2FyZCxcbiAgLnJvdyB7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMTBweDtcbiAgfVxufVxuXG4uc3VtbWFyeSB7XG4gIGZvbnQtZmFtaWx5OiBcIlBUIFNlcmlmXCIsIHNlcmlmO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBtYXJnaW46IDVweDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMS41cmVtO1xuICBoZWlnaHQ6IDNyZW07XG59XG5cbi5wLXdyYXBwZXIge1xuICBoZWlnaHQ6IDcwcHg7XG59XG4iLCJidXR0b24ge1xuICBhbGw6IHVuc2V0O1xufVxuXG5pbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gIC5jYXJkLFxuLnJvdyB7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMTBweDtcbiAgfVxufVxuLnN1bW1hcnkge1xuICBmb250LWZhbWlseTogXCJQVCBTZXJpZlwiLCBzZXJpZjtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWFyZ2luOiA1cHg7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgaGVpZ2h0OiAzcmVtO1xufVxuXG4ucC13cmFwcGVyIHtcbiAgaGVpZ2h0OiA3MHB4O1xufSJdfQ== */\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-tutorial-card',\n templateUrl: './tutorial-card.component.html',\n styleUrls: ['./tutorial-card.component.scss'],\n})\nexport class TutorialCardComponent implements OnInit {\n innerWidth;\n @Input() tutorial;\n @Input() shouldDisplaySummary: boolean = true;\n @Input() shouldDisplayCommunityTag: boolean = false;\n @Input() titleStyle: any = {};\n @Input() backgroundStyle: any = {};\n @Input() titleLineHeight: any = {};\n @Input() displayTimeToRead: boolean = true;\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n\n timeToRead = 1;\n createdAt: string;\n // displayImageUrl = { 'background-image': 'url(\"../../../assets/images/soft-orange.jpg\")' };\n displayImageUrl = \"../../../assets/images/soft-orange.jpg\"\n relativePath:string\n constructor(private strapiService:StrapiService) {}\n\n ngOnInit() {\n this.timeToRead=this.getTimeToRead()\n this.createdAt = this.getCreatedAt(this.tutorial)\n this.displayImageUrl=this.getDisplayImageUrl(this.tutorial)\n this.relativePath=this.getRelativePath()\n this.onResize();\n }\n\n getTimeToRead() {\n let totalMin = 1;\n this.tutorial.attributes.tutorial_sections.data.forEach((c: any) => {\n totalMin = totalMin + Utils.getTimeToRead(c.attributes.content);\n });\n return totalMin;\n }\n\n getCreatedAt(content) {\n return Utils.formatZDate(content.attributes.createdAt);\n }\n\n isBookmarked() {\n return this.strapiService.isContentBookmarked(this.tutorial.attributes.slug);\n }\n\n bookmarkContent() {\n this.strapiService.bookmarkContent(this.tutorial.attributes.slug, 'articles');\n }\n\n unbookmarkContent() {\n this.strapiService.unbookmarkContent(this.tutorial.attributes.slug);\n }\n\n\n getRelativePath(){\n return `/home/tutorials/${this.tutorial.attributes.slug}`\n }\n\n getDisplayImageUrl(content) {\n return this.strapiService.getSmallDisplayImageUrl(content);\n }\n}\n","export default \"@media only screen and (max-width: 768px) {\\n .card, .card-img, .card-img-overlay {\\n height: 300px !important;\\n width: 100% !important;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9jb21wb25lbnRzL3R1dG9yaWFsLWNvbnRlbnQvdHV0b3JpYWwtY29udGVudC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy90dXRvcmlhbC1jb250ZW50L3R1dG9yaWFsLWNvbnRlbnQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSTtJQUFzQyx3QkFBQTtJQUEwQixzQkFBQTtFQ0dsRTtBQUNGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy90dXRvcmlhbC1jb250ZW50L3R1dG9yaWFsLWNvbnRlbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICA3NjhweCl7XG4gICAgLmNhcmQsIC5jYXJkLWltZywgLmNhcmQtaW1nLW92ZXJsYXkgeyBoZWlnaHQ6IDMwMHB4ICFpbXBvcnRhbnQ7IHdpZHRoOjEwMCUgIWltcG9ydGFudH1cbiAgICBcbn0iLCJAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5jYXJkLCAuY2FyZC1pbWcsIC5jYXJkLWltZy1vdmVybGF5IHtcbiAgICBoZWlnaHQ6IDMwMHB4ICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgfVxufSJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { ScrollSpyService } from '@uniprank/ngx-scrollspy';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { ViewportScroller } from '@angular/common';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-tutorial-content',\n templateUrl: './tutorial-content.component.html',\n styleUrls: ['./tutorial-content.component.scss'],\n})\nexport class TutorialContentComponent implements OnInit {\n @Input() tutorial;\n //dummy placeholder data\n\n content = [];\n timeToRead = 1\n createdAt:string\n displayImageUrl = { 'background-image': 'url(\"../../../assets/images/soft-orange.jpg\")' };\n\n public activeSection: BehaviorSubject<{ id?: string; elementId?: string; nativeElement?: HTMLElement }> =\n new BehaviorSubject({});\n\n private _subscription: Subscription;\n\n constructor(\n private _scrollSpyService: ScrollSpyService,\n private viewportScroller: ViewportScroller,\n private strapiService: StrapiService\n ) {}\n\n ngOnInit() {\n this.content = this.getSections(this.tutorial);\n this.timeToRead=this.getTimeToRead()\n this.createdAt = this.getCreatedAt(this.tutorial)\n this.displayImageUrl=this.getDisplayImageUrl(this.tutorial)\n // set offset because 2 sticky menu bars width single height of 50px\n this._scrollSpyService.setOffset('window', 100);\n // subscribe to window scroll listener, it is also possible to use an ScrollSpyElement id\n this._subscription = this._scrollSpyService.observe('window').subscribe((item) => {\n if (item != null) {\n const _nextSection = {\n id: item.id,\n elementId: item.scrollElementId,\n };\n this.activeSection.next(_nextSection);\n }\n });\n }\n\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n\n public onClick(elementId: string) {\n document.getElementById(elementId).scrollIntoView({ block: 'start', inline: 'nearest', behavior: 'smooth' });\n }\n\n getSections(tutorial) {\n if (tutorial.attributes.tutorial_sections && tutorial.attributes.tutorial_sections.data.length) {\n return tutorial.attributes.tutorial_sections.data.sort((s1, s2) => {\n return s1.attributes.stepNumber - s2.attributes.stepNumber;\n });\n }\n }\n\n getTimeToRead() {\n let totalMin = 1;\n this.content.forEach((c: any) => {\n totalMin = totalMin + Utils.getTimeToRead(c.attributes.content);\n });\n return totalMin;\n }\n\n getCreatedAt(content) {\n return Utils.formatZDate(content.attributes.createdAt);\n }\n\n isBookmarked() {\n return this.strapiService.isContentBookmarked(this.tutorial.attributes.slug);\n }\n\n bookmarkContent() {\n this.strapiService.bookmarkContent(this.tutorial.attributes.slug, 'articles');\n }\n\n unbookmarkContent() {\n this.strapiService.unbookmarkContent(this.tutorial.attributes.slug);\n }\n\n\n getDisplayImageUrl(content) {\n const url = this.strapiService.getSmallDisplayImageUrl(content)\n return { 'background-image': `url(\"${url}\")` };\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvdXNlci1zdG9yeS1jYXJkL3VzZXItc3RvcnktY2FyZC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Input,ViewChild,ElementRef, ChangeDetectorRef } from '@angular/core';\nimport { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { Utils } from 'src/utils';\n\n\n@Component({\n selector: 'app-user-story-card',\n templateUrl: './user-story-card.component.html',\n styleUrls: ['./user-story-card.component.scss']\n})\nexport class UserStoryCardComponent implements OnInit {\n @Input() userStory!:any\n\n\n constructor(private router:Router, private landingService:LandingService, private ref:ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.ref.detectChanges()\n }\n\n\n getUpdatedAt(){\n return new Date(this.userStory.attributes.updatedAt).toDateString().split(' ').slice(1).join(' ');\n }\n\n navigateToUserStory(){\n // this.landingService.setUserStoryId(this.userStory.id)\n this.router.navigateByUrl(`home/user-story/${this.userStory.attributes.slug}`);\n }\n\n userStoryRelativePath(){\n return `/home/user-story/${this.userStory.attributes.slug}`\n }\n\n getImageURL(userStory:any){\n return Utils.getApiServerAddress()+userStory.attributes.headingImage.data.attributes.url\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvdXNlci1zdG9yeS1kZXRhaWxlZC1jb250ZW50L3VzZXItc3RvcnktZGV0YWlsZWQtY29udGVudC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-user-story-detailed-content',\n templateUrl: './user-story-detailed-content.component.html',\n styleUrls: ['./user-story-detailed-content.component.scss'],\n})\nexport class UserStoryDetailedContentComponent implements OnInit {\n userStory!: any;\n\n constructor(private route: ActivatedRoute, private landingService: LandingService, private strapiService:StrapiService) {\n this.getUserStory().then((userStory) => {\n this.userStory = userStory;\n });\n }\n\n ngOnInit(): void {}\n\n getUpdatedAt(){\n return new Date(this.userStory.attributes.updatedAt).toDateString().split(' ').slice(1).join(' ');\n }\n\n async getUserStory() {\n\n }\n \n getImageURL(userStory: any) {\n return Utils.getApiServerAddress() + userStory.attributes.headingImage.data.attributes.url;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, CanDeactivate } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { HeatPumpCaseStudyComponent } from '../pages/case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ConfirmationModalComponent } from '../components/confirmation-modal/confirmation-modal.component';\nimport { CaseStudyFormService } from '../services/case-study-form.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeatPumpCsFormGuard implements CanDeactivate {\n constructor(private modalService: NgbModal, private caseStudyFormService: CaseStudyFormService) {}\n canDeactivate(component: HeatPumpCaseStudyComponent, next: ActivatedRouteSnapshot, state: RouterStateSnapshot, ): Observable | Promise | boolean {\n return new Promise((resolve) => {\n if (this.caseStudyFormService.isSectionPristine(component.section)) {\n resolve(true);\n } else {\n const modalRef = this.modalService.open(ConfirmationModalComponent, { centered: true, size: 'lg' });\n modalRef.componentInstance.confirmationTitle = 'Unsaved changes';\n modalRef.componentInstance.confirmationText = 'You have unsaved changes. Do you want to leave without saving?';\n modalRef.componentInstance.confirmationButtonText = 'Save';\n modalRef.componentInstance.dismissButtonText = \"Don't save\";\n modalRef.result.then((result) => {\n if (result === 'confirm') {\n component.saveChangesToActiveChildComponent()\n }\n resolve(result === 'confirm');\n });\n }\n });\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9hY2NvdW50LXBhZ2VzL2FjY291bnQtcGFnZXMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { HelpModalComponent } from 'src/app/components/help-modal/help-modal.component';\nimport { InstallerInvitationModalComponent } from 'src/app/components/installer-invitation-modal/installer-invitation-modal.component';\n\n@Component({\n selector: 'app-account-pages',\n templateUrl: './account-pages.component.html',\n styleUrls: ['./account-pages.component.scss']\n})\nexport class AccountPagesComponent implements OnInit {\n pageTitle = 'Account';\n currentPage = '';\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable();\n constructor(private modalService: NgbModal, private translate: TranslateService) {}\n\n ngOnInit() {}\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle);\n this.currentPage = event.pageTitle;\n }\n\n // // console.log(\"EVENT\",event);\n }\n openInvitationModal(){\n this.modalService.open(InstallerInvitationModalComponent, { scrollable: true, centered: true, size: 'lg', backdrop: 'static' })\n }\n openInfoModal() {\n const modalRef = this.modalService.open(HelpModalComponent, { scrollable: true, centered: true, size: 'lg' });\n modalRef.componentInstance.pageTitle = 'Invitations';\n modalRef.componentInstance.modalBodyContent = this.translate.instant('INVITATIONS_PROFESSIONAL_EXPLANATION')\n\n\n\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccountPagesComponent } from './account-pages.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { HelpModalComponent } from 'src/app/components/help-modal/help-modal.component';\nimport { HelpModalModule } from 'src/app/components/help-modal/help-modal.module';\n\n\n\n@NgModule({\n declarations: [AccountPagesComponent],\n imports: [\n CommonModule, SharedModule, HelpModalModule\n ],\n exports: [AccountPagesComponent]\n})\nexport class AccountPagesModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9hY2NvdW50LXBhZ2VzL2ludml0YXRpb25zL2ludml0YXRpb25zLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-invitations',\n templateUrl: './invitations.component.html',\n styleUrls: ['./invitations.component.scss', '../../pages-professional.component.scss']\n})\nexport class InvitationsComponent implements OnInit {\n\n pages = [\n { path: '/professional/account/invitations/sent-invitations', title: 'Sent invitations', urlPath: 'sent-invitations' },\n { path: '/professional/account/invitations/received-invitations', title: 'Received invitations', urlPath: 'received-invitations' },\n // { path: '/pages/account/settings/properties', title: 'Properties', urlPath: 'properties' }\n ]\n pageTitle = \"Invitations\"\n currentPage;\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable()\n constructor() { }\n\n ngOnInit() {\n }\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle)\n this.currentPage = event.pageTitle;\n }\n // console.log(\"EVENT\",event);\n }\n isCurrentPage(page) {\n return page.title == this.currentPage;\n }\n\n getOtherPages() {\n return this.pages.filter(p => p.title != this.currentPage)\n \n}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InvitationsComponent } from './invitations.component';\nimport { SentInvitationsModule } from './sent-invitations/sent-invitations.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [InvitationsComponent],\n imports: [\n CommonModule, SentInvitationsModule, SharedModule\n ],\n exports: [InvitationsComponent]\n})\nexport class InvitationsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9hY2NvdW50LXBhZ2VzL2ludml0YXRpb25zL3JlY2VpdmVkLWludml0YXRpb25zL3JlY2VpdmVkLWludml0YXRpb25zLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { ConfirmationModalComponent } from 'src/app/components/confirmation-modal/confirmation-modal.component';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { PdfService } from 'src/app/services/pdf.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-received-invitations',\n templateUrl: './received-invitations.component.html',\n styleUrls: ['./received-invitations.component.scss']\n})\nexport class ReceivedInvitationsComponent implements OnInit {\n pageTitle = 'Received invitations'\n estimateRequests: any\n loading: boolean = true;\n error: boolean\n estimatesSubscription: Subscription\n constructor(private invitationsService: InvitationsService, private glowService: GlowService, private pdfService: PdfService, private modalService: NgbModal) {\n this.estimatesSubscription = this.invitationsService.ProfessionalEstimatesAnnouncer.subscribe((resp) => {\n if (resp.error) {\n this.loading = false\n this.error = true\n } else if (!resp.valid) {\n this.loading = false\n this.estimateRequests = []\n }\n\n else {\n this.estimateRequests = resp.estimateRequests.filter(e => e.initiatedBy === 'customer')\n // console.log(this.estimateRequests)\n if (this.estimateRequests) {\n this.loading = false\n }\n }\n this.loading = false\n })\n\n }\n\n ngOnInit() {\n this.invitationsService.getAllProfessionalEstimateRequests()\n\n }\n ngOnDestroy() {\n if (this.estimatesSubscription) {\n this.estimatesSubscription.unsubscribe()\n }\n }\n getReadableDateFromIso(string) {\n return Utils.getReadableDateFromIso(string)\n }\n downloadPDF(id) {\n this.glowService.getSnapshotBySnapshotId(id).subscribe((resp) => {\n if (resp) {\n this.pdfService.generatePdf(resp)\n }\n return resp\n })\n }\n\n openConfirmationModal(estimateRequestId) {\n const modalReference = this.modalService.open(ConfirmationModalComponent, { centered: true, size: 'lg' });\n modalReference.componentInstance.confirmationTitle = 'Are you sure you want to remove this property?';\n (modalReference.componentInstance.confirmationText = 'In doing so, you will no longer be able to view or download their data.'),\n (modalReference.componentInstance.confirmationButtonText = 'Remove property');\n modalReference.componentInstance.estimateRequestId = estimateRequestId;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReceivedInvitationsComponent } from './received-invitations.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [ReceivedInvitationsComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [ReceivedInvitationsComponent]\n})\nexport class ReceivedInvitationsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9hY2NvdW50LXBhZ2VzL2ludml0YXRpb25zL3NlbnQtaW52aXRhdGlvbnMvc2VudC1pbnZpdGF0aW9ucy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { ConfirmationModalComponent } from 'src/app/components/confirmation-modal/confirmation-modal.component';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { PdfService } from 'src/app/services/pdf.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-sent-invitations',\n templateUrl: './sent-invitations.component.html',\n styleUrls: ['./sent-invitations.component.scss', '../../../pages-professional.component.scss']\n})\nexport class SentInvitationsComponent implements OnInit {\n pageTitle = 'Sent invitations'\n estimateRequests: any\n loading: boolean = true;\n estimatesSubscription: Subscription\n error: boolean\n constructor(private invitationsService: InvitationsService, private glowService: GlowService, private pdfService: PdfService, private modalService: NgbModal) {\n this.estimatesSubscription = this.invitationsService.ProfessionalEstimatesAnnouncer.subscribe((resp) => {\n console.log(resp)\n if (resp.error) {\n this.loading = false\n this.error = true\n } else if (!resp.valid) {\n this.loading = false\n this.estimateRequests = []\n }\n\n else {\n this.estimateRequests = resp.estimateRequests.filter(e => e.initiatedBy === 'professional')\n // console.log(this.estimateRequests)\n if (this.estimateRequests) {\n this.loading = false\n }\n }\n this.loading = false\n })\n\n }\n\n ngOnInit() {\n this.invitationsService.getAllProfessionalEstimateRequests()\n\n }\n\n\n ngOnDestroy() {\n if (this.estimatesSubscription) {\n this.estimatesSubscription.unsubscribe()\n }\n }\n\n getReadableDateFromIso(string) {\n return Utils.getReadableDateFromIso(string)\n }\n downloadPDF(id) {\n this.glowService.getSnapshotBySnapshotId(id).subscribe((resp) => {\n if (resp) {\n this.pdfService.generatePdf(resp)\n }\n return resp\n })\n }\n\n openConfirmationModal(estimateRequestId) {\n const modalReference = this.modalService.open(ConfirmationModalComponent, { centered: true, size: 'lg' });\n modalReference.componentInstance.confirmationTitle = 'Are you sure you want to remove this property?';\n (modalReference.componentInstance.confirmationText = 'In doing so, you will no longer be able to view or download their data.'),\n (modalReference.componentInstance.confirmationButtonText = 'Remove property');\n modalReference.componentInstance.estimateRequestId = estimateRequestId;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SentInvitationsComponent } from './sent-invitations.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [SentInvitationsComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [SentInvitationsComponent]\n})\nexport class SentInvitationsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9hY2NvdW50LXBhZ2VzL25vdGlmaWNhdGlvbnMvYWxsLW5vdGlmaWNhdGlvbnMvYWxsLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\n\n@Component({\n selector: 'app-all-notifications',\n templateUrl: './all-notifications.component.html',\n styleUrls: ['./all-notifications.component.scss']\n})\nexport class AllNotificationsComponent implements OnInit {\n invitationAccepted: boolean = false\n invitationDeclined: boolean = false\n pendingRequests;\n currentPage;\n loading\n pendingRequestSubscription: Subscription\n pageTitle: string = 'Notifications'\n\n constructor(private invitationsService: InvitationsService, private glowService: GlowService) {\n this.loading = true\n this.pendingRequestSubscription = this.invitationsService.PendingAcceptanceEstimateAnnouncer.subscribe((er) => {\n if (er.valid) {\n this.loading = false\n this.pendingRequests = er.estimateRequests\n } else {\n this.loading = false\n }\n })\n }\n\n ngOnInit() {\n\n this.invitationsService.getAllEstimateRequestsByState('pending-professional-acceptance')\n }\n\n ngOnDestroy() {\n if (this.pendingRequestSubscription) {\n this.pendingRequestSubscription.unsubscribe()\n }\n }\n acceptInvitation() {\n this.invitationAccepted = true\n }\n denyInvitation() {\n this.invitationDeclined = true\n }\n\n\n \n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AllNotificationsComponent } from './all-notifications.component';\nimport { NotificationModule } from 'src/app/components/notification/notification.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [AllNotificationsComponent],\n imports: [\n CommonModule, NotificationModule, SharedModule, \n ],\n exports: [AllNotificationsComponent]\n})\nexport class AllNotificationsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9hY2NvdW50LXBhZ2VzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { InvitationsService } from 'src/app/services/invitations.service';\n\n@Component({\n selector: 'app-notifications',\n templateUrl: './notifications.component.html',\n styleUrls: ['./notifications.component.scss', '../../../pages-professional/pages-professional.component.scss']\n})\nexport class NotificationsComponent implements OnInit {\n pageTitle: string = 'Notifications';\n invitationAccepted: boolean = false\n invitationDeclined: boolean = false\n pendingRequests;\n currentPage;\n loading\n pendingRequestSubscription: Subscription\n pages = [\n { path: '/professional/account/notifications/all-notifications', title: 'Notifications', urlPath: 'all-notifications' },\n\n ]\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable()\n constructor() {\n\n }\n\n ngOnInit(): void {\n \n }\n\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle)\n this.currentPage = event.pageTitle;\n }\n // console.log(\"EVENT\",event);\n }\n isCurrentPage(page) {\n return page.title == this.currentPage;\n }\n\n getOtherPages() {\n return this.pages.filter(p => p.title != this.currentPage)\n \n}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NotificationsComponent } from './notifications.component';\nimport { NotificationModule } from 'src/app/components/notification/notification.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { AllNotificationsModule } from './all-notifications/all-notifications.module';\n\n\n\n@NgModule({\n declarations: [NotificationsComponent],\n imports: [\n CommonModule, NotificationModule, SharedModule, AllNotificationsModule\n ], \n exports: [NotificationsComponent]\n})\nexport class NotificationsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9hY2NvdW50LXBhZ2VzL3Byb2Zlc3Npb25hbC1zZXR0aW5ncy9wZXJzb25hbC1kZXRhaWxzL3BlcnNvbmFsLWRldGFpbHMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { ProfileModalComponent } from 'src/app/components/profile-modal/profile-modal.component';\nimport { AuthenticationService } from 'src/app/services/authentication.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ServiceAgentService } from 'src/app/services/service-agent.service';\n\n@Component({\n selector: 'app-personal-details',\n templateUrl: './personal-details.component.html',\n styleUrls: ['./personal-details.component.scss', '../../../pages-professional.component.scss']\n})\n\nexport class PersonalDetailsComponent implements OnInit {\n\n pageTitle = 'Account information'\n user: any;\n loading: boolean = true\n serviceAgent: any;\n roleSubscription: Subscription\n serviceAgentSubscription: Subscription\n roles\n\n constructor(private glowService: GlowService, private auth: AuthenticationService, private modalService: NgbModal, private serviceAgentService: ServiceAgentService) {\n this.roleSubscription = this.auth.roleSet.subscribe((resp) => {\n this.roles = resp\n })\n\n this.serviceAgentSubscription = this.serviceAgentService.serviceAgentAnnouncer.subscribe(resp=>{\n this.serviceAgent = resp\n this.loading = false \n })\n }\n \n\n ngOnInit() {\n this.serviceAgent = this.getServiceAgent();\n this.loading = false\n this.roles = this.auth.getOIDCUserRolesFromLocalStorage()\n }\n \n\n getServiceAgent() {\n this.serviceAgentService.getServiceAgent()\n }\n openModal(formToShow) {\n const modalRef = this.modalService.open(ProfileModalComponent, { scrollable: true, centered: true, size: 'lg', backdrop: 'static' })\n modalRef.componentInstance.serviceAgent = this.serviceAgent\n modalRef.componentInstance[formToShow] = true\n\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PersonalDetailsComponent } from './personal-details.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\nimport { ProfileModalModule } from 'src/app/components/profile-modal/profile-modal.module';\n\n\n\n@NgModule({\n declarations: [PersonalDetailsComponent],\n imports: [\n CommonModule, SharedModule, SpinnerModule, ProfileModalModule\n ],\n exports: [PersonalDetailsComponent]\n})\nexport class PersonalDetailsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9hY2NvdW50LXBhZ2VzL3Byb2Zlc3Npb25hbC1zZXR0aW5ncy9wcm9mZXNzaW9uYWwtc2V0dGluZ3MuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-professional-settings',\n templateUrl: './professional-settings.component.html',\n styleUrls: ['./professional-settings.component.scss', '../../../pages-professional/pages-professional.component.scss']\n})\nexport class ProfessionalSettingsComponent implements OnInit {\n pageTitle = \"Settings\"\n currentPage = ''\n pages = [\n { path: '/professional/account/settings/profile', title: 'Profile', urlPath: 'profile' },\n { path: '/professional/account/settings/account-information', title: 'Account information', urlPath: 'account-information' },\n\n ]\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable()\n\n constructor() { }\n\n ngOnInit() {\n }\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle)\n this.currentPage = event.pageTitle;\n }\n // // console.log(\"EVENT\",event);\n }\n isCurrentPage(page) {\n return page.title == this.currentPage;\n }\n\n getOtherPages() {\n return this.pages.filter(p => p.title != this.currentPage)\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProfessionalSettingsComponent } from './professional-settings.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [ProfessionalSettingsComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [ProfessionalSettingsComponent]\n})\nexport class ProfessionalSettingsModule { }\n","export default \".circle img {\\n position: absolute;\\n height: auto;\\n width: auto;\\n max-width: 100%;\\n}\\n\\n.circle {\\n position: relative;\\n overflow: hidden;\\n border-radius: 50%;\\n height: 200px;\\n width: 200px;\\n}\\n\\n.circle img {\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wYWdlcy1wcm9mZXNzaW9uYWwvYWNjb3VudC1wYWdlcy9wcm9mZXNzaW9uYWwtc2V0dGluZ3MvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy1wcm9mZXNzaW9uYWwvYWNjb3VudC1wYWdlcy9wcm9mZXNzaW9uYWwtc2V0dGluZ3MvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksa0JBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7QUNDSjs7QURFQTtFQUNFLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7RUFDQSxZQUFBO0FDQ0Y7O0FERUE7RUFDRSxrQkFBQTtFQUNBLFFBQUE7RUFDQSwyQkFBQTtBQ0NGIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMtcHJvZmVzc2lvbmFsL2FjY291bnQtcGFnZXMvcHJvZmVzc2lvbmFsLXNldHRpbmdzL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaXJjbGUgaW1ne1xuICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICB3aWR0aDogYXV0bzsgICAgXG4gICAgbWF4LXdpZHRoOjEwMCU7XG59XG5cbi5jaXJjbGUgIHtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIG92ZXJmbG93OmhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBoZWlnaHQ6IDIwMHB4O1xuICB3aWR0aDogMjAwcHg7XG59XG5cbi5jaXJjbGUgaW1nIHtcbiAgcG9zaXRpb246YWJzb2x1dGU7XG4gIHRvcDo1MCU7XG4gIHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO1xufSIsIi5jaXJjbGUgaW1nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi5jaXJjbGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgaGVpZ2h0OiAyMDBweDtcbiAgd2lkdGg6IDIwMHB4O1xufVxuXG4uY2lyY2xlIGltZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { ProfileModalComponent } from 'src/app/components/profile-modal/profile-modal.component';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { HeatingSystemService } from 'src/app/services/heating-system.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\nimport { ServiceAgentService } from 'src/app/services/service-agent.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.scss']\n})\nexport class ProfileComponent implements OnInit {\n pageTitle = 'Profile'\n serviceAgent\n loading: boolean = true\n serviceAgentSubscription: Subscription\n imageSrc;\n logoSrc;\n heatPumpManufacturerList: Array\n constructor(private glowService: GlowService,\n private modalService: NgbModal, \n private serviceAgentService: ServiceAgentService, \n private heatingSystemService: HeatingSystemService,\n private professionalGlowService: ProfessionalGlowService) {\n this.serviceAgentSubscription = this.serviceAgentService.serviceAgentAnnouncer.subscribe(resp => {\n this.serviceAgent = resp\n if (this.serviceAgent.photoId) {\n this.getImage(this.serviceAgent.photoId).then(resp => {\n this.imageSrc = resp\n this.loading = false\n })\n } \n if (this.serviceAgent.logoId) {\n this.getImage(this.serviceAgent.logoId).then(resp => {\n this.logoSrc = resp\n this.loading = false\n })\n } \n if (!this.serviceAgent.photoId && !this.serviceAgent.logoId){\n this.loading = false\n }\n \n \n })\n }\n\n ngOnInit() {\n this.serviceAgentService.getServiceAgent()\n this.getHeatPumpBrands()\n }\n\n async getImage(id) {\n const blob = await this.professionalGlowService.getServiceAgentFile(id)\n const src = await Utils.getBlobImageSource((blob)) as string\n return src\n }\n\n async getHeatPumpBrands() {\n const resp = await this.heatingSystemService.getHeatPumps(true)\n const manufacturers = await this.heatingSystemService.getManufacturersFromArray(resp)\n const formattedManufacturers = manufacturers.map(x => x.name)\n this.heatPumpManufacturerList = formattedManufacturers\n }\n\n openModal(formToShow) {\n const modalRef = this.modalService.open(ProfileModalComponent, { scrollable: true, centered: true, size: 'lg', backdrop: 'static' })\n modalRef.componentInstance.serviceAgent = this.serviceAgent\n modalRef.componentInstance[formToShow] = true\n modalRef.componentInstance.heatPumpManufacturerList = this.heatPumpManufacturerList\n modalRef.componentInstance.logoImageSrc = this.logoSrc\n modalRef.componentInstance.profileImageSrc = this.imageSrc\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProfileComponent } from './profile.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { ProfileModalModule } from 'src/app/components/profile-modal/profile-modal.module';\nimport { FileUploadModule } from 'src/app/components/file-upload/file-upload.module';\n\n\n\n@NgModule({\n declarations: [ProfileComponent],\n imports: [\n CommonModule, SharedModule, ProfileModalModule, FileUploadModule \n ],\n exports: [ProfileComponent]\n})\nexport class ProfileModule { }\n","export default \".overlay {\\n position: fixed;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n justify-content: center;\\n background-color: rgba(0, 0, 0, 0.278);\\n z-index: 2;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wYWdlcy1wcm9mZXNzaW9uYWwvbGFuZGluZy9sYW5kaW5nLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy1wcm9mZXNzaW9uYWwvbGFuZGluZy9sYW5kaW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFJO0VBQ0ksZUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLGFBQUE7RUFDQSx1QkFBQTtFQUNBLHNDQUFBO0VBQ0EsVUFBQTtBQ0NSIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMtcHJvZmVzc2lvbmFsL2xhbmRpbmcvbGFuZGluZy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiAgICAub3ZlcmxheSB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI3OCk7XG4gICAgICAgIHotaW5kZXg6IDI7ICAgICAgXG4gICAgXG59IiwiLm92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNzgpO1xuICB6LWluZGV4OiAyO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n// import { Observable } from 'rxjs';\nimport { AuthenticationService } from 'src/app/services/authentication.service';\nimport { SearchService } from 'src/app/services/search.service';\nimport { Utils } from 'src/utils';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { Subscription } from 'rxjs';\nimport { ConfirmationModalComponent } from 'src/app/components/confirmation-modal/confirmation-modal.component';\nimport { InstallerInvitationModalComponent } from 'src/app/components/installer-invitation-modal/installer-invitation-modal.component';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\n\n@Component({\n selector: 'app-landing',\n templateUrl: './landing.component.html',\n styleUrls: ['./landing.component.scss'],\n})\nexport class LandingComponent implements OnInit {\n // public user$: Observable;\n user: any;\n installerInfographic;\n loading = true;\n allContent: any = [];\n roles;\n acceptedEstimateRequests = [];\n loadingUpdateReference: boolean;\n errorMessage;\n isUpdating: any;\n formShow: boolean;\n error;\n referenceForm: FormGroup;\n estimatesSubscription: Subscription;\n constructor(\n private auth: AuthenticationService,\n private searchService: SearchService,\n private modalService: NgbModal,\n private router: Router,\n private invitationsService: InvitationsService,\n private glowService: GlowService,\n private fb: FormBuilder,\n private strapiService: StrapiService,\n private professionalGlowService: ProfessionalGlowService\n ) {\n this.getOIDCUser();\n this.estimatesSubscription = this.invitationsService.ProfessionalEstimatesAnnouncer.subscribe((resp) => {\n console.log(resp)\n if (!resp || resp.error) {\n this.error = true;\n this.errorMessage = true;\n this.loading = false;\n } else if (!resp.valid) {\n this.loading = false\n this.acceptedEstimateRequests = []\n } else {\n this.acceptedEstimateRequests = this.invitationsService.getAllActiveEstimateRequests(resp)\n\n this.loading = false;\n }\n });\n\n this.referenceForm = this.fb.group({\n reference: [this.isUpdating ? this.isUpdating.externalReference : '', [Validators.required]],\n });\n }\n\n ngOnInit() {\n this.loading = true;\n this.invitationsService.getAllProfessionalEstimateRequests()\n this.getInfographic()\n\n }\n\n ngOnDestroy() {\n if (this.estimatesSubscription) {\n this.estimatesSubscription.unsubscribe();\n }\n }\n\n showForm(property) {\n this.referenceForm.reset();\n this.formShow = true;\n this.isUpdating = property;\n if (this.isUpdating.externalReference) {\n this.referenceForm.setValue({ reference: this.isUpdating.externalReference });\n }\n }\n\n closeForm() {\n this.formShow = false;\n this.isUpdating = {};\n }\n\n async updateReference(estimateRequestId) {\n this.loadingUpdateReference = true;\n const body = { externalReference: this.referenceForm.value.reference };\n const resp = await this.professionalGlowService.updateExternalReferenceEstimateRequest(estimateRequestId, body).toPromise();\n await this.invitationsService.getAllProfessionalEstimateRequests();\n this.formShow = false;\n this.isUpdating = {};\n this.loadingUpdateReference = false;\n this.loading = false;\n }\n\n getOIDCUser() {\n this.auth.getOIDCUser().subscribe((resp) => {\n this.user = resp;\n this.roles = this.auth.setOIDCUserRoles(this.user);\n this.getRelevantContent().then((c) => (this.allContent = c));\n });\n }\n\n triggerSignout(): void {\n this.auth.signout();\n }\n\n async getRelevantContent() {\n const role = this.roles[0].role == 'local-authority' ? 'Local Authority' : 'Installer';\n const content = await this.searchService.filterAllContentWithTags('landing', '', [role]);\n const professionalContent = await this.searchService.filterAllContentWithTags('landing', '', ['Professional']);\n const res = [...content, ...professionalContent];\n const formattedRes = res.map((r) => Utils.fromatSearchContent(r));\n return formattedRes;\n }\n\n navigateToProperty(id) {\n this.router.navigateByUrl(`/professional/property/${id}`);\n }\n openConfirmationModal(estimateRequestId) {\n const modalReference = this.modalService.open(ConfirmationModalComponent, { centered: true, size: 'lg' });\n modalReference.componentInstance.confirmationTitle = 'Are you sure you want to remove this property?';\n (modalReference.componentInstance.confirmationText = 'In doing so, you will no longer be able to view or download their data.'),\n (modalReference.componentInstance.confirmationButtonText = 'Remove property');\n modalReference.componentInstance.estimateRequestId = estimateRequestId;\n }\n\n openInvitationModal() {\n this.modalService.open(InstallerInvitationModalComponent, { scrollable: true, centered: true, size: 'lg', backdrop: 'static' });\n }\n\n\n getInfographic() {\n this.strapiService.getOneContent('infographics', 2).then(resp => {\n this.installerInfographic = resp\n })\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LandingComponent } from './landing.component';\nimport { ContentCardModule } from 'src/app/components/content-card/content-card.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [LandingComponent],\n imports: [CommonModule, SharedModule, ContentCardModule],\n exports: [LandingComponent]\n})\n\nexport class LandingModule { }","export default \".card {\\n box-shadow: 0 0.125rem 0.25rem rgba(83, 88, 93, 0.15);\\n}\\n\\n.card-title {\\n background-color: #f6f7ff;\\n padding: 10px 10px 0px 10px;\\n}\\n\\n.nav-link {\\n color: #2b2b2b !important;\\n}\\n\\nh5 {\\n padding-bottom: 10px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wYWdlcy1wcm9mZXNzaW9uYWwvcGFnZXMtcHJvZmVzc2lvbmFsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy1wcm9mZXNzaW9uYWwvcGFnZXMtcHJvZmVzc2lvbmFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0UscURBQUE7QUNERjs7QURJQTtFQUNFLHlCQUFBO0VBQ0EsMkJBQUE7QUNERjs7QURHQTtFQUNFLHlCQUFBO0FDQUY7O0FER0E7RUFDRSxvQkFBQTtBQ0FGIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMtcHJvZmVzc2lvbmFsL3BhZ2VzLXByb2Zlc3Npb25hbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG4uY2FyZCB7XG4gIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDgzLCA4OCwgOTMsIDAuMTUpO1xufVxuXG4uY2FyZC10aXRsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNmY3ZmY7XG4gIHBhZGRpbmc6IDEwcHggMTBweCAwcHggMTBweDtcbn1cbi5uYXYtbGluayB7XG4gIGNvbG9yOiAjMmIyYjJiIWltcG9ydGFudDtcbn1cblxuaDUge1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn1cbiIsIi5jYXJkIHtcbiAgYm94LXNoYWRvdzogMCAwLjEyNXJlbSAwLjI1cmVtIHJnYmEoODMsIDg4LCA5MywgMC4xNSk7XG59XG5cbi5jYXJkLXRpdGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjdmZjtcbiAgcGFkZGluZzogMTBweCAxMHB4IDBweCAxMHB4O1xufVxuXG4ubmF2LWxpbmsge1xuICBjb2xvcjogIzJiMmIyYiAhaW1wb3J0YW50O1xufVxuXG5oNSB7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { InstallerSupportModalComponent } from '../components/installer-support-modal/installer-support-modal.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscribable, Subscription } from 'rxjs';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Component({\n selector: 'app-pages-professional',\n templateUrl: './pages-professional.component.html',\n styleUrls: ['./pages-professional.component.scss'],\n})\n\nexport class PagesProfessionalComponent implements OnInit {\n\n url!: String;\n pageTitle!: string;\n currentPage!: string;\n roles;\n roleSubscription: Subscription\n constructor(\n private router: Router, private modalService: NgbModal, private auth: AuthenticationService\n ) {\n this.roleSubscription = this.auth.roleSet.subscribe((resp) => {\n this.roles = resp\n this.roles[0].role == 'installer' ? this.checkLogin() : null\n })\n this.url = this.router.url;\n }\n\n ngOnInit(): void {\n \n }\n\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.pageTitle = event.pageTitle;\n }\n if (event.currentPage$) {\n event.currentPage$.subscribe((currPage) => {\n this.currentPage = currPage;\n });\n }\n }\n openModal() {\n this.modalService.open(InstallerSupportModalComponent, {\n scrollable: true,\n centered: true,\n size: 'lg',\n });\n }\n\n\n\n checkLogin() {\n if (this.getLoginFirstTimeLocalStorage()) {\n return\n } else {\n this.setLoginFirstTimeLocalStorage()\n this.openModal()\n }\n\n }\n\n getLoginFirstTimeLocalStorage() {\n return JSON.parse(localStorage.getItem('login'))\n\n }\n\n setLoginFirstTimeLocalStorage() {\n localStorage.setItem('login', JSON.stringify({ firstTime: true }));\n }\n}","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { PagesProfessionalComponent } from './pages-professional.component';\nimport { PagesProfessionalRouting } from './pages-professional.routing';\nimport { LandingModule } from './landing/landing.module';\nimport { AccountPagesModule } from './account-pages/account-pages.module';\nimport { PersonalDetailsModule } from './account-pages/professional-settings/personal-details/personal-details.module';\nimport { ProfessionalSettingsModule } from './account-pages/professional-settings/professional-settings.module';\nimport { NotificationsModule } from './account-pages/notifications/notifications.module';\nimport { PropertyModule } from './property/property.module';\nimport { HomeEnergyDataModule } from './property/home-energy-data/home-energy-data.module';\nimport { QuotesModule } from './property/quotes/quotes.module';\nimport { NotificationModule } from '../components/notification/notification.module';\nimport { AllNotificationsModule } from './account-pages/notifications/all-notifications/all-notifications.module';\nimport { InvitationsModule } from './account-pages/invitations/invitations.module';\nimport { SentInvitationsModule } from './account-pages/invitations/sent-invitations/sent-invitations.module';\nimport { InstallerInvitationModalModule } from '../components/installer-invitation-modal/installer-invitation-modal.module';\nimport { ReceivedInvitationsModule } from './account-pages/invitations/received-invitations/received-invitations.module';\nimport { ProfileModule } from './account-pages/professional-settings/profile/profile.module';\nimport { InstallerSupportModalModule } from '../components/installer-support-modal/installer-support-modal.module';\nimport { CommonModule } from '@angular/common';\nimport { QuoteModalModule } from '../components/quote-modal/quote-modal.module';\n\n@NgModule({\n declarations: [PagesProfessionalComponent],\n imports: [\n CommonModule,\n PagesProfessionalRouting,\n LandingModule,\n AccountPagesModule,\n ProfessionalSettingsModule,\n PersonalDetailsModule,\n SentInvitationsModule,\n NotificationsModule,\n PropertyModule,\n HomeEnergyDataModule,\n QuotesModule,\n NotificationModule,\n AllNotificationsModule,\n InvitationsModule,\n InstallerInvitationModalModule,\n ReceivedInvitationsModule,\n InstallerSupportModalModule,\n ProfileModule,\n QuoteModalModule\n \n \n \n ],\n providers: [],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\n\nexport class PagesProfessionalModule { }","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PagesProfessionalComponent } from './pages-professional.component';\nimport { LandingComponent } from './landing/landing.component';\nimport { AccountPagesComponent } from './account-pages/account-pages.component';\nimport { ProfessionalSettingsComponent } from './account-pages/professional-settings/professional-settings.component';\nimport { PersonalDetailsComponent } from './account-pages/professional-settings/personal-details/personal-details.component';\nimport { SentInvitationsComponent } from './account-pages/invitations/sent-invitations/sent-invitations.component';\nimport { NotificationsComponent } from './account-pages/notifications/notifications.component';\nimport { PropertyComponent } from './property/property.component';\nimport { HomeEnergyDataComponent } from './property/home-energy-data/home-energy-data.component';\nimport { QuotesComponent } from './property/quotes/quotes.component';\nimport { AllNotificationsComponent } from './account-pages/notifications/all-notifications/all-notifications.component';\nimport { InvitationsComponent } from './account-pages/invitations/invitations.component';\nimport { ReceivedInvitationsComponent } from './account-pages/invitations/received-invitations/received-invitations.component';\nimport { ProfileComponent } from './account-pages/professional-settings/profile/profile.component';\n\nexport const routes: Routes = [\n {\n path: '',\n component: PagesProfessionalComponent,\n children: [\n { path: 'landing', component: LandingComponent },\n {\n path: 'account',\n component: AccountPagesComponent,\n children: [\n {\n path: 'settings', component: ProfessionalSettingsComponent,\n children: [\n { path: 'account-information', component: PersonalDetailsComponent },\n { path: 'profile', component: ProfileComponent },\n { path: '', redirectTo: 'account-information', pathMatch: 'full' }\n ]\n },\n {\n path: 'invitations', component: InvitationsComponent,\n\n children: [\n { path: 'sent-invitations', component: SentInvitationsComponent },\n { path: 'received-invitations', component: ReceivedInvitationsComponent },\n { path: '', redirectTo: 'sent-invitations', pathMatch: 'full' },\n ]\n },\n\n {\n path: 'notifications', component: NotificationsComponent,\n children: [\n { path: 'all-notifications', component: AllNotificationsComponent },\n { path: '', redirectTo: 'all-notifications', pathMatch: 'full' }\n\n ]\n }\n // { path: 'bookmarks', component: BookmarksComponent }\n ]\n },\n {\n path: 'property/:id', component: PropertyComponent,\n children: [\n { path: 'home-energy-data', component: HomeEnergyDataComponent },\n { path: 'estimate-quotes', component: QuotesComponent },\n { path: '', redirectTo: 'home-energy-data', pathMatch: 'full' }\n ]\n }\n ]\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\n\nexport class PagesProfessionalRouting { }","export default \".text-group {\\n margin-bottom: 30px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wYWdlcy1wcm9mZXNzaW9uYWwvcHJvcGVydHkvaG9tZS1lbmVyZ3ktZGF0YS9ob21lLWVuZXJneS1kYXRhLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy1wcm9mZXNzaW9uYWwvcHJvcGVydHkvaG9tZS1lbmVyZ3ktZGF0YS9ob21lLWVuZXJneS1kYXRhLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksbUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9wcm9wZXJ0eS9ob21lLWVuZXJneS1kYXRhL2hvbWUtZW5lcmd5LWRhdGEuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dC1ncm91cHtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xufSIsIi50ZXh0LWdyb3VwIHtcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcbn0iXX0= */\"","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { HelpModalComponent } from 'src/app/components/help-modal/help-modal.component';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { PdfService } from 'src/app/services/pdf.service';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { Utils } from 'src/utils';\n@Component({\n selector: 'app-home-energy-data',\n templateUrl: './home-energy-data.component.html',\n styleUrls: ['./home-energy-data.component.scss', '../../pages-professional.component.scss']\n})\nexport class HomeEnergyDataComponent implements OnInit {\n properties;\n selectedAssessmentPeriod\n snapshot;\n HTC = 'Heat Transfer Coefficient (HTC)'\n HLP = 'Heat Loss Parameter (HLP)'\n formInfo;\n pageTitle = 'Home and energy data';\n currentTab = 'Overview'\n assessmentPeriods = []\n modalRef\n property\n estimateRequestId\n loading\n showSchematic: boolean\n downloadSchematic: boolean\n propertyId\n stageSubscription: Subscription\n pages = ['Overview', 'Home data', 'Energy data', 'Heating system']\n snapshotsSubscription: Subscription\n constructor(private formBuilder: FormBuilder,\n private invitationsService: InvitationsService,\n private pdfService: PdfService,\n private modalService: NgbModal,\n private translate: TranslateService,\n private schematicsService: SchematicsService,\n private changeDetector: ChangeDetectorRef,\n private route: ActivatedRoute) {\n\n\n this.formInfo = this.formBuilder.group({\n assessmentPeriod: ['', Validators.required],\n })\n this.loading = true\n this.snapshotsSubscription = this.invitationsService.SnapshotAnnouncer.subscribe((resp) => {\n console.log(resp)\n this.properties = resp\n this.property = resp[0]\n this.setForm()\n // console.log(this.properties)\n this.loading = false\n\n })\n this.stageSubscription = this.schematicsService.stage$.subscribe((schm) => {\n console.log('schematics subscription')\n if (this.downloadSchematic) {\n const dataURL = this.schematicsService.getCanvasDataUrl(2)\n this.pdfService.generatePdf(this.property, dataURL)\n this.showSchematic = false\n this.downloadSchematic = false\n }\n\n })\n }\n\n ngOnInit() {\n console.log(this.estimateRequestId)\n this.invitationsService.getSnapshotsByEstimateRequestId(this.estimateRequestId)\n\n\n\n }\n ngAfterViewChecked() {\n\n this.changeDetector.detectChanges();\n }\n ngOnDestroy() {\n if (this.snapshotsSubscription) {\n this.snapshotsSubscription.unsubscribe()\n }\n }\n\n\n\n\n setForm() {\n this.properties.forEach(p => {\n this.assessmentPeriods.push(Utils.getReadableDateFromIso(this.property.assessmentPeriodStart) + ' - ' + Utils.getReadableDateFromIso(this.property.assessmentPeriodEnd))\n this.formInfo.setValue({ assessmentPeriod: this.assessmentPeriods[0] })\n this.selectedAssessmentPeriod = this.assessmentPeriods[0]\n })\n\n\n }\n showPage(page) {\n this.currentTab = page\n }\n switchSnapshot(event) {\n this.selectedAssessmentPeriod = event\n\n }\n\n\n downloadPDF() {\n if (this.property.heatingSystem) {\n this.downloadSchematic = true\n this.showSchematic = true\n } else this.pdfService.generatePdf(this.property)\n\n\n }\n openInfoModal(title) {\n // console.log(title)\n this.modalRef = this.modalService.open(HelpModalComponent, { scrollable: true, centered: true, size: 'lg' });\n this.modalRef.componentInstance.pageTitle = title;\n switch (title) {\n case 'HTC':\n this.modalRef.componentInstance.modalBodyContent = this.translate.instant(\"HTC_DEFINITION\")\n break;\n case 'HLP':\n this.modalRef.componentInstance.modalBodyContent = this.translate.instant(\"HLP_DEFINITION\")\n break;\n case 'ESTIMATED_HEAT_PUMP_RUNNING_COST':\n this.modalRef.componentInstance.modalBodyContent = this.translate.instant(\"ESTIMATED_HEAT_PUMP_RUNNING_COST_EXPLANATION\")\n break;\n case 'THERMAL_PERFORMANCE':\n this.modalRef.componentInstance.modalBodyContent = this.translate.instant(\"THERMAL_PERFORMANCE_EXPLANATION\")\n break;\n case 'PEAK_DEMAND':\n this.modalRef.componentInstance.modalBodyContent = this.translate.instant(\"PEAK_DEMAND_EXPLANATION\")\n break;\n }\n }\n\n doesObjectHaveValue(obj) {\n if (obj) { return Object.keys(obj).find(key => obj[key] !== '') }\n }\n getReadableDateFromIso(string) {\n return Utils.getReadableDateFromIso(string)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HomeEnergyDataComponent } from './home-energy-data.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { HeatLossParameterScaleModule } from 'src/app/components/heat-loss-parameter-scale/heat-loss-parameter-scale.module';\nimport { EpcCertificateModule } from 'src/app/components/epc-certificate/epc-certificate.module';\nimport { RadiatorSchematicModule } from 'src/app/components/radiator-schematic/radiator-schematic.module';\n\n\n\n@NgModule({\n declarations: [HomeEnergyDataComponent],\n imports: [\n CommonModule, SharedModule, HeatLossParameterScaleModule, EpcCertificateModule, RadiatorSchematicModule\n ],\n exports: [HomeEnergyDataComponent]\n})\nexport class HomeEnergyDataModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9wcm9wZXJ0eS9wcm9wZXJ0eS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\n@Component({\n selector: 'app-property',\n templateUrl: './property.component.html',\n styleUrls: ['./property.component.scss']\n})\nexport class PropertyComponent implements OnInit {\n property;\n currentPage = ''\n estimateRequestId;\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable()\n\n constructor(private route: ActivatedRoute,\n private glowService: GlowService, private invitationsService: InvitationsService) {\n route.params.subscribe((params) => {\n this.estimateRequestId = params.id\n this.getProperty(params.id)\n })\n\n }\n\n ngOnInit() {\n }\n\n getProperty(id) {\n this.invitationsService.getSnapshotsByEstimateRequestId(id)\n \n }\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle)\n this.currentPage = event.pageTitle;\n }\n event.property = this.property\n event.estimateRequestId = this.estimateRequestId\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PropertyComponent } from './property.component';\nimport { ProfessionalAccountSideMenuModule } from 'src/app/components/professional-account-side-menu/professional-account-side-menu.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [PropertyComponent],\n imports: [\n CommonModule, SharedModule, ProfessionalAccountSideMenuModule\n ],\n exports: [PropertyComponent]\n})\nexport class PropertyModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzLXByb2Zlc3Npb25hbC9wcm9wZXJ0eS9xdW90ZXMvcXVvdGVzLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { QuoteModalComponent } from 'src/app/components/quote-modal/quote-modal.component';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\nimport { Utils } from 'src/utils';\n\n/// service for all APIs for professional accounts (service-agent)\n@Component({\n selector: 'app-quotes',\n templateUrl: './quotes.component.html',\n styleUrls: ['./quotes.component.scss', '../../pages-professional.component.scss']\n})\nexport class QuotesComponent implements OnInit {\n pageTitle = 'Manage quotes and estimates';\n pages = ['Sent quotes']\n currentTab = 'Sent quotes';\n property = ''\n blob;\n estimateRequest;\n loading: boolean\n estimateRequestId\n estimateRequestSubscription: Subscription\n estimatesList: Array = []\n loadObj: tLoadingElement\n setSiteVisitForm: FormGroup\n constructor(private modalService: NgbModal, \n private invitationsService: InvitationsService,\n private glowService: GlowService, \n private uiConfigService: CustomUIConfigService, \n private fb: FormBuilder,\n private professionalGlowService: ProfessionalGlowService) {\n this.estimateRequestSubscription = this.invitationsService.EstimateRequestAnnouncer.subscribe(resp=>{\n console.log(resp)\n this.estimateRequest = resp\n this.getEstimate(this.estimateRequest)\n\n })\n \n \n this.setSiteVisitForm = this.fb.group({\n siteVisitDate: ['', [Validators.required]]\n })\n\n \n }\n\n async ngOnInit() {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(true);\n this.invitationsService.getEstimateRequestById(this.estimateRequestId)\n\n }\n\n\n getEstimate(estimateRequest) {\n const estimates = []\n if (estimateRequest.estimateIds.length){\n estimateRequest.estimateIds.forEach((estimateId) => {\n this.professionalGlowService.getEstimateProfessional(estimateId.estimateId).subscribe((resp: any) => {\n if (resp.valid) {\n this.loadObj = {\n ...this.loadObj,\n loadError: false,\n loading: false,\n }\n estimates.push(resp)\n this.estimatesList = estimates\n\n } else {\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: false,\n errorString: 'An error occurred when retrieving your quotes/ estimates. Please try again later.'\n }\n }\n }, (err) => {\n this.loadObj = {\n ...this.loadObj,\n loadError: true,\n loading: false,\n errorString: 'An error occurred when retrieving your quotes/ estimates. Please try again later.'\n }\n })\n \n // console.log(estimates)\n return estimates\n \n })\n } else (\n this.loadObj = {\n ...this.loadObj,\n loadError: false,\n loading: false,\n errorString: ''\n }\n )\n\n }\n\n async getFile(estimate) {\n estimate.veDocIds.forEach((doc) => {\n this.professionalGlowService.getServiceAgentFile(doc.veDocId).then(async resp => {\n this.saveAsBlob(resp)\n })\n })\n\n }\n\n saveAsBlob(blob) {\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob);\n link.download = 'file';\n const event = new MouseEvent('click')\n link.dispatchEvent(event)\n\n }\n\n\n showPage(page) {\n this.currentTab = page\n }\n openModal() {\n const modalRef = this.modalService.open(QuoteModalComponent, {\n scrollable: true,\n centered: true,\n size: 'xl',\n });\n modalRef.componentInstance.estimateRequestId = this.estimateRequestId\n }\n\n\n formatDate(date) {\n return Utils.getReadableDateFromIso(date)\n }\n\n setSiteVisitDate() {\n // console.log(this.setSiteVisitForm)\n const body = {\n siteVisitDate: this.setSiteVisitForm.value.siteVisitDate\n }\n this.professionalGlowService.updateEstimateRequestByProfessional(this.estimateRequest.estimateRequestId, body).subscribe(resp => {\n this.invitationsService.getEstimateRequestById(this.estimateRequestId)\n console.log(resp)\n })\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { QuotesComponent } from './quotes.component';\nimport { QuoteModalModule } from 'src/app/components/quote-modal/quote-modal.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [QuotesComponent],\n imports: [\n CommonModule, QuoteModalModule, SharedModule\n ],\n exports: [QuotesComponent]\n})\nexport class QuotesModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2FjY291bnQtcGFnZXMvYWNjb3VudC1wYWdlcy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subject, Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\nimport { InvitationModalComponent } from 'src/app/components/invitation-modal/invitation-modal.component';\nimport { ResponseModalModule } from 'src/app/components/response-modal/response-modal.module';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { HelpModalComponent } from 'src/app/components/help-modal/help-modal.component';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-account-pages',\n templateUrl: './account-pages.component.html',\n styleUrls: ['./account-pages.component.scss'],\n})\nexport class AccountPagesComponent implements OnInit {\n loading = true\n schematic\n isSchematicComplete: boolean\n selectedService;\n subscriptionSelectedService: Subscription;\n schematicsSubscription: Subscription\n subscriptionVirtualEntityList: Subscription\n pageTitle = 'Account';\n error: Boolean\n schematicDoc;\n account;\n virtualEntities: any[];\n dropdownOptions: any[] = [];\n missingData = []\n currentPage = '';\n validVEs;\n invalidVEs;\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable();\n constructor(private modalService: NgbModal, private schematicsService: SchematicsService,\n private serviceSelectorSvc: ServiceSelectorSvc,\n private glowService: GlowService,\n private veService: VirtualEntityService,\n private invitationService: InvitationsService,\n private translate: TranslateService) {\n \n this.subscriptionVirtualEntityList = this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n if (veList.length) {\n this.processVeList(veList)\n await this.invitationService.validateVirtualEntitites(veList)\n if (this.invitationService.validVEs.length) {\n this.validVEs = this.invitationService.validVEs\n }\n if (this.invitationService.invalidVEs.length) {\n this.invalidVEs = this.invitationService.invalidVEs\n }\n\n }\n });\n }\n\n ngOnInit() {\n this.veService.findVirtualEntities();\n\n const accountId = localStorage.getItem(\"id\");\n this.getAccount(accountId)\n this.selectedService = this.serviceSelectorSvc.getSelectedService()\n // this.schematicsService.getDocumentList(this.selectedService.veId).then((doc) => (this.schematicDoc = doc))\n // this.schematicsService.setSelectedService(this.selectedService);\n // this.schematicsService.getSchematics();\n\n\n }\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle);\n this.currentPage = event.pageTitle;\n }\n\n }\n openInvitationModal() {\n\n const modalRef = this.modalService.open(InvitationModalComponent, { scrollable: true, centered: true, size: 'lg', backdrop: 'static' });\n modalRef.componentInstance.hasSchematic = this.isSchematicComplete\n // modalRef.componentInstance.schematicDocId = this.schematicDoc[0].documentId\n modalRef.componentInstance.customerToInstallerInvitation = true\n modalRef.componentInstance.username = this.account.email\n modalRef.componentInstance.validVEs = this.validVEs\n modalRef.componentInstance.invalidVEs = this.invalidVEs\n modalRef.componentInstance.missingData = this.missingData\n modalRef.componentInstance.dropdownOptions = this.virtualEntities\n modalRef.componentInstance.customerToInstallerInvitation = true\n \n }\n \n getAccount(accountId: string) {\n this.glowService.getAccount().subscribe(account => {\n this.account = account\n }, error => {\n console.warn(\"An error occurred when retrieving account\");\n console.warn(error)\n });\n }\n\n processVeList(veList) {\n this.virtualEntities = veList;\n this.dropdownOptions = this.virtualEntities.map(ve => {\n const active = this.selectedService && this.selectedService.veId && this.selectedService.veId === ve.veId ? true : false\n return { name: ve.name, postalCode: ve.postalCode, veId: ve.veId, veTypeId: ve.veTypeId, active } // icon \n })\n\n if (!this.selectedService) {\n this.selectedService = veList[0];\n this.serviceSelectorSvc.setSelectedService(veList[0])\n this.dropdownOptions[0].active = true\n // this.switchService(this.selectedService.veId)\n }\n // console.log(this.dropdownOptions)\n }\n openInfoModal() {\n const modalRef = this.modalService.open(HelpModalComponent, { scrollable: true, centered: true, size: 'lg' });\n modalRef.componentInstance.pageTitle = 'Invitations';\n modalRef.componentInstance.modalBodyContent = this.translate.instant('INVITATIONS_EXPLANATION')\n\n\n\n }\n\n \n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccountPagesComponent } from './account-pages.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { HelpModalModule } from 'src/app/components/help-modal/help-modal.module';\n\n\n\n@NgModule({\n declarations: [AccountPagesComponent],\n imports: [SharedModule,\n CommonModule, HelpModalModule\n ],\n exports: [AccountPagesComponent]\n})\nexport class AccountPagesModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2Jvb2ttYXJrcy9ib29rbWFya3MuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { async } from '@angular/core/testing';\nimport { Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-bookmarks',\n templateUrl: './bookmarks.component.html',\n styleUrls: ['./bookmarks.component.scss'],\n})\nexport class BookmarksComponent implements OnInit {\n pageTitle: string = 'Bookmarks';\n bookmarks = [];\n bookmarkedContent = [];\n bookmarkedContentSubsciption: Subscription;\n loading: boolean = true\n constructor(private glowService: GlowService, private strapiService: StrapiService) {\n this.bookmarkedContentSubsciption = this.strapiService.bookmarkedContent$.subscribe(\n async (bookmarks) => {\n this.loading = true;\n this.bookmarks = bookmarks;\n if (this.bookmarks && this.bookmarks.length > 0) {\n this.bookmarkedContent = await this.getContentFromBookmarks(this.bookmarks);\n }\n this.loading = false;\n },\n (error) => {\n this.loading = false;\n }\n );\n }\n\n ngOnInit() {\n this.loading = true;\n this.strapiService.getBookmarkedContent();\n }\n\n ngOnDestroy() {\n if (this.bookmarkedContentSubsciption) {\n this.bookmarkedContentSubsciption.unsubscribe();\n }\n }\n\n async getContentFromBookmarks(bookmarks) {\n this.loading = true;\n let allContent = [];\n for (let bookmark of bookmarks) {\n const content = await this.strapiService.getContentBySlug(bookmark.contentType, bookmark.slug);\n if (content) {\n content.contentType = bookmark.contentType;\n allContent.push(content);\n }\n }\n this.loading = false;\n return allContent;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BookmarksComponent } from './bookmarks.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\n\n@NgModule({\n declarations: [BookmarksComponent],\n imports: [CommonModule, SharedModule, SpinnerModule],\n})\nexport class BookmarksModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2Nhc2Utc3R1ZHktYWNjb3VudC1wYWdlL2Nhc2Utc3R1ZHktYWNjb3VudC1wYWdlLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { CaseStudyService } from 'src/app/services/case-study.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-case-study-account-page',\n templateUrl: './case-study-account-page.component.html',\n styleUrls: ['./case-study-account-page.component.scss', '../pages.component.scss'],\n})\nexport class CaseStudyAccountPageComponent implements OnInit {\n selectedService;\n category = 'summary';\n currentPage;\n pageTitle = 'Your case studies';\n loading: boolean = true;\n caseStudy;\n imageOrientation;\n categoryPage;\n allCaseStudies;\n navBackground;\n currentRoute;\n pages = [];\n heatPumpCaseStudy;\n locationImageUrl;\n innerWidth;\n routeSubscription: Subscription;\n childParamsSubscription: Subscription;\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n constructor(private glowService: GlowService, private caseStudyService: CaseStudyService, private serviceSelector: ServiceSelectorSvc, private router: Router, private route: ActivatedRoute) {\n this.routeSubscription = this.router.events.subscribe((e) => {\n if (e instanceof NavigationEnd) {\n if (!this.route.firstChild && this.allCaseStudies) {\n this.goToFirstCaseStudy();\n } else if (!this.allCaseStudies) {\n this.getAllCaseStudies();\n }\n if (this.route.firstChild) {\n this.childParamsSubscription = this.route.firstChild.params.subscribe((params) => {\n this.currentPage = params.caseStudy;\n this.loading = false;\n });\n }\n }\n });\n }\n ngOnInit() {\n this.onResize();\n }\n ngOnDestroy() {\n if (this.routeSubscription) {\n this.routeSubscription.unsubscribe();\n }\n if (this.childParamsSubscription) {\n this.childParamsSubscription.unsubscribe();\n }\n }\n\n goToFirstCaseStudy() {\n this.currentPage = this.allCaseStudies[0].csRef;\n this.router.navigateByUrl('/pages/property/case-studies/' + this.allCaseStudies[0].csRef);\n }\n\n getAllCaseStudies() {\n this.loading = true;\n this.selectedService = this.serviceSelector.getSelectedService();\n this.glowService.getAllCaseStudiesByVe(this.selectedService.veId).subscribe(async (cs) => {\n this.allCaseStudies = cs;\n if (cs && cs.length) {\n this.goToFirstCaseStudy();\n }\n await this.createPages(cs);\n });\n }\n\n async createPages(caseStudies) {\n if (caseStudies && caseStudies.length) {\n await Promise.all(\n caseStudies.map(async (cs) => {\n // if (cs.classifier == 'heating_system.heat_pump') {\n // const caseStudy = this.getCaseStudy(cs);\n const caseStudy = await this.caseStudyService.fetchCaseStudyData(cs);\n this.pages.push({ path: 'pages/property/case-studies/' + caseStudy.csRef, title: cs.classifier.split('.').pop().split(\"_\").join(\" \").toUpperCase(), id: caseStudy.csRef });\n return caseStudy;\n // }\n })\n );\n }\n this.loading = false;\n }\n\n async getCaseStudy(cs) {\n return this.caseStudyService.fetchCaseStudyData(cs);\n }\n\n setImageOrientation(imageInfo) {\n if (imageInfo.height && imageInfo.width && imageInfo.height > imageInfo.width) {\n this.imageOrientation = 'portrait';\n } else {\n this.imageOrientation = 'landscape';\n }\n }\n\n onRouterOutletActivate(component) {\n component.isAccountView = true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyAccountPageComponent } from './case-study-account-page.component';\nimport { HeatPumpCaseStudyAccountModule } from './heat-pump-case-study-account/heat-pump-case-study-account.module';\nimport { AccountNoDataCardModule } from 'src/app/components/account-no-data-card/account-no-data-card.module';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [CaseStudyAccountPageComponent],\n imports: [CommonModule, HeatPumpCaseStudyAccountModule, AccountNoDataCardModule, SpinnerModule, SharedModule],\n exports: [CaseStudyAccountPageComponent],\n})\nexport class CaseStudyAccountPageModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2Nhc2Utc3R1ZHktYWNjb3VudC1wYWdlL2hlYXQtcHVtcC1jYXNlLXN0dWR5LWFjY291bnQvaGVhdC1wdW1wLWNhc2Utc3R1ZHktYWNjb3VudC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { caseStudyRelatedContentConfig } from '../../../../assets/content/case-study-content-config.json';\nimport { caseStudyConfig } from '../../../../assets/content/case-study-config-example.json';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { CaseStudyService } from 'src/app/services/case-study.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-heat-pump-case-study-account',\n templateUrl: './heat-pump-case-study-account.component.html',\n styleUrls: ['./heat-pump-case-study-account.component.scss'],\n})\nexport class HeatPumpCaseStudyAccountComponent implements OnInit {\n @Input() caseStudy;\n caseStudyRelatedContentConfig = caseStudyRelatedContentConfig;\n caseStudyConfig = caseStudyConfig;\n imageOrientation;\n categories = {\n summary: {\n title: 'Summary',\n id: 'summary',\n colour: 'light-primary',\n },\n\n 'pre-installation': {\n title: 'Building and heating pre-installation',\n id: 'pre-installation',\n caseStudySection: 'before',\n caseStudyConfigSection: 'before',\n colour: 'light-secondary',\n },\n\n installation: {\n title: 'Installation details',\n id: 'installation',\n caseStudySection: 'after',\n caseStudyConfigSection: 'after',\n colour: 'light-success',\n },\n technical: {\n title: 'Installed heating system technical details',\n id: 'technical',\n caseStudySection: '',\n caseStudyConfigSection: '',\n colour: 'light-info',\n restrictedView: true,\n restrictedViewPermission: ['installer'],\n },\n outcomes: {\n title: 'Costs and outcomes',\n id: 'outcomes',\n caseStudySection: 'outcome',\n caseStudyConfigSection: 'outcome',\n colour: 'light-warning',\n },\n // content: {\n // title: 'Other content',\n // id: 'content',\n // caseStudySection: '',\n // caseStudyConfigSection: '',\n // colour: 'light-primary',\n // restrictedView: true,\n // restrictedViewPermission: ['all'],\n // },\n // { title: 'Leave feedback', id: 'feedback' },\n };\n currentRoute;\n category = 'summary';\n navBackground;\n categoryPage;\n constructor(private router: Router, private caseStudyService: CaseStudyService) {\n const navEndEvent$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n navEndEvent$.subscribe((e: NavigationEnd) => {\n this.currentRoute = e.url;\n //last part of url\n this.category = this.currentRoute.split('/').pop();\n if (!this.categories[this.category]) {\n this.category = 'summary';\n }\n this.navBackground = this.categories[this.category].colour;\n });\n this.getCategoryPage();\n }\n\n ngOnInit() {\n if (this.caseStudy.propertyImage) {\n this.setImageOrientation(this.caseStudy.propertyImage);\n }\n }\n\n getCategoryPage() {\n const x = Object.values(this.categories).find((x) => x.id == this.category);\n this.navBackground = x.colour;\n this.categoryPage = x.title;\n return this.categoryPage.slice(0, 1).toUpperCase() + this.categoryPage.slice(1, this.categoryPage.length);\n }\n\n setImageOrientation(imageInfo) {\n this.imageOrientation = Utils.getImageOrientation(imageInfo);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeatPumpCaseStudyAccountComponent } from './heat-pump-case-study-account.component';\n\nimport { CaseStudyModule } from 'src/app/public/case-study/case-study.module';\nimport { CaseStudyHeaderModule } from 'src/app/components/case-study/case-study-header/case-study-header.module';\nimport { CaseStudyInstallatonHeatingSystemTechnicalModule } from 'src/app/components/case-study/case-study-installaton-heating-system-technical/case-study-installaton-heating-system-technical.module';\nimport { CaseStudySummaryModule } from 'src/app/components/case-study/case-study-summary/case-study-summary.module';\nimport { CaseStudyDetailsModule } from 'src/app/components/case-study/case-study-details/case-study-details.module';\nimport { CaseStudyOutcomeModule } from 'src/app/components/case-study/case-study-outcome/case-study-outcome.module';\nimport { CaseStudyOtherContentModule } from 'src/app/components/case-study/case-study-other-content/case-study-other-content.module';\n\n@NgModule({\n declarations: [HeatPumpCaseStudyAccountComponent],\n imports: [CommonModule, CaseStudyHeaderModule, CaseStudyInstallatonHeatingSystemTechnicalModule, CaseStudySummaryModule, CaseStudyDetailsModule, CaseStudyOutcomeModule, CaseStudyOtherContentModule],\n exports: [HeatPumpCaseStudyAccountComponent],\n})\nexport class HeatPumpCaseStudyAccountModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2Nhc2Utc3R1ZHktY3JlYXRvci10b29sL2Nhc2Utc3R1ZHktY3JlYXRvci10b29sLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-case-study-creator-tool',\n templateUrl: './case-study-creator-tool.component.html',\n styleUrls: ['./case-study-creator-tool.component.scss'],\n})\nexport class CaseStudyCreatorToolComponent implements OnInit {\n pageTitle = 'Case Study Creator';\n caseStudy;\n selectedService;\n subscriptionSelectedService: Subscription;\n constructor(private router: Router, private glowService: GlowService, private serviceSelectorSvc: ServiceSelectorSvc) {\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.checkCaseStudyExists(selectedService);\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n\n this.checkCaseStudyExists(this.selectedService);\n }\n\n checkCaseStudyExists(selectedService) {\n this.glowService.getAllCaseStudiesByVe(selectedService.veId).subscribe((cs) => {\n this.caseStudy = cs;\n });\n }\n\n navToPage() {\n this.router.navigate(['/pages/tools/case-study-creator/heat-pump']);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaseStudyCreatorToolComponent } from './case-study-creator-tool.component';\nimport { BuildingFormModule } from 'src/app/components/case-study/building-form/building-form.module';\nimport { CaseStudyFormStepperModule } from 'src/app/components/case-study-form-stepper/case-study-form-stepper.module';\nimport { HeatPumpCaseStudyModule } from './heat-pump-case-study/heat-pump-case-study.module';\n\n\n\n@NgModule({\n declarations: [CaseStudyCreatorToolComponent],\n imports: [\n CommonModule, BuildingFormModule, CaseStudyFormStepperModule, HeatPumpCaseStudyModule\n ],\n exports: [CaseStudyCreatorToolComponent]\n})\nexport class CaseStudyCreatorToolModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2Nhc2Utc3R1ZHktY3JlYXRvci10b29sL2hlYXQtcHVtcC1jYXNlLXN0dWR5L2hlYXQtcHVtcC1jYXNlLXN0dWR5LmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { CaseStudyFormService } from 'src/app/services/case-study-form.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-heat-pump-case-study',\n templateUrl: './heat-pump-case-study.component.html',\n styleUrls: ['./heat-pump-case-study.component.scss'],\n})\nexport class HeatPumpCaseStudyComponent implements OnInit {\n section: string = 'pre-installation-building';\n savedForm: boolean;\n caseStudy;\n journal;\n formattedCaseStudy;\n children: any[] = [];\n activeChildComponent: any;\n selectedService: any;\n subscriptionSelectedService: Subscription;\n constructor(private route: ActivatedRoute, private caseStudyFormService: CaseStudyFormService, private serviceSelectorSvc: ServiceSelectorSvc) {\n this.route.children.forEach((route) => {\n route.url.subscribe((url) => {\n this.section = url[0].path;\n });\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n this.setChildren();\n }\n\n setChildren() {\n this.children = ['buildingForm', 'heatingSystemForm', 'outcomesForm', 'installationForm', 'otherInfoForm'];\n }\n\n onRouterOutletActivate(event) {\n this.activeChildComponent = event;\n }\n\n getActiveForms() {\n return this.caseStudyFormService.getActiveForms();\n }\n\n async saveChangesToActiveChildComponent() {\n await this.activeChildComponent.saveChanges();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeatPumpCaseStudyComponent } from './heat-pump-case-study.component';\nimport { CaseStudyFormStepperModule } from 'src/app/components/case-study-form-stepper/case-study-form-stepper.module';\nimport { BuildingFormModule } from 'src/app/components/case-study/building-form/building-form.module';\nimport { HeatingSystemFormModule } from 'src/app/components/case-study/heating-system-form/heating-system-form.module';\nimport { OutcomesFormModule } from 'src/app/components/case-study/outcomes-form/outcomes-form.module';\nimport { InstallationFormModule } from 'src/app/components/case-study/installation-form/installation-form.module';\nimport { OtherInfoFormModule } from 'src/app/components/case-study/other-info-form/other-info-form.module';\nimport { HeatPumpCaseStudyRouting } from './heat-pump-case-study.routing';\n\n@NgModule({\n declarations: [HeatPumpCaseStudyComponent],\n imports: [CommonModule, HeatPumpCaseStudyRouting, CaseStudyFormStepperModule, BuildingFormModule, HeatingSystemFormModule, OutcomesFormModule, InstallationFormModule, OtherInfoFormModule],\n exports: [HeatPumpCaseStudyComponent],\n})\nexport class HeatPumpCaseStudyModule {}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { HeatPumpCaseStudyComponent } from './heat-pump-case-study.component';\nimport { BuildingFormComponent } from 'src/app/components/case-study/building-form/building-form.component';\nimport { HeatingSystemFormComponent } from 'src/app/components/case-study/heating-system-form/heating-system-form.component';\nimport { InstallationFormComponent } from 'src/app/components/case-study/installation-form/installation-form.component';\nimport { OutcomesFormComponent } from 'src/app/components/case-study/outcomes-form/outcomes-form.component';\nimport { OtherInfoFormComponent } from 'src/app/components/case-study/other-info-form/other-info-form.component';\nimport { FormGuard } from 'src/app/services/form.guard';\nimport { HeatPumpCsFormGuard } from 'src/app/guards/heat-pump-cs-form.guard';\n\nconst routes = [\n {\n path: '',\n component: HeatPumpCaseStudyComponent,\n canDeactivate: [HeatPumpCsFormGuard],\n children: [\n { path: 'pre-installation-building', canDeactivate: [FormGuard], component: BuildingFormComponent },\n { path: 'pre-installation-heating', canDeactivate: [FormGuard], component: HeatingSystemFormComponent },\n { path: 'installation', canDeactivate: [FormGuard], component: InstallationFormComponent },\n { path: 'post-installation-heating', canDeactivate: [FormGuard], component: HeatingSystemFormComponent },\n { path: 'post-installation-building', canDeactivate: [FormGuard], component: BuildingFormComponent },\n { path: 'post-installation-outcomes', canDeactivate: [FormGuard], component: OutcomesFormComponent },\n { path: 'other-information', canDeactivate: [FormGuard], component: OtherInfoFormComponent },\n { path: '', redirectTo: 'pre-installation-building', pathMatch: 'full' },\n { path: '**', redirectTo: 'pre-installation-building', pathMatch: 'full' },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class HeatPumpCaseStudyRouting {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS1kYXRhL2VuZXJneS1kYXRhLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-energy-data',\n templateUrl: './energy-data.component.html',\n styleUrls: ['./energy-data.component.scss', '../pages.component.scss'],\n})\nexport class EnergyDataComponent implements OnInit {\n showGas: boolean = false;\n pageTitle = 'Energy data';\n consumptionType: string = 'electricity.consumption';\n innerWidth;\n pages = [{ param: 'electricity.consumption', title: 'Electricity', active: true }];\n selectedService: any;\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n constructor(private serviceSelectorSvc: ServiceSelectorSvc) {}\n\n ngOnInit() {\n this.onResize();\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (this.selectedService) {\n this.showGas = this.selectedService.resources.find((x) => x.classifier.includes('gas'));\n if (this.showGas) {\n this.pages.push({ param: 'gas.consumption', title: 'Gas', active: false });\n }\n }\n }\n\n toggleFuelType(param) {\n this.consumptionType = param;\n this.pages.map((x) => (x.active = false));\n const match = this.pages.find((x) => x.param == param);\n match.active = true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnergyDataComponent } from './energy-data.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { DashboardModule } from '../../components/dashboard/dashboard.module';\n\n@NgModule({\n declarations: [EnergyDataComponent],\n imports: [SharedModule, CommonModule, DashboardModule],\n exports: [EnergyDataComponent]\n})\n\nexport class EnergyDataModule { }","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS1vdmVydmlldy9lbmVyZ3ktb3ZlcnZpZXcuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, HostListener, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-energy-overview',\n templateUrl: './energy-overview.component.html',\n styleUrls: ['./energy-overview.component.scss', '../pages.component.scss']\n})\n\nexport class EnergyOverviewComponent implements OnInit {\n\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\npageTitle=\"Energy overview\"\n currentPage: string = 'Tariff';\n innerWidth: number;\n pages: any = [\n { path: '/pages/property/energy-overview/tariff', title: 'Tariff', urlPath: 'tariff' },\n ]\n\n constructor() { }\n\n ngOnInit() {\n this.onResize()\n }\n\n onRouterOutletActivate(event) {\n if (event.pageTitle) {\n this.currentPage = event.pageTitle;\n }\n }\n\n isCurrentPage(page) {\n return page.title == this.currentPage;\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnergyOverviewComponent } from './energy-overview.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [EnergyOverviewComponent],\n imports: [\n SharedModule, \n CommonModule\n ],\n exports: [EnergyOverviewComponent]\n})\n\nexport class EnergyOverviewModule { }","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2VuZXJneS1vdmVydmlldy90YXJpZmYvdGFyaWZmLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { tVeTariffsWithTs } from 'src/app/components/component.typings';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { tResourceAvailabilityElement } from 'src/app/services/app-data.typings';\nimport { ResourceDataService } from 'src/app/services/data.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { TariffService } from 'src/app/services/tariff.service';\nimport { tTariffPlan } from 'src/app/services/ui.typings';\n\n@Component({\n selector: 'app-tariff',\n templateUrl: './tariff.component.html',\n styleUrls: ['./tariff.component.scss']\n})\nexport class TariffComponent implements OnInit {\n pageTitle = 'Tariff'\n // displayTitle = 'About your home'\n noTariffMessage = \"We cannot retrieve your tariff information, please contact your supplier.\"\n consumptionType = ['electricity.consumption.cost', 'gas.consumption.cost']\n selectedService: any;\n subscriptionSelectedService: Subscription;\n subscriptionTariff: Subscription;\n veTariffs: tVeTariffsWithTs = {};\n mostRecentFutureTime: any = null;\n tariff: tTariffPlan;\n loadObj: tLoadingElement\n electricityTariff;\n gasTariff;\n\n constructor(public dataService: ResourceDataService,\n private serviceSelectorSvc: ServiceSelectorSvc,\n private tariffService: TariffService) {\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe(selectedService => {\n this.selectedService = selectedService;\n this.getVeTariffs()\n })\n\n this.subscriptionTariff = this.dataService.tariff$.subscribe(tariff => {\n // console.log()\n if (tariff.classifier === 'electricity.consumption.cost') {\n this.electricityTariff = tariff\n } else if (tariff.classifier === 'gas.consumption.cost') {\n this.gasTariff = tariff\n }\n \n this.processData(tariff) \n\n })\n\n this.loadObj = { ...this.loadObj, loaded: true, loading: false }\n\n\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n this.getVeTariffs()\n }\n getVeTariffs(): void {\n if (this.selectedService && this.selectedService.resources) {\n delete this.veTariffs;\n this.consumptionType.forEach((type) => {\n const cost = this.selectedService.resources.find(x => x.classifier == type)\n if (cost) {\n this.getResourceTariffs(cost, type.split('.')[0]);\n }\n\n })\n }\n }\n\n getResourceTariffs(resourceInfo: tResourceAvailabilityElement, dataStreamType: string): void {\n // this.tariffVEInfo[dataStreamType] = this.setTariffElement(resourceInfo.classifier, resourceInfo.resourceId)\n if (resourceInfo && resourceInfo.resourceId) {\n this.dataService.getResourceTariffsPromise(resourceInfo).then(tariffPlan => {\n const ts = new Date().getTime()\n this.veTariffs = { ...this.veTariffs, [dataStreamType]: { ...tariffPlan, ts } }\n this.determineTariffUpdateTime(dataStreamType)\n }).catch(e => {\n console.warn(`Error while getting tariffs`)\n })\n }\n }\n\n\n determineTariffUpdateTime(dataStreamType): any {\n const hasFutureRates = (this.veTariffs && this.veTariffs[dataStreamType]\n && Array.isArray(this.veTariffs[dataStreamType].futureRates) && this.veTariffs[dataStreamType].futureRates.length > 0)\n // // console.log(`hasFutureRates: ${hasFutureRates}. Now is ${new Date()} `)\n if (hasFutureRates) {\n const now = new Date().getTime()\n // const offset = new Date().getTimezoneOffset() * 60 * 1000;\n const futureRates = this.veTariffs[dataStreamType].futureRates.map((elem) => [new Date(`${elem.ts.replace(/ /g, \"T\")}.000Z`).getTime(), elem.rate, elem.ts])\n const mostRecentFutureRate = futureRates.find(futureRate => {\n if (Number(futureRate[0]) > now) {\n return futureRate\n }\n })\n const mostRecentFutureTime: any = mostRecentFutureRate[0]\n\n if (mostRecentFutureTime != this.mostRecentFutureTime) {\n this.mostRecentFutureTime = mostRecentFutureTime\n const now = new Date().getTime()\n // // console.log(now)\n const mSecondsToDoCheck = mostRecentFutureTime - now + 1000\n // // console.log(`Setting refresher at ${mSecondsToDoCheck} for ${dataStreamType} tariff. mostRecentFutureTime ${mostRecentFutureTime}`)\n setTimeout(() => {\n const elecCost = this.selectedService.resources.find(x => x.classifier == 'electricity.consumptiom.cost')\n this.getResourceTariffs(elecCost, 'electricity');\n }, mSecondsToDoCheck)\n } else {\n // // console.log(`mostRecentFutureTime ${mostRecentFutureTime} the same not asking for update`)\n }\n }\n }\n\n processData(tariff) {\n if (tariff.resourceId && this.selectedService.veId) {\n this.tariffService.getTariffPermission(tariff.resourceId, this.selectedService.veId)\n // this.getDeviceByResourceId()\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TariffComponent } from './tariff.component';\nimport { AccountNoDataCardModule } from 'src/app/components/account-no-data-card/account-no-data-card.module';\n\n\n\n@NgModule({\n declarations: [TariffComponent],\n imports: [\n CommonModule, AccountNoDataCardModule\n ],\n exports: [TariffComponent]\n})\nexport class TariffModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2dlbmVyYWwtYXR0cmlidXRlcy9idWlsZGluZy1mYWJyaWMvYnVpbGRpbmctZmFicmljLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-building-fabric',\n templateUrl: './building-fabric.component.html',\n styleUrls: ['./building-fabric.component.scss'],\n})\nexport class BuildingFabricComponent implements OnInit {\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BuildingFabricComponent } from './building-fabric.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [BuildingFabricComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports: [\n BuildingFabricComponent,\n ]\n})\nexport class BuildingFabricModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2dlbmVyYWwtYXR0cmlidXRlcy9nZW5lcmFsLWF0dHJpYnV0ZXMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-general-attributes',\n templateUrl: './general-attributes.component.html',\n styleUrls: ['./general-attributes.component.scss', '../pages.component.scss'],\n})\nexport class GeneralAttributesComponent implements OnInit {\n pageTitle = 'General attributes';\n currentPage = 'General';\n shouldShowToolLink;\n toolLink;\n subTitle\n innerWidth;\n passport;\n pages = [\n { path: '/pages/property/general-attributes/general', title: 'General', urlPath: 'general' },\n {\n path: '/pages/property/general-attributes/building-fabric',\n title: 'Heat retention score',\n urlPath: 'building-fabric',\n },\n // { path: '/pages/my-home/schematics', title: 'Heating By Room', urlPath: 'schematics' },\n ];\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable();\n\n constructor(private router: Router) {}\n\n ngOnInit() {\n this.onResize()\n }\n public onRouterOutletActivate(event: any) {\n // console.log(event)\n if (event.pageTitle) {\n this.currentPage = event.pageTitle;\n }\n if (event.displayTitle) {\n this.subTitle = event.displayTitle;\n }\n if (event.passport){\n // console.log(event.passport, 'passport')\n this.passport = event.passport\n }\n else {\n this.toolLink = null;\n }\n }\n isCurrentPage(page) {\n return page.title == this.currentPage;\n }\n\n getOtherPages() {\n return this.pages.filter((p) => p.title != this.currentPage);\n }\n navigateTool(){\n this.router.navigateByUrl(`pages/tools/estimated-thermal-performance`)\n \n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GeneralAttributesComponent } from './general-attributes.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [GeneralAttributesComponent],\n imports: [SharedModule,\n CommonModule\n ],\n exports: [GeneralAttributesComponent]\n})\nexport class GeneralAttributesModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2dlbmVyYWwtYXR0cmlidXRlcy9nZW5lcmFsL2dlbmVyYWwuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-general',\n templateUrl: './general.component.html',\n styleUrls: ['./general.component.scss'],\n})\n\nexport class GeneralComponent implements OnInit {\n\n pageTitle = 'General';\n displayTitle = 'About your home'\n subscriptionSelectedService: Subscription;\n selectedService;\n passport;\n loading;\n error;\n errorMessage;\n loadingMessage;\n shouldShowToolLink: boolean = true;\n\n constructor(\n private serviceSelectorSvc: ServiceSelectorSvc,\n private glowService: GlowService,\n ) {\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe(selectedService => {\n this.selectedService = selectedService\n this.getPropertyPassport()\n })\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService()\n if (this.selectedService && this.selectedService.veId && !this.passport) {\n this.getPropertyPassport()\n }\n }\n\n getPropertyPassport() {\n this.passport = null \n this.loadingMessage = 'Loading your details...'\n this.loading = true\n this.glowService.getPropertyPassport(this.selectedService.veId).subscribe((resp) => {\n if (!resp.valid) {\n this.loading = false\n return\n }\n this.passport = this.formatPassportToDisplay(resp);\n this.loading = false;\n }, (err) => {\n this.loading = false\n this.passport = null\n this.error = true;\n this.errorMessage = err && err.error && err.error.error\n })\n }\n\n formatPassportToDisplay(passport) {\n let formatted: any = { ...passport };\n formatted.address.address = this.formatAddress(passport.address.address);\n formatted.currentEpc = this.getCurrentEpc(passport.epcRecords);\n return formatted;\n }\n\n getCurrentEpc(epcRecords) {\n return [...epcRecords].sort((a, b) => new Date(b.lodgement_date).valueOf() - new Date(a.lodgement_date).valueOf())[0];\n }\n\n formatAddress(address: string) {\n return address.split(',').filter((fragment) => fragment).join(',');\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GeneralComponent } from './general.component';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\n\n\n\n@NgModule({\n declarations: [GeneralComponent],\n imports: [\n CommonModule, SpinnerModule\n ]\n , exports: [GeneralComponent\n ]\n})\nexport class GeneralModule { }\n","export default \"@media (max-width: 576px) {\\n /* Custom CSS for stacking rows into columns on small screens */\\n .table-responsive-stack tbody {\\n display: block;\\n }\\n\\n .table-responsive-stack tr {\\n margin-bottom: 1rem;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n }\\n\\n .table-responsive-stack td,\\n.table-responsive-stack th {\\n flex: 1;\\n width: 100%;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wYWdlcy9oZWF0LXB1bXAtY29zdC1lc3RpbWF0aW9uLXRvb2wvaGVhdC1wdW1wLWNvc3QtZXN0aW1hdGlvbi10b29sLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wYWdlcy9oZWF0LXB1bXAtY29zdC1lc3RpbWF0aW9uLXRvb2wvaGVhdC1wdW1wLWNvc3QtZXN0aW1hdGlvbi10b29sLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksK0RBQUE7RUFDQTtJQUNJLGNBQUE7RUNDTjs7RURDRTtJQUNJLG1CQUFBO0lBQ0EsYUFBQTtJQUNBLHNCQUFBO0lBQ0EsdUJBQUE7RUNFTjs7RURBRTs7SUFFSSxPQUFBO0lBQ0EsV0FBQTtFQ0dOO0FBQ0YiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9oZWF0LXB1bXAtY29zdC1lc3RpbWF0aW9uLXRvb2wvaGVhdC1wdW1wLWNvc3QtZXN0aW1hdGlvbi10b29sLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gICAgLyogQ3VzdG9tIENTUyBmb3Igc3RhY2tpbmcgcm93cyBpbnRvIGNvbHVtbnMgb24gc21hbGwgc2NyZWVucyAqL1xuICAgIC50YWJsZS1yZXNwb25zaXZlLXN0YWNrIHRib2R5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgIC50YWJsZS1yZXNwb25zaXZlLXN0YWNrIHRyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgfVxuICAgIC50YWJsZS1yZXNwb25zaXZlLXN0YWNrIHRkLFxuICAgIC50YWJsZS1yZXNwb25zaXZlLXN0YWNrIHRoIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufSIsIkBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuICAvKiBDdXN0b20gQ1NTIGZvciBzdGFja2luZyByb3dzIGludG8gY29sdW1ucyBvbiBzbWFsbCBzY3JlZW5zICovXG4gIC50YWJsZS1yZXNwb25zaXZlLXN0YWNrIHRib2R5IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC50YWJsZS1yZXNwb25zaXZlLXN0YWNrIHRyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgfVxuXG4gIC50YWJsZS1yZXNwb25zaXZlLXN0YWNrIHRkLFxuLnRhYmxlLXJlc3BvbnNpdmUtc3RhY2sgdGgge1xuICAgIGZsZXg6IDE7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn0iXX0= */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { SearchService } from 'src/app/services/search.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-heat-pump-cost-estimation-tool',\n templateUrl: './heat-pump-cost-estimation-tool.component.html',\n styleUrls: ['./heat-pump-cost-estimation-tool.component.scss'],\n})\nexport class HeatPumpCostEstimationToolComponent implements OnInit {\n pageTitle = 'Heat Pump Cost Estimation';\n\n selectedService: any;\n subscriptionSelectedService: Subscription;\n\n formInputs: any = {};\n\n parametersConfig = {\n annualGasConsumption: {\n key: 'annualGasConsumption',\n displayName: 'Annual gas consumption',\n unitsPlacement: 'after',\n },\n annualGasCost: {\n key: 'annualGasCost',\n displayName: 'Annual gas cost',\n unitsPlacement: 'before',\n },\n heatPumpCop: { key: 'heatPumpCop', displayName: 'Heat pump COP', unitsPlacement: 'after' },\n unitRateGas: { key: 'unitRateGas', displayName: 'Unit rate gas', unitsPlacement: 'after' },\n standingChargeGas: { key: 'standingChargeGas', displayName: 'Standing charge gas', unitsPlacement: 'after' },\n unitRateElectricity: { key: 'unitRateElectricity', displayName: 'Unit rate electricity', unitsPlacement: 'after' },\n standingChargeElectricity: {\n key: 'standingChargeElectricity',\n displayName: 'Standing charge electricity',\n unitsPlacement: 'after',\n },\n };\n\n results;\n checkValidity = false;\n parameters;\n loadObj: tLoadingElement;\n\n page = 'start';\n pageHistory = ['start'];\n heatPumpCopPopover = '';\n innerWidth: number;\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n\n constructor(\n private uiConfigService: CustomUIConfigService,\n private serviceSelectorSvc: ServiceSelectorSvc,\n private glowService: GlowService,\n private searchService: SearchService\n ) {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(false);\n this.loadObj.loaded = true;\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.formInputs = {};\n this.results = null;\n this.parameters = null;\n this.updatePage('start');\n });\n }\n\n ngOnInit() {\n this.onResize();\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n this.getGlossaryTerm('cop').then((term) => {\n this.heatPumpCopPopover = term.shortDefinition;\n });\n }\n\n async getGlossaryTerm(term) {\n const results = await this.searchService.filterContentWithTags('glossary-term', term, []);\n return results[0];\n }\n\n setFormInputs(parameters, checkValidity = false) {\n this.checkValidity = checkValidity;\n for (let field of parameters.fields) {\n let value = parameters.values[field].value || parameters.values[field];\n if (Array.isArray(value)) {\n value = value[0];\n if (value.rate) {\n value = value.rate;\n }\n }\n if (!isNaN(value)) {\n value = parseFloat(value).toFixed(2);\n }\n this.formInputs[field] = value;\n }\n }\n\n updatePage(page) {\n if (page === 'back') {\n this.pageHistory.pop();\n this.page = this.pageHistory[this.pageHistory.length - 1];\n } else {\n this.page = page;\n if (page === 'start') {\n this.pageHistory = ['start'];\n } else {\n this.pageHistory.push(page);\n }\n }\n }\n\n processOutput(output) {\n this.results = output.results;\n this.parameters = output.inputs;\n this.setFormInputs(this.parameters);\n this.loadObj.loading = false;\n this.loadObj.loaded = true;\n this.updatePage('results');\n }\n\n processError(err) {\n // console.log('processError', err);\n if (err.error && err.error.isValid === false && err.error.missingElements) {\n if (err.error.inputs) {\n this.setFormInputs(err.error.inputs, true);\n }\n this.updatePage('missingInfo');\n } else {\n this.updatePage('error');\n }\n this.loadObj.loading = false;\n this.loadObj.loaded = true;\n }\n\n async estimateAnnualHeatPumpCost(event?) {\n this.loadObj.loading = true;\n let input = {};\n if (event) {\n const {\n annualGasConsumption,\n heatPumpCop,\n unitRateGas,\n standingChargeGas,\n unitRateElectricity,\n standingChargeElectricity,\n } = event;\n input = {\n annualGasConsumption,\n heatPumpCop,\n unitRateGas,\n standingChargeGas,\n unitRateElectricity,\n standingChargeElectricity,\n };\n this.glowService\n .runSimulation({\n simulationTypeId: 'heatPumpCostEstimationFromGasData',\n input,\n })\n .subscribe(\n (resp) => {\n this.processOutput(resp);\n },\n (err) => {\n this.processError(err);\n }\n );\n } else {\n this.glowService\n .runSimulationVeId(\n {\n simulationTypeId: 'heatPumpCostEstimationFromGasData',\n input,\n },\n this.selectedService.veId\n )\n .subscribe(\n (resp) => {\n this.processOutput(resp);\n },\n (err) => {\n this.processError(err);\n }\n );\n }\n }\n\n changeParams() {\n this.updatePage('paramsForm');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeatPumpCostEstimationToolComponent } from './heat-pump-cost-estimation-tool.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { HeatPumpCostEstimationParamsFormModule } from 'src/app/components/heat-pump-cost-estimation-params-form/heat-pump-cost-estimation-params-form.module';\nimport { NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap';\n\n\n\n@NgModule({\n declarations: [HeatPumpCostEstimationToolComponent],\n imports: [\n CommonModule, SharedModule, HeatPumpCostEstimationParamsFormModule, NgbPopoverModule\n ],\n exports: [HeatPumpCostEstimationToolComponent]\n})\nexport class HeatPumpCostEstimationToolModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2hlYXQtcHVtcC1qb3VybmV5L2hlYXQtcHVtcC1qb3VybmV5LmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { HpJourneyModalComponent } from 'src/app/components/hp-journey-modal/hp-journey-modal.component';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-heat-pump-journey',\n templateUrl: './heat-pump-journey.component.html',\n styleUrls: ['./heat-pump-journey.component.scss']\n})\nexport class HeatPumpJourneyComponent implements OnInit {\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n pageTitle = 'Heat pump journey';\n currentPage = '';\n innerWidth\n estimateRequestSubscription: Subscription\n estimateRequests\n steps;\n journeyStarted: boolean\n // continueJourney: boolean\n // notEligible: boolean\n hasPassport;\n selectedService: any\n validVE: boolean;\n invalidVE: any\n virtualEntityRequired: boolean\n gasResourceRequired: boolean\n propertyPassportRequired: boolean\n radiatorSchematicRequired: boolean\n acceptedEstimateRequests = []\n constructor(private invitationsService: InvitationsService, private serviceSelectorSvc: ServiceSelectorSvc,\n private glowService: GlowService, private modalService: NgbModal) {\n this.estimateRequestSubscription = this.invitationsService.EstimateRequestsByVeIdAnnouncer.subscribe(resp => {\n this.acceptedEstimateRequests = []\n this.estimateRequests = resp.estimateRequests\n\n this.acceptedEstimateRequests = this.invitationsService.getAllActiveEstimateRequests(resp)\n\n })\n }\n\n ngOnInit() {\n this.onResize()\n this.getEstimateRequestsByVeIdAndState()\n this.checkVeValidity()\n\n }\n\n\n getEstimateRequestsByVeIdAndState() {\n const ve = this.serviceSelectorSvc.getSelectedService()\n if (ve) {\n this.invitationsService.getEstimateRequestsByVeIdAndState(ve.veId, true)\n\n } else this.virtualEntityRequired = true\n\n }\n\n checkVeValidity() {\n const ve = this.serviceSelectorSvc.getSelectedService()\n this.invitationsService.validateVirtualEntitites([ve]).then(resp => {\n if (resp && resp.length) {\n this.invalidVE = resp\n console.log('invalidVE', this.invalidVE)\n this.validVE = false\n this.gasResourceRequired = this.checkVe(resp[0], 'virtualEntity.gasResource')\n this.virtualEntityRequired = this.checkVe(resp[0], 'virtualEntity')\n this.propertyPassportRequired = this.checkVe(resp[0], \"propertyPassport\")\n this.radiatorSchematicRequired = this.checkVe(resp[0], 'radiatorSchematics')\n } else {\n this.validVE = true\n console.log('validVE', this.validVE)\n }\n })\n }\n\n\n checkVe(ve, requirement) {\n return ve.requirements.find(req => req.requirement == requirement && !req.valid)\n }\n\n changeSection(e) {\n console.log(e)\n }\n\n openModal() {\n this.modalService.open(HpJourneyModalComponent, {\n scrollable: true,\n centered: true,\n size: 'xl',\n });\n }\n\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeatPumpJourneyComponent } from './heat-pump-journey.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { HpJourneyStepperModule } from 'src/app/components/hp-journey-stepper/hp-journey-stepper.module';\nimport { HpJourneyModalModule } from 'src/app/components/hp-journey-modal/hp-journey-modal.module';\n\n\n\n@NgModule({\n declarations: [HeatPumpJourneyComponent],\n imports: [\n CommonModule, SharedModule, HpJourneyStepperModule, HpJourneyModalModule\n ],\n exports: [HeatPumpJourneyComponent]\n})\nexport class HeatPumpJourneyModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2hlYXRpbmctc3lzdGVtL2hlYXRpbmctYnktcm9vbS9oZWF0aW5nLWJ5LXJvb20uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { SchematicsService } from 'src/app/services/schematics.service';\n\n@Component({\n selector: 'app-heating-by-room',\n templateUrl: './heating-by-room.component.html',\n styleUrls: ['./heating-by-room.component.scss'],\n})\nexport class HeatingByRoomComponent implements OnInit {\n schematicDocument;\n schematic;\n loading = true;\n inProgressCount;\n inProgressDocumentId;\n inProgressPath;\n constructor(private schematicService: SchematicsService) {}\n\n ngOnInit() {\n this.getVariables().then(() => {\n this.loading = false;\n });\n }\n\n async getVariables() {\n await this.setDefaultSchematic();\n\n if (!this.schematicDocument) {\n await this.getInProgressSchematic();\n this.inProgressPath = this.inProgressDocumentId ? `/pages/tools/heating-by-room/schematic/${this.inProgressDocumentId}?edit=true` : '/pages/tools/heating-by-room/in-progress';\n }\n }\n\n async getInProgressSchematic() {\n this.inProgressCount = await this.schematicService.getSchematicsCountByStatus('in-progress');\n if (this.inProgressCount && this.inProgressCount == 1) {\n const inProgress: any = (await this.schematicService.getSchematicsByStatus('in-progress'))[0];\n this.inProgressDocumentId = inProgress.documentId;\n }\n return this.inProgressDocumentId;\n }\n\n async defaultSchematic() {\n const completed = await this.schematicService.getSchematicsByStatus('complete');\n //get latest completed schematic\n const latest = completed.sort((a: any, b: any) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())[0];\n return latest;\n }\n\n async setDefaultSchematic() {\n const schematicDocument: any = await this.defaultSchematic();\n if (schematicDocument) {\n this.schematicDocument = schematicDocument;\n this.schematic = schematicDocument.data;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeatingByRoomComponent } from './heating-by-room.component';\nimport { RadiatorSchematicModule } from 'src/app/components/radiator-schematic/radiator-schematic.module';\n\n@NgModule({\n declarations: [HeatingByRoomComponent],\n imports: [CommonModule, RadiatorSchematicModule],\n})\nexport class HeatingByRoomModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2hlYXRpbmctc3lzdGVtL2hlYXRpbmctc3lzdGVtLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-heating-system',\n templateUrl: './heating-system.component.html',\n styleUrls: ['./heating-system.component.scss', '../pages.component.scss'],\n})\n\nexport class HeatingSystemComponent implements OnInit {\n\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable();\n\n pageTitle: string = 'Your heating system';\n subTitle: string;\n currentPage: string = 'Heating by room';\n innerWidth: number;\n toolLink: string;\n pages: any = [\n { path: '/pages/property/heating-system/heating-by-room', title: 'Heating by room', urlPath: 'heating-by-room' },\n ];\n\n constructor(private router: Router) { }\n\n ngOnInit() { \n this.onResize()\n }\n\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPage = event.pageTitle;\n }\n if (event.displayTitle) {\n this.subTitle = event.displayTitle;\n }\n if (event.toolLink && event.shouldShowToolLink) {\n this.toolLink = event.toolLink;\n } else {\n this.toolLink = null;\n }\n }\n\n isCurrentPage(page) {\n return page.title == this.currentPage;\n }\n\n getOtherPages() {\n return this.pages.filter((p) => p.title != this.currentPage);\n }\n\n navigateTool() {\n this.router.navigateByUrl(`pages/tools/heating-by-room`)\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeatingSystemComponent } from './heating-system.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [HeatingSystemComponent],\n imports: [SharedModule,\n CommonModule\n ],\n exports: [HeatingSystemComponent]\n})\nexport class HeatingSystemModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2h0Yy9odGMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { EpcInfoModalComponent } from 'src/app/components/epc-info-modal/epc-info-modal.component';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\n\n@Component({\n selector: 'app-htc',\n templateUrl: './htc.component.html',\n styleUrls: ['./htc.component.scss'],\n})\nexport class HtcComponent implements OnInit {\n pageTitle: string = 'Your home’s heat retention score';\n loading: boolean;\n loadingMessage: string = 'Loading details...';\n manualHTC: any;\n selectedService: any;\n passport: any;\n error: boolean;\n errorMessage: string;\n htcDefinition: any;\n virtualEntities: any[];\n manualHTCSubscription: Subscription;\n\n subscriptionVirtualEntityList: Subscription;\n subscriptionSelectedService: Subscription;\n\n constructor(private modalService: NgbModal, private veService: VirtualEntityService, private serviceSelectorSvc: ServiceSelectorSvc, private glowService: GlowService, private strapiService: StrapiService) {\n this.loading = true;\n\n this.subscriptionVirtualEntityList = this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n if (veList && Array.isArray(veList) && veList.length > 0) {\n this.virtualEntities = veList;\n }\n });\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.loading = true;\n this.getPropertyPassport();\n });\n }\n\n ngOnInit() {\n this.strapiService.getOneContent('glossary-terms', 10, []).then((t) => (this.htcDefinition = t.attributes.shortDefinition));\n\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (this.selectedService && this.selectedService.veId) {\n this.getPropertyPassport();\n }\n this.veService.findVirtualEntities();\n }\n\n\n getPropertyPassport() {\n this.loading = true;\n this.error = false;\n this.glowService.getPropertyPassport(this.selectedService.veId).subscribe(\n (resp) => {\n if (!resp.valid) {\n this.loading = false;\n this.error = true;\n return;\n }\n this.passport = resp;\n this.loading = false;\n },\n (err) => {\n this.error = true;\n this.passport = null;\n this.errorMessage = err && err.error && err.error.error;\n this.loading = false;\n }\n );\n }\n\n openHTCModal() {\n const modalRef = this.modalService.open(EpcInfoModalComponent, { scrollable: true, centered: true, size: 'lg', backdrop: 'static' });\n modalRef.componentInstance.propertyPassportId = this.passport.propertyPassportId;\n modalRef.componentInstance.veId = this.virtualEntities[0].veId;\n modalRef.componentInstance.resources = this.virtualEntities[0].resources;\n modalRef.componentInstance.postcode = this.passport.address.postcode;\n modalRef.componentInstance.updateHtcCard.subscribe((htc) => {\n if (htc) {\n this.manualHTC = htc;\n localStorage.setItem('manualHTC', JSON.stringify(htc));\n }\n modalRef.dismiss();\n });\n }\n\n regenerateHTC() {\n this.manualHTC = false;\n }\n\n formatHouseAttachmentString(str) {\n return str.replace(/([A-Z][a-z])/g, ' $1');\n }\n navigateToPropertyPassport() {\n return `/pages/account/property-passport`;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HtcComponent } from './htc.component';\nimport { AccountSideMenuModule } from 'src/app/components/account-side-menu/account-side-menu.module';\nimport { EpcInfoModalModule } from 'src/app/components/epc-info-modal/epc-info-modal.module';\nimport { HeatLossParameterScaleModule } from 'src/app/components/heat-loss-parameter-scale/heat-loss-parameter-scale.module';\nimport { HtcCardModule } from 'src/app/components/htc-card/htc-card.module';\nimport { AccountNoDataCardModule } from 'src/app/components/account-no-data-card/account-no-data-card.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\n\n@NgModule({\n declarations: [HtcComponent],\n imports: [\n CommonModule,\n AccountSideMenuModule,\n EpcInfoModalModule,\n HeatLossParameterScaleModule,\n HtcCardModule,\n AccountNoDataCardModule,\n SharedModule,\n SpinnerModule\n ], exports:[HtcComponent]\n})\nexport class HtcModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2ludml0YXRpb25zL2ludml0YXRpb25zLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-invitations',\n templateUrl: './invitations.component.html',\n styleUrls: ['./invitations.component.scss','../pages.component.scss']\n})\nexport class InvitationsComponent implements OnInit {\n pages = [\n { path: '/pages/account/invitations/sent-invitations', title: 'Sent invitations', urlPath: 'sent-invitations' },\n { path: '/pages/account/invitations/received-invitations', title: 'Received invitations', urlPath: 'received-invitations' },\n\n // { path: '/pages/account/settings/subscriptions', title: 'Subscriptions', urlPath: 'subscriptions' },\n // { path: '/pages/account/settings/properties', title: 'Properties', urlPath: 'properties' }\n ]\n pageTitle = \"Invitations\"\n currentPage;\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable()\n constructor() { }\n\n ngOnInit() {\n }\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle)\n this.currentPage = event.pageTitle;\n }\n // console.log(\"EVENT\",event);\n }\n isCurrentPage(page) {\n return page.title == this.currentPage;\n }\n\n getOtherPages() {\n return this.pages.filter(p => p.title != this.currentPage)\n \n}\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InvitationsComponent } from './invitations.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [InvitationsComponent],\n imports: [\n CommonModule,SharedModule\n ],\n exports: [InvitationsComponent]\n})\nexport class InvitationsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2ludml0YXRpb25zL3JlY2VpdmVkLWludml0YXRpb25zL3JlY2VpdmVkLWludml0YXRpb25zLmNvbXBvbmVudC5zY3NzIn0= */\"","import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { any } from 'core-js/fn/promise';\nimport { Subscription } from 'rxjs';\nimport { ConfirmationModalComponent } from 'src/app/components/confirmation-modal/confirmation-modal.component';\nimport { RadiatorSchematicComponent } from 'src/app/components/radiator-schematic/radiator-schematic.component';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { PdfService } from 'src/app/services/pdf.service';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-received-invitations',\n templateUrl: './received-invitations.component.html',\n styleUrls: ['./received-invitations.component.scss']\n})\nexport class ReceivedInvitationsComponent implements OnInit {\n pageTitle: string = 'Received invitations'\n estimatesSubscription: Subscription\n estimateRequests\n loading\n dataURL\n stageSubscription: Subscription;\n showSchematic: boolean\n schematics;\n schematicDocument\n schmLoading: boolean\n snapshot\n constructor(private invitationsService: InvitationsService, private glowService: GlowService, private pdfService: PdfService, private modalService: NgbModal,\n private schematicsService: SchematicsService, private changeDetector: ChangeDetectorRef) {\n this.estimatesSubscription = this.invitationsService.EstimatesAnnouncer.subscribe((resp) => {\n this.estimateRequests = resp.estimateRequests.filter(e => e.initiatedBy === 'professional')\n if (this.estimateRequests) {\n // console.log(this.estimateRequests)\n this.loading = false\n }\n })\n this.loading = false\n\n this.stageSubscription = this.schematicsService.stage$.subscribe((schm) => {\n const dataURL = this.schematicsService.getCanvasDataUrl(2)\n this.pdfService.generatePdf(this.snapshot, dataURL)\n this.showSchematic = false\n\n\n })\n\n }\n\n ngOnInit() {\n\n this.invitationsService.getAllEstimateRequests()\n }\n ngAfterViewChecked() {\n this.changeDetector.detectChanges();\n }\n\n ngOnDestroy() {\n if (this.estimatesSubscription) {\n this.estimatesSubscription.unsubscribe()\n }\n }\n getReadableDateFromIso(string) {\n return Utils.getReadableDateFromIso(string)\n }\n\n async getSchematic(veId, veDocId) {\n this.schematicDocument = await this.schematicsService.getSchematic(veId, veDocId)\n this.showSchematic = true\n\n\n }\n async downloadPDF(id) {\n this.glowService.getSnapshotBySnapshotId(id).subscribe(async resp => {\n if (resp) {\n this.snapshot = resp\n if (this.snapshot.heatingSystem) {\n await this.getSchematic(this.snapshot.veId, this.snapshot.heatingSystem.veDocId)\n } else this.pdfService.generatePdf(this.snapshot)\n }\n return resp\n })\n }\n\n openConfirmationModal(estimateRequestId) {\n const modalReference = this.modalService.open(ConfirmationModalComponent, { centered: true, size: 'lg' });\n modalReference.componentInstance.confirmationTitle = 'Are you sure you want to revoke access?';\n modalReference.componentInstance.confirmationText = 'By revoking access, the installer will no longer be able to view your data through Glowmarkt or send you an estimate request.'\n modalReference.componentInstance.confirmationButtonText = 'Revoke access';\n modalReference.componentInstance.estimateRequestId = estimateRequestId\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReceivedInvitationsComponent } from './received-invitations.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { RadiatorSchematicModule } from 'src/app/components/radiator-schematic/radiator-schematic.module';\n\n\n\n@NgModule({\n declarations: [ReceivedInvitationsComponent],\n imports: [\n CommonModule, SharedModule, RadiatorSchematicModule\n ],\n exports: [ReceivedInvitationsComponent]\n})\nexport class ReceivedInvitationsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2ludml0YXRpb25zL3NlbnQtaW52aXRhdGlvbnMvc2VudC1pbnZpdGF0aW9ucy5jb21wb25lbnQuc2NzcyJ9 */\"","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { ConfirmationModalComponent } from 'src/app/components/confirmation-modal/confirmation-modal.component';\nimport { InvitationModalComponent } from 'src/app/components/invitation-modal/invitation-modal.component';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { PdfService } from 'src/app/services/pdf.service';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { Utils } from 'src/utils';\n@Component({\n selector: 'app-sent-invitations',\n templateUrl: './sent-invitations.component.html',\n styleUrls: ['./sent-invitations.component.scss']\n})\nexport class SentNotificationsComponent implements OnInit {\n pageTitle: string = 'Sent invitations'\n estimateRequests: any\n loading;\n stageSubscription: Subscription\n showSchematic: boolean;\n snapshot;\n schematicDocument\n estimatesSubscription: Subscription\n constructor(private modalService: NgbModal, private pdfService: PdfService, private glowService: GlowService, private invitationsService: InvitationsService, private schematicsService: SchematicsService, private changeDetector: ChangeDetectorRef\n\n ) {\n this.estimatesSubscription = this.invitationsService.EstimatesAnnouncer.subscribe((resp) => {\n this.estimateRequests = resp.estimateRequests.filter(e => e.initiatedBy === 'customer')\n console.log(this.estimateRequests)\n if (this.estimateRequests) {\n this.loading = false\n }\n })\n this.loading = false\n this.stageSubscription = this.schematicsService.stage$.subscribe((schm) => {\n\n // console.log('schematics subscription')\n const dataURL = this.schematicsService.getCanvasDataUrl(2)\n this.pdfService.generatePdf(this.snapshot, dataURL)\n this.showSchematic = false\n\n\n\n })\n }\n\n ngOnInit() {\n this.loading = true\n this.invitationsService.getAllEstimateRequests()\n }\n ngAfterViewChecked() {\n this.changeDetector.detectChanges();\n }\n\n ngOnDestroy() {\n if (this.estimatesSubscription) {\n this.estimatesSubscription.unsubscribe()\n }\n }\n\n downloadPDF(id) {\n this.glowService.getSnapshotBySnapshotId(id).subscribe(async (resp) => {\n console.log(resp, 'resp')\n if (resp) {\n\n this.snapshot = resp\n if (this.snapshot.heatingSystem) {\n await this.getSchematic(this.snapshot.veId, this.snapshot.heatingSystem.veDocId)\n } else this.pdfService.generatePdf(this.snapshot)\n }\n return resp\n })\n }\n async getSchematic(veId, veDocId) {\n this.schematicDocument = await this.schematicsService.getSchematic(veId, veDocId)\n // console.log(this.schematicDocument)\n this.showSchematic = true\n\n\n\n }\n\n openConfirmationModal(estimateRequestId) {\n const modalReference = this.modalService.open(ConfirmationModalComponent, { centered: true, size: 'lg' });\n modalReference.componentInstance.confirmationTitle = 'Are you sure you want to revoke access?';\n modalReference.componentInstance.confirmationText = 'By revoking access, the installer will no longer be able to view your data through Glowmarkt or send you an estimate request.'\n modalReference.componentInstance.confirmationButtonText = 'Revoke access';\n modalReference.componentInstance.estimateRequestId = estimateRequestId\n }\n\n\n\n getReadableDateFromIso(string) {\n return Utils.getReadableDateFromIso(string)\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SentNotificationsComponent } from './sent-invitations.component';\nimport { ConfirmationModalModule } from 'src/app/components/confirmation-modal/confirmation-modal.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { RadiatorSchematicModule } from 'src/app/components/radiator-schematic/radiator-schematic.module';\n\n\n\n@NgModule({\n declarations: [SentNotificationsComponent],\n imports: [\n CommonModule, ConfirmationModalModule, SharedModule, RadiatorSchematicModule\n ],\n exports:[SentNotificationsComponent]\n})\nexport class SentNotificationsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL25vdGlmaWNhdGlvbnMvYWxsLW5vdGlmaWNhdGlvbnMvYWxsLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\n\n@Component({\n selector: 'app-all-notifications',\n templateUrl: './all-notifications.component.html',\n styleUrls: ['./all-notifications.component.scss']\n})\n\nexport class AllNotificationsComponent implements OnInit {\n estimateRequests: any[] = []\n loading = true\n error\n subscriptionVirtualEntityList: Subscription\n pageTitle: string = 'Notifications'\n estimateRequestsSubscription: Subscription;\n virtualEntities\n validVEs: any[] = []\n invalidVEs: any[] = []\n missingData: boolean\n pendingEstimateRequests;\n constructor(private invitationsService: InvitationsService, private veService: VirtualEntityService, private glowService: GlowService) {\n this.loading = true\n this.estimateRequestsSubscription = this.invitationsService.EstimatesAnnouncer.subscribe((resp) => {\n console.log(resp)\n if (resp.valid) {\n this.estimateRequests = resp.estimateRequests.filter(estimateRequest => estimateRequest.estimateRequestState == 'pending-user-eligibility')\n this.pendingEstimateRequests = resp.estimateRequests.filter(estimateRequest => estimateRequest.estimateRequestState == 'pending-user-acceptance')\n\n } else {\n this.error = true\n // this.loading = false\n }\n })\n\n this.subscriptionVirtualEntityList = this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n if (veList && veList.length) {\n this.processVeList(veList)\n // console.log(this.estimateRequests)\n if (this.estimateRequests && this.estimateRequests.length) {\n // console.log('validating ves')\n await this.invitationsService.validateVirtualEntitites(this.virtualEntities)\n\n if (this.invitationsService.validVEs.length) {\n this.validVEs = this.invitationsService.validVEs\n this.loading = false\n }\n if (this.invitationsService.invalidVEs.length) {\n this.invalidVEs = this.invitationsService.invalidVEs\n this.loading = false\n }\n\n } else {\n this.loading = false\n }\n\n } else{ \n this.processVeList(veList)\n this.loading = false\n }\n });\n }\n\n ngOnInit() {\n this.getEstimateRequests()\n this.veService.findVirtualEntities()\n }\n\n\n\n getEstimateRequests() {\n this.invitationsService.getAllEstimateRequests()\n\n }\n\n processVeList(veList) {\n // console.log(veList, 'velist')\n this.virtualEntities = veList;\n }\n\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AllNotificationsComponent } from './all-notifications.component';\nimport { NotificationModule } from 'src/app/components/notification/notification.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [AllNotificationsComponent],\n imports: [\n CommonModule,\n NotificationModule,\n SharedModule\n ],\n exports: [AllNotificationsComponent]\n})\nexport class AllNotificationsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subject, Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\n\n@Component({\n selector: 'app-notifications',\n templateUrl: './notifications.component.html',\n styleUrls: ['./notifications.component.scss', '../pages.component.scss'],\n})\nexport class NotificationsComponent implements OnInit {\n hasPassport: boolean;\n passport;\n loading = true;\n schematic;\n isSchematicComplete: boolean;\n selectedService;\n pageTitle = 'Notifications';\n currentPage = 'Notifications';\n subscriptionSelectedService: Subscription;\n schematicsSubscription: Subscription;\n pages = [{ path: '/pages/account/notifications/all-notifications', title: 'Notifications', urlPath: 'all-notifications' }];\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable();\n\n constructor(public activeModal: NgbActiveModal, private schematicsService: SchematicsService, private serviceSelectorSvc: ServiceSelectorSvc, private glowService: GlowService) {\n this.schematicsSubscription = this.schematicsService.schematicDocument$.subscribe((schematicDocument) => {\n this.schematic = { ...schematicDocument.data };\n this.isSchematicComplete = this.schematic.totalHeatingPowerOutput && this.schematic.totalFloorArea && this.schematic.floors.length;\n });\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n // this.schematicsService.setSelectedService(this.selectedService);\n // this.schematicsService.getSchematics();\n this.getPropertyPassport();\n }\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle);\n this.currentPage = event.pageTitle;\n }\n // console.log(\"EVENT\",event);\n }\n isCurrentPage(page) {\n return page.title == this.currentPage;\n }\n\n getOtherPages() {\n return this.pages.filter((p) => p.title != this.currentPage);\n }\n\ngetPropertyPassport() {\n this.glowService.getPropertyPassport(this.selectedService.veId).subscribe((resp) => {\n if (resp.valid) {\n this.passport = resp\n this.loading = false;\n // console.log(resp)\n } else \n this.loading = false;\n return\n });\n}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NotificationsComponent } from './notifications.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [NotificationsComponent],\n imports: [\n CommonModule, SharedModule\n ],\n exports :[NotificationsComponent]\n})\nexport class NotificationsModule { }\n","export default \".card {\\n box-shadow: 0 0.125rem 0.25rem rgba(83, 88, 93, 0.15);\\n}\\n\\n.card-title {\\n background-color: #f6f7ff;\\n padding: 10px 10px 0px 10px;\\n}\\n\\n.nav-link {\\n color: #2b2b2b !important;\\n}\\n\\nh5 {\\n padding-bottom: 10px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wYWdlcy9wYWdlcy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvcGFnZXMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxxREFBQTtBQ0RGOztBRElBO0VBQ0UseUJBQUE7RUFDQSwyQkFBQTtBQ0RGOztBREdBO0VBQ0UseUJBQUE7QUNBRjs7QURHQTtFQUNFLG9CQUFBO0FDQUYiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9wYWdlcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG4uY2FyZCB7XG4gIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDgzLCA4OCwgOTMsIDAuMTUpO1xufVxuXG4uY2FyZC10aXRsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNmY3ZmY7XG4gIHBhZGRpbmc6IDEwcHggMTBweCAwcHggMTBweDtcbn1cbi5uYXYtbGluayB7XG4gIGNvbG9yOiAjMmIyYjJiIWltcG9ydGFudDtcbn1cblxuaDUge1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn1cblxuLy9oaWRlcyB0aXRsZSB3aGVuIG9uIHBob25lIFxuLy8gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuLy8gICAjcGFnZS10aXRsZSB7XG4vLyAgICAgY29sb3I6ICM1RjZEQkY7XG4vLyAgICAgZm9udC1zaXplOiAxLjNyZW07XG4vLyAgICAgcGFkZGluZzogMTBweDtcbi8vICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4vLyAgICAgLy8gICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMTQpIDBweCAzcHggNXB4O1xuLy8gICAgIGJvdHRvbTogLTVweDtcbi8vICAgICB3aWR0aDogNTAlO1xuLy8gICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuLy8gICB9XG5cbi8vICAgLmNvbC0wIHtcbi8vICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4vLyAgIH1cblxuXG5cblxuLy8gfSIsIi5jYXJkIHtcbiAgYm94LXNoYWRvdzogMCAwLjEyNXJlbSAwLjI1cmVtIHJnYmEoODMsIDg4LCA5MywgMC4xNSk7XG59XG5cbi5jYXJkLXRpdGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjdmZjtcbiAgcGFkZGluZzogMTBweCAxMHB4IDBweCAxMHB4O1xufVxuXG4ubmF2LWxpbmsge1xuICBjb2xvcjogIzJiMmIyYiAhaW1wb3J0YW50O1xufVxuXG5oNSB7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { HpJourneyModalComponent } from '../components/hp-journey-modal/hp-journey-modal.component';\n\n@Component({\n selector: 'app-pages',\n templateUrl: './pages.component.html',\n styleUrls: ['./pages.component.scss'],\n})\nexport class PagesComponent implements OnInit {\n url!: String;\n pageTitle!: string;\n currentPage!: string;\n currentPageSubscription: Subscription;\n constructor(private router: Router, private modalService: NgbModal) {\n this.url = this.router.url;\n }\n\n ngOnInit(): void {\n \n }\n\n ngOnDestroy() {\n if (this.currentPageSubscription) {\n this.currentPageSubscription.unsubscribe();\n }\n }\n \n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.pageTitle = event.pageTitle;\n }\n if (event.currentPage$) {\n this.currentPageSubscription = event.currentPage$.subscribe((currPage) => {\n this.currentPage = currPage;\n });\n }\n }\n openModal() {\n this.modalService.open(HpJourneyModalComponent, {\n scrollable: true,\n centered: true,\n size: 'xl',\n });\n }\n\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { PagesComponent } from './pages.component';\nimport { DashboardModule } from '../components/dashboard/dashboard.module';\nimport { AppPrivilegeService } from '../services/app-privileges.service';\nimport { VirtualEntityService } from '../services/virtual-entity.service';\nimport { UserGroupSelectorService } from '../services/usergroup-selector.service';\nimport { VirtualEntityGroupService } from '../services/virtual-entity-group.service';\nimport { GlowEventService } from '../services/event.service';\nimport { TermsConditionsService } from '../services/termsconditions.service';\nimport { StatsService } from '../services/stats-service';\nimport { PagesRouting } from './pages.routing';\nimport { AccountSideMenuModule } from '../components/account-side-menu/account-side-menu.module';\nimport { TemperatureSensorDataTableModule } from '../components/temperature-sensor-data-table/temperature-sensor-data-table.module';\nimport { PropertyPassportModule } from './property-passport/property-passport.module';\nimport { HtcModalModule } from '../components/htc-modal/htc-modal.module';\nimport { SharedModule } from '../shared/shared.module';\nimport { HelpModalModule } from '../components/help-modal/help-modal.module';\nimport { HeatLossParameterScaleModule } from '../components/heat-loss-parameter-scale/heat-loss-parameter-scale.module';\nimport { SetupSmartMeterModule } from '../components/setup-smart-meter/setup-smart-meter.module';\nimport { SetupSmartMeterModalModule } from '../components/setup-smart-meter-modal/setup-smart-meter-modal.module';\nimport { SchematicsModule } from './schematics/schematics.module';\nimport { AddRoomModalModule } from '../components/add-room-modal/add-room-modal.module';\nimport { EpcInfoModalModule } from '../components/epc-info-modal/epc-info-modal.module';\nimport { HtcModule } from './htc/htc.module';\nimport { BookmarksModule } from './bookmarks/bookmarks.module';\nimport { ServiceSelectorSvc } from '../services/service-selector.service';\nimport { PropertyPagesModule } from './property-pages/property-pages.module';\nimport { GeneralAttributesModule } from './general-attributes/general-attributes.module';\nimport { GeneralModule } from './general-attributes/general/general.module';\nimport { BuildingFabricModule } from './general-attributes/building-fabric/building-fabric.module';\nimport { HeatingSystemModule } from './heating-system/heating-system.module';\nimport { EnergyDataModule } from './energy-data/energy-data.module';\nimport { TemperatureSensorsModule } from './temperature-sensors/temperature-sensors.module';\nimport { EnergyOverviewModule } from './energy-overview/energy-overview.module';\nimport { AccountSettingsModule } from './settings/account-settings/account-settings.module';\nimport { AccountPagesModule } from './account-pages/account-pages.module';\nimport { AccountNoDataCardModule } from '../components/account-no-data-card/account-no-data-card.module';\nimport { SettingsModule } from './settings/settings.module';\nimport { SubscriptionsModule } from './settings/subscriptions/subscriptions.module';\nimport { ResourceDataService } from '../services/data.service';\nimport { HtcFullInfoModule } from '../components/htc-full-info/htc-full-info.module';\nimport { ToolsPagesModule } from './tools-pages/tools-pages.module';\nimport { HeatPumpCostEstimationToolModule } from './heat-pump-cost-estimation-tool/heat-pump-cost-estimation-tool.module';\nimport { TariffModule } from './energy-overview/tariff/tariff.module';\nimport { SitesModule } from './settings/sites/sites.module';\nimport { SchematicToolModule } from '../components/schematic-tool/schematic-tool.module';\nimport { NotificationsModule } from './notifications/notifications.module';\nimport { SentNotificationsModule } from './invitations/sent-invitations/sent-invitations.module';\nimport { InvitationModalModule } from '../components/invitation-modal/invitation-modal.module';\nimport { AllNotificationsModule } from './notifications/all-notifications/all-notifications.module';\nimport { NotificationModule } from '../components/notification/notification.module';\nimport { InvitationsModule } from './invitations/invitations.module';\nimport { CaseStudyAccountPageModule } from './case-study-account-page/case-study-account-page.module';\nimport { CaseStudyCreatorToolModule } from './case-study-creator-tool/case-study-creator-tool.module';\nimport { BuildingFormModule } from '../components/case-study/building-form/building-form.module';\nimport { CaseStudyFormStepperModule } from '../components/case-study-form-stepper/case-study-form-stepper.module';\nimport { HeatPumpCaseStudyModule } from './case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.module';\nimport { HeatingSystemFormModule } from '../components/case-study/heating-system-form/heating-system-form.module';\nimport { OutcomesFormModule } from '../components/case-study/outcomes-form/outcomes-form.module';\nimport { InstallationFormModule } from '../components/case-study/installation-form/installation-form.module';\nimport { MicrogeneratorFormModule } from '../components/case-study/microgenerator-form/microgenerator-form.module';\nimport { FormTemplateModule } from '../components/case-study/form-template/form-template.module';\nimport { EnergyStorageFormModule } from '../components/case-study/energy-storage-form/energy-storage-form.module';\nimport { FileUploadModule } from '../components/file-upload/file-upload.module';\nimport { OtherInfoFormModule } from '../components/case-study/other-info-form/other-info-form.module';\nimport { HeatPumpCaseStudyAccountModule } from './case-study-account-page/heat-pump-case-study-account/heat-pump-case-study-account.module';\nimport { ReceivedInvitationsModule } from './invitations/received-invitations/received-invitations.module';\nimport { HeatingByRoomModule } from './heating-system/heating-by-room/heating-by-room.module';\nimport { ConsentMeterCardModule } from '../components/consent-meter-card/consent-meter-card.module';\nimport { HeatPumpJourneyModule } from './heat-pump-journey/heat-pump-journey.module';\nimport { HpJourneyModalModule } from '../components/hp-journey-modal/hp-journey-modal.module';\nimport { EstimateRequestCardModule } from '../components/estimate-request-card/estimate-request-card.module';\n\n@NgModule({\n declarations: [PagesComponent],\n imports: [\n PagesRouting,\n DashboardModule,\n AccountSideMenuModule,\n TemperatureSensorDataTableModule,\n PropertyPassportModule,\n HtcModalModule,\n HeatLossParameterScaleModule,\n HelpModalModule,\n SetupSmartMeterModule,\n SetupSmartMeterModalModule,\n SharedModule,\n HeatLossParameterScaleModule,\n SchematicsModule,\n AddRoomModalModule,\n EpcInfoModalModule,\n HtcModule,\n BookmarksModule,\n PropertyPagesModule,\n GeneralAttributesModule,\n GeneralModule,\n BuildingFabricModule,\n HeatingSystemModule,\n HtcFullInfoModule,\n EnergyDataModule,\n TemperatureSensorsModule,\n EnergyOverviewModule,\n AccountSettingsModule,\n AccountPagesModule,\n AccountNoDataCardModule,\n SettingsModule,\n SubscriptionsModule,\n ToolsPagesModule,\n HeatPumpCostEstimationToolModule,\n TariffModule,\n CaseStudyAccountPageModule,\n SitesModule,\n CaseStudyCreatorToolModule,\n BuildingFormModule,\n CaseStudyFormStepperModule,\n HeatPumpCaseStudyModule,\n HeatingSystemFormModule,\n OutcomesFormModule,\n InstallationFormModule,\n MicrogeneratorFormModule,\n FormTemplateModule,\n EnergyStorageFormModule,\n FileUploadModule,\n OtherInfoFormModule,\n HeatPumpCaseStudyAccountModule,\n SchematicToolModule,\n NotificationsModule,\n SentNotificationsModule,\n InvitationModalModule,\n AllNotificationsModule,\n InvitationsModule,\n NotificationModule,\n ReceivedInvitationsModule,\n HeatingByRoomModule,\n HeatPumpJourneyModule,\n HpJourneyModalModule,\n ConsentMeterCardModule,\n EstimateRequestCardModule\n ],\n providers: [AppPrivilegeService, GlowEventService, TermsConditionsService, UserGroupSelectorService, VirtualEntityService, VirtualEntityGroupService, ResourceDataService, ServiceSelectorSvc, StatsService],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class PagesModule {}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { SetupSmartMeterComponent } from '../components/setup-smart-meter/setup-smart-meter.component';\nimport { GeneralAttributesComponent } from './general-attributes/general-attributes.component';\nimport { GeneralComponent } from './general-attributes/general/general.component';\nimport { HeatingSystemComponent } from './heating-system/heating-system.component';\nimport { PagesComponent } from './pages.component';\nimport { PropertyPagesComponent } from './property-pages/property-pages.component';\nimport { SchematicsComponent } from './schematics/schematics.component';\nimport { EnergyDataComponent } from './energy-data/energy-data.component';\nimport { TemperatureSensorsComponent } from './temperature-sensors/temperature-sensors.component';\nimport { TemperatureSensorDataTableComponent } from '../components/temperature-sensor-data-table/temperature-sensor-data-table.component';\nimport { EnergyOverviewComponent } from './energy-overview/energy-overview.component';\nimport { AccountPagesComponent } from './account-pages/account-pages.component';\nimport { AccountSettingsComponent } from './settings/account-settings/account-settings.component';\nimport { PropertyPassportComponent } from './property-passport/property-passport.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { SubscriptionsComponent } from './settings/subscriptions/subscriptions.component';\nimport { ToolsPagesComponent } from './tools-pages/tools-pages.component';\nimport { RadiatorSchematicComponent } from '../components/radiator-schematic/radiator-schematic.component';\nimport { HtcComponent } from './htc/htc.component';\nimport { HtcFullInfoComponent } from '../components/htc-full-info/htc-full-info.component';\nimport { HeatPumpCostEstimationToolComponent } from './heat-pump-cost-estimation-tool/heat-pump-cost-estimation-tool.component';\nimport { TariffComponent } from './energy-overview/tariff/tariff.component';\nimport { SitesComponent } from './settings/sites/sites.component';\nimport { SchematicToolComponent } from '../components/schematic-tool/schematic-tool.component';\nimport { NotificationsComponent } from './notifications/notifications.component';\nimport { SentNotificationsComponent } from './invitations/sent-invitations/sent-invitations.component';\nimport { AllNotificationsComponent } from './notifications/all-notifications/all-notifications.component';\nimport { InvitationsComponent } from './invitations/invitations.component';\nimport { CaseStudyAccountPageComponent } from './case-study-account-page/case-study-account-page.component';\nimport { CaseStudyCreatorToolComponent } from './case-study-creator-tool/case-study-creator-tool.component';\nimport { HeatPumpCaseStudyComponent } from './case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.component';\nimport { FormGuard } from '../services/form.guard';\nimport { HeatPumpCaseStudyAccountComponent } from './case-study-account-page/heat-pump-case-study-account/heat-pump-case-study-account.component';\nimport { ReceivedInvitationsComponent } from './invitations/received-invitations/received-invitations.component';\nimport { HeatingByRoomComponent } from './heating-system/heating-by-room/heating-by-room.component';\nimport { HeatPumpJourneyComponent } from './heat-pump-journey/heat-pump-journey.component';\n\nexport const routes: Routes = [\n {\n path: '',\n component: PagesComponent,\n children: [\n {\n path: 'property',\n component: PropertyPagesComponent,\n children: [\n {\n path: 'general-attributes',\n component: GeneralAttributesComponent,\n children: [\n { path: 'general', component: GeneralComponent },\n { path: 'building-fabric', component: HtcFullInfoComponent },\n { path: '', redirectTo: 'general', pathMatch: 'full' },\n ],\n },\n { path: '', redirectTo: 'general-attributes', pathMatch: 'full' },\n\n {\n path: 'heating-system',\n component: HeatingSystemComponent,\n children: [\n { path: 'heating-by-room', component: HeatingByRoomComponent },\n { path: '', redirectTo: 'heating-by-room', pathMatch: 'full' },\n ],\n },\n {\n path: 'energy-data',\n component: EnergyDataComponent,\n children: [\n {\n path: 'setup-meter',\n component: SetupSmartMeterComponent,\n },\n ],\n },\n {\n path: 'energy-overview',\n component: EnergyOverviewComponent,\n children: [\n { path: 'tariff', component: TariffComponent },\n { path: '', redirectTo: 'tariff', pathMatch: 'full' },\n ],\n },\n {\n path: 'temperature-sensors',\n component: TemperatureSensorsComponent,\n children: [{ path: ':sensor', component: TemperatureSensorDataTableComponent }],\n },\n {\n path: 'case-studies',\n component: CaseStudyAccountPageComponent,\n children: [\n {\n path: ':caseStudy',\n loadChildren: () => import('../public/case-study/case-study.module').then((m) => m.CaseStudyModule),\n },\n ],\n },\n {\n path: 'activities',\n children: [\n {path: 'heat-pump-journey', component: HeatPumpJourneyComponent }\n ]\n }\n ],\n },\n {\n path: 'account',\n component: AccountPagesComponent,\n children: [\n {\n path: 'settings',\n component: SettingsComponent,\n children: [\n { path: 'account-settings', component: AccountSettingsComponent },\n { path: 'subscriptions', component: SubscriptionsComponent },\n {\n path: 'properties',\n component: SitesComponent,\n children: [\n {\n path: 'setup-meter',\n component: SetupSmartMeterComponent,\n },\n ],\n },\n ],\n },\n {\n path: 'property-passport',\n component: PropertyPassportComponent,\n },\n {\n path: 'notifications',\n component: NotificationsComponent,\n children: [\n { path: 'all-notifications', component: AllNotificationsComponent },\n { path: '', redirectTo: 'all-notifications', pathMatch: 'full' },\n ],\n },\n {\n path: 'invitations',\n component: InvitationsComponent,\n\n children: [\n { path: 'sent-invitations', component: SentNotificationsComponent },\n { path: 'received-invitations', component: ReceivedInvitationsComponent },\n { path: '', redirectTo: 'sent-invitations', pathMatch: 'full' },\n ],\n },\n // { path: 'bookmarks', component: BookmarksComponent }\n ],\n },\n {\n path: 'tools',\n component: ToolsPagesComponent,\n children: [\n {\n path: 'heating-by-room',\n loadChildren: () => import('./schematics/schematics.module').then((m) => m.SchematicsModule),\n },\n { path: 'heating-by-room/schematic/:id', component: SchematicToolComponent },\n {\n path: 'estimated-thermal-performance',\n component: HtcComponent,\n },\n {\n path: 'heat-pump-cost-estimation',\n component: HeatPumpCostEstimationToolComponent,\n },\n {\n path: 'case-study-creator',\n component: CaseStudyCreatorToolComponent,\n },\n {\n path: 'case-study-creator/heat-pump',\n loadChildren: () => import('./case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.module').then((m) => m.HeatPumpCaseStudyModule),\n },\n ],\n },\n { path: '', redirectTo: 'property', pathMatch: 'full' },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class PagesRouting {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3Byb3BlcnR5LXBhZ2VzL3Byb3BlcnR5LXBhZ2VzLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subject, Subscription } from 'rxjs';\nimport { AccountSideMenuComponent } from 'src/app/components/account-side-menu/account-side-menu.component';\nimport { tVeIdNameListing } from 'src/app/services/app-config.typings';\nimport { InvitationsService } from 'src/app/services/invitations.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\n\n@Component({\n selector: 'app-property-pages',\n templateUrl: './property-pages.component.html',\n styleUrls: ['./property-pages.component.scss'],\n})\nexport class PropertyPagesComponent implements OnInit {\n @ViewChild('pages', { static: true }) accMenu: AccountSideMenuComponent;\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable();\n\n pageTitle: string = 'Property';\n currentPage: string = 'General attributes';\n innerWidth: number;\n virtualEntities: any[];\n dropdownOptions: any[] = [];\n selectedService: any;\n dimension: string = 'energy';\n subscriptionSelectedService: Subscription;\n subscriptionVirtualEntityList: Subscription;\n\n constructor(private veService: VirtualEntityService, private serviceSelectorSvc: ServiceSelectorSvc, private router: Router, private invitationsService: InvitationsService) {\n this.subscriptionVirtualEntityList = this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n if (veList.length) {\n this.processVeList(veList);\n }\n });\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.setSelectedService(selectedService);\n });\n\n this.onResize();\n }\n\n ngOnInit() {\n this.invitationsService.getAllEstimateRequests();\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n this.veService.findVirtualEntities();\n }\n\n ngOnDestroy() {\n if (this.subscriptionVirtualEntityList) {\n this.subscriptionVirtualEntityList.unsubscribe();\n }\n if (this.subscriptionSelectedService) {\n this.subscriptionSelectedService.unsubscribe();\n }\n }\n\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle);\n this.currentPage = event.pageTitle;\n }\n }\n\n processVeList(veList) {\n this.virtualEntities = veList;\n this.dropdownOptions = this.virtualEntities.map((ve) => {\n const active = this.selectedService && this.selectedService.veId && this.selectedService.veId === ve.veId ? true : false;\n return { name: ve.name, postalCode: ve.postalCode, veId: ve.veId, veTypeId: ve.veTypeId, active }; // icon\n });\n\n if (!this.selectedService) {\n this.selectedService = veList[0];\n this.serviceSelectorSvc.setSelectedService(veList[0]);\n this.dropdownOptions[0].active = true;\n this.switchService(this.selectedService.veId);\n }\n }\n\n async switchService(veId) {\n const virtualEntity = await this.veService.getVirtualEntity(veId, false);\n this.serviceSelectorSvc.setSelectedService(virtualEntity);\n }\n\n setSelectedService(selectedService: tVeIdNameListing) {\n if (selectedService && selectedService.veId) {\n this.selectionChanged(selectedService, true);\n } else {\n console.warn('Selected Service Unexpected format');\n }\n }\n\n async selectionChanged(selectedService: any, refresh: boolean) {\n if (selectedService) {\n if (refresh == false) {\n this.veService.getVirtualEntityWithFullResources(selectedService.veId);\n }\n this.selectedService = selectedService;\n this.veService.setSelectedVirtualEntity(this.selectedService);\n }\n }\n getOtherPages() {\n const subPages = [];\n this.accMenu.pages.forEach((category) => {\n subPages.push(category.pages);\n });\n return subPages.flat().filter((p) => p.title != this.currentPage);\n }\n\n navigateToPage(path) {\n this.router.navigate([path]);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PropertyPagesComponent } from './property-pages.component';\nimport { AccountSideMenuModule } from 'src/app/components/account-side-menu/account-side-menu.module';\nimport { RouterModule } from '@angular/router';\n\n\n\n@NgModule({\n declarations: [PropertyPagesComponent],\n imports: [\n CommonModule, AccountSideMenuModule, RouterModule\n ],\n exports: [PropertyPagesComponent]\n})\nexport class PropertyPagesModule { }\n","export default \".property-passport h4, .htc .bi-question-circle, .tp-title {\\n color: #494666;\\n}\\n\\n.tp-card-title {\\n background-color: #f1f2ff;\\n}\\n\\n.property-passport .list-group-item {\\n border: none;\\n padding-left: 0px;\\n}\\n\\n.property-passport .section-one h6,\\n.property-passport .section-two h6,\\n.hlp h6, .htc h6 {\\n margin: 0px;\\n color: #A2A8CA;\\n}\\n\\n.section-two {\\n background-color: #fcfbfc;\\n padding: 5px;\\n}\\n\\n.list-group-item p {\\n color: #2b2b2b;\\n font-size: 1rem;\\n z-index: 4;\\n}\\n\\n.title-p {\\n color: #6b6b6b;\\n}\\n\\n.list-group-item {\\n background-color: transparent;\\n z-index: 4;\\n}\\n\\n.property-passport,\\n.htc-card {\\n border: 1px solid #edebeb;\\n}\\n\\n.section-one {\\n background-color: white;\\n padding: 5px;\\n}\\n\\n.sections-wrapper {\\n border-left: 2px solid #fdfdfd;\\n border-right: 2px solid #fdfdfd;\\n}\\n\\n.passport-id {\\n color: #9EABB8;\\n}\\n\\n.card-footer p {\\n color: #9EABB8;\\n}\\n\\nimg {\\n opacity: 0.3;\\n}\\n\\n.btn.btn-info {\\n margin: 5px;\\n}\\n\\n.btn, i:hover {\\n border: none;\\n}\\n\\nform .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wYWdlcy9wcm9wZXJ0eS1wYXNzcG9ydC9wcm9wZXJ0eS1wYXNzcG9ydC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvcHJvcGVydHktcGFzc3BvcnQvcHJvcGVydHktcGFzc3BvcnQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxjQUFBO0FDQ0o7O0FEQ0E7RUFDSSx5QkFBQTtBQ0VKOztBREdBO0VBQ0ksWUFBQTtFQUNBLGlCQUFBO0FDQUo7O0FER0E7OztFQUdJLFdBQUE7RUFDQSxjQUFBO0FDQUo7O0FER0E7RUFDSSx5QkFBQTtFQUNBLFlBQUE7QUNBSjs7QURHQTtFQUNJLGNBQUE7RUFDQSxlQUFBO0VBQ0EsVUFBQTtBQ0FKOztBREdBO0VBQ0ksY0FBQTtBQ0FKOztBREdBO0VBQ0ksNkJBQUE7RUFDQSxVQUFBO0FDQUo7O0FER0E7O0VBRUkseUJBQUE7QUNBSjs7QURJQTtFQUNJLHVCQUFBO0VBQ0EsWUFBQTtBQ0RKOztBRElBO0VBQ0ksOEJBQUE7RUFDQSwrQkFBQTtBQ0RKOztBRElBO0VBQ0ksY0FBQTtBQ0RKOztBRElBO0VBQ0ksY0FBQTtBQ0RKOztBRElBO0VBQ0ksWUFBQTtBQ0RKOztBRElBO0VBQ0ksV0FBQTtBQ0RKOztBREdBO0VBQ0ksWUFBQTtBQ0FKOztBREtJO0VBQ0ksMkJBQUE7QUNGUiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3Byb3BlcnR5LXBhc3Nwb3J0L3Byb3BlcnR5LXBhc3Nwb3J0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnByb3BlcnR5LXBhc3Nwb3J0IGg0LCAuaHRjIC5iaS1xdWVzdGlvbi1jaXJjbGUsIC50cC10aXRsZXtcbiAgICBjb2xvcjogIzQ5NDY2NlxufVxuLnRwLWNhcmQtdGl0bGV7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogICNmMWYyZmY7XG59XG5cblxuXG4ucHJvcGVydHktcGFzc3BvcnQgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHBhZGRpbmctbGVmdDogMHB4O1xufVxuXG4ucHJvcGVydHktcGFzc3BvcnQgLnNlY3Rpb24tb25lIGg2LFxuLnByb3BlcnR5LXBhc3Nwb3J0IC5zZWN0aW9uLXR3byBoNixcbi5obHAgaDYsIC5odGMgaDYgIHtcbiAgICBtYXJnaW46IDBweDtcbiAgICBjb2xvcjogI0EyQThDQVxufVxuXG4uc2VjdGlvbi10d28ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2ZiZmM7XG4gICAgcGFkZGluZzogNXB4O1xufVxuXG4ubGlzdC1ncm91cC1pdGVtIHAge1xuICAgIGNvbG9yOiAjMmIyYjJiO1xuICAgIGZvbnQtc2l6ZTogMS4wcmVtO1xuICAgIHotaW5kZXg6IDQ7XG59XG5cbi50aXRsZS1wIHtcbiAgICBjb2xvcjogcmdiKDEwNywgMTA3LCAxMDcpO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB6LWluZGV4OiA0O1xufVxuXG4ucHJvcGVydHktcGFzc3BvcnQsXG4uaHRjLWNhcmQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMzcsIDIzNSwgMjM1KTtcbn1cblxuXG4uc2VjdGlvbi1vbmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDVweDtcbn1cblxuLnNlY3Rpb25zLXdyYXBwZXIge1xuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgcmdiKDI1MywgMjUzLCAyNTMpO1xuICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkIHJnYigyNTMsIDI1MywgMjUzKTtcbn1cblxuLnBhc3Nwb3J0LWlkIHtcbiAgICBjb2xvcjogIzlFQUJCODtcbn1cblxuLmNhcmQtZm9vdGVyIHAge1xuICAgIGNvbG9yOiAjOUVBQkI4O1xufVxuXG5pbWcge1xuICAgIG9wYWNpdHk6IDAuMztcbn1cblxuLmJ0bi5idG4taW5mbyB7XG4gICAgbWFyZ2luOiA1cHg7XG59XG4uYnRuLCBpOmhvdmVyIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICBcbiB9XG4gZm9ybSB7XG5cbiAgICAubmctdG91Y2hlZC5uZy1pbnZhbGlkIHtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xuICAgIH1cbiAgICAvLyAubmctdG91Y2hlZC5uZy1pbnZhbGlkOm5vdCgjbXNjcy1udW1iZXIpIHtcbiAgICAvLyAgICAgYm9yZGVyOiBzb2xpZCByZWQgMC41cHg7XG4gICAgLy8gfVxufSIsIi5wcm9wZXJ0eS1wYXNzcG9ydCBoNCwgLmh0YyAuYmktcXVlc3Rpb24tY2lyY2xlLCAudHAtdGl0bGUge1xuICBjb2xvcjogIzQ5NDY2Njtcbn1cblxuLnRwLWNhcmQtdGl0bGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMmZmO1xufVxuXG4ucHJvcGVydHktcGFzc3BvcnQgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwcHg7XG59XG5cbi5wcm9wZXJ0eS1wYXNzcG9ydCAuc2VjdGlvbi1vbmUgaDYsXG4ucHJvcGVydHktcGFzc3BvcnQgLnNlY3Rpb24tdHdvIGg2LFxuLmhscCBoNiwgLmh0YyBoNiB7XG4gIG1hcmdpbjogMHB4O1xuICBjb2xvcjogI0EyQThDQTtcbn1cblxuLnNlY3Rpb24tdHdvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZmJmYztcbiAgcGFkZGluZzogNXB4O1xufVxuXG4ubGlzdC1ncm91cC1pdGVtIHAge1xuICBjb2xvcjogIzJiMmIyYjtcbiAgZm9udC1zaXplOiAxcmVtO1xuICB6LWluZGV4OiA0O1xufVxuXG4udGl0bGUtcCB7XG4gIGNvbG9yOiAjNmI2YjZiO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHotaW5kZXg6IDQ7XG59XG5cbi5wcm9wZXJ0eS1wYXNzcG9ydCxcbi5odGMtY2FyZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlZGViZWI7XG59XG5cbi5zZWN0aW9uLW9uZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwYWRkaW5nOiA1cHg7XG59XG5cbi5zZWN0aW9ucy13cmFwcGVyIHtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZmRmZGZkO1xuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjZmRmZGZkO1xufVxuXG4ucGFzc3BvcnQtaWQge1xuICBjb2xvcjogIzlFQUJCODtcbn1cblxuLmNhcmQtZm9vdGVyIHAge1xuICBjb2xvcjogIzlFQUJCODtcbn1cblxuaW1nIHtcbiAgb3BhY2l0eTogMC4zO1xufVxuXG4uYnRuLmJ0bi1pbmZvIHtcbiAgbWFyZ2luOiA1cHg7XG59XG5cbi5idG4sIGk6aG92ZXIge1xuICBib3JkZXI6IG5vbmU7XG59XG5cbmZvcm0gLm5nLXRvdWNoZWQubmctaW52YWxpZCB7XG4gIGJvcmRlcjogc29saWQgI2UzMmI0ZCAwLjVweDtcbn0iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Subscription } from 'rxjs';\nimport { EpcInfoModalComponent } from 'src/app/components/epc-info-modal/epc-info-modal.component';\nimport { NgcCookieConsentService } from 'ngx-cookieconsent';\nimport { HtcModalComponent } from 'src/app/components/htc-modal/htc-modal.component';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\nimport { Router } from '@angular/router';\nimport { HpJourneyService } from 'src/app/services/hp-journey.service';\n\n@Component({\n selector: 'app-property-passport',\n templateUrl: './property-passport.component.html',\n styleUrls: ['./property-passport.component.scss', '../pages.component.scss'], // shared css file\n})\nexport class PropertyPassportComponent implements OnInit {\n @Input() heatPumpJourneyModalView: boolean;\n @Output() modal: EventEmitter = new EventEmitter();\n pageTitle: string = 'Property Passport';\n passport: any;\n generatingPassport: any;\n loading: boolean = false;\n errorMessage: string = '';\n loadingMessage: string = '';\n isHtmlError: boolean;\n requestManualUPRN: boolean;\n errorCode: number;\n error = false;\n epcErrorMessage: string;\n epcSuccessMessage: string;\n epcError: boolean \n propertyPassportDefinition;\n htcDefinition;\n virtualEntities: any[];\n subscriptionVirtualEntityList: Subscription;\n subscriptionSelectedService: Subscription;\n showGenerateHTCButton: boolean = false;\n cookieClass: boolean = false;\n hlpValue;\n formInfo: FormGroup;\n selectedService: any;\n dropdownOptions: any[] = [];\n uprnForm: FormGroup;\n uprnFormError: boolean = false;\n\n constructor(\n private glowService: GlowService,\n private veService: VirtualEntityService,\n private modalService: NgbModal,\n private ccService: NgcCookieConsentService,\n private formBuilder: FormBuilder,\n private serviceSelectorSvc: ServiceSelectorSvc,\n private strapiService: StrapiService,\n private formValidationService: FormValidationService,\n private router: Router,\n private hpJourneyService: HpJourneyService\n ) {\n this.formInfo = this.formBuilder.group({\n selectedService: ['', Validators.required],\n });\n\n this.uprnForm = this.formBuilder.group({\n uprn: ['', [Validators.required, Validators.maxLength(12), Validators.maxLength(12), Validators.pattern('^[0-9]*$')]],\n });\n\n this.loading = true;\n this.subscriptionVirtualEntityList = this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n if (veList && Array.isArray(veList) && veList.length > 0) {\n this.virtualEntities = veList;\n this.processVeList(veList);\n }\n });\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n this.getPropertyPassport();\n });\n\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n this.cookieClass = true;\n }\n }\n\n ngOnInit() {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n if (this.selectedService && this.selectedService.veId) {\n this.getPropertyPassport();\n }\n this.veService.findVirtualEntities();\n this.getPropertyPassportTerm();\n this.getHTCTerm();\n }\n\n ngAfterContentChecked() {\n if (this.dropdownOptions.length) {\n this.selectedService = this.dropdownOptions.find((x) => x.active == true);\n this.formInfo.setValue({ selectedService: this.selectedService.name });\n }\n }\n\n ngOnDestroy() {\n if (this.subscriptionVirtualEntityList) {\n this.subscriptionVirtualEntityList.unsubscribe();\n }\n }\n\n getHTCTerm() {\n this.strapiService.getOneContent('glossary-terms', 10, []).then((t) => (this.htcDefinition = t.attributes.shortDefinition));\n }\n\n getPropertyPassportTerm() {\n this.strapiService.getOneContent('glossary-terms', 31, []).then((t) => (this.propertyPassportDefinition = t.attributes.definition));\n }\n\n open() {\n const selectedVe = this.virtualEntities.find((ve) => ve.veId == this.selectedService.veId);\n const modalRef = this.modalService.open(HtcModalComponent, { scrollable: true, centered: true, size: 'lg' });\n modalRef.componentInstance.propertyPassportId = this.passport.propertyPassportId;\n modalRef.componentInstance.epc = this.getCurrentEpc(this.passport.epcRecords);\n modalRef.componentInstance.veId = this.selectedService.veId;\n modalRef.componentInstance.resources = selectedVe.resources;\n modalRef.componentInstance.updatePassport.subscribe((passport) => {\n if (passport) {\n this.passport = this.formatPassportToDisplay(passport);\n }\n modalRef.dismiss();\n });\n }\n\n submitManualUPRN() {\n if (!this.uprnForm.valid) {\n this.formValidationService.markFormGroup(this.uprnForm, 'touched');\n this.uprnFormError = true;\n } else {\n this.requestManualUPRN = false;\n this.loadingMessage = '';\n this.loading = true;\n this.generatingPassport = true;\n this.error = false;\n const uprn = this.uprnForm.value.uprn;\n const data = {\n uprn: uprn,\n };\n this.glowService.manualCreatePropertyPassport(this.selectedService.veId, data).subscribe(\n (resp) => {\n this.passport = this.formatPassportToDisplay(resp);\n this.loading = false;\n this.loadingMessage = '';\n this.generatingPassport = false;\n },\n (err) => {\n this.errorMessage = err && err.error && err.error.error;\n\n this.requestManualUPRN = err && err.error && err.requestManualUPRN;\n this.isHtmlError = err && err.error && err.isHtmlError;\n this.errorCode = err && err.error && err.error.errorCode;\n this.loading = false;\n this.loadingMessage = '';\n this.generatingPassport = false;\n this.error = true;\n console.warn(err);\n }\n );\n }\n }\n createPropertyPassport() {\n this.loadingMessage = 'Creating your property passport...';\n this.loading = true;\n this.generatingPassport = true;\n this.sendGAEvent({ event: 'createPropertyPassport' });\n this.glowService.createPropertyPassport(this.selectedService.veId).subscribe(\n (resp) => {\n this.passport = this.formatPassportToDisplay(resp);\n this.hpJourneyService.getPropertyPassport();\n\n this.loading = false;\n this.loadingMessage = '';\n this.generatingPassport = false;\n },\n (err) => {\n this.errorMessage = err && err.error && err.error.error;\n this.requestManualUPRN = err && err.error && err.error.requestManualUPRN;\n this.isHtmlError = err && err.error && err.error.isHtmlError;\n this.errorCode = err && err.error && err.error.errorCode;\n this.loading = false;\n this.loadingMessage = '';\n this.generatingPassport = false;\n this.error = true;\n console.warn(err);\n }\n );\n }\n\n getPropertyPassport() {\n this.loadingMessage = 'Retrieving your property passport...';\n this.loading = true;\n delete this.passport;\n this.glowService.getPropertyPassport(this.selectedService.veId).subscribe(\n (resp) => {\n if (resp.valid) {\n this.passport = this.formatPassportToDisplay(resp);\n this.hpJourneyService.getPropertyPassport();\n\n // console.log(resp)\n }\n this.loading = false;\n this.loadingMessage = '';\n this.generatingPassport = false;\n },\n (err) => {\n this.errorMessage = err && err.error && err.error.error;\n this.errorCode = err && err.error && err.error.errorCode;\n this.loading = false;\n this.loadingMessage = '';\n this.generatingPassport = false;\n this.error = true;\n console.warn(err);\n }\n );\n }\n\n refreshEPC() {\n console.log(this.selectedService.veId);\n this.glowService.refreshEPC(this.selectedService.veId).subscribe(resp => {\n if (!resp.valid){\n this.epcErrorMessage = resp.error\n } else {\n this.getPropertyPassport()\n this.epcSuccessMessage = 'EPC refreshed successfully'\n } \n console.log(resp, 'RESP');\n }, err => {\n if (err.error.error && err.error.errorCode == 401) {\n this.epcErrorMessage = err.error.error \n this.epcError = true\n // this.epcError = true;\n } else { \n this.epcError = true\n this.epcErrorMessage = 'An error occured'\n }\n\n })\n }\n formatPassportToDisplay(passport) {\n let formatted: any = { ...passport };\n formatted.address.address = this.formatAddress(passport.address.address);\n formatted.currentEpc = this.getCurrentEpc(passport.epcRecords);\n formatted.currentHtc = this.getCurrentHtc(passport.htcRecords);\n formatted.currentGSME = this.getCurrentGSME(passport.meters);\n formatted.currentESME = this.getCurrentESME(passport.meters);\n return formatted;\n }\n\n getCurrentGSME(meters) {\n const flattened = meters.flat();\n const gsmeMeters = flattened.filter((meter) => meter.DeviceType == 'GSME');\n return gsmeMeters.length ? gsmeMeters.sort((a, b) => new Date(b.DateCommissioned).valueOf() - new Date(a.DateCommissioned).valueOf())[0] : null;\n }\n\n getCurrentESME(meters) {\n const flattened = meters.flat();\n const esmeMeters = flattened.filter((meter) => meter.DeviceType == 'ESME');\n return esmeMeters.length ? esmeMeters.sort((a, b) => new Date(b.DateCommissioned).valueOf() - new Date(a.DateCommissioned).valueOf())[0] : null;\n }\n\n getCurrentEpc(epcRecords) {\n return [...epcRecords].sort((a, b) => new Date(b.lodgement_date).valueOf() - new Date(a.lodgement_date).valueOf())[0];\n }\n\n getCurrentHtc(htcRecords) {\n const response = htcRecords && htcRecords.length > 0 ? htcRecords.sort((a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf())[0] : null;\n this.showGenerateHTCButton = !response || (response && response.date && new Date().getTime() > new Date(new Date(response.date).getTime() + 86400000).getTime()) ? true : false; // hide if htc generated in last 24 hours\n this.hlpValue = response && response.hlp;\n // console.log(response)\n return response;\n }\n\n formatAddress(address: string) {\n //remove multiple commas\n return address\n .split(',')\n .filter((fragment) => fragment)\n .join(',');\n }\n\n openHTCModal() {\n const modalRef = this.modalService.open(EpcInfoModalComponent, { scrollable: true, centered: true, size: 'lg' });\n modalRef.componentInstance.propertyPassportId = this.passport.propertyPassportId;\n modalRef.componentInstance.veId = this.selectedService.veId;\n modalRef.componentInstance.resources = this.selectedService.resources;\n }\n\n sendGAEvent(params) {\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n window.dataLayer.push(params);\n }\n }\n\n processVeList(veList) {\n this.virtualEntities = veList;\n this.dropdownOptions = this.virtualEntities.map((ve) => {\n const active = this.selectedService && this.selectedService.veId && this.selectedService.veId === ve.veId ? true : false;\n return { name: ve.name, veId: ve.veId, veTypeId: ve.veTypeId, active }; // icon\n });\n\n if (!this.selectedService) {\n this.selectedService = veList[0];\n this.dropdownOptions[0].active = true;\n }\n }\n\n async switchService(event) {\n this.loading = true;\n this.error = false;\n const match = this.dropdownOptions.find((x) => {\n return x.name == event.name;\n });\n if (match) {\n this.dropdownOptions.map((x) => (x.active = false));\n match.active = true;\n this.selectedService = match;\n const virtualEntity = await this.veService.getVirtualEntity(this.selectedService.veId, false);\n this.serviceSelectorSvc.setSelectedService(virtualEntity);\n }\n }\n\n checkFormValidity(formControlName, translateKey?) {\n return this.formValidationService.checkFormValidity(this.uprnForm, formControlName);\n }\n navigatePropertyPassportPage() {\n this.modal.emit('close');\n this.router.navigateByUrl('/pages/account/property-passport');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PropertyPassportComponent } from './property-passport.component';\nimport { AccountSideMenuModule } from 'src/app/components/account-side-menu/account-side-menu.module';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\nimport { EpcCertificateModule } from 'src/app/components/epc-certificate/epc-certificate.module';\nimport { HtcModalModule } from 'src/app/components/htc-modal/htc-modal.module';\nimport { HeatLossParameterScaleModule } from 'src/app/components/heat-loss-parameter-scale/heat-loss-parameter-scale.module';\n\nimport { HtcCardModule } from 'src/app/components/htc-card/htc-card.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormValidationMessageModule } from 'src/app/components/form-validation-message/form-validation-message.module';\n\n@NgModule({\n declarations: [PropertyPassportComponent],\n imports: [\n CommonModule,\n SharedModule,\n AccountSideMenuModule,\n SpinnerModule,\n EpcCertificateModule,\n HtcModalModule,\n HeatLossParameterScaleModule,\n HtcCardModule,\n FormValidationMessageModule\n ],\n exports: [PropertyPassportComponent]\n})\n\nexport class PropertyPassportModule { }","export default \".container {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n}\\n\\n.heartbeat {\\n position: absolute;\\n background-color: #5f6dbf;\\n border-radius: 40px;\\n width: 3.75rem;\\n height: 3.75rem;\\n opacity: 0.75;\\n animation: ping 2s cubic-bezier(0, 0, 0.2, 1) 1;\\n}\\n\\n@keyframes ping {\\n 75%, 100% {\\n transform: scale(2);\\n opacity: 0;\\n }\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .heartbeat {\\n display: none;\\n animation: none;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wYWdlcy9zY2hlbWF0aWNzL3NjaGVtYXRpY3MuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3BhZ2VzL3NjaGVtYXRpY3Mvc2NoZW1hdGljcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNFLGFBQUE7RUFDQSx1QkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUNBRjs7QURHQTtFQUNFLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSxtQkFBQTtFQUNBLGNBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtFQUNBLCtDQUFBO0FDQUY7O0FER0E7RUFDRTtJQUVFLG1CQUFBO0lBQ0EsVUFBQTtFQ0RGO0FBQ0Y7O0FER0E7RUFDRTtJQUNFLGFBQUE7SUFDQSxlQUFBO0VDREY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3NjaGVtYXRpY3Mvc2NoZW1hdGljcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vd3d3LmFtaXRtZXJjaGFudC5jb20vcGluZy1hbmltYXRpb24td2l0aC1taW5pbWFsLWNzcy9cbi5jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uaGVhcnRiZWF0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWY2ZGJmO1xuICBib3JkZXItcmFkaXVzOiA0MHB4O1xuICB3aWR0aDogMy43NXJlbTtcbiAgaGVpZ2h0OiAzLjc1cmVtO1xuICBvcGFjaXR5OiAwLjc1O1xuICBhbmltYXRpb246IHBpbmcgMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkgMTtcbn1cblxuQGtleWZyYW1lcyBwaW5nIHtcbiAgNzUlLFxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDIpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5oZWFydGJlYXQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICB9XG59XG4iLCIuY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmhlYXJ0YmVhdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVmNmRiZjtcbiAgYm9yZGVyLXJhZGl1czogNDBweDtcbiAgd2lkdGg6IDMuNzVyZW07XG4gIGhlaWdodDogMy43NXJlbTtcbiAgb3BhY2l0eTogMC43NTtcbiAgYW5pbWF0aW9uOiBwaW5nIDJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIDE7XG59XG5cbkBrZXlmcmFtZXMgcGluZyB7XG4gIDc1JSwgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgyKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuaGVhcnRiZWF0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxufSJdfQ== */\"","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { Utils } from 'src/utils';\n\ndeclare var bootstrap: any;\n\n@Component({\n selector: 'app-schematics',\n templateUrl: './schematics.component.html',\n styleUrls: ['./schematics.component.scss'],\n})\nexport class SchematicsComponent implements OnInit {\n pageTitle = 'Heating by Room';\n currentPage = 'Heating by Room';\n pingSubscription: Subscription;\n shouldPing: boolean = false;\n statusToPing: string;\n status: string;\n\n sideMenuItems = [\n { url: 'in-progress', icon: 'bi bi-clock-history', title: 'In Progress' },\n { url: 'complete', icon: 'bi bi-file-earmark-check', title: 'Completed' },\n ];\n\n constructor(private schematicsService: SchematicsService, private router: Router) {}\n\n ngOnInit() {}\n\n ngOnDestroy() {\n if (this.pingSubscription) this.pingSubscription.unsubscribe();\n }\n\n ngAfterViewInit() {\n // Bootstrap tooltip initialization\n const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"tooltip\"]'));\n const tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {\n return new bootstrap.Tooltip(tooltipTriggerEl);\n });\n }\n\n async hideAnimationAfterStop() {\n const heartbeat = await Utils.waitForElemById('heartbeat');\n if (!heartbeat) return;\n // Add an event listener to the animation end event\n heartbeat.addEventListener('animationend', () => {\n // Set display to none when animation stops\n // heartbeat.style.display = 'none';\n this.shouldPing = false;\n });\n }\n\n async createNewSchematic() {\n // note on versioning: we are currently on version 2.0 of the schematics document, earlier versions did not have: version, completionStatus, units\n const emptySchematic = await this.schematicsService.createSchematicsDocument({ data: { floors: [], totalFloorArea: 0, totalHeatingPowerOutput: 0, heatingSystem: {}, version: 2.0 } });\n this.router.navigate(['/pages/tools/heating-by-room/schematic/' + emptySchematic.documentId], { queryParams: { edit: true } });\n\n // remove tooltip\n const tooltips = document.querySelectorAll('[data-bs-toggle=\"tooltip\"]');\n tooltips.forEach((tooltip) => {\n const tooltipInstance = bootstrap.Tooltip.getInstance(tooltip);\n if (tooltipInstance) tooltipInstance.dispose();\n });\n }\n\n onRouterOutletActivate(event: any) {\n this.status = event.statusToFilterBy;\n console.log('onRouterOutletActivate', this.status);\n this.pingSubscription = event.ping.subscribe(async (ping) => {\n this.shouldPing = ping.shouldPing;\n this.statusToPing = ping.statusToPing;\n if (this.shouldPing) {\n await this.hideAnimationAfterStop();\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SchematicsComponent } from './schematics.component';\nimport { AccountSideMenuModule } from 'src/app/components/account-side-menu/account-side-menu.module';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { FloorModule } from 'src/app/components/floor/floor.module';\nimport { FloorComponent } from 'src/app/components/floor/floor.component';\nimport { RadiatorSchematicModule } from 'src/app/components/radiator-schematic/radiator-schematic.module';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\nimport { RadiatorSchematicCardModule } from 'src/app/components/radiator-schematic-card/radiator-schematic-card.module';\nimport { SchematicsRouting } from './schematics.routing';\nimport { SchematicsHomepageStatusModule } from 'src/app/components/schematics-homepage-status/schematics-homepage-status.module';\n\n@NgModule({\n declarations: [SchematicsComponent],\n imports: [CommonModule, AccountSideMenuModule, NgbModule, FloorModule, RadiatorSchematicModule, SpinnerModule, RadiatorSchematicCardModule, SchematicsRouting, SchematicsHomepageStatusModule],\n exports: [SchematicsComponent],\n entryComponents: [FloorComponent],\n})\nexport class SchematicsModule {}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { SchematicsComponent } from './schematics.component';\nimport { SchematicsHomepageStatusComponent } from 'src/app/components/schematics-homepage-status/schematics-homepage-status.component';\n\nexport const routes: Routes = [\n {\n path: '',\n component: SchematicsComponent,\n children: [\n {\n path: ':status',\n component: SchematicsHomepageStatusComponent,\n },\n { path: '', redirectTo: 'in-progress', pathMatch: 'full' },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class SchematicsRouting {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3NldHRpbmdzL2FjY291bnQtc2V0dGluZ3MvYWNjb3VudC1zZXR0aW5ncy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { tAccount } from 'src/app/services/glow.typings';\n\n@Component({\n selector: 'app-account-settings',\n templateUrl: './account-settings.component.html',\n styleUrls: ['./account-settings.component.scss', '../../pages.component.scss']\n})\nexport class AccountSettingsComponent implements OnInit {\n pageTitle = \"Account settings\"\n currentPage = \"\";\n pageId: string = \"Account Overview\"\n account: tAccount\n constructor(private glowService: GlowService,\n private router: Router) { }\n\n ngOnInit() {\n const accountId = localStorage.getItem(\"id\");\n this.getAccount(accountId)\n }\n\n getAccount(accountId: string) {\n this.glowService.getAccount().subscribe(account => {\n this.account = account\n }, error => {\n console.warn(\"An error occurred when retrieving account\");\n console.warn(error)\n });\n }\n\n logOut() {\n this.glowService.logout().subscribe((resp) => {\n this.router.navigateByUrl('/login');\n }, (err) => {\n console.warn(err)\n })\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccountSettingsComponent } from './account-settings.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [AccountSettingsComponent],\n imports: [\n CommonModule\n ],\n exports: [AccountSettingsComponent]\n})\nexport class AccountSettingsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3NldHRpbmdzL3NldHRpbmdzLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss', '../pages.component.scss']\n})\nexport class SettingsComponent implements OnInit {\n pageTitle = \"Settings\"\n currentPage = 'Account settings';\n pages = [\n { path: '/pages/account/settings/account-settings', title: 'Account settings', urlPath: 'account-settings' },\n { path: '/pages/account/settings/properties', title: 'Properties and meters', urlPath: 'properties' },\n { path: '/pages/account/settings/subscriptions', title: 'Subscriptions', urlPath: 'subscriptions' },\n\n\n ]\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable()\n\n constructor() { }\n\n ngOnInit() {\n }\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle)\n this.currentPage = event.pageTitle;\n }\n // // console.log(\"EVENT\",event);\n }\n isCurrentPage(page) {\n return page.title == this.currentPage;\n }\n\n getOtherPages() {\n return this.pages.filter(p => p.title != this.currentPage)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SettingsComponent } from './settings.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n@NgModule({\n declarations: [SettingsComponent],\n imports: [SharedModule, CommonModule],\n exports: [SettingsComponent],\n})\nexport class SettingsModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3NldHRpbmdzL3NpdGVzL3NpdGVzLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\nimport { Validators, FormGroup, FormControl } from '@angular/forms';\nimport { ResourceTypeConfigService } from 'src/app/services/configuration.service';\nimport { tResourceTypeMapping } from 'src/app/services/configuration.typings';\nimport { tLoadingElement } from 'src/app/services/app-config.typings';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { tVerificationStatus } from 'src/app/services/glow.typings';\nimport { any } from 'core-js/fn/promise';\nimport { DateFormatService } from 'src/app/services/date-format.service';\nimport { MeterPointVerificationConsentManagementService } from 'src/app/services/meter-point-verification-consent-management.service';\nimport { SetupSmartMeterModalComponent } from 'src/app/components/setup-smart-meter-modal/setup-smart-meter-modal.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'app-sites',\n templateUrl: './sites.component.html',\n styleUrls: ['./sites.component.scss'],\n})\nexport class SitesComponent implements OnInit {\n veNameForm: FormGroup;\n veList: any;\n pageTitle: string = 'Properties and meters';\n loading: boolean = true;\n groupResource: any;\n VEsToDisplay: any = [];\n resourceIdArray: any[];\n dimension: string = 'energy';\n resourceTypeMapping: tResourceTypeMapping;\n subscriptionVirtualEntityList: Subscription;\n loadObj: tLoadingElement;\n isUpdating: any;\n saved: boolean = false;\n meterStatuses: Array;\n requiresConsentUpdate: boolean = false;\n verificationStatusSubscription: Subscription;\n verificationStatus: tVerificationStatus;\n expiredVerificationStatus = [];\n meterPointRequiringRenewal = [];\n meterPointDoNotRequireRenewal = [];\n errorMessage;\n constructor(\n private glowService: GlowService,\n private uiConfigService: CustomUIConfigService,\n private resourceTypeConfigService: ResourceTypeConfigService,\n private veService: VirtualEntityService,\n private dateFormatService: DateFormatService,\n private modalService: NgbModal,\n private meterPointVerificationConsentSvc: MeterPointVerificationConsentManagementService,\n private route: ActivatedRoute\n ) {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(false);\n this.resourceTypeMapping = this.resourceTypeConfigService.loadResourceTypeMappings();\n\n this.subscriptionVirtualEntityList = this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n if (veList && Array.isArray(veList)) {\n this.VEsToDisplay = [];\n this.loading = false;\n this.veList = veList;\n this.veList.map(async (ve) => {\n this.VEsToDisplay.push({ veId: ve.veId, name: ve.name });\n ve.resources.map(async (resource) => {\n if (this.resourceTypeMapping.dimension[this.dimension].indexOf(resource.resourceTypeId) > -1) {\n const device = await this.glowService.getResourceDevice(resource.resourceId).toPromise();\n resource.hardwareId = device.hardwareId;\n }\n });\n });\n this.initIsUpdating();\n this.createFormGroup();\n }\n });\n this.verificationStatusSubscription = this.meterPointVerificationConsentSvc.meters.subscribe((resp) => {\n console.log(resp);\n this.verificationStatus = resp;\n this.processVerificationStatus();\n });\n }\n ngOnInit() {\n this.getVerificationStatus();\n this.veService.findVirtualEntities();\n }\n\n initIsUpdating() {\n this.isUpdating = {};\n this.VEsToDisplay.forEach((ve) => {\n this.isUpdating[ve.veId] = { name: false };\n });\n }\n\n createFormGroup() {\n const group: any = {};\n this.VEsToDisplay.forEach((ve) => {\n group[ve.veId] = new FormControl(ve.name || '', Validators.required);\n });\n this.veNameForm = new FormGroup(group);\n }\n\n showUIForm(veId, attribute, isUpdatingAttribute) {\n this.isUpdating[veId][attribute] = isUpdatingAttribute;\n }\n\n async updateVEName(ve) {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(true);\n const updateResponse = await this.glowService.updateVirtualEntity(ve.veId, { name: this.veNameForm.controls[ve.veId].value }).toPromise();\n if (updateResponse) {\n this.veList = this.veList.map((ve) => {\n if (ve.veId === updateResponse.veId) {\n ve.name = updateResponse.name;\n }\n return ve;\n });\n }\n this.showUIForm(ve.veId, 'name', false);\n this.showSavedAlert();\n this.loadObj = { ...this.loadObj, loading: false, loaded: true };\n }\n\n showSavedAlert() {\n this.saved = true;\n setTimeout(() => {\n this.saved = false;\n }, 2000);\n }\n\n async updateName() {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(true);\n\n const arrayOfObj = Object.entries(this.veNameForm.controls);\n\n if (arrayOfObj.length > 0) {\n const updateResponse = [];\n const lastResponse = await arrayOfObj.reduce((accumulatorPromise, ve) => {\n return accumulatorPromise.then(async (response) => {\n if (response != null) updateResponse.push(response);\n return this.glowService.updateVirtualEntity(ve[0], { name: this.veNameForm.controls[ve[0]].value }).toPromise();\n });\n }, Promise.resolve());\n if (lastResponse) updateResponse.push(lastResponse);\n\n if (updateResponse) {\n this.loadObj = { ...this.loadObj, loading: false, loaded: true };\n }\n }\n }\n\n getVerificationStatus() {\n this.meterPointVerificationConsentSvc.getVerificationStatus();\n }\n\n updateMeters(e) {\n this.getVerificationStatus();\n }\n\n processVerificationStatus() {\n this.expiredVerificationStatus = [];\n this.meterPointRequiringRenewal = [];\n this.meterPointDoNotRequireRenewal = [];\n console.log(this.verificationStatus);\n this.verificationStatus.meterPointVerification.forEach((elem) => {\n if (elem.isVerified) {\n const prettyIsValidUntil = this.dateFormatService.fullDateFormatNoSeconds(new Date(elem.isValidUntil));\n const requiresConsentUpdate = this.meterPointVerificationConsentSvc.checkIfMeterPointConsentRefreshIsRequired(elem);\n this.isPastValidUntilDate(new Date(elem.isValidUntil));\n if (requiresConsentUpdate === true) {\n this.meterPointRequiringRenewal.push({ ...elem, requiresConsentUpdate, loadObj: this.uiConfigService.initialiseLoadingBooleans(false), prettyIsValidUntil });\n // console.log(this.meterPointRequiringRenewal, 'requiring renewal')\n } else if (!requiresConsentUpdate && this.isPastValidUntilDate(new Date(elem.isValidUntil))) {\n this.expiredVerificationStatus.push({ ...elem, loadObj: this.uiConfigService.initialiseLoadingBooleans(false), prettyIsValidUntil });\n // console.log(this.expiredVerificationStatus)\n } else {\n this.meterPointDoNotRequireRenewal.push({ ...elem, loadObj: this.uiConfigService.initialiseLoadingBooleans(false), prettyIsValidUntil });\n // console.log(this.meterPointDoNotRequireRenewal)\n }\n } else {\n this.expiredVerificationStatus.push({ ...elem });\n }\n console.log(this.expiredVerificationStatus);\n });\n\n // (this.expiredVerificationStatus)\n }\n\n isPastValidUntilDate(validUntilDate) {\n const today = new Date();\n if (today > validUntilDate) {\n return true;\n } else false;\n }\n\n openSetUpModal() {\n const modalRef = this.modalService.open(SetupSmartMeterModalComponent, {\n scrollable: true,\n backdrop: 'static',\n centered: true,\n size: 'xl',\n });\n modalRef.componentInstance.parentActivatedRoute = this.route\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SitesComponent } from './sites.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\nimport { ConsentMeterCardModule } from 'src/app/components/consent-meter-card/consent-meter-card.module';\nimport { SetupSmartMeterModalModule } from 'src/app/components/setup-smart-meter-modal/setup-smart-meter-modal.module';\nimport { SetupSmartMeterModule } from 'src/app/components/setup-smart-meter/setup-smart-meter.module';\n\n@NgModule({\n declarations: [SitesComponent],\n imports: [CommonModule, SharedModule, SpinnerModule, ConsentMeterCardModule, SetupSmartMeterModule],\n exports: [SitesComponent],\n})\nexport class SitesModule {}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3NldHRpbmdzL3N1YnNjcmlwdGlvbnMvc3Vic2NyaXB0aW9ucy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-subscriptions',\n templateUrl: './subscriptions.component.html',\n styleUrls: ['./subscriptions.component.scss']\n})\nexport class SubscriptionsComponent implements OnInit {\npageTitle=\"Subscriptions\"\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SubscriptionsComponent } from './subscriptions.component';\nimport { SystemIncidentSubscriptionManagementModule } from 'src/app/components/system-incident-subscription-management/system-incident-subscription-management.module';\n\n\n\n@NgModule({\n declarations: [SubscriptionsComponent],\n imports: [\n CommonModule, SystemIncidentSubscriptionManagementModule\n ],\n exports: [SubscriptionsComponent]\n})\nexport class SubscriptionsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3RlbXBlcmF0dXJlLXNlbnNvcnMvdGVtcGVyYXR1cmUtc2Vuc29ycy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, HostListener, OnInit } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { GlowService } from '../../services/glow.service';\nimport { VirtualEntityService } from '../../services/virtual-entity.service';\nimport { tLoadingElement } from '../../services/app-config.typings';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { CustomUIConfigService } from '../../services/custom-ui-config.service';\nimport { PicardService } from 'src/app/services/picard.service';\nimport { NgcCookieConsentService } from 'ngx-cookieconsent';\n\n@Component({\n selector: 'app-temperature-sensors',\n templateUrl: './temperature-sensors.component.html',\n styleUrls: ['./temperature-sensors.component.scss', '../pages.component.scss']\n})\n\nexport class TemperatureSensorsComponent implements OnInit {\n\n @HostListener('window:resize', []) onResize() {\n this.innerWidth = window.innerWidth;\n }\n\n private currentPageAnnouncer = new Subject();\n currentPage$ = this.currentPageAnnouncer.asObservable()\n\n subscriptionGroupResourceData: Subscription;\n subscriptionSensorVirtualEntityList: Subscription;\n subscriptionSelectedService: Subscription;\n\n noTemperatureSensorMessage: string = \"

    You don't have temperature sensor data. Visit our shop to buy a temperature sensor.

    Temperature sensors are used to generate your building fabric score.

    \"\n currentPage: string = \"\"\n pageTitle: string = \"Temperature sensors\"\n loading: boolean = true;\n loadObj: tLoadingElement;\n groupResource: any;\n sensorVEList: any;\n pages: any = [];\n selectedService: any;\n allVESensorList: any;\n innerWidth: number;\n cookieClass: boolean = false;\n\n constructor(\n private glowService: GlowService,\n private uiConfigService: CustomUIConfigService,\n private veService: VirtualEntityService,\n private serviceSelectorSvc: ServiceSelectorSvc,\n private picardService: PicardService,\n private ccService: NgcCookieConsentService\n ) {\n\n this.loadObj = this.uiConfigService.initialiseLoadingBooleans(false);\n\n this.subscriptionSensorVirtualEntityList = this.veService.sensorVirtualEntities$.subscribe(async (sensorList) => {\n if (sensorList && Array.isArray(sensorList)) {\n this.allVESensorList = sensorList;\n this.selectedService = this.serviceSelectorSvc.getSelectedService()\n if (this.allVESensorList && this.selectedService) {\n this.createSensorPages()\n }\n }\n });\n\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe(selectedService => {\n this.selectedService = selectedService\n if (this.allVESensorList && this.selectedService) {\n this.createSensorPages()\n }\n })\n\n this.subscriptionGroupResourceData = this.picardService.groupResourceData$.subscribe((groupResource) => {\n if (groupResource) {\n this.groupResource = groupResource;\n this.allVESensorList.map(async (resource) => {\n const match = this.groupResource.find((x) => x.resourceId == resource.resourceId);\n const device = await this.glowService.getResourceDevice(resource.resourceId).toPromise();\n resource.description = device.description;\n resource.hardwareId = device.hardwareId;\n resource.firstReadingTime = match.firstReadingTime;\n resource.downloadAvailable = match ? true : false;\n });\n }\n });\n\n if (this.ccService.hasAnswered() && this.ccService.hasConsented()) {\n this.cookieClass = true;\n }\n\n }\n\n ngOnInit() {\n this.veService.findVirtualEntities();\n this.onResize()\n }\n\n ngOnDestroy() {\n if (this.subscriptionSelectedService) {\n this.subscriptionSelectedService.unsubscribe();\n }\n if (this.subscriptionGroupResourceData) {\n this.subscriptionGroupResourceData.unsubscribe();\n }\n if (this.subscriptionSensorVirtualEntityList) {\n this.subscriptionSensorVirtualEntityList.unsubscribe();\n }\n }\n\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n this.currentPageAnnouncer.next(event.pageTitle)\n this.currentPage = event.pageTitle;\n this.sensorVEList = event.sensorVEList\n }\n }\n\n createSensorPages() {\n this.sensorVEList = this.allVESensorList.filter(sensor => {\n return this.selectedService.veChildren.find(x => x.veId == sensor.veId)\n });\n\n this.pages = [];\n\n this.sensorVEList.map(sensor => {\n const path = sensor.name.split(' ').join('-');\n this.pages.push(Object.assign({}, { path: `/pages/property/temperature-sensors/${path}`, title: sensor.name }))\n })\n this.currentPage = this.pages.length > 0 ? this.pages[0].title : ''\n }\n\n update(title) {\n this.currentPage = title\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TemperatureSensorsComponent } from './temperature-sensors.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { TemperatureSensorDataTableModule } from 'src/app/components/temperature-sensor-data-table/temperature-sensor-data-table.module';\nimport { AccountNoDataCardModule } from 'src/app/components/account-no-data-card/account-no-data-card.module';\n\n\n\n@NgModule({\n declarations: [TemperatureSensorsComponent],\n imports: [SharedModule, TemperatureSensorDataTableModule, CommonModule, AccountNoDataCardModule\n ]\n})\nexport class TemperatureSensorsModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3Rvb2xzLXBhZ2VzL3Rvb2xzLXBhZ2VzLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { SchematicsService } from 'src/app/services/schematics.service';\nimport { ServiceSelectorSvc } from 'src/app/services/service-selector.service';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\n\n@Component({\n selector: 'app-tools-pages',\n templateUrl: './tools-pages.component.html',\n styleUrls: ['./tools-pages.component.scss'],\n})\nexport class ToolsPagesComponent implements OnInit {\n titlePage: string = 'Glowmarkt Tools';\n currentPage: string = '';\n dropdownOptions: any[] = [];\n formInfo: FormGroup;\n loading: boolean = true;\n selectedService: any;\n virtualEntities: any[];\n subscriptionSelectedService: Subscription;\n subscriptionVirtualEntityList: Subscription;\n virtualEntityErrorSubscription: Subscription;\n\n errorMessage: string;\n error;\n\n constructor(private serviceSelectorSvc: ServiceSelectorSvc, private formBuilder: FormBuilder, private veService: VirtualEntityService, private schematicsService: SchematicsService) {\n this.formInfo = this.formBuilder.group({\n selectedService: ['', Validators.required],\n });\n this.subscriptionSelectedService = this.serviceSelectorSvc.serviceSet.subscribe((selectedService) => {\n this.selectedService = selectedService;\n });\n\n this.virtualEntityErrorSubscription = this.veService.virtualEntityError$.subscribe((error) => {\n this.loading = false;\n if (error) {\n this.errorMessage = \"There was an error loading your information. Please try again later. If the problem persists, please contact support at support@glowmarkt.com\";\n this.error = error;\n }\n });\n\n this.subscriptionVirtualEntityList = this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n this.loading = false;\n\n if (veList && Array.isArray(veList) && veList.length > 0) {\n this.virtualEntities = veList;\n // if (!passport) {\n // this.getPropertyPassport()\n // }\n this.processVeList(veList);\n }\n });\n }\n\n ngOnInit() {\n this.loading = true;\n this.veService.findVirtualEntities();\n // this.selectedService = this.serviceSelectorSvc.getSelectedService()\n }\n\n ngAfterContentChecked() {\n if (this.dropdownOptions.length) {\n this.selectedService = this.dropdownOptions.find((x) => x.active == true);\n this.formInfo.setValue({ selectedService: this.selectedService.name });\n }\n }\n processVeList(veList) {\n this.virtualEntities = veList;\n this.dropdownOptions = this.virtualEntities.map((ve) => {\n const active = this.selectedService && this.selectedService.veId && this.selectedService.veId === ve.veId ? true : false;\n return { name: ve.name, veId: ve.veId, veTypeId: ve.veTypeId, active }; // icon\n });\n\n if (!this.selectedService) {\n if (!this.serviceSelectorSvc.getSelectedService()) {\n this.serviceSelectorSvc.setSelectedService(veList[0]);\n this.selectedService = veList[0];\n this.dropdownOptions[0].active = true;\n } else {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n this.dropdownOptions.find((x) => x.veId === this.selectedService.veId).active = true;\n }\n }\n }\n async switchService(event) {\n const match = this.dropdownOptions.find((x) => {\n return x.name == event.name;\n });\n if (match) {\n this.dropdownOptions.map((x) => (x.active = false));\n match.active = true;\n this.selectedService = match;\n const virtualEntity = await this.veService.getVirtualEntity(this.selectedService.veId, false);\n this.serviceSelectorSvc.setSelectedService(virtualEntity);\n }\n }\n public onRouterOutletActivate(event: any) {\n if (event.pageTitle) {\n // this.currentPageAnnouncer.next(event.pageTitle)\n this.currentPage = event.pageTitle;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToolsPagesComponent } from './tools-pages.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { SpinnerModule } from 'src/app/components/spinner/spinner.module';\n\n\n\n@NgModule({\n declarations: [ToolsPagesComponent],\n imports: [\n SharedModule,\n CommonModule, SpinnerModule\n \n ],\n exports: [ToolsPagesComponent]\n})\nexport class ToolsPagesModule { }\n","export default \".display-3 {\\n font-weight: 400;\\n z-index: 10;\\n}\\n\\n.circle-right {\\n position: absolute;\\n width: 339px;\\n height: 342px;\\n left: -50px;\\n top: -136px;\\n border-radius: 50%;\\n background: #5E6DBF;\\n}\\n\\n.circle-left {\\n position: absolute;\\n width: 582px;\\n height: 566px;\\n left: 1300px;\\n top: -350px;\\n border-radius: 50%;\\n background: #5E6DBF;\\n}\\n\\n.card {\\n background: #fecf8e;\\n background: linear-gradient(270deg, rgba(254, 207, 142, 0.545277486) 10%, rgba(242, 99, 140, 0.5508797269) 51%);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvYWJvdXQtY29tbXVuaXR5L2Fib3V0LWNvbW11bml0eS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcHVibGljL2Fib3V0LWNvbW11bml0eS9hYm91dC1jb21tdW5pdHkuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxnQkFBQTtFQUNBLFdBQUE7QUNDSjs7QURVQTtFQUVJLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxXQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7QUNSSjs7QURXQTtFQUNJLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBR0EsbUJBQUE7QUNWSjs7QURjQTtFQUNJLG1CQUFBO0VBQ0EsK0dBQUE7QUNYSiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9hYm91dC1jb21tdW5pdHkvYWJvdXQtY29tbXVuaXR5LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmRpc3BsYXktMyB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICB6LWluZGV4OiAxMDtcbn1cblxuLmNvbnRhaW5lciB7XG4gICAgLy8gYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaGVhdHB1bXAuanBlZyk7XG4gICAgLy8gYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAvLyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7XG5cblxufVxuXG4uY2lyY2xlLXJpZ2h0IHtcblxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMzM5cHg7XG4gICAgaGVpZ2h0OiAzNDJweDtcbiAgICBsZWZ0OiAtNTBweDtcbiAgICB0b3A6IC0xMzZweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZDogIzVFNkRCRjtcbn1cblxuLmNpcmNsZS1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDU4MnB4O1xuICAgIGhlaWdodDogNTY2cHg7XG4gICAgbGVmdDogMTMwMHB4O1xuICAgIHRvcDogLTM1MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuXG4gICAgYmFja2dyb3VuZDogIzVFNkRCRjtcblxufVxuXG4uY2FyZCB7XG4gICAgYmFja2dyb3VuZDogcmdiKDI1NCwyMDcsMTQyKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCByZ2JhKDI1NCwyMDcsMTQyLDAuNTQ1Mjc3NDg1OTk0Mzk3NykgMTAlLCByZ2JhKDI0Miw5OSwxNDAsMC41NTA4Nzk3MjY4OTA3NTY0KSA1MSUpO1xufSIsIi5kaXNwbGF5LTMge1xuICBmb250LXdlaWdodDogNDAwO1xuICB6LWluZGV4OiAxMDtcbn1cblxuLmNpcmNsZS1yaWdodCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDMzOXB4O1xuICBoZWlnaHQ6IDM0MnB4O1xuICBsZWZ0OiAtNTBweDtcbiAgdG9wOiAtMTM2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogIzVFNkRCRjtcbn1cblxuLmNpcmNsZS1sZWZ0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogNTgycHg7XG4gIGhlaWdodDogNTY2cHg7XG4gIGxlZnQ6IDEzMDBweDtcbiAgdG9wOiAtMzUwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogIzVFNkRCRjtcbn1cblxuLmNhcmQge1xuICBiYWNrZ3JvdW5kOiAjZmVjZjhlO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCByZ2JhKDI1NCwgMjA3LCAxNDIsIDAuNTQ1Mjc3NDg2KSAxMCUsIHJnYmEoMjQyLCA5OSwgMTQwLCAwLjU1MDg3OTcyNjkpIDUxJSk7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { MetaTagsService } from 'src/app/services/meta-tags.service';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-about-community',\n templateUrl: './about-community.component.html',\n styleUrls: ['./about-community.component.scss'],\n})\nexport class AboutCommunityComponent implements OnInit {\n community: any;\n loading: boolean = true;\n constructor(\n private landingService: LandingService,\n private strapiService: StrapiService,\n private router: Router,\n private route: ActivatedRoute,\n private seoService: SeoService\n ) {\n route.params.subscribe((params) => {\n this.fetchCommunity(params.community).then((community) => {\n this.community = community;\n if (community) {\n this.seoService.configureSEO(\n Utils.removeHTMLFromString('About ' + community.attributes.name + ' Community'),\n Utils.removeHTMLFromString(community.attributes.description),\n `https://glowmarkt.com${this.router.url}`\n );\n }\n this.loading = false;\n });\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.seoService.resetSEOconfig();\n }\n\n async fetchCommunity(slug: string) {\n const community = await this.strapiService.getContentBySlug('communities', slug, []);\n\n return community;\n }\n}\n","export default \"#section-one {\\n background-image: url('glow-background-logo-orange.ad26751505d8c7e65d96.png');\\n}\\n\\n.overlay {\\n background-color: rgba(244, 244, 244, 0.679);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvYWJvdXQtdXMvYWJvdXQtdXMuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3B1YmxpYy9hYm91dC11cy9hYm91dC11cy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNRLDZFQUNHO0FDQVg7O0FESUE7RUFDSSw0Q0FBQTtBQ0RKIiwiZmlsZSI6InNyYy9hcHAvcHVibGljL2Fib3V0LXVzL2Fib3V0LXVzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI3NlY3Rpb24tb25lIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTpcbiAgICAgICAgICAgdXJsKCcuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2dsb3ctYmFja2dyb3VuZC1sb2dvLW9yYW5nZS5wbmcnKVxuICAgICAgICAgICAgICBcbiAgICAgICAgfVxuXG4ub3ZlcmxheXtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NCwgMjQ0LCAyNDQsIDAuNjc5KTtcblxufSIsIiNzZWN0aW9uLW9uZSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZ2xvdy1iYWNrZ3JvdW5kLWxvZ28tb3JhbmdlLnBuZ1wiKTtcbn1cblxuLm92ZXJsYXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NCwgMjQ0LCAyNDQsIDAuNjc5KTtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport { MetaTagsService } from 'src/app/services/meta-tags.service';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-about-us',\n templateUrl: './about-us.component.html',\n styleUrls: ['./about-us.component.scss'],\n})\nexport class AboutUsComponent implements OnInit {\n content;\n\n constructor(private strapiService: StrapiService, private router: Router, private seoService: SeoService) {\n this.getContent().then((content) => {\n this.content = content;\n // console.log(content)\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy(){\n this.seoService.resetSEOconfig()\n }\n\n async getContent() {\n const content = await this.strapiService.getGlowmarktAbout();\n this.seoService.configureSEO(\n Utils.removeHTMLFromString(\"About Glowmarkt\"),\n Utils.removeHTMLFromString(content.attributes.shortDescription),\n `https://glowmarkt.com${this.router.url}`\n );\n return content;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9hcnRpY2xlL2FydGljbGUuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { JsonLdService } from 'src/app/services/json-ld.service';\nimport { MetaTagsService } from 'src/app/services/meta-tags.service';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-article',\n templateUrl: './article.component.html',\n styleUrls: ['./article.component.scss'],\n})\nexport class ArticleComponent implements OnInit {\n article: any;\n url;\n loading: boolean = true;\n constructor(\n private route: ActivatedRoute,\n private strapiService: StrapiService,\n private router: Router,\n private seoService: SeoService\n ) {\n route.params.subscribe((params) => {\n this.getUrl();\n this.getArticle(params.article).then((article) => {\n this.article = article;\n if (article) {\n this.configureSEO(article);\n }\n this.loading = false;\n });\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.seoService.resetSEOconfig();\n }\n async getArticle(slug) {\n const article = await this.strapiService.getContentBySlug('articles', slug, ['tags', 'authors', 'blogs', 'articles', 'infographics']);\n return article;\n }\n\n configureSEO(article) {\n const title = Utils.removeHTMLFromString(article.attributes.title);\n const summary = Utils.removeHTMLFromString(article.attributes.summary);\n const authorNames = article.attributes.authors.data.map((author) => author.attributes.name);\n const image = this.article.attributes.displayImage.data\n ? this.strapiService.getFileFullUrl(this.article.attributes.displayImage.data.attributes.url)\n : '';\n const schema = JsonLdService.articleSchema(title, summary, [image], authorNames);\n this.seoService.configureSEO(title, summary, `https://glowmarkt.com${this.router.url}`, schema);\n }\n getUrl() {\n this.url = this.route.snapshot.url.map((segment) => segment.path);\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9ibG9nL2Jsb2cuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MetaTagsService } from 'src/app/services/meta-tags.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\nimport { Title } from '@angular/platform-browser';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { JsonLdService } from 'src/app/services/json-ld.service';\n\n@Component({\n selector: 'app-blog',\n templateUrl: './blog.component.html',\n styleUrls: ['./blog.component.scss'],\n})\nexport class BlogComponent implements OnInit {\n url!: Array;\n blog: any;\n loading:boolean=true\n constructor(\n private route: ActivatedRoute,\n private strapiService: StrapiService,\n private router: Router,\n private seoService: SeoService\n ) {\n route.params.subscribe((val) => {\n this.getUrl();\n this.getBlog(val.blog).then((blog) => {\n this.blog = blog;\n if(blog){\n this.configureSEO(blog);\n }\n this.loading=false\n });\n });\n }\n\n ngOnInit(): void {}\n ngOnDestroy() {\n this.seoService.resetSEOconfig();\n }\n\n getUrl() {\n this.url = this.route.snapshot.url.map((segment) => segment.path);\n }\n\n async getBlog(slug) {\n const blog = await this.strapiService.getContentBySlug('blogs', slug, ['tags', 'authors', 'blogs', 'articles', 'infographics']);\n return blog;\n }\n\n configureSEO(blog) {\n const title = Utils.removeHTMLFromString(blog.attributes.title);\n const summary = Utils.removeHTMLFromString(blog.attributes.summary);\n const authorNames = blog.attributes.authors.data.map((author) => author.attributes.name);\n const schema = JsonLdService.articleSchema(title, summary, [], authorNames);\n this.seoService.configureSEO(title, summary, `https://glowmarkt.com${this.router.url}`, schema);\n }\n}\n","export default \".first-section-wrapper {\\n background-image: url('wave (4).52527518ad122a2bcb6e.svg');\\n background-repeat: no-repeat;\\n background-position: bottom;\\n background-size: cover;\\n}\\n\\n.third-section {\\n background: #f6658e;\\n background: linear-gradient(0deg, #f6658e 0%, #ffb847 100%);\\n}\\n\\n.text {\\n font-family: \\\"Raleway\\\";\\n font-weight: 500;\\n}\\n\\n.image {\\n position: relative;\\n overflow: show;\\n}\\n\\n.electricity-image {\\n z-index: 3 !important;\\n}\\n\\n.fourth-section {\\n background-image: url('wave (9).d288b2cd68342e6dd174.svg');\\n background-repeat: no-repeat;\\n background-position: top;\\n background-size: cover;\\n}\\n\\n.resp-text {\\n color: white;\\n}\\n\\n@media only screen and (max-width: 991px) {\\n .resp-text {\\n color: #2b2b2b;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvYnJpZ2h0L2JyaWdodC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcHVibGljL2JyaWdodC9icmlnaHQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSwwREFBQTtFQUNBLDRCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtBQ0NKOztBREVBO0VBQ0ssbUJBQUE7RUFDRCwyREFBQTtBQ0NKOztBRENBO0VBQ0ksc0JBQUE7RUFDQSxnQkFBQTtBQ0VKOztBRElBO0VBQ0ksa0JBQUE7RUFDQSxjQUFBO0FDREo7O0FES0E7RUFDSSxxQkFBQTtBQ0ZKOztBREtBO0VBRVEsMERBQUE7RUFDQSw0QkFBQTtFQUNBLHdCQUFBO0VBQ0Esc0JBQUE7QUNIUjs7QURhQTtFQUNJLFlBQUE7QUNWSjs7QURZQTtFQUVJO0lBQ0ksY0FBQTtFQ1ZOO0FBQ0YiLCJmaWxlIjoic3JjL2FwcC9wdWJsaWMvYnJpZ2h0L2JyaWdodC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5maXJzdC1zZWN0aW9uLXdyYXBwZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy93YXZlXFwgXFwoNFxcKS5zdmcnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGJvdHRvbTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXG59XG4udGhpcmQtc2VjdGlvbntcbiAgICAgYmFja2dyb3VuZDogcmdiKDI0NiwxMDEsMTQyKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiYSgyNDYsMTAxLDE0MiwxKSAwJSwgcmdiYSgyNTUsMTg0LDcxLDEpIDEwMCUpO1xufVxuLnRleHQge1xuICAgIGZvbnQtZmFtaWx5OiAnUmFsZXdheSc7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAvLyBmb250LXNpemU6IDEuOHJlbTtcbn1cblxuXG5cbi5pbWFnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBzaG93O1xuXG59XG5cbi5lbGVjdHJpY2l0eS1pbWFnZSB7XG4gICAgei1pbmRleDogMyAhaW1wb3J0YW50O1xufVxuXG4uZm91cnRoLXNlY3Rpb257XG5cbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3dhdmVcXCBcXCg5XFwpLnN2ZycpO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3A7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIC8vIGJhY2tncm91bmQ6IHJnYigyNDYsMTAxLDE0Mik7XG4gICAgICAgIC8vIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDI0NiwxMDEsMTQyLDEpIDAlLCByZ2JhKDI1NSwxODQsNzEsMSkgMTAwJSk7XG4gICAgXG4gICAgXG59XG5cbi8vIC5maXJzdC1zZWN0aW9uLXdyYXBwZXIsIC5zZWNvbmQtc2VjdGlvbiwgLnRoaXJkLXNlY3Rpb24sIC5mb3VydGgtc2VjdGlvbiB7XG4vLyAgICAgaGVpZ2h0OiA5MHZoO1xuLy8gfVxuLnJlc3AtdGV4dCB7XG4gICAgY29sb3I6IHdoaXRlIDtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkxcHgpIHtcbiAgXG4gICAgLnJlc3AtdGV4dHtcbiAgICAgICAgY29sb3I6ICMyYjJiMmI7XG59XG5cbn0iLCIuZmlyc3Qtc2VjdGlvbi13cmFwcGVyIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy93YXZlICg0KS5zdmdcIik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGJvdHRvbTtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcbn1cblxuLnRoaXJkLXNlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiAjZjY2NThlO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgI2Y2NjU4ZSAwJSwgI2ZmYjg0NyAxMDAlKTtcbn1cblxuLnRleHQge1xuICBmb250LWZhbWlseTogXCJSYWxld2F5XCI7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5pbWFnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IHNob3c7XG59XG5cbi5lbGVjdHJpY2l0eS1pbWFnZSB7XG4gIHotaW5kZXg6IDMgIWltcG9ydGFudDtcbn1cblxuLmZvdXJ0aC1zZWN0aW9uIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy93YXZlICg5KS5zdmdcIik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHRvcDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcbn1cblxuLnJlc3AtdGV4dCB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTFweCkge1xuICAucmVzcC10ZXh0IHtcbiAgICBjb2xvcjogIzJiMmIyYjtcbiAgfVxufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TermsconditionsModalComponent } from 'src/app/components/termsconditions-modal/termsconditions-modal.component';\n\n@Component({\n selector: 'app-bright',\n templateUrl: './bright.component.html',\n styleUrls: ['./bright.component.scss']\n})\nexport class BrightComponent implements OnInit {\n\n constructor(private modalService: NgbModal) { }\n\n ngOnInit() {\n }\n\n openModal(){\n const termsconditionsRef = this.modalService.open(TermsconditionsModalComponent, {\n scrollable: true,\n centered: true,\n size: 'xl',\n });\n termsconditionsRef.componentInstance.options = {\n allowModalToExit: true,\n showPermissions: true,\n requireAccept: true,\n referenceKey: 'DfsTermsConditions',\n };\n termsconditionsRef.componentInstance.title = 'Delight'\n }\n \n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9jYXNlLXN0dWRpZXMtbGFuZGluZy9jYXNlLXN0dWRpZXMtbGFuZGluZy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { CaseStudyService } from 'src/app/services/case-study.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-case-studies-landing',\n templateUrl: './case-studies-landing.component.html',\n styleUrls: ['./case-studies-landing.component.scss'],\n})\nexport class CaseStudiesLandingComponent implements OnInit {\n caseStudies: any = [];\n allCaseStudies: any = [];\n loading: boolean = true;\n constructor(private caseStudyService: CaseStudyService, private glowService: GlowService) {}\n\n ngOnInit() {\n this.glowService\n .getAllCaseStudies('heating_system.heat_pump')\n .toPromise()\n .then(async (caseStudies) => {\n this.caseStudies = await Promise.all(\n caseStudies.map(async (caseStudy) => {\n const fullCaseStudy = await this.caseStudyService.fetchCaseStudyData(caseStudy);\n return fullCaseStudy;\n })\n );\n this.allCaseStudies = this.caseStudies;\n this.loading = false;\n }).catch((err)=>{\n // console.log(\"err\", err)\n this.loading=false\n })\n }\n\n filterCaseStudies(filter) {\n this.caseStudies = this.allCaseStudies.filter(\n (cs) => filter['postcodeDistrict'][cs.postcodeDistrict] || filter['builtForm'][cs.before.building[0].builtForm]\n );\n if(this.caseStudies.length===0){\n this.caseStudies=this.allCaseStudies\n }\n }\n}\n","export default \".card-img-overlay {\\n background: #d5d5d5;\\n background: radial-gradient(circle, #d5d5d5 0%, rgba(0, 0, 0, 0.372) 0%, rgba(8, 8, 8, 0.381) 100%);\\n}\\n\\n.heading {\\n height: 200px !important;\\n margin: auto;\\n width: 400px;\\n bottom: 40px;\\n position: relative;\\n}\\n\\nh1 {\\n font-weight: 500 !important;\\n}\\n\\n.carousel {\\n position: relative;\\n}\\n\\n.community-header {\\n background: #ffb847;\\n background: linear-gradient(0deg, rgba(255, 184, 71, 0.67) 0%, rgba(242, 99, 140, 0.67) 70%);\\n}\\n\\n.box.shadow-sm {\\n box-shadow: 0 0.125rem 0.25rem #f2638b1f !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvY29tbXVuaXR5LWhvbWUvY29tbXVuaXR5LWhvbWUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3B1YmxpYy9jb21tdW5pdHktaG9tZS9jb21tdW5pdHktaG9tZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNFLG1CQUFBO0VBQ0EsbUdBQUE7QUNBRjs7QURtQkE7RUFDRSx3QkFBQTtFQUVBLFlBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0FDakJGOztBRHVCQTtFQUNFLDJCQUFBO0FDcEJGOztBRHVCQTtFQUNFLGtCQUFBO0FDcEJGOztBRDJCQTtFQUNFLG1CQUFBO0VBQ0EsNEZBQUE7QUN4QkY7O0FEMkJBO0VBQ0UsbURBQUE7QUN4QkYiLCJmaWxlIjoic3JjL2FwcC9wdWJsaWMvY29tbXVuaXR5LWhvbWUvY29tbXVuaXR5LWhvbWUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgYmFja2dyb3VuZDogcmdiKDIxMywgMjEzLCAyMTMpO1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDIxMywgMjEzLCAyMTMsIDEpIDAlLCByZ2JhKDAsIDAsIDAsIDAuMzcyKSAwJSwgcmdiYSg4LCA4LCA4LCAwLjM4MSkgMTAwJSk7XG59XG5cblxuLmhlYWRlciB7XG4gIC8vIGhlaWdodDogMzAwcHg7XG5cbiAgLy8gYmFja2dyb3VuZDogcmdiKDI1NSwxODQsNzEpO1xuICAvLyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCByZ2JhKDI1NSwxODQsNzEsMC43MTg5MjUwNzAwMjgwMTEyKSAyMSUsIHJnYmEoMjQyLDk5LDE0MCwwLjczMjkzMDY3MjI2ODkwNzUpIDc2JSk7XG4gIC8vIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBsZWZ0O1xuICAvLyBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuXG4vLyAuaW1nLW92ZXJsYXkge1xuLy8gICAgIGJhY2tncm91bmQ6IHJnYigyMTMsMjEzLDIxMyk7XG4vLyAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgyMTMsMjEzLDIxMywxKSAwJSwgcmdiYSg2OSwgNjksIDY5LCAwLjExOCkgMCUsIHJnYmEoMCwgMCwgMCwgMC4xODEpIDEwMCUpO1xuXG4vLyB9XG5cbi5oZWFkaW5nIHtcbiAgaGVpZ2h0OiAyMDBweCAhaW1wb3J0YW50O1xuXG4gIG1hcmdpbjogYXV0bztcbiAgd2lkdGg6IDQwMHB4O1xuICBib3R0b206IDQwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLy8gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Fic3RyYWN0LmpwZyk7XG4gIC8vICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDtcbiAgLy8gICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG59XG5cbmgxIHtcbiAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50O1xufVxuXG4uY2Fyb3VzZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8vIC5jYXJvdXNlbC1jZWxsIGltZzpmaXJzdC1vZi10eXBlIHtcbi8vICAgb3BhY2l0eTogMDtcbi8vIH1cblxuLmNvbW11bml0eS1oZWFkZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IoMjU1LDE4NCw3MSk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDI1NSwxODQsNzEsMC42NykgMCUsIHJnYmEoMjQyLDk5LDE0MCwwLjY3KSA3MCUpO1xufVxuXG4uYm94LnNoYWRvdy1zbSB7XG4gIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSAjZjI2MzhiMWYgIWltcG9ydGFudDtcbn0iLCIuY2FyZC1pbWctb3ZlcmxheSB7XG4gIGJhY2tncm91bmQ6ICNkNWQ1ZDU7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICNkNWQ1ZDUgMCUsIHJnYmEoMCwgMCwgMCwgMC4zNzIpIDAlLCByZ2JhKDgsIDgsIDgsIDAuMzgxKSAxMDAlKTtcbn1cblxuLmhlYWRpbmcge1xuICBoZWlnaHQ6IDIwMHB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbjogYXV0bztcbiAgd2lkdGg6IDQwMHB4O1xuICBib3R0b206IDQwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuaDEge1xuICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7XG59XG5cbi5jYXJvdXNlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNvbW11bml0eS1oZWFkZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZiODQ3O1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiYSgyNTUsIDE4NCwgNzEsIDAuNjcpIDAlLCByZ2JhKDI0MiwgOTksIDE0MCwgMC42NykgNzAlKTtcbn1cblxuLmJveC5zaGFkb3ctc20ge1xuICBib3gtc2hhZG93OiAwIDAuMTI1cmVtIDAuMjVyZW0gI2YyNjM4YjFmICFpbXBvcnRhbnQ7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport _ from 'underscore';\n\n@Component({\n selector: 'app-community-home',\n templateUrl: './community-home.component.html',\n styleUrls: ['./community-home.component.scss'],\n})\nexport class CommunityHomeComponent implements OnInit {\n community;\n featuredContent: any[] = [];\n loading: boolean = true;\n _images: any[] = [];\n constructor(private strapiService: StrapiService, private route: ActivatedRoute, private seoService: SeoService) {\n route.params.subscribe((params) => {\n this.getCommunity(params.community).then((community) => {\n this.community = community;\n if (community) {\n // this.featuredContent = this.getFeaturedContent(community);\n this.configureSEO(community);\n }\n this.loading = false;\n });\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.seoService.resetSEOconfig();\n }\n\n configureSEO(community) {\n this.seoService.configureSEO(community.attributes.name, community.attributes.description, `https://glowmarkt.com/community/${community.attributes.slug}`);\n }\n\n async getCommunity(slug) {\n const community = await this.strapiService.getContentBySlug('communities', slug, ['audience_categories', 'tags']);\n // // console.log(community)\n return community;\n }\n\n getFeaturedContent(community) {\n const allContent = [\n ...community.attributes.featured_blogs.data.map((blog) => Object.assign(blog, { contentType: 'blogs' })),\n ...community.attributes.featured_articles.data.map((article) => Object.assign(article, { contentType: 'articles' })),\n ];\n for (let i = 0; i < allContent.length; i++) {\n this._images.push({ path: '../../../assets/images/transparent.png', width: 0, height: 0 });\n }\n return _.shuffle(allContent);\n }\n\n contentRelativePath(content) {\n return `/home/${content.contentType}/${content.attributes.slug}`;\n }\n\n communityRelativePath(community) {\n return `/about-community/${community.attributes.slug}`;\n }\n\n getDisplayImageUrl(content) {\n const url = this.strapiService.getSmallDisplayImageUrl(content);\n return { 'background-image': `url(${url})` };\n }\n}\n","export default \"form .ng-touched.ng-invalid {\\n border: solid red 0.5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvY29udGFjdC11cy9jb250YWN0LXVzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wdWJsaWMvY29udGFjdC11cy9jb250YWN0LXVzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNJO0VBQ0ksdUJBQUE7QUNBUiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9jb250YWN0LXVzL2NvbnRhY3QtdXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcbiAgICAubmctdG91Y2hlZC5uZy1pbnZhbGlkIHtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCByZWQgMC41cHg7XG59fVxuIiwiZm9ybSAubmctdG91Y2hlZC5uZy1pbnZhbGlkIHtcbiAgYm9yZGVyOiBzb2xpZCByZWQgMC41cHg7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { FormValidator } from 'src/app/services/user-validators';\n\n@Component({\n selector: 'app-contact-us',\n templateUrl: './contact-us.component.html',\n styleUrls: ['./contact-us.component.scss']\n})\nexport class ContactUsComponent implements OnInit {\n\n contactForm: FormGroup\n submitMessage = ''\n reasonOptions = ['Application Reseller', 'Consulting', 'Distributor', 'Media', 'Product Demo', 'Retailer', 'SaaS Reseller', 'Speaking', 'Other']\n successful: boolean = false\n unsuccessful: boolean = false\n date = new Date().toLocaleDateString(\"en-GB\")\n constructor(private fb: FormBuilder, private translate: TranslateService, private glow: GlowService) {\n this.contactForm = this.fb.group({\n email: ['', [Validators.required, FormValidator.isEmailValid]],\n name: ['', [Validators.required]],\n message: ['', [Validators.required]]\n })\n }\n\n ngOnInit() {\n\n }\n\n checkFormValidity(formControlName, translateKey?) {\n let messages = []\n let formFieldName = ''\n translateKey ? formFieldName = (this.translate.instant(translateKey)) : null\n\n //check if form control has extra validators and user has begun typing\n\n if (formControlName == 'email') {\n if (this.contactForm.get(formControlName).errors && this.contactForm.get(formControlName).dirty && this.contactForm.get(formControlName).value.length) {\n const errors = this.contactForm.get(formControlName).errors;\n Object.values(errors).forEach((v) => {\n v.errMsg ? (messages = [...messages, v.errMsg]) : null;\n });\n return messages\n //if it has extra validators and is required\n } else if (this.contactForm.get(formControlName).errors && this.contactForm.get(formControlName).touched && !this.contactForm.get(formControlName).valid && !this.contactForm.get(formControlName).value.length && this.contactForm.get(formControlName).errors.required) {\n const errorMsg = `${formFieldName} is required.`\n messages = [errorMsg]\n return messages\n }\n }\n //no extra validators but required\n else if (this.contactForm.get(formControlName).touched && !this.contactForm.get(formControlName).valid && this.contactForm.get(formControlName).errors.required) {\n const errorMsg = `${formFieldName} is required.`\n messages = [errorMsg]\n return messages\n\n }\n\n return\n }\n\n markFormGroupTouched(formGroup: FormGroup,) {\n Object.values(formGroup.controls).forEach(control => {\n control.markAsTouched();\n\n });\n }\n\n submit() {\n if (this.contactForm.valid) {\n // // console.log(this.contactForm)\n let body = {\n data: {\n description: this.contactForm.get('message').value,\n subject: `New Glowmarkt Message on ${this.date}`,\n type: 'contactUsGlowmarkt'\n },\n user: {\n name: this.contactForm.get('name').value,\n username: this.contactForm.get('email').value\n }\n }\n // console.log(body)\n this.glow.postTicketPublic(body).subscribe((response) => {\n // console.log(response);\n if (response.valid) {\n this.submitMessage ='Message sent successfully' ;\n this.successful = true\n this.contactForm.reset()\n } else {\n this.submitMessage = 'There was an error sending your message. Please try again later.';\n this.unsuccessful = true\n }\n });\n } else {\n this.markFormGroupTouched(this.contactForm)\n }\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9kZWxpZ2h0LWV2ZW50LXBhcnRpY2lwYXRpb24vZGVsaWdodC1ldmVudC1wYXJ0aWNpcGF0aW9uLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { GlowService } from 'src/app/services/glow.service';\n\n@Component({\n selector: 'app-delight-event-participation',\n templateUrl: './delight-event-participation.component.html',\n styleUrls: ['./delight-event-participation.component.scss']\n})\nexport class DelightEventParticipationComponent implements OnInit {\n participation;\n constructor(private route: ActivatedRoute, private authService: GlowService\n ) {\n route.queryParams.subscribe((params) => {\n this.participation = params.participation\n\n const missingElements = [];\n const incorrectElements = [];\n // scope ccould also be a property, but it is not required\n const incomingRequiredProperties = ['event', 'key', 'participation']\n const replaceCharacters = [/%0D/g, /%0A/g, /%0D%0A/g, /\\r/g, /\\n/g]\n const incomingValues: any = Object.keys(params).reduce((acc, incomingProperty) => {\n const sanitisedPropertyName = replaceCharacters.reduce((acc, characterToReplace) => acc.replace(characterToReplace, ''), incomingProperty)\n if (incomingRequiredProperties.indexOf(sanitisedPropertyName) > -1 || incomingRequiredProperties.indexOf(incomingProperty) > -1) {\n const sanitisedValue = replaceCharacters.reduce((acc, characterToReplace) => acc.replace(characterToReplace, ''), params[incomingProperty] || params[sanitisedPropertyName])\n acc[sanitisedPropertyName] = sanitisedValue;\n }\n // // console.log(acc)\n return acc\n }, {})\n // // console.log(incomingValues, 'incoming values')\n incomingRequiredProperties.forEach((property) => {\n // // console.log(incomingValues[property])\n if (!incomingValues[property]) {\n missingElements.push(property)\n console.warn(\"Missing element: \" + property);\n }\n });\n\n // // console.log(incomingValues)\n const dfsEventId = incomingValues['event']\n const dfsUserId = incomingValues['key']\n const participation = incomingValues['participation']\n\n\n const dfsEventIncomingParams = { dfsEventId, dfsUserId }\n // // console.log(dfsEventIncomingParams)\n // if (missingElements.length === 0 && incorrectElements.length === 0) {\n // this.submitEmailVerificationInformation(emailVerificationIncomingParams)\n // }\n\n if (participation === true || participation == 'true') {\n this.submitDFSEventRegistration(dfsEventIncomingParams)\n } else {\n console.warn('User will not participate')\n }\n })\n\n }\n ngOnInit() {\n }\n\n submitDFSEventRegistration(eventInfo) {\n this.authService.registerDFSEventParticipation(eventInfo).subscribe((verificationResponse) => {\n // // console.log(verificationResponse)\n if (verificationResponse.valid === true) {\n // console.log(\"User registered to event\")\n\n } else {\n // // console.log(\"Unable to register User to event\", verificationResponse)\n\n }\n }, err => {\n // // console.log(\"register User to event error\", err)\n console.warn(err.error)\n });\n\n\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9mYXEtZGV0YWlsZWQvZmFxLWRldGFpbGVkLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Router, NavigationEnd, NavigationStart, ActivatedRoute } from '@angular/router';\nimport { FaqsService } from 'src/app/services/faqs.service';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-faq-detailed',\n templateUrl: './faq-detailed.component.html',\n styleUrls: ['./faq-detailed.component.scss'],\n})\nexport class FaqDetailedComponent implements OnInit {\n url!: Array;\n faq:any\n loading:boolean=true\n constructor(private route: ActivatedRoute, private faqsService: FaqsService, private seoService: SeoService, private router:Router) {}\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.getFAQ(params.faq).then(faq=>{this.faq=faq;this.loading=false})\n this.getUrl();\n });\n }\n\n ngOnDestroy(){\n this.seoService.resetSEOconfig()\n }\n\n getUrl() {\n // this.url = this.route.snapshot.url.map(\n // (segment) => segment.path.charAt(0).toLowerCase() + segment.path.slice(1)\n // );\n let url = this.route.snapshot.url.map((segment) => segment.path);\n let question = url[url.length - 1] + '?';\n url.pop();\n url.push(question);\n this.url = url;\n }\n\n async getFAQ(slug) {\n const faq = await this.faqsService.getFAQBySlug(slug);\n if(faq){\n this.seoService.configureSEO(\n Utils.removeHTMLFromString(faq.attributes.question),\n Utils.removeHTMLFromString(faq.attributes.question),\n `https://glowmarkt.com${this.router.url}`\n );\n }\n return faq\n }\n}\n","export default \".circle-right {\\n position: absolute;\\n width: 593px;\\n height: 593px;\\n border-radius: 50%;\\n left: 65%;\\n top: 10%;\\n background: rgba(246, 101, 142, 0.87);\\n}\\n\\n.circle-left {\\n position: absolute;\\n width: 389px;\\n height: 389px;\\n border-radius: 50%;\\n left: -10%;\\n top: -55%;\\n background: rgba(246, 101, 142, 0.87);\\n}\\n\\n.searchbar-wrapper {\\n width: 50%;\\n z-index: 10;\\n}\\n\\n@media only screen and (max-width: 576px) {\\n .searchbar-wrapper {\\n width: 100%;\\n }\\n\\n .circle-left {\\n left: -10%;\\n }\\n\\n .circle-right {\\n left: 75%;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvZmFxLXRvcGljL2ZhcXMtdG9waWMuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3B1YmxpYy9mYXEtdG9waWMvZmFxcy10b3BpYy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0VBQ0EscUNBQUE7QUNDRjs7QURFQTtFQUNFLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxTQUFBO0VBQ0EscUNBQUE7QUNDRjs7QURFQTtFQUNFLFVBQUE7RUFDQSxXQUFBO0FDQ0Y7O0FERUE7RUFDRTtJQUNHLFdBQUE7RUNDSDs7RURDQTtJQUNFLFVBQUE7RUNFRjs7RURBQTtJQUNFLFNBQUE7RUNHRjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvcHVibGljL2ZhcS10b3BpYy9mYXFzLXRvcGljLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNpcmNsZS1yaWdodCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDU5M3B4O1xuICBoZWlnaHQ6IDU5M3B4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGxlZnQ6IDY1JTtcbiAgdG9wOiAxMCU7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQ2LCAxMDEsIDE0MiwgMC44Nyk7XG59XG5cbi5jaXJjbGUtbGVmdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDM4OXB4O1xuICBoZWlnaHQ6IDM4OXB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGxlZnQ6IC0xMCU7XG4gIHRvcDogLTU1JTtcbiAgYmFja2dyb3VuZDogcmdiYSgyNDYsIDEwMSwgMTQyLCAwLjg3KTtcbn1cblxuLnNlYXJjaGJhci13cmFwcGVyIHtcbiAgd2lkdGg6IDUwJTtcbiAgei1pbmRleDogMTBcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzZweCkge1xuICAuc2VhcmNoYmFyLXdyYXBwZXJ7XG4gICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gIC5jaXJjbGUtbGVmdCB7XG4gICAgbGVmdDogLTEwJTtcbiAgfVxuICAuY2lyY2xlLXJpZ2h0e1xuICAgIGxlZnQ6IDc1JVxuICB9XG59XG5cblxuXG5cblxuIiwiLmNpcmNsZS1yaWdodCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDU5M3B4O1xuICBoZWlnaHQ6IDU5M3B4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGxlZnQ6IDY1JTtcbiAgdG9wOiAxMCU7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQ2LCAxMDEsIDE0MiwgMC44Nyk7XG59XG5cbi5jaXJjbGUtbGVmdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDM4OXB4O1xuICBoZWlnaHQ6IDM4OXB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGxlZnQ6IC0xMCU7XG4gIHRvcDogLTU1JTtcbiAgYmFja2dyb3VuZDogcmdiYSgyNDYsIDEwMSwgMTQyLCAwLjg3KTtcbn1cblxuLnNlYXJjaGJhci13cmFwcGVyIHtcbiAgd2lkdGg6IDUwJTtcbiAgei1pbmRleDogMTA7XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc2cHgpIHtcbiAgLnNlYXJjaGJhci13cmFwcGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC5jaXJjbGUtbGVmdCB7XG4gICAgbGVmdDogLTEwJTtcbiAgfVxuXG4gIC5jaXJjbGUtcmlnaHQge1xuICAgIGxlZnQ6IDc1JTtcbiAgfVxufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FaqsService } from 'src/app/services/faqs.service';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-faqs-topic',\n templateUrl: './faqs-topic.component.html',\n styleUrls: ['./faqs-topic.component.scss'],\n})\nexport class FaqsTopicComponent implements OnInit {\n isSearching: boolean = false;\n topic!: any;\n url!: Array;\n loading: boolean = true;\n topics!:any\n constructor(\n private route: ActivatedRoute,\n private faqsService: FaqsService,\n private seoService: SeoService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.getUrl();\n this.getFAQsTopics()\n this.route.params.subscribe((params) => {\n this.getTopic(params.topic).then((topic) => {\n this.topic = topic;\n this.loading = false;\n });\n });\n // this.faqsService.getFAQsTopic(this.faqsService.topicId).then((topic) => {\n // this.topic = topic;\n // });\n }\n\n ngOnDestroy() {\n this.seoService.resetSEOconfig();\n }\n\n async getFAQsTopics() {\n this.topics = await this.faqsService.getFAQsTopics()\n }\n\n topicRelativePath(topic){\n return `/support/${topic.attributes.slug}`\n }\n\n getOtherTopics(){\n return this.topics.filter(t=>t.attributes.name!=this.topic.attributes.name)\n }\n\n getUrl() {\n this.url = this.route.snapshot.url.map((segment) => segment.path);\n }\n updateIsSearching(isSearching) {\n this.isSearching = isSearching;\n }\n\n async getTopic(slug) {\n const topic = await this.faqsService.getFAQsTopicBySlug(slug);\n if (topic) {\n this.seoService.configureSEO(\n Utils.removeHTMLFromString(topic.attributes.name),\n Utils.removeHTMLFromString(topic.attributes.description),\n `https://glowmarkt.com${this.router.url}`\n );\n }\n return topic;\n }\n}\n","export default \".circle-right {\\n position: absolute;\\n width: 593px;\\n height: 593px;\\n border-radius: 50%;\\n left: 65%;\\n top: 10%;\\n background: rgba(246, 101, 142, 0.87);\\n}\\n\\n.circle-left {\\n position: absolute;\\n width: 389px;\\n height: 389px;\\n border-radius: 50%;\\n left: -10%;\\n top: -55%;\\n background: rgba(246, 101, 142, 0.87);\\n}\\n\\n.searchbar-wrapper {\\n width: 50%;\\n z-index: 10;\\n}\\n\\n@media only screen and (max-width: 576px) {\\n .searchbar-wrapper {\\n width: 100%;\\n }\\n\\n .circle-left {\\n left: -10%;\\n }\\n\\n .circle-right {\\n left: 75%;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvZmFxcy1sYW5kaW5nL2ZhcXMtbGFuZGluZy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcHVibGljL2ZhcXMtbGFuZGluZy9mYXFzLWxhbmRpbmcuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxrQkFBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQUVBLHFDQUFBO0FDQUY7O0FER0E7RUFDRSxrQkFBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtFQUVBLHFDQUFBO0FDREY7O0FESUE7RUFDRSxVQUFBO0VBQ0EsV0FBQTtBQ0RGOztBRElBO0VBQ0U7SUFDRSxXQUFBO0VDREY7O0VESUE7SUFDRSxVQUFBO0VDREY7O0VER0E7SUFDRSxTQUFBO0VDQUY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9mYXFzLWxhbmRpbmcvZmFxcy1sYW5kaW5nLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNpcmNsZS1yaWdodCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDU5M3B4O1xuICBoZWlnaHQ6IDU5M3B4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGxlZnQ6IDY1JTtcbiAgdG9wOiAxMCU7XG4gIC8vIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAxODQsIDcxLCAwLjc3KTtcbiAgYmFja2dyb3VuZDogcmdiYSgyNDYsIDEwMSwgMTQyLCAwLjg3KTtcbn1cblxuLmNpcmNsZS1sZWZ0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMzg5cHg7XG4gIGhlaWdodDogMzg5cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgbGVmdDogLTEwJTtcbiAgdG9wOiAtNTUlO1xuICAvLyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMTg0LCA3MSwgMC43Nyk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQ2LCAxMDEsIDE0MiwgMC44Nyk7XG59XG5cbi5zZWFyY2hiYXItd3JhcHBlciB7XG4gIHdpZHRoOiA1MCU7XG4gIHotaW5kZXg6IDEwO1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gIC5zZWFyY2hiYXItd3JhcHBlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAuY2lyY2xlLWxlZnQge1xuICAgIGxlZnQ6IC0xMCU7XG4gIH1cbiAgLmNpcmNsZS1yaWdodCB7XG4gICAgbGVmdDogNzUlO1xuICB9XG59XG5cbiIsIi5jaXJjbGUtcmlnaHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiA1OTNweDtcbiAgaGVpZ2h0OiA1OTNweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBsZWZ0OiA2NSU7XG4gIHRvcDogMTAlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI0NiwgMTAxLCAxNDIsIDAuODcpO1xufVxuXG4uY2lyY2xlLWxlZnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAzODlweDtcbiAgaGVpZ2h0OiAzODlweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBsZWZ0OiAtMTAlO1xuICB0b3A6IC01NSU7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQ2LCAxMDEsIDE0MiwgMC44Nyk7XG59XG5cbi5zZWFyY2hiYXItd3JhcHBlciB7XG4gIHdpZHRoOiA1MCU7XG4gIHotaW5kZXg6IDEwO1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gIC5zZWFyY2hiYXItd3JhcHBlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAuY2lyY2xlLWxlZnQge1xuICAgIGxlZnQ6IC0xMCU7XG4gIH1cblxuICAuY2lyY2xlLXJpZ2h0IHtcbiAgICBsZWZ0OiA3NSU7XG4gIH1cbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { SeoService } from 'src/app/services/seo.service';\n\n@Component({\n selector: 'app-faqs-landing',\n templateUrl: './faqs-landing.component.html',\n styleUrls: ['./faqs-landing.component.scss'],\n})\nexport class FaqsLandingComponent implements OnInit {\n isSearching: boolean = false;\n constructor(private seoService: SeoService) {}\n\n ngOnInit(): void {\n this.seoService.configureSEO(\n 'Glowmarkt FAQs',\n 'FAQs relating to data, apps, hardware and the heat pump community',\n 'https://glowmarkt.com/faqs'\n );\n }\n\n ngOnDestroy() {\n this.seoService.resetSEOconfig();\n }\n\n updateIsSearching(isSearching) {\n this.isSearching = isSearching;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9maW5kLWEtcHJvZmVzc2lvbmFsL2ZpbmQtYS1wcm9mZXNzaW9uYWwuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { keyFor } from 'core-js/fn/symbol';\nimport { HeatingSystemService } from 'src/app/services/heating-system.service';\nimport { ProfessionalGlowService } from 'src/app/services/professional-glow.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-find-a-professional',\n templateUrl: './find-a-professional.component.html',\n styleUrls: ['./find-a-professional.component.scss']\n})\nexport class FindAProfessionalComponent implements OnInit {\n technologies = ['Air source heat pump', 'Ground water source heat pump', 'Solar assisted heat pump', 'Ground source heat pump', 'Gas absorption heat pump', 'Exhaust air heat pump']\n filteredValues = []\n installerForm: FormGroup\n heatPumpManufacturerList: Array\n listOfProfessionals = []\n errorMessage: string\n showError: boolean = false;\n pagination;\n count = 0\n postcode: String;\n relatedContent = []\n skills = ['System design', \"System installation\"]\n constructor(private fb: FormBuilder, private heatingSystemService: HeatingSystemService,\n private professionalGlowService: ProfessionalGlowService, private strapiService: StrapiService) {\n this.getHeatPumpBrands()\n }\n\n ngOnInit() {\n this.initInstallerForm()\n this.getRelatedArticles()\n }\n\n initInstallerForm() {\n const group = {\n // brands: ['', []],\n postcode: ['', [Validators.required]],\n boilerUpgradeScheme: ['', []],\n MCSCertified: ['', []],\n technologies: new FormGroup(this.getTechnologiesFormGroup()),\n skills: new FormGroup(this.getSkillsFormGroup()),\n glowInstaller: ['', []]\n };\n\n this.installerForm = this.fb.group(group);\n }\n\n\n getTechnologiesFormGroup() {\n const formGroupFields = {};\n this.technologies.forEach(tech => {\n formGroupFields[tech] = new FormControl(\"\");\n })\n\n return formGroupFields;\n }\n\n getSkillsFormGroup() {\n const formGroupFields = {};\n this.skills.forEach(skill => {\n formGroupFields[skill] = new FormControl(\"\");\n })\n\n return formGroupFields;\n }\n\n async getHeatPumpBrands() {\n const resp = await this.heatingSystemService.getHeatPumps(true)\n const manufacturers = await this.heatingSystemService.getManufacturersFromArray(resp)\n const formattedManufacturers = manufacturers.map(x => x.name)\n this.heatPumpManufacturerList = formattedManufacturers\n }\n\n search() {\n delete this.pagination\n this.listOfProfessionals = []\n this.findInstallers()\n\n }\n\n\n findInstallers() {\n this.showError = false\n const filteredValues = []\n let technologies = []\n let skills = []\n const techFormGroup = this.installerForm.get('technologies') as FormGroup\n const skillsFormGroup = this.installerForm.get('skills') as FormGroup\n if (techFormGroup.controls) {\n this.technologies.forEach(tech => {\n if (techFormGroup.controls[tech].value == true) {\n technologies.push(tech)\n }\n })\n }\n\n if (skillsFormGroup.controls) {\n this.skills.forEach(skill => {\n if (skillsFormGroup.controls[skill].value == true) {\n skills.push(skill)\n }\n\n })\n\n }\n this.postcode = this.installerForm.value.postcode.replace(/^\\s+|\\s+$/g, \"\")\n const data = {\n \"postcode\": this.postcode,\n \"technologies\": technologies,\n \"skills\": skills,\n \"boilerUpgradeScheme\": this.installerForm.value.boilerUpgradeScheme,\n \"mcsCertificate\": this.installerForm.value.MCSCertified,\n \"pagination\": this.pagination ? this.pagination : {}\n }\n this.getInstallers(data)\n if (this.installerForm.value.MCSCertified) {\n filteredValues.push({ name: 'MCS Certified', key: 'MCSCertified' })\n }\n if (this.installerForm.value.boilerUpgradeScheme) {\n filteredValues.push({ name: 'Boiler Upgrade Scheme', key: 'boilerUpgradeScheme' })\n }\n\n technologies.length ? filteredValues.push({ name: technologies, key: 'technologies' }) : ''\n skills.length ? filteredValues.push({ name: skills, key: 'skills' }) : ''\n\n\n this.filteredValues = filteredValues\n \n }\n\n\n\n\n\n removeTag(tag, key?, type?) {\n if (type == 'technology') {\n const formGroup = this.installerForm.get('technologies') as FormGroup\n formGroup.controls[key].setValue(false)\n this.search()\n } else if (type == 'skills') {\n const formGroup = this.installerForm.get('skills') as FormGroup\n formGroup.controls[key].setValue(false)\n this.search()\n } else {\n this.installerForm.get(tag).setValue('')\n this.search()\n }\n }\n\n\n getInstallers(data) {\n // this.listOfProfessionals = []\n // console.log(this.listOfProfessionals)\n this.professionalGlowService.getListOfInstallers(data).subscribe(resp => {\n this.listOfProfessionals.push(resp.data)\n this.getLengthOfInstallers()\n // console.log(this.listOfProfessionals)\n this.pagination = resp.pagination\n }, err => {\n this.showError = true\n this.errorMessage = `No results for '${this.postcode}' `\n })\n\n }\n\n loadMore() {\n this.findInstallers()\n }\n\n getLengthOfInstallers() {\n this.count = 0\n this.listOfProfessionals.forEach(array => {\n this.count = this.count + array.length\n })\n return this.count\n }\n\n getRelatedArticles() {\n this.strapiService.getOneContent('articles', '28', ['authors']).then(resp => {\n this.relatedContent.push(resp)\n // console.log(resp)\n })\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FindAProfessionalComponent } from './find-a-professional.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { InstallerCardModule } from 'src/app/components/installer-card/installer-card.module';\n\n\n\n@NgModule({\n declarations: [FindAProfessionalComponent],\n imports: [\n CommonModule,\n SharedModule,\n InstallerCardModule\n ],\n exports: [FindAProfessionalComponent]\n})\nexport class FindAProfessionalModule { }\n","export default \".form-container {\\n background-position: center left;\\n background-size: cover;\\n height: 80%;\\n width: 100%;\\n}\\n\\n.form-overlay {\\n width: 100%;\\n height: 80%;\\n background-color: rgba(255, 255, 255, 0.741);\\n}\\n\\ninput {\\n border: 0px solid !important;\\n border-radius: 0px !important;\\n border-bottom: 1px solid #888888 !important;\\n background-color: transparent !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvZ2VuZXJhdGUtcGFzc3dvcmQtdG9rZW4vZ2VuZXJhdGUtcGFzc3dvcmQtdG9rZW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3B1YmxpYy9nZW5lcmF0ZS1wYXNzd29yZC10b2tlbi9nZW5lcmF0ZS1wYXNzd29yZC10b2tlbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUVJLGdDQUFBO0VBQ0Esc0JBQUE7RUFDQSxXQUFBO0VBQ0EsV0FBQTtBQ0FKOztBRElBO0VBQ0ksV0FBQTtFQUNBLFdBQUE7RUFFQSw0Q0FBQTtBQ0ZKOztBRElBO0VBQ0ksNEJBQUE7RUFDQSw2QkFBQTtFQUNBLDJDQUFBO0VBQ0Esd0NBQUE7QUNESiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9nZW5lcmF0ZS1wYXNzd29yZC10b2tlbi9nZW5lcmF0ZS1wYXNzd29yZC10b2tlbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWNvbnRhaW5lciB7XG4gICAgLy8gYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYWJzdHJhY3QxLnBuZyk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGxlZnQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBoZWlnaHQ6IDgwJTtcbiAgICB3aWR0aDogMTAwJTtcblxufVxuXG4uZm9ybS1vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDgwJTtcbiAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmN2ZmZTA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc0MSk7XG59XG5pbnB1dCB7XG4gICAgYm9yZGVyOiAwcHggc29saWQgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDEzNiwgMTM2LCAxMzYpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn0iLCIuZm9ybS1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgaGVpZ2h0OiA4MCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZm9ybS1vdmVybGF5IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogODAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzQxKTtcbn1cblxuaW5wdXQge1xuICBib3JkZXI6IDBweCBzb2xpZCAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM4ODg4ODggIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { tLoadingElementWithSuccess } from 'src/app/services/app-config.typings';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { FormValidator } from 'src/app/services/user-validators';\n\n@Component({\n selector: 'app-generate-password-token',\n templateUrl: './generate-password-token.component.html',\n styleUrls: ['./generate-password-token.component.scss'],\n})\nexport class GeneratePasswordTokenComponent {\n formInfo: FormGroup;\n loadObj: tLoadingElementWithSuccess;\n\n constructor(\n private formBuilder: FormBuilder,\n private authService: GlowService,\n private router: Router,\n private uiConfigService: CustomUIConfigService\n ) {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false);\n this.formInfo = this.formBuilder.group({\n username: ['', [Validators.required, FormValidator.isUsernameValid]],\n });\n }\n\n // Attempt to login in through our User service\n submitForm() {\n if (this.formInfo.valid) {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(true);\n\n this.authService.triggerForgottenPasswordProcess(this.formInfo.value).subscribe(\n (generateRestPasswordToken) => {\n this.loadObj.loading = false;\n\n if (generateRestPasswordToken.valid === true) {\n this.loadObj.loaded = true;\n this.loadObj.loadedMessage = 'Success!';\n this.router.navigateByUrl('/reset-password');\n } else {\n this.loadObj.loadError = true;\n this.loadObj.errorString = 'An error has occurred';\n }\n },\n (err) => {\n console.warn(err);\n let errMsg = 'An error has occurred';\n try {\n const errJson = err.json();\n if (errJson.error) {\n errMsg = errJson.error;\n } else if (errJson.valid === false) {\n errMsg = 'Invalid information';\n }\n } catch (e) {\n console.warn(e);\n }\n this.loadObj.loading = false;\n this.loadObj.loadError = true;\n this.loadObj.errorString = errMsg;\n }\n );\n }else{\n this.loadObj.loadError = true;\n this.loadObj.errorString = 'Incorrect email address';\n }\n }\n}\n","export default \".btn {\\n border: none !important;\\n padding: 15px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvZ2xvc3NhcnkvZ2xvc3NhcnkuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3B1YmxpYy9nbG9zc2FyeS9nbG9zc2FyeS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNHLHVCQUFBO0VBQ0EsYUFBQTtBQ0NIIiwiZmlsZSI6InNyYy9hcHAvcHVibGljL2dsb3NzYXJ5L2dsb3NzYXJ5LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmJ0biB7XG4gICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgIHBhZGRpbmc6IDE1cHg7XG5cbn0iLCIuYnRuIHtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDE1cHg7XG59Il19 */\"","import { Component, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { ScrollSpyService } from '@uniprank/ngx-scrollspy';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { ViewportScroller } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport { GlossarySearchbarComponent } from 'src/app/components/glossary-searchbar/glossary-searchbar.component';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-glossary',\n templateUrl: './glossary.component.html',\n styleUrls: ['./glossary.component.scss'],\n})\nexport class GlossaryComponent implements OnInit {\n //placeholder array\n letters = [\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n ];\n mappedGlossaryTermsToLetters = {};\n loading: boolean = true;\n searchTerm: string = '';\n tagsToFilter: any[] = [];\n innerWidth: number;\n communities;\n invalidQuery: boolean = true;\n\n public activeSection: BehaviorSubject<{ id?: string; elementId?: string; nativeElement?: HTMLElement }> =\n new BehaviorSubject({});\n\n private _subscription: Subscription;\n\n @ViewChild('searchBar', { static: true }) searchBar: GlossarySearchbarComponent;\n\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n constructor(\n private strapiService: StrapiService,\n private _scrollSpyService: ScrollSpyService,\n private viewportScroller: ViewportScroller,\n private route: ActivatedRoute\n ) {\n route.queryParams.subscribe(async (params) => {\n if ( params['q[tags]'] || params['q[s]'] ) {\n this.invalidQuery = false;\n const tagsAsArray = params['q[tags]']?params['q[tags]'].split(','):[]\n const qFormatted = { label: params['q[s]'] };\n Utils.waitForElemById('searchBar').then((el) => {\n this.searchBar.setSearchParameters([...tagsAsArray, qFormatted]);\n this.searchBar.search();\n });\n } else if (!Object.keys(params).length) {\n this.invalidQuery = false;\n this.strapiService.getGlossaryTermsAlphabetically().then((glossaryTerms) => {\n this.mappedGlossaryTermsToLetters = this.mapGlossaryTermsToLetters(glossaryTerms, this.letters);\n });\n this.loading = false;\n this.initScrollSpy();\n this.innerWidth = window.innerWidth;\n }\n });\n }\n\n ngOnInit() {\n this.onResize();\n }\n\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n\n initScrollSpy() {\n // set offset because 2 sticky menu bars width single height of 50px\n this._scrollSpyService.setOffset('window', 100);\n // subscribe to window scroll listener, it is also possible to use an ScrollSpyElement id\n this._subscription = this._scrollSpyService.observe('window').subscribe((item) => {\n if (item != null) {\n const _nextSection = {\n id: item.id,\n elementId: item.scrollElementId,\n };\n this.activeSection.next(_nextSection);\n console.info(`ScrollSpyService: item:`, item);\n }\n });\n }\n\n getTermsStartingWithLetter(letter: string, glossaryTerms) {\n return glossaryTerms.filter((term) => term.attributes.term[0].toLowerCase() === letter.toLowerCase());\n }\n\n mapGlossaryTermsToLetters(glossaryTerms: any[], letters: any[]) {\n const mappedTerms = {};\n letters.forEach((letter) => (mappedTerms[letter] = this.getTermsStartingWithLetter(letter, glossaryTerms)));\n // // console.log(\"mappedTerms\")\n return mappedTerms;\n }\n scrollToLetter(letter) {\n document.getElementById(letter).scrollIntoView({ block: 'start', inline: 'nearest', behavior: 'smooth' });\n }\n\n updateGlossaryTerms(results) {\n this.loading = true;\n this.mappedGlossaryTermsToLetters = this.mapGlossaryTermsToLetters(results.glossaryTerms, this.letters);\n this.searchTerm = results.searchTerm;\n this.tagsToFilter = results.tagsToFilter;\n this.loading = false;\n }\n\n shouldDisplayNoResults() {\n return !this.loading && Object.values(this.mappedGlossaryTermsToLetters).flat().length === 0;\n }\n}\n","export default \".card-img-overlay {\\n background-image: linear-gradient(to bottom, rgba(115, 112, 112, 0.799), rgba(102, 101, 101, 0.839));\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvaW5mb2dyYXBoaWMvaW5mb2dyYXBoaWMuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3B1YmxpYy9pbmZvZ3JhcGhpYy9pbmZvZ3JhcGhpYy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG9HQUNJO0FDQVIiLCJmaWxlIjoic3JjL2FwcC9wdWJsaWMvaW5mb2dyYXBoaWMvaW5mb2dyYXBoaWMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY2FyZC1pbWctb3ZlcmxheXtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOlxuICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDExNSwgMTEyLCAxMTIsIDAuNzk5KSwgcmdiYSgxMDIsIDEwMSwgMTAxLCAwLjgzOSkpIFxuICAgICAgICAgIFxuICAgIH0iLCIuY2FyZC1pbWctb3ZlcmxheSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMTE1LCAxMTIsIDExMiwgMC43OTkpLCByZ2JhKDEwMiwgMTAxLCAxMDEsIDAuODM5KSk7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\nimport { JsonLdService } from 'src/app/services/json-ld.service';\n@Component({\n selector: 'app-infographic',\n templateUrl: './infographic.component.html',\n styleUrls: ['./infographic.component.scss'],\n})\nexport class InfographicComponent implements OnInit {\n url;\n infographic;\n loading = true;\n displayImageUrl;\n constructor(\n private router: Router,\n private seoService: SeoService,\n private strapiService: StrapiService,\n private route: ActivatedRoute\n ) {\n route.params.subscribe((params) => {\n this.getUrl();\n this.getInfographicContent(params.infographic).then((infographic) => {\n this.infographic = infographic;\n if (infographic) {\n this.configureSEO(infographic);\n this.displayImageUrl = this.getDisplayImageUrl(this.infographic);\n }\n this.loading = false;\n });\n });\n }\n\n ngOnInit() {}\n\n getUrl() {\n this.url = this.route.snapshot.url.map((segment) => segment.path);\n }\n\n async getInfographicContent(slug) {\n const infographicContent = await this.strapiService.getContentBySlug('infographics', slug, ['authors']);\n return infographicContent;\n }\n\n getDisplayImageUrl(content) {\n return this.strapiService.getSmallDisplayImageUrl(content);\n }\n\n configureSEO(infographic) {\n const title = Utils.removeHTMLFromString(infographic.attributes.title);\n const summary = Utils.removeHTMLFromString(infographic.attributes.summary);\n const authorNames = infographic.attributes.authors.data.map((author) => author.attributes.name);\n\n const image = this.infographic.attributes.displayImage.data\n ? this.strapiService.getFileFullUrl(this.infographic.attributes.displayImage.data.attributes.url)\n : '';\n const schema = JsonLdService.articleSchema(title, summary, [image], authorNames);\n this.seoService.configureSEO(title, summary, `https://glowmarkt.com${this.router.url}`, schema);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InfographicComponent } from './infographic.component';\nimport { HpjInfographicModule } from 'src/app/components/infographics/hpj-infographic/hpj-infographic.module';\nimport { NotFoundPageModule } from '../not-found-page/not-found-page.module';\nimport { InstallerJourneyInfographicComponent } from 'src/app/components/infographics/installer-journey-infographic/installer-journey-infographic.component';\nimport { InstallerJourneyInfographicModule } from 'src/app/components/infographics/installer-journey-infographic/installer-journey-infographic.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\n\n\n\n@NgModule({\n declarations: [InfographicComponent],\n imports: [\n CommonModule, SharedModule, HpjInfographicModule, NotFoundPageModule, InstallerJourneyInfographicModule\n ],\n exports:[InfographicComponent]\n})\nexport class InfographicModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9pbnN0YWxsZXItcGFnZS9pbnN0YWxsZXItcGFnZS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-installer-page',\n templateUrl: './installer-page.component.html',\n styleUrls: ['./installer-page.component.scss']\n})\nexport class InstallerPageComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InstallerPageComponent } from './installer-page.component';\nimport { InstallerJourneyInfographicModule } from 'src/app/components/infographics/installer-journey-infographic/installer-journey-infographic.module';\n\n\n\n@NgModule({\n declarations: [InstallerPageComponent],\n imports: [\n CommonModule, InstallerJourneyInfographicModule\n ],\n exports: [InstallerPageComponent]\n})\nexport class InstallerPageModule { }\n","export default \".first-section {\\n background-image: url('glowbackground.83b830972828f9811707.png');\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n\\n.first-section::before {\\n background-image: url('glowbackground.83b830972828f9811707.png');\\n}\\n\\n.banner {\\n z-index: 1000;\\n position: relative;\\n}\\n\\n.second-section-card {\\n background-color: #FCFCFC;\\n}\\n\\n.fifth-section {\\n padding: 30px 20px 60px 20px;\\n}\\n\\n.sixth-section {\\n height: 100%;\\n padding: 60px 20px 60px 20px;\\n}\\n\\n.third-section,\\n.fourth-section {\\n height: 100%;\\n padding: 85px 20px 85px 20px;\\n}\\n\\n.card-img-top {\\n height: auto;\\n width: auto;\\n}\\n\\n.fourth-section-card {\\n height: 100%;\\n}\\n\\n.star {\\n position: absolute;\\n left: 50.8%;\\n right: 0.84%;\\n top: 10.56%;\\n bottom: 80.78%;\\n height: 120px;\\n z-index: 900;\\n}\\n\\n.carousel {\\n position: absolute;\\n left: 60.8%;\\n right: 0.84%;\\n top: 20.56%;\\n}\\n\\n.carousel-card {\\n background-color: #FEF6F8;\\n}\\n\\n.top-carousel,\\n.carousel-card {\\n width: 300px !important;\\n height: 300px !important;\\n border-radius: 50% !important;\\n overflow: none;\\n}\\n\\n.carousel-control-next-icon {\\n background-image: url(\\\"data:image/svg+xml,\\\") !important;\\n}\\n\\n@media only screen and (max-width: 992px) {\\n .case-study-card {\\n height: 100%;\\n }\\n}\\n\\n@media only screen and (max-width: 576px) {\\n .star {\\n position: absolute;\\n left: 70.8%;\\n right: 0.84%;\\n top: 10.56%;\\n bottom: 80.78%;\\n height: 80px;\\n z-index: 1000;\\n }\\n}\\n\\n@media only screen and (max-width: 767px) {\\n .carousel {\\n position: relative;\\n left: unset;\\n right: unset;\\n top: unset;\\n }\\n\\n .first-section {\\n background-position: unset;\\n }\\n\\n .third-section-carousel {\\n height: 100%;\\n }\\n\\n .star {\\n position: absolute;\\n left: 78.8%;\\n right: 0.84%;\\n top: 10.56%;\\n bottom: 80.78%;\\n height: 80px;\\n z-index: 1000;\\n }\\n\\n .fifth-section,\\n.sixth-section,\\n.third-section,\\n.fourth-section {\\n height: 100%;\\n padding: 40px 20px 40px 20px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvbGFuZGluZy9sYW5kaW5nLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wdWJsaWMvbGFuZGluZy9sYW5kaW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BO0VBQ0ksZ0VBQUE7RUFDQSwyQkFBQTtFQUNBLDRCQUFBO0FDTEo7O0FET0E7RUFDSSxnRUFBQTtBQ0pKOztBRE9BO0VBQ0ksYUFBQTtFQUNBLGtCQUFBO0FDSko7O0FEVUE7RUFDSSx5QkFBQTtBQ1BKOztBRFNBO0VBQ0ksNEJBQUE7QUNOSjs7QURXQTtFQUNJLFlBQUE7RUFDQSw0QkFBQTtBQ1JKOztBRFVBOztFQUVJLFlBQUE7RUFDQSw0QkFBQTtBQ1BKOztBRGFBO0VBQ0ksWUFBQTtFQUNBLFdBQUE7QUNWSjs7QURnQkE7RUFDSSxZQUFBO0FDYko7O0FEZ0JBO0VBQ0ksa0JBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLFlBQUE7QUNiSjs7QURtQkE7RUFDSSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtBQ2hCSjs7QUR1QkE7RUFDSSx5QkFBQTtBQ3BCSjs7QUR1QkE7O0VBRUksdUJBQUE7RUFDQSx3QkFBQTtFQUNBLDZCQUFBO0VBQ0EsY0FBQTtBQ3BCSjs7QUQwQkE7RUFDSSx1UUFBQTtBQ3ZCSjs7QUQrQkE7RUFDSTtJQUNJLFlBQUE7RUM1Qk47QUFDRjs7QUQrQkE7RUFDSTtJQUNJLGtCQUFBO0lBQ0EsV0FBQTtJQUNBLFlBQUE7SUFDQSxXQUFBO0lBQ0EsY0FBQTtJQUNBLFlBQUE7SUFDQSxhQUFBO0VDN0JOO0FBQ0Y7O0FEb0NBO0VBQ0k7SUFDSSxrQkFBQTtJQUNBLFdBQUE7SUFDQSxZQUFBO0lBQ0EsVUFBQTtFQ2xDTjs7RURzQ0U7SUFDSSwwQkFBQTtFQ25DTjs7RURzQ0U7SUFDSSxZQUFBO0VDbkNOOztFRHFDRTtJQUNJLGtCQUFBO0lBQ0EsV0FBQTtJQUNBLFlBQUE7SUFDQSxXQUFBO0lBQ0EsY0FBQTtJQUNBLFlBQUE7SUFDQSxhQUFBO0VDbENOOztFRHFDRTs7OztJQUlJLFlBQUE7SUFDQSw0QkFBQTtFQ2xDTjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvcHVibGljL2xhbmRpbmcvbGFuZGluZy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDU3NXB4KSB7XG4vLyAgICAgLnNlYXJjaC1iYXIge1xuLy8gICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuLy8gICAgIH1cbi8vIH1cblxuLmZpcnN0LXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9nbG93YmFja2dyb3VuZC5wbmcnKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cbi5maXJzdC1zZWN0aW9uOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9nbG93YmFja2dyb3VuZC5wbmcnKTtcbiAgIFxufVxuLmJhbm5lcntcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLy8gLmZvdXJ0aC1zZWN0aW9uLFxuLy8gLnNlY29uZC1zZWN0aW9uLFxuLy8gLnRoaXJkLXNlY3Rpb24sXG4uc2Vjb25kLXNlY3Rpb24tY2FyZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZDRkNGQztcbn1cbi5maWZ0aC1zZWN0aW9ue1xuICAgIHBhZGRpbmc6MzBweCAyMHB4IDYwcHggMjBweFxuXG59XG5cblxuLnNpeHRoLXNlY3Rpb257XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmc6NjBweCAyMHB4IDYwcHggMjBweFxufVxuLnRoaXJkLXNlY3Rpb24sXG4uZm91cnRoLXNlY3Rpb24ge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwYWRkaW5nOjg1cHggMjBweCA4NXB4IDIwcHhcbn1cblxuLy8gLnRoaXJkLXNlY3Rpb257XG4vLyAgICAgaGVpZ2h0OiA5MHZoXG4vLyB9XG4uY2FyZC1pbWctdG9wIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgd2lkdGg6IGF1dG87XG5cbn1cblxuXG5cbi5mb3VydGgtc2VjdGlvbi1jYXJkIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5zdGFyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogNTAuOCU7XG4gICAgcmlnaHQ6IDAuODQlO1xuICAgIHRvcDogMTAuNTYlO1xuICAgIGJvdHRvbTogODAuNzglO1xuICAgIGhlaWdodDogMTIwcHg7XG4gICAgei1pbmRleDogOTAwO1xuICAgIC8vICB3aWR0aDogMTB2dztcblxuXG59XG5cbi5jYXJvdXNlbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDYwLjglO1xuICAgIHJpZ2h0OiAwLjg0JTtcbiAgICB0b3A6IDIwLjU2JTtcbiAgICAvLyBib3R0b206IC0zMCVcblxuXG5cbn1cblxuLmNhcm91c2VsLWNhcmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRUY2Rjg7XG59XG5cbi50b3AtY2Fyb3VzZWwsXG4uY2Fyb3VzZWwtY2FyZCB7XG4gICAgd2lkdGg6IDMwMHB4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAzMDBweCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBub25lO1xufVxuXG4vLyAuc2Vjb25kLXNlY3Rpb24ge1xuLy8gICAgIGhlaWdodDogMzB2aDtcbi8vIH1cbi5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyNmZmZmJz48cGF0aCBkPSdNMTEuMzU0IDEuNjQ2YS41LjUgMCAwIDEgMCAuNzA4TDUuNzA3IDhsNS42NDcgNS42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtNi02YS41LjUgMCAwIDEgMC0uNzA4bDYtNmEuNS41IDAgMCAxIC43MDggMHonLz48L3N2Zz5cIikgIWltcG9ydGFudDtcbn1cblxuXG4vLyAuY2FzZS1zdHVkeS1jYXJkIHtcbi8vICAgICBoZWlnaHQ6IDI1MHB4O1xuLy8gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6OTkycHgpIHtcbiAgICAuY2FzZS1zdHVkeS1jYXJkIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjU3NnB4KSB7XG4gICAgLnN0YXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDcwLjglO1xuICAgICAgICByaWdodDogMC44NCU7XG4gICAgICAgIHRvcDogMTAuNTYlO1xuICAgICAgICBib3R0b206IDgwLjc4JTtcbiAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICAvLyAgd2lkdGg6IDEwdnc7XG5cblxuICAgIH1cblxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpIHtcbiAgICAuY2Fyb3VzZWwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGxlZnQ6IHVuc2V0O1xuICAgICAgICByaWdodDogdW5zZXQ7XG4gICAgICAgIHRvcDogdW5zZXQ7XG5cbiAgICB9XG5cbiAgICAuZmlyc3Qtc2VjdGlvbiB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHVuc2V0XG4gICAgfVxuXG4gICAgLnRoaXJkLXNlY3Rpb24tY2Fyb3VzZWwge1xuICAgICAgICBoZWlnaHQ6IDEwMCVcbiAgICB9XG4gICAgLnN0YXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDc4LjglO1xuICAgICAgICByaWdodDogMC44NCU7XG4gICAgICAgIHRvcDogMTAuNTYlO1xuICAgICAgICBib3R0b206IDgwLjc4JTtcbiAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgIH1cblxuICAgIC5maWZ0aC1zZWN0aW9uLFxuICAgIC5zaXh0aC1zZWN0aW9uLFxuICAgIC50aGlyZC1zZWN0aW9uLFxuICAgIC5mb3VydGgtc2VjdGlvbiB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogNDBweCAyMHB4IDQwcHggMjBweFxuICAgIH1cbn1cbiIsIi5maXJzdC1zZWN0aW9uIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9nbG93YmFja2dyb3VuZC5wbmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cblxuLmZpcnN0LXNlY3Rpb246OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZ2xvd2JhY2tncm91bmQucG5nXCIpO1xufVxuXG4uYmFubmVyIHtcbiAgei1pbmRleDogMTAwMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc2Vjb25kLXNlY3Rpb24tY2FyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGQ0ZDRkM7XG59XG5cbi5maWZ0aC1zZWN0aW9uIHtcbiAgcGFkZGluZzogMzBweCAyMHB4IDYwcHggMjBweDtcbn1cblxuLnNpeHRoLXNlY3Rpb24ge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBhZGRpbmc6IDYwcHggMjBweCA2MHB4IDIwcHg7XG59XG5cbi50aGlyZC1zZWN0aW9uLFxuLmZvdXJ0aC1zZWN0aW9uIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nOiA4NXB4IDIwcHggODVweCAyMHB4O1xufVxuXG4uY2FyZC1pbWctdG9wIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuLmZvdXJ0aC1zZWN0aW9uLWNhcmQge1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5zdGFyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MC44JTtcbiAgcmlnaHQ6IDAuODQlO1xuICB0b3A6IDEwLjU2JTtcbiAgYm90dG9tOiA4MC43OCU7XG4gIGhlaWdodDogMTIwcHg7XG4gIHotaW5kZXg6IDkwMDtcbn1cblxuLmNhcm91c2VsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA2MC44JTtcbiAgcmlnaHQ6IDAuODQlO1xuICB0b3A6IDIwLjU2JTtcbn1cblxuLmNhcm91c2VsLWNhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkVGNkY4O1xufVxuXG4udG9wLWNhcm91c2VsLFxuLmNhcm91c2VsLWNhcmQge1xuICB3aWR0aDogMzAwcHggIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAzMDBweCAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IG5vbmU7XG59XG5cbi5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPScjZmZmZic+PHBhdGggZD0nTTExLjM1NCAxLjY0NmEuNS41IDAgMCAxIDAgLjcwOEw1LjcwNyA4bDUuNjQ3IDUuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhsLTYtNmEuNS41IDAgMCAxIDAtLjcwOGw2LTZhLjUuNSAwIDAgMSAuNzA4IDB6Jy8+PC9zdmc+XCIpICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkycHgpIHtcbiAgLmNhc2Utc3R1ZHktY2FyZCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gIC5zdGFyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogNzAuOCU7XG4gICAgcmlnaHQ6IDAuODQlO1xuICAgIHRvcDogMTAuNTYlO1xuICAgIGJvdHRvbTogODAuNzglO1xuICAgIGhlaWdodDogODBweDtcbiAgICB6LWluZGV4OiAxMDAwO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5jYXJvdXNlbCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IHVuc2V0O1xuICAgIHJpZ2h0OiB1bnNldDtcbiAgICB0b3A6IHVuc2V0O1xuICB9XG5cbiAgLmZpcnN0LXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IHVuc2V0O1xuICB9XG5cbiAgLnRoaXJkLXNlY3Rpb24tY2Fyb3VzZWwge1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5zdGFyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogNzguOCU7XG4gICAgcmlnaHQ6IDAuODQlO1xuICAgIHRvcDogMTAuNTYlO1xuICAgIGJvdHRvbTogODAuNzglO1xuICAgIGhlaWdodDogODBweDtcbiAgICB6LWluZGV4OiAxMDAwO1xuICB9XG5cbiAgLmZpZnRoLXNlY3Rpb24sXG4uc2l4dGgtc2VjdGlvbixcbi50aGlyZC1zZWN0aW9uLFxuLmZvdXJ0aC1zZWN0aW9uIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcGFkZGluZzogNDBweCAyMHB4IDQwcHggMjBweDtcbiAgfVxufSJdfQ== */\"","import { Component, OnInit, ViewChild, ElementRef, ChangeDetectorRef, HostListener } from '@angular/core';\nimport { CookieService } from 'ngx-cookie-service';\nimport { LandingService } from 'src/app/services/landing.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\nimport * as _ from 'underscore';\nimport { filter } from 'rxjs/operators';\n\nimport { ContentType } from 'src/app/services/strapi.service';\nimport { LandingSearchbarComponent } from 'src/app/components/landing-searchbar/landing-searchbar.component';\nimport { MetaTagsService } from 'src/app/services/meta-tags.service';\nimport { SearchService } from 'src/app/services/search.service';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { CaseStudyService } from 'src/app/services/case-study.service';\nimport { NgbCarouselConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { InvitationsService } from 'src/app/services/invitations.service';\n@Component({\n selector: 'app-landing',\n templateUrl: './landing.component.html',\n styleUrls: ['./landing.component.scss'],\n})\nexport class LandingComponent implements OnInit {\n @ViewChild('anchor', { static: true }) anchor!: ElementRef;\n @ViewChild('searchBar', { static: true }) searchBar: LandingSearchbarComponent;\n\n innerWidth;\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n\n doubledContentTypes = ['resources-list', 'user-story'];\n contentTypesToBeDisplayed: Array = ['blogs', 'user-stories', 'resources-lists'];\n\n loading = true;\n blogs!: any[];\n userStories!: any[];\n page = 1;\n allContent: any[] = [];\n observer!: IntersectionObserver;\n resourcesList!: any;\n results: any = {};\n isRegisteredPreliminary;\n communityTag;\n caseStudies =[]\n liveIncidents: any[] = [];\n hasValidAccessToken;\n loginStatus;\n caseStudy;\n constructor(\n private landingService: LandingService,\n private strapiService: StrapiService,\n private searchService: SearchService,\n private host: ElementRef,\n private cookieService: CookieService,\n private seoService: SeoService,\n private router: Router,\n public oauthService: OAuthService,\n private glowService: GlowService,\n private caseStudyService: CaseStudyService,\n config: NgbCarouselConfig\n ) {\n config.showNavigationArrows = false;\n\n \n const navEndEvent$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n navEndEvent$.subscribe((e: NavigationEnd) => {\n this.hasValidAccessToken = this.oauthService.hasValidAccessToken();\n this.loginStatus = this.hasValidAccessToken\n ? 'logged in'\n : localStorage.length > 0 && localStorage.getItem('id_token')\n ? 'logged in'\n : 'logged out';\n });\n }\n\n ngOnInit(): void {\n // this.glowService\n // .getAllCaseStudies('heating_system.heatPump')\n // .toPromise()\n // .then(async (caseStudies) => {\n // this.caseStudies = await Promise.all(\n // caseStudies.map(async (caseStudy) => {\n // const fullCaseStudy = await this.caseStudyService.fetchCaseStudyData(caseStudy);\n // return fullCaseStudy;\n // })\n // );\n // });\n\n this.glowService\n .getAllCaseStudies('heating_system.heat_pump')\n .toPromise()\n .then(async (caseStudies) => {\n await caseStudies.slice(1,3).forEach((caseStudy)=>{\n this.caseStudyService.fetchCaseStudyData(caseStudy).then((cs)=>{\n // console.log(cs)\n this.caseStudies.push(cs)\n }) \n // console.log(this.caseStudies)\n\n })\n }).catch((err) => {\n // console.log(\"err\", err)\n this.loading = false\n })\n\n // this.searchService.updateSearchSettingsForSearchableContent()\n this.getLiveIncidents();\n this.getAllCommunities().then((allContent) => {\n // this.allContent = this.formatContentArray(allContent);\n this.allContent = allContent;\n this.loading = false;\n });\n\n this.configureSEO();\n // this.runObserver();\n this.isRegisteredPreliminary = this.getIsRegsteredCookie();\n this.onResize();\n\n // this.searchService.updateSearchSettingsForSearchableContent()\n\n }\n\n ngOnDestroy() {\n // this.observer.disconnect();\n this.seoService.resetSEOconfig();\n }\n\n configureSEO() {\n this.seoService.configureSEO('Glowmarkt', 'Homepage for Glowmarkt', 'https://glowmarkt.com/home');\n }\n\n get element() {\n return this.host.nativeElement;\n }\n\n async getLiveIncidents() {\n const incidents = await this.strapiService.getAllOfContentType('system-incidents', null,[]);\n this.liveIncidents = incidents.filter(\n (incident) =>\n new Date() >= new Date(incident.attributes.incidentDateTime) && !incident.attributes.completedDateTime\n );\n }\n\n getIsRegsteredCookie() {\n return this.cookieService.get('preliminaryRegister');\n }\n\n //checks if window has scrolled to anchor element\n runObserver() {\n const options = {\n root: null,\n };\n\n this.observer = new IntersectionObserver(([entry]) => {\n entry.isIntersecting && this.scrolledToAnchor();\n }, options);\n\n this.observer.observe(this.anchor.nativeElement);\n }\n\n // increment page & load more content if window is scrolled to anchor\n scrolledToAnchor() {\n this.page += 1;\n if (this.allContent) {\n this.getAllContent(this.page).then(\n (allContent) => (this.allContent = [...this.allContent, ...this.formatContentArray(allContent)])\n );\n }\n }\n\n //gets all the content from strapi - not formatted for display\n async getAllContent(page: number | string) {\n const tutorials = await this.strapiService.getAllOfContentType('tutorials', page);\n const blogs = await this.strapiService.getAllOfContentType('blogs', page);\n const resourcesList = await this.strapiService.getAllOfContentType('resources-lists', page);\n const articles = await this.strapiService.getAllOfContentType('articles', page);\n return [\n ...blogs.map((blog: any) => Object.assign(blog, { contentType: 'blog' })),\n ...tutorials.map((tutorial: any) => Object.assign(tutorial, { contentType: 'tutorials' })),\n ...resourcesList.map((userStory: any) => Object.assign(userStory, { contentType: 'resources-list' })),\n ...articles.map((userStory: any) => Object.assign(userStory, { contentType: 'article' })),\n ];\n }\n\n async getAllCommunities() {\n const communities = await this.strapiService.getAllOfContentType('communities', null, [\"featured_articles\", \"featured_blogs\", \"featured_infographics\"]);\n //hard coded to put heat pump first in the array\n const x = communities.shift();\n communities.push(x);\n return communities;\n }\n\n formatContentArray(contentArray) {\n let toFormat = [];\n //get single display contents:formattedArray has format [[{content6}],[{content5}]]\n let formattedArray = contentArray\n .filter((content) => !this.doubledContentTypes.includes(content.contentType))\n .map((content) => [content]);\n //get content to be displayed doubled\n this.doubledContentTypes.forEach((type) => {\n toFormat.push(...contentArray.filter((content) => content.contentType == type));\n });\n //shuffle so mixed content is displayed on doubled row\n toFormat = _.shuffle(toFormat);\n let formatted = [];\n //populated formatted with [[{content1},{content2}],[{content3},{content4}]]\n for (let i = 0; i < toFormat.length; i++) {\n if (i % 2 == 0) {\n toFormat[i + 1] ? (formatted = [...formatted, [toFormat[i], toFormat[i + 1]]]) : formatted.push([toFormat[i]]);\n }\n }\n //add the formatted doubled to the formattedArray => [[{content5}],[{content1},{content4}],[{content3},{content2}],[{content6}]]\n formattedArray.push(...formatted);\n return _.shuffle(formattedArray);\n }\n\n searchCommunity(community) {\n this.searchBar.setSearchParametersAndSearch([community.attributes.name], community.attributes.name);\n window.scrollTo(0, 0);\n }\n sanitizeCaseStudy(caseStudy, relationKey?: string) {\n let sanitizedCaseStudy: any = {};\n if (caseStudy) {\n for (let [key, val] of Object.entries(caseStudy)) {\n let value = val as any;\n if (sanitizedCaseStudy[key] || key == 'case_study' || key == relationKey) {\n continue;\n } else if (!value || typeof value !== 'object') {\n sanitizedCaseStudy[key] = value;\n } else if (key == 'attributes' && !Array.isArray(value)) {\n sanitizedCaseStudy = this.sanitizeCaseStudy({ ...sanitizedCaseStudy, ...value });\n } else if (value.data && !Array.isArray(value.data)) {\n sanitizedCaseStudy[key] = this.sanitizeCaseStudy({ ...value.data.id, ...value.data.attributes });\n } else if (value.data && Array.isArray(value.data)) {\n sanitizedCaseStudy[key] = value.data.map((item) => this.sanitizeCaseStudy(item));\n }\n }\n }\n return sanitizedCaseStudy;\n }\n\n navigateSignUp() {\n this.router.navigateByUrl('/register');\n }\n\n navigate(path) {\n this.router.navigateByUrl(path);\n \n }\n}\n","export default \".logo-text {\\n font-family: \\\"DIN Next LT Pro\\\" !important;\\n font-weight: 500;\\n}\\n\\na.text-dark {\\n color: #2b2b2b !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3B1YmxpYy9sb2dpbi9sb2dpbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHlDQUFBO0VBQ0EsZ0JBQUE7QUNDRjs7QURTQTtFQUNFLHlCQUFBO0FDTkYiLCJmaWxlIjoic3JjL2FwcC9wdWJsaWMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubG9nby10ZXh0IHtcbiAgZm9udC1mYW1pbHk6IFwiRElOIE5leHQgTFQgUHJvXCIgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLy8gaW5wdXQge1xuLy8gICAgIGJvcmRlcjogMHB4IHNvbGlkICFpbXBvcnRhbnQ7XG4vLyAgICAgYm9yZGVyLXJhZGl1czogMHB4ICFpbXBvcnRhbnQ7XG4vLyAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigxMzYsIDEzNiwgMTM2KSAhaW1wb3J0YW50O1xuLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4vLyB9XG5cbmEudGV4dC1kYXJrIHtcbiAgY29sb3I6ICMyYjJiMmIgIWltcG9ydGFudDtcbn1cbiIsIi5sb2dvLXRleHQge1xuICBmb250LWZhbWlseTogXCJESU4gTmV4dCBMVCBQcm9cIiAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG5hLnRleHQtZGFyayB7XG4gIGNvbG9yOiAjMmIyYjJiICFpbXBvcnRhbnQ7XG59Il19 */\"","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Validators, FormBuilder, FormGroup } from '@angular/forms';\nimport { GlowService } from '../../services/glow.service';\nimport { tLoginInfo } from '../../services/glow.typings';\nimport { CustomUIConfigService } from '../../services/custom-ui-config.service';\nimport { tLoadingElementWithSuccess } from '../../services/app-config.typings';\nimport { TermsConditionsService } from '../../services/termsconditions.service';\nimport { tTermsConditionsUiConfig } from 'src/app/components/component.typings';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TermsconditionsModalComponent } from 'src/app/components/termsconditions-modal/termsconditions-modal.component';\nimport { AuthenticationService } from 'src/app/services/authentication.service';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { VirtualEntityService } from 'src/app/services/virtual-entity.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n styleUrls: ['./login.component.scss', '../public-components.scss'],\n templateUrl: './login.component.html',\n})\nexport class LoginComponent {\n public hasValidAccessToken = false;\n loginDetailsForm: FormGroup;\n loadObj: tLoadingElementWithSuccess;\n isOpenTermsAndConditionsModal: boolean = false;\n termsConditionsUiConfig: tTermsConditionsUiConfig = {\n allowModalToExit: false,\n showPermissions: true,\n requireAccept: true,\n };\n viewPassword: boolean = false;\n serviceAgentActive: boolean = false;\n userActive: boolean = true;\n termsconditionsRef: any;\n showPasswordForm: boolean = false;\n subscriptionVirtualEntityList: Subscription;\n\n constructor(\n public auth: AuthenticationService,\n public oauthService: OAuthService,\n private modalService: NgbModal,\n private formBuilder: FormBuilder,\n private authService: GlowService,\n private termsConditionsService: TermsConditionsService,\n private route: ActivatedRoute,\n private router: Router,\n private uiConfigService: CustomUIConfigService,\n private veService: VirtualEntityService\n ) {\n this.subscriptionVirtualEntityList = this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n if (veList.length) {\n this.router.navigateByUrl('/pages/property');\n } else {\n this.router.navigateByUrl('/pages/property/energy-data');\n }\n });\n\n const accessToken = this.oauthService.getAccessToken();\n const hasIdToken = this.oauthService.hasValidIdToken();\n this.hasValidAccessToken = this.oauthService.hasValidAccessToken();\n\n if (this.hasValidAccessToken && hasIdToken && accessToken) {\n this.router.navigateByUrl('/professional/landing');\n }\n\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false);\n\n this.loginDetailsForm = this.formBuilder.group({\n username: ['', Validators.required],\n password: ['', Validators.required],\n });\n\n this.route.queryParams.subscribe(async (params) => {\n if (params.code && params.state) {\n this.serviceAgentActive = true;\n this.userActive = false;\n this.loadObj = { ...this.loadObj, loading: true, loadedMessage: 'authorising...' };\n\n if (!this.auth.authenticated) {\n this.auth.markAsAuthenticated();\n }\n } else {\n this.loginDetailsForm.get('username').setValue(params['email']);\n const missingElements = [];\n const incomingRequiredProperties = ['applicationId', 'token', 'userKey'];\n const replaceCharacters = [/%0D/g, /%0A/g, /%0D%0A/g, /\\r/g, /\\n/g];\n const incomingValues: any = Object.keys(params).reduce((acc, incomingProperty) => {\n const sanitisedPropertyName = replaceCharacters.reduce((acc, characterToReplace) => acc.replace(characterToReplace, ''), incomingProperty);\n if (incomingRequiredProperties.indexOf(sanitisedPropertyName) > -1 || incomingRequiredProperties.indexOf(incomingProperty) > -1) {\n const sanitisedValue = replaceCharacters.reduce((acc, characterToReplace) => acc.replace(characterToReplace, ''), params[incomingProperty] || params[sanitisedPropertyName]);\n acc[sanitisedPropertyName] = sanitisedValue;\n }\n return acc;\n }, {});\n incomingRequiredProperties.forEach((property) => {\n if (!incomingValues[property]) {\n missingElements.push(property);\n console.warn('Missing element: ' + property);\n }\n });\n const { applicationId, token, userKey } = incomingValues;\n const emailVerificationIncomingParams = { applicationId, token, usernameHash: userKey };\n\n this.submitEmailVerificationInformation(emailVerificationIncomingParams);\n }\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n if (this.subscriptionVirtualEntityList) {\n this.subscriptionVirtualEntityList.unsubscribe();\n }\n }\n\n submitEmailVerificationInformation(emailVerificationIncomingParams) {\n this.authService.verify(emailVerificationIncomingParams).subscribe(\n (verificationResponse) => {\n // if (verificationResponse.valid === true) {\n // console.log(\"Email successfully verified\")\n // } else {\n // console.log(\"email address could not be verified.\")\n // }\n },\n (err) => {\n console.warn(err.error);\n }\n );\n }\n\n sanitiseDetails(loginDetailsForm: tLoginInfo): tLoginInfo {\n if (loginDetailsForm && loginDetailsForm.username) {\n loginDetailsForm.username = loginDetailsForm.username.toLowerCase();\n loginDetailsForm.username = loginDetailsForm.username.replace(/\\s+/g, '');\n }\n if (loginDetailsForm.password) {\n loginDetailsForm.password = loginDetailsForm.password.replace(/\\s+$/, ''); // Trailing spaces\n loginDetailsForm.password = loginDetailsForm.password.replace(/^\\s+/g, ''); // Spaces at the start of the string\n }\n return loginDetailsForm;\n }\n\n togglePassword(viewPassword: string) {\n this.viewPassword = viewPassword ? false : true;\n }\n\n logOut() {\n this.authService.logout().subscribe(\n (resp) => {\n console.log('logout', resp);\n },\n (err) => {\n console.warn(err);\n }\n );\n }\n\n checkEmail() {\n if (this.loginDetailsForm.value.username == '' || this.loginDetailsForm.value.username == undefined || this.loginDetailsForm.value.username == null) {\n this.loadObj.errorString = 'Enter username';\n } else {\n const body = { username: this.loginDetailsForm.value.username };\n this.authService.checkUserEmailLogin(body).subscribe((resp: any) => {\n if (resp.authenticationTypeService == 'glow-oicd') {\n const params = { login_hint: body.username };\n this.auth.authenticate(true, params);\n this.loginDetailsForm.reset();\n } else {\n this.showPasswordForm = true;\n }\n });\n }\n }\n\n openTermsConditionsModal() {\n this.termsconditionsRef = this.modalService.open(TermsconditionsModalComponent, {\n scrollable: true,\n backdrop: 'static',\n centered: true,\n size: 'xl',\n });\n }\n\n findUserOrganizations() {\n this.authService.getUserOrganizationsOfUser().subscribe(\n (userOrganizations) => {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loaded: true,\n loadedMessage: 'Success',\n };\n this.veService.findVirtualEntities();\n },\n (error) => {\n console.warn(error);\n }\n );\n }\n\n async checkTermsConditions() {\n let userTcObj: any;\n try {\n userTcObj = await this.termsConditionsService.checkIfUserHasAcceptedCurrentTermsAndConditions();\n } catch (e) {\n console.warn(e);\n if (e && e.message) {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString: e.message,\n };\n } else {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString: 'ERROR',\n };\n }\n }\n if (userTcObj && userTcObj.hasUserAcceptedTermsConditions === true) {\n this.findUserOrganizations();\n } else {\n this.isOpenTermsAndConditionsModal = true;\n this.openTermsConditionsModal();\n this.termsconditionsRef.result.then(\n (data) => {\n if (data.reference && data.data) {\n this.termsConditionsService.setUserTermsConditions(data);\n this.findUserOrganizations();\n } else {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString: 'Terms and conditions must be accepted to continue',\n };\n }\n },\n (err: any) => {\n console.warn(err);\n }\n );\n }\n }\n\n doLogin() {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(true);\n let loginDetails = this.sanitiseDetails({ ...this.loginDetailsForm.value });\n this.authService.login(loginDetails).subscribe(\n (authResponse) => {\n if (authResponse === true) {\n const isTempAuth = this.authService.isTempAuth();\n if (isTempAuth === true) {\n this.findUserOrganizations();\n } else {\n this.checkTermsConditions();\n }\n } else {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString: 'Access Denied',\n };\n }\n },\n (err) => {\n console.warn(err);\n let errorString = 'An error has occurred';\n try {\n if (err.error && typeof err.error === 'string') {\n errorString = err.error;\n } else if ((err.error && !err.error.valid) || err.valid === false) {\n errorString = 'Invalid username or password';\n }\n } catch (e) {\n console.warn(e);\n }\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n errorString,\n };\n }\n );\n }\n\n toggleLoginType(type) {\n this.serviceAgentActive = type == 'serviceAgent' ? true : false;\n this.userActive = type == 'user' ? true : false;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9ub3QtZm91bmQtcGFnZS9ub3QtZm91bmQtcGFnZS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-not-found-page',\n templateUrl: './not-found-page.component.html',\n styleUrls: ['./not-found-page.component.scss']\n})\nexport class NotFoundPageComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NotFoundPageComponent } from './not-found-page.component';\n\n@NgModule({\n declarations: [NotFoundPageComponent],\n imports: [\n CommonModule, \n ],\n exports: [NotFoundPageComponent]\n})\nexport class NotFoundPageModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9wcml2YWN5LXBvbGljeS9wcml2YWN5LXBvbGljeS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-privacy-policy',\n templateUrl: './privacy-policy.component.html',\n styleUrls: ['./privacy-policy.component.scss']\n})\nexport class PrivacyPolicyComponent implements OnInit {\n content;\n constructor(private strapiService: StrapiService) {\n this.getContent().then((content) => {\n this.content = content;\n });\n }\n\n ngOnInit() {\n }\n\n async getContent() {\n const content = await this.strapiService.getPrivacyPolicy();\n // console.log(content)\n return content\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9wcm9mZXNzaW9uYWwtcmVnaXN0ZXItZm9ybS9wcm9mZXNzaW9uYWwtcmVnaXN0ZXItZm9ybS5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'app-professional-register-form',\n templateUrl: './professional-register-form.component.html',\n styleUrls: ['./professional-register-form.component.scss', '../register/register.component.scss']\n})\nexport class ProfessionalRegisterFormComponent implements OnInit {\nrole: String;\n constructor( private route: ActivatedRoute) { \n \n this.route.params.subscribe((params) => {\n this.role = params.role \n // console.log(this.role)\n })\n \n\n}\n ngOnInit() {\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProfessionalRegisterFormComponent } from './professional-register-form.component';\nimport { InstallerRegisterFormModule } from 'src/app/components/installer-register-form/installer-register-form.module';\nimport { LocalAuthorityRegisterFormModule } from 'src/app/components/local-authority-register-form/local-authority-register-form.module';\n\n\n\n@NgModule({\n declarations: [ProfessionalRegisterFormComponent],\n imports: [\n CommonModule, InstallerRegisterFormModule, LocalAuthorityRegisterFormModule\n ],\n exports: [ProfessionalRegisterFormComponent]\n})\nexport class ProfessionalRegisterFormModule { }\n","export default \".col-5:hover {\\n transform: scale(1.1);\\n box-shadow: -10px 0px 13px -7px #d9d0d8, 10px 0px 13px -7px #d0d4d9, 0px 0px 15px 3px rgba(223, 224, 229, 0);\\n}\\n\\n.col-5 {\\n transition: transform 0.2s ease;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvcHJvZmVzc2lvbmFscy1yZWdpc3Rlci9wcm9mZXNzaW9uYWxzLXJlZ2lzdGVyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wdWJsaWMvcHJvZmVzc2lvbmFscy1yZWdpc3Rlci9wcm9mZXNzaW9uYWxzLXJlZ2lzdGVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0kscUJBQUE7RUFFQSw0R0FBQTtBQ0RKOztBRFVFO0VBQ0UsK0JBQUE7QUNQSiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9wcm9mZXNzaW9uYWxzLXJlZ2lzdGVyL3Byb2Zlc3Npb25hbHMtcmVnaXN0ZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuLmNvbC01OmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAtMTBweCAwcHggMTNweCAtN3B4ICNkMGQ0ZDksIDEwcHggMHB4IDEzcHggLTdweCAjZDBkNGQ5LCAwcHggMHB4IDE1cHggM3B4IHJnYmEoMjIzLDIyNCwyMjksMCk7IFxuICAgIGJveC1zaGFkb3c6IC0xMHB4IDBweCAxM3B4IC03cHggI2Q5ZDBkOCwgMTBweCAwcHggMTNweCAtN3B4ICNkMGQ0ZDksIDBweCAwcHggMTVweCAzcHggcmdiYSgyMjMsMjI0LDIyOSwwKTtcbiAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmNmY4O1xuICAgIC8vIGJhY2tncm91bmQtY29sb3I6IHdoaXRlXG4gICAgLy8gYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmOVxuICAgIC8vIGJhY2tncm91bmQtY29sb3I6ICNmZmI4NDdcbiAgICAvLyBiYWNrZ3JvdW5kOiByZ2IoMjQ2LDczLDQwKTtcbiAgICAvLyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjQ2LDczLDQwLDAuMjM3MTU0MjM2Njk0Njc3ODMpIDElLCByZ2JhKDI1NSwxMzYsMTUsMC4yMDM1NDA3OTEzMTY1MjY1OCkgNDclLCByZ2JhKDI1NSwxODQsNzEsMC4yNTk1NjMyMDAyODAxMTIwNCkgOTklKTtcbiAgfVxuICBcbiAgLmNvbC01IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuICB9IiwiLmNvbC01OmhvdmVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IC0xMHB4IDBweCAxM3B4IC03cHggI2QwZDRkOSwgMTBweCAwcHggMTNweCAtN3B4ICNkMGQ0ZDksIDBweCAwcHggMTVweCAzcHggcmdiYSgyMjMsIDIyNCwgMjI5LCAwKTtcbiAgYm94LXNoYWRvdzogLTEwcHggMHB4IDEzcHggLTdweCAjZDlkMGQ4LCAxMHB4IDBweCAxM3B4IC03cHggI2QwZDRkOSwgMHB4IDBweCAxNXB4IDNweCByZ2JhKDIyMywgMjI0LCAyMjksIDApO1xufVxuXG4uY29sLTUge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, FormGroupName, Validators } from '@angular/forms';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { tLoadingElementWithSuccess } from 'src/app/services/app-config.typings';\nimport { PostcodeCheckerService } from 'src/app/services/postcode-checker.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { TermsconditionsModalComponent } from 'src/app/components/termsconditions-modal/termsconditions-modal.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\n\n@Component({\n selector: 'app-professionals-register',\n templateUrl: './professionals-register.component.html',\n styleUrls: ['./professionals-register.component.scss', '../register/register.component.scss'],\n})\nexport class ProfessionalsRegisterComponent implements OnInit {\n roles = ['Installers', 'Local Authorities']\n constructor(private router: Router) {\n }\n ngOnInit(): void {\n\n }\n\n navigateToForm(role) {\n if (role == 'Installers'){\n return '/professionals-register/installer?type=personal-details';\n } else if (role == 'Local Authorities') { \n return '/professionals-register/local-authority';\n\n\n }}\n}","export default \".split-view {\\n margin: 0 auto;\\n width: 100%;\\n max-width: 1000px;\\n}\\n\\n::ng-deep .clr-error .clr-input-group:focus,\\n::ng-deep .clr-input-group {\\n border-bottom: none !important;\\n}\\n\\n::ng-deep .clr-input-group .clr-input-group-icon-action {\\n position: relative;\\n left: -40px;\\n}\\n\\n::ng-deep .login-wrapper .login .login-group .clr-control-container .clr-input-wrapper > .clr-input-group > .clr-input {\\n width: 100%;\\n}\\n\\n::ng-deep .login-wrapper .login .login-group {\\n display: block;\\n flex-direction: unset;\\n padding: 0 !important;\\n margin: 0 auto;\\n}\\n\\n::ng-deep .clr-control-label {\\n margin-bottom: 5px;\\n}\\n\\n.login-group {\\n max-width: 366px;\\n}\\n\\n.signup {\\n display: block;\\n}\\n\\n.tooltip {\\n display: block;\\n}\\n\\n::ng-deep .clr-input-group,\\n::ng-deep .clr-error .clr-input-group {\\n background: none;\\n transition: none;\\n}\\n\\n.alert.alert-warning {\\n border: none !important;\\n background: none !important;\\n}\\n\\n.alert-text {\\n color: #ED5239 !important;\\n font-size: 14px;\\n position: relative;\\n top: -14px;\\n left: -3px;\\n}\\n\\n@media screen and (max-width: 400px) {\\n .login-wrapper .login {\\n padding: 1.2rem 5%;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvcHVibGljLWNvbXBvbmVudHMuc2NzcyIsInNyYy9hcHAvcHVibGljL3B1YmxpYy1jb21wb25lbnRzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxjQUFBO0VBQ0EsV0FBQTtFQUNBLGlCQUFBO0FDQ0o7O0FERUE7O0VBRUksOEJBQUE7QUNDSjs7QURFQTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtBQ0NKOztBREVBO0VBQ0ksV0FBQTtBQ0NKOztBREVBO0VBQ0ksY0FBQTtFQUNBLHFCQUFBO0VBQ0EscUJBQUE7RUFDQSxjQUFBO0FDQ0o7O0FERUE7RUFDSSxrQkFBQTtBQ0NKOztBREVBO0VBQ0ksZ0JBQUE7QUNDSjs7QURFQTtFQUNJLGNBQUE7QUNDSjs7QURFQTtFQUNJLGNBQUE7QUNDSjs7QURFQTs7RUFFSSxnQkFBQTtFQUNBLGdCQUFBO0FDQ0o7O0FERUE7RUFDSSx1QkFBQTtFQUNBLDJCQUFBO0FDQ0o7O0FERUE7RUFDSSx5QkFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxVQUFBO0FDQ0o7O0FER0E7RUFDSTtJQUNJLGtCQUFBO0VDQU47QUFDRiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9wdWJsaWMtY29tcG9uZW50cy5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNwbGl0LXZpZXcge1xuICAgIG1hcmdpbjogMCBhdXRvOyBcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMDBweDtcbn1cblxuOjpuZy1kZWVwIC5jbHItZXJyb3IgLmNsci1pbnB1dC1ncm91cDpmb2N1cyxcbjo6bmctZGVlcCAuY2xyLWlucHV0LWdyb3VwIHtcbiAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbjo6bmctZGVlcCAuY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiAtNDBweDtcbn1cblxuOjpuZy1kZWVwIC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXIgPiAuY2xyLWlucHV0LWdyb3VwID4gLmNsci1pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbjo6bmctZGVlcCAubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbGV4LWRpcmVjdGlvbjogdW5zZXQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbjogMCBhdXRvO1xufVxuXG46Om5nLWRlZXAgLmNsci1jb250cm9sLWxhYmVsIHtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG59XG5cbi5sb2dpbi1ncm91cCB7XG4gICAgbWF4LXdpZHRoOiAzNjZweDtcbn1cblxuLnNpZ251cCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi50b29sdGlwIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuOjpuZy1kZWVwIC5jbHItaW5wdXQtZ3JvdXAsXG46Om5nLWRlZXAgLmNsci1lcnJvciAuY2xyLWlucHV0LWdyb3VwIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG59XG5cbi5hbGVydC5hbGVydC13YXJuaW5nIHtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5hbGVydC10ZXh0IHtcbiAgICBjb2xvcjogI0VENTIzOSAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtMTRweDtcbiAgICBsZWZ0OiAtM3B4O1xufVxuXG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQwMHB4KSB7XG4gICAgLmxvZ2luLXdyYXBwZXIgLmxvZ2luIHtcbiAgICAgICAgcGFkZGluZzogMS4ycmVtIDUlO1xuICAgIH1cbn0iLCIuc3BsaXQtdmlldyB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAwcHg7XG59XG5cbjo6bmctZGVlcCAuY2xyLWVycm9yIC5jbHItaW5wdXQtZ3JvdXA6Zm9jdXMsXG46Om5nLWRlZXAgLmNsci1pbnB1dC1ncm91cCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDtcbn1cblxuOjpuZy1kZWVwIC5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogLTQwcHg7XG59XG5cbjo6bmctZGVlcCAubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVyID4gLmNsci1pbnB1dC1ncm91cCA+IC5jbHItaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbn1cblxuOjpuZy1kZWVwIC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZmxleC1kaXJlY3Rpb246IHVuc2V0O1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG46Om5nLWRlZXAgLmNsci1jb250cm9sLWxhYmVsIHtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4ubG9naW4tZ3JvdXAge1xuICBtYXgtd2lkdGg6IDM2NnB4O1xufVxuXG4uc2lnbnVwIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi50b29sdGlwIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbjo6bmctZGVlcCAuY2xyLWlucHV0LWdyb3VwLFxuOjpuZy1kZWVwIC5jbHItZXJyb3IgLmNsci1pbnB1dC1ncm91cCB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHRyYW5zaXRpb246IG5vbmU7XG59XG5cbi5hbGVydC5hbGVydC13YXJuaW5nIHtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmFsZXJ0LXRleHQge1xuICBjb2xvcjogI0VENTIzOSAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDE0cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMTRweDtcbiAgbGVmdDogLTNweDtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDAwcHgpIHtcbiAgLmxvZ2luLXdyYXBwZXIgLmxvZ2luIHtcbiAgICBwYWRkaW5nOiAxLjJyZW0gNSU7XG4gIH1cbn0iXX0= */\"","import { NgModule } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { LoginComponent } from './login/login.component';\nimport { SharedModule } from '../shared/shared.module';\nimport { FaqsLandingComponent } from '../public/faqs-landing/faqs-landing.component';\nimport { FaqsTopicComponent } from '../public/faq-topic/faqs-topic.component';\nimport { FaqDetailedComponent } from '../public/faq-detailed/faq-detailed.component';\nimport { UserStoryDetailedComponent } from '../public/user-story-detailed/user-story-detailed.component';\nimport { GeneratePasswordTokenComponent } from '../public/generate-password-token/generate-password-token.component';\nimport { ResetPasswordComponent } from '../public/reset-password/reset-password.component';\nimport { FaqsSearchbarComponent } from '../components/faqs-searchbar/faqs-searchbar.component';\nimport { FaqsTopicsComponent } from '../components/faqs-topics/faqs-topics.component';\nimport { FaqsSubtopicsComponent } from '../components/faqs-subtopics/faqs-subtopics.component';\nimport { BreadcrumbComponent } from '../components/breadcrumb/breadcrumb.component';\nimport { FaqFeedbackFormComponent } from '../components/faq-feedback-form/faq-feedback-form.component';\nimport { FaqQuestionFormComponent } from '../components/faq-question-form/faq-question-form.component';\nimport { FaqDetailedContentComponent } from '../components/faq-detailed-content/faq-detailed-content.component';\nimport { SideBarComponent } from '../components/side-bar/side-bar.component';\nimport { UserStoryDetailedContentComponent } from '../components/user-story-detailed-content/user-story-detailed-content.component';\n// import { TagComponent } from '../components/tag/tag.component';\nimport { BlockquoteComponent } from '../components/blockquote/blockquote.component';\nimport { SocialMediaButtonsComponent } from '../components/social-media-buttons/social-media-buttons.component';\nimport { UserStoryCardComponent } from '../components/user-story-card/user-story-card.component';\nimport { BlogComponent } from './blog/blog.component';\nimport { BlogContentComponent } from '../components/blog-content/blog-content.component';\nimport { LandingComponent } from './landing/landing.component';\nimport { LandingSearchbarComponent } from '../components/landing-searchbar/landing-searchbar.component';\nimport { LandingCarouselComponent } from '../components/landing-carousel/landing-carousel.component';\nimport { BlogCardComponent } from '../components/blog-card/blog-card.component';\nimport { LandingCarouselCardComponent } from '../components/landing-carousel-card/landing-carousel-card.component';\nimport { ResourcesListComponent } from './resources-list/resources-list.component';\nimport { ResourcesListContentComponent } from '../components/resources-list-content/resources-list-content.component';\nimport { ResourcesListCardComponent } from '../components/resources-list-card/resources-list-card.component';\nimport { ComingSoonCardComponent } from '../components/coming-soon-card/coming-soon-card.component';\nimport { TutorialComponent } from './tutorial/tutorial.component';\nimport { TutorialContentComponent } from '../components/tutorial-content/tutorial-content.component';\nimport { NgxScrollspyModule } from '@uniprank/ngx-scrollspy';\nimport { TutorialCardComponent } from '../components/tutorial-card/tutorial-card.component';\nimport { IvyCarouselModule } from 'angular-responsive-carousel';\nimport { ArticleComponent } from './article/article.component';\nimport { ArticleContentComponent } from '../components/article-content/article-content.component';\nimport { ArticleCardComponent } from '../components/article-card/article-card.component';\nimport { GlossaryComponent } from './glossary/glossary.component';\nimport { GlossaryTermComponent } from '../components/glossary-term/glossary-term.component';\nimport { GlossarySearchbarComponent } from '../components/glossary-searchbar/glossary-searchbar.component';\nimport { LandingSidebarComponent } from '../components/landing-sidebar/landing-sidebar.component';\nimport { CommunityCardComponent } from '../components/community-card/community-card.component';\nimport { AboutUsComponent } from './about-us/about-us.component';\nimport { AboutCommunityComponent } from './about-community/about-community.component';\nimport { SearchResultsComponent } from './search-results/search-results.component';\nimport { ScrollProgressBarComponent } from '../components/scroll-progress-bar/scroll-progress-bar.component';\nimport { CommunityHomeComponent } from './community-home/community-home.component';\nimport { CommunityHomepageContentComponent } from '../components/community-homepage-content/community-homepage-content.component';\nimport { GlossarySidebarComponent } from '../components/glossary-sidebar/glossary-sidebar.component';\nimport { TopGlossaryTermsComponent } from './top-glossary-terms/top-glossary-terms.component';\nimport { GlossaryCardComponent } from '../components/glossary-card/glossary-card.component';\nimport { LandingCommunitiesContentComponent } from '../components/landing-communities-content/landing-communities-content.component';\nimport { NgbCarouselModule, NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RelatedFaqsSidebarComponent } from '../components/related-faqs-sidebar/related-faqs-sidebar.component';\nimport { TagPageComponent } from './tag-page/tag-page.component';\nimport { NotFoundPageComponent } from './not-found-page/not-found-page.component';\nimport { ContactUsComponent } from './contact-us/contact-us.component';\nimport { RegisterComponent } from './register/register.component';\nimport { VerifyEmailComponent } from './verify-email/verify-email.component';\nimport { TermsconditionsModalComponent } from '../components/termsconditions-modal/termsconditions-modal.component';\nimport { DelightEventParticipationComponent } from './delight-event-participation/delight-event-participation.component';\nimport { BrightComponent } from './bright/bright.component';\nimport { CookiePolicyComponent } from '../components/cookie-policy/cookie-policy.component';\nimport { TermsAndConditionsComponent } from '../components/terms-and-conditions/terms-and-conditions.component';\nimport { FaqsSubtopicNonFaqContentComponent } from '../components/faqs-subtopic-non-faq-content/faqs-subtopic-non-faq-content.component';\nimport { RightHorizontalHeroComponent } from '../components/landing-community-layouts/right-horizontal-hero/right-horizontal-hero.component';\nimport { LeftVerticalHeroComponent } from '../components/landing-community-layouts/left-vertical-hero/left-vertical-hero.component';\nimport { LeftHorizontalHeroComponent } from '../components/landing-community-layouts/left-horizontal-hero/left-horizontal-hero.component';\nimport { LandingBannerComponent } from '../components/landing-banner/landing-banner.component';\nimport { InfographicCardComponent } from '../components/infographic-card/infographic-card.component';\nimport { SystemIncidentsContentComponent } from '../components/system-incidents-content/system-incidents-content.component';\nimport { SystemIncidentsMailSubscriptionModalComponent } from '../components/system-incidents-mail-subscription-modal/system-incidents-mail-subscription-modal.component';\nimport { UnsubscribePageComponent } from './unsubscribe-page/unsubscribe-page.component';\nimport { LoginModalComponent } from '../components/login-modal/login-modal.component';\nimport { ConfirmationModalComponent } from '../components/confirmation-modal/confirmation-modal.component';\n// import { CaseStudyComponent } from './case-study/case-study.component';\nimport { CaseStudyFeedbackComponent } from '../components/case-study/case-study-feedback/case-study-feedback.component';\nimport { CaseStudiesLandingComponent } from './case-studies-landing/case-studies-landing.component';\nimport { CaseStudyCardComponent } from '../components/case-study-card/case-study-card.component';\nimport { AngularSvgIconModule, SvgLoader } from 'angular-svg-icon';\nimport { ProfessionalsRegisterComponent } from './professionals-register/professionals-register.component';\nimport { PrivacyPolicyComponent } from './privacy-policy/privacy-policy.component';\nimport { ImageModalComponent } from '../components/image-modal/image-modal.component';\nimport { StarRatingModule } from '../components/star-rating/star-rating.module';\nimport { TagModule } from '../components/tag/tag.module';\nimport { ContentCardModule } from '../components/content-card/content-card.module';\nimport { LandingSearchBarModule } from '../components/landing-searchbar/landing-searchbar.module';\nimport { InfographicModule } from './infographic/infographic.module';\nimport { NotFoundPageModule } from './not-found-page/not-found-page.module';\nimport { HpjInfographicModule } from '../components/infographics/hpj-infographic/hpj-infographic.module';\nimport { InstallerJourneyInfographicModule } from '../components/infographics/installer-journey-infographic/installer-journey-infographic.module';\nimport { ProfessionalRegisterStepperModule } from '../components/professional-register-stepper/professional-register-stepper.module';\nimport { FormValidationMessageModule } from '../components/form-validation-message/form-validation-message.module';\nimport { ProfessionalRegisterFormModule } from './professional-register-form/professional-register-form.module';\nimport { InstallerRegisterFormModule } from '../components/installer-register-form/installer-register-form.module';\nimport { LocalAuthorityRegisterFormModule } from '../components/local-authority-register-form/local-authority-register-form.module';\nimport { SuccessfulRegisterModule } from './successful-register/successful-register.module';\nimport { ConfirmationModalModule } from '../components/confirmation-modal/confirmation-modal.module';\nimport { CaseStudyFilterModule } from '../components/case-study-filter/case-study-filter.module';\nimport { InstallerPageModule } from './installer-page/installer-page.module';\nimport { RegisterHomeModule } from './register/register-home/register-home.module';\nimport { FindAProfessionalModule } from './find-a-professional/find-a-professional.module';\n\n@NgModule({\n declarations: [\n BlockquoteComponent,\n BreadcrumbComponent,\n FaqsLandingComponent,\n FaqsTopicComponent,\n FaqsTopicsComponent,\n FaqsSubtopicsComponent,\n FaqDetailedComponent,\n FaqsSearchbarComponent,\n FaqFeedbackFormComponent,\n FaqQuestionFormComponent,\n FaqDetailedComponent,\n FaqDetailedContentComponent,\n GeneratePasswordTokenComponent,\n LoginComponent,\n ResetPasswordComponent,\n SideBarComponent,\n SocialMediaButtonsComponent,\n // TagComponent,\n UserStoryCardComponent,\n UserStoryDetailedComponent,\n UserStoryDetailedContentComponent,\n // LandingSearchbarComponent,\n LandingCarouselComponent,\n LandingComponent,\n BlogCardComponent,\n BlogComponent,\n BlogContentComponent,\n LandingCarouselCardComponent,\n ResourcesListComponent,\n ResourcesListContentComponent,\n ResourcesListCardComponent,\n ComingSoonCardComponent,\n TutorialComponent,\n TutorialContentComponent,\n TutorialCardComponent,\n ArticleComponent,\n ArticleContentComponent,\n ArticleCardComponent,\n GlossaryComponent,\n GlossaryTermComponent,\n GlossarySearchbarComponent,\n LandingBannerComponent,\n LandingSidebarComponent,\n CommunityCardComponent,\n AboutUsComponent,\n AboutCommunityComponent,\n ScrollProgressBarComponent,\n CommunityHomeComponent,\n CommunityHomepageContentComponent,\n SearchResultsComponent,\n RelatedFaqsSidebarComponent,\n GlossarySidebarComponent,\n TopGlossaryTermsComponent,\n GlossaryCardComponent,\n LandingCommunitiesContentComponent,\n LandingCarouselCardComponent,\n TagPageComponent,\n BrightComponent,\n ContactUsComponent,\n RegisterComponent,\n VerifyEmailComponent,\n TermsconditionsModalComponent,\n DelightEventParticipationComponent,\n CookiePolicyComponent,\n TermsAndConditionsComponent,\n FaqsSubtopicNonFaqContentComponent,\n RightHorizontalHeroComponent,\n LeftVerticalHeroComponent,\n LeftHorizontalHeroComponent,\n InfographicCardComponent,\n SystemIncidentsContentComponent,\n SystemIncidentsMailSubscriptionModalComponent,\n UnsubscribePageComponent,\n LoginModalComponent,\n // ConfirmationModalComponent,\n // CaseStudyComponent,\n CaseStudyFeedbackComponent,\n // CaseStudySummaryComponent,\n // CaseStudyInstallationComponent,\n // CaseStudyPreInstallationComponent,\n // CaseStudyOutcomesComponent,\n // CaseStudyInstallatonHeatingSystemTechnicalComponent,\n // CaseStudyDetailsComponent,\n // CaseStudyOtherContentComponent,\n CaseStudiesLandingComponent,\n CaseStudyCardComponent,\n // StarRatingComponent,\n ProfessionalsRegisterComponent,\n PrivacyPolicyComponent,\n ImageModalComponent,\n // ContentCardComponent,\n ],\n imports: [\n SharedModule,\n NgxScrollspyModule.forRoot(),\n IvyCarouselModule,\n NgbCarouselModule,\n NgbPopoverModule,\n StarRatingModule,\n TagModule,\n LandingSearchBarModule,\n ContentCardModule,\n InfographicModule,\n NotFoundPageModule,\n ProfessionalRegisterStepperModule,\n HpjInfographicModule,\n ConfirmationModalModule,\n InstallerJourneyInfographicModule,\n FormValidationMessageModule,\n InstallerRegisterFormModule,\n ProfessionalRegisterFormModule,\n AngularSvgIconModule.forRoot(),\n LocalAuthorityRegisterFormModule,\n SuccessfulRegisterModule,\n CaseStudyFilterModule,\n InstallerPageModule,\n RegisterHomeModule,\n FindAProfessionalModule\n ],\n exports: [\n BlockquoteComponent,\n BreadcrumbComponent,\n FaqsLandingComponent,\n FaqsTopicComponent,\n FaqsTopicsComponent,\n FaqsSubtopicsComponent,\n FaqDetailedComponent,\n FaqsSearchbarComponent,\n FaqFeedbackFormComponent,\n FaqQuestionFormComponent,\n FaqDetailedComponent,\n FaqDetailedContentComponent,\n GeneratePasswordTokenComponent,\n LoginComponent,\n ResetPasswordComponent,\n SideBarComponent,\n SocialMediaButtonsComponent,\n // TagComponent,\n UserStoryCardComponent,\n UserStoryDetailedComponent,\n UserStoryDetailedContentComponent,\n LandingComponent,\n // LandingSearchbarComponent,\n LandingCarouselComponent,\n BlogCardComponent,\n LandingCarouselCardComponent,\n ResourcesListComponent,\n ResourcesListContentComponent,\n ResourcesListCardComponent,\n ComingSoonCardComponent,\n TutorialComponent,\n TutorialContentComponent,\n TutorialCardComponent,\n ArticleComponent,\n ArticleContentComponent,\n ArticleCardComponent,\n GlossaryComponent,\n GlossaryTermComponent,\n GlossarySearchbarComponent,\n LandingBannerComponent,\n LandingSidebarComponent,\n CommunityCardComponent,\n AboutCommunityComponent,\n AboutUsComponent,\n GlossarySidebarComponent,\n TopGlossaryTermsComponent,\n ScrollProgressBarComponent,\n CommunityHomeComponent,\n CommunityHomepageContentComponent,\n LandingCommunitiesContentComponent,\n LandingCarouselCardComponent,\n SearchResultsComponent,\n RelatedFaqsSidebarComponent,\n GlossaryCardComponent,\n TagPageComponent,\n BrightComponent,\n RegisterComponent,\n VerifyEmailComponent,\n TermsconditionsModalComponent,\n ContactUsComponent,\n CookiePolicyComponent,\n TermsAndConditionsComponent,\n FaqsSubtopicNonFaqContentComponent,\n RightHorizontalHeroComponent,\n LeftVerticalHeroComponent,\n LeftHorizontalHeroComponent,\n InfographicCardComponent,\n SystemIncidentsContentComponent,\n SystemIncidentsMailSubscriptionModalComponent,\n UnsubscribePageComponent,\n LoginModalComponent,\n ConfirmationModalComponent,\n // CaseStudyComponent,\n CaseStudyFeedbackComponent,\n // CaseStudySummaryComponent,\n // CaseStudyInstallationComponent,\n // CaseStudyPreInstallationComponent,\n // CaseStudyOutcomesComponent,\n // CaseStudyOtherContentComponent,\n // CaseStudyInstallatonHeatingSystemTechnicalComponent,\n // CaseStudyDetailsComponent,\n CaseStudiesLandingComponent,\n CaseStudyCardComponent,\n // StarRatingComponent,\n ProfessionalsRegisterComponent,\n PrivacyPolicyComponent,\n ImageModalComponent,\n // FindAProfessionalComponent\n // ContentCardComponent,\n ],\n providers: [FormBuilder],\n entryComponents: [\n TermsconditionsModalComponent,\n SystemIncidentsMailSubscriptionModalComponent,\n LoginModalComponent,\n ConfirmationModalComponent,\n CaseStudyFeedbackComponent,\n ImageModalComponent,\n ],\n})\nexport class PublicPagesModule {}\n","export default \".col-5:hover {\\n transform: scale(1.1);\\n box-shadow: -10px 0px 13px -7px #d9d0d8, 10px 0px 13px -7px #d0d4d9, 0px 0px 15px 3px rgba(223, 224, 229, 0);\\n}\\n\\n.col-5 {\\n transition: transform 0.2s ease;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvcmVnaXN0ZXIvcmVnaXN0ZXItaG9tZS9yZWdpc3Rlci1ob21lLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wdWJsaWMvcmVnaXN0ZXIvcmVnaXN0ZXItaG9tZS9yZWdpc3Rlci1ob21lLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBO0VBQ0kscUJBQUE7RUFFQSw0R0FBQTtBQ0FKOztBRElFO0VBQ0UsK0JBQUE7QUNESiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9yZWdpc3Rlci9yZWdpc3Rlci1ob21lL3JlZ2lzdGVyLWhvbWUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcbi5jb2wtNTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogLTEwcHggMHB4IDEzcHggLTdweCAjZDBkNGQ5LCAxMHB4IDBweCAxM3B4IC03cHggI2QwZDRkOSwgMHB4IDBweCAxNXB4IDNweCByZ2JhKDIyMywyMjQsMjI5LDApOyBcbiAgICBib3gtc2hhZG93OiAtMTBweCAwcHggMTNweCAtN3B4ICNkOWQwZDgsIDEwcHggMHB4IDEzcHggLTdweCAjZDBkNGQ5LCAwcHggMHB4IDE1cHggM3B4IHJnYmEoMjIzLDIyNCwyMjksMCk7XG4gICBcbiAgfVxuICBcbiAgLmNvbC01IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuICB9IiwiLmNvbC01OmhvdmVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IC0xMHB4IDBweCAxM3B4IC03cHggI2QwZDRkOSwgMTBweCAwcHggMTNweCAtN3B4ICNkMGQ0ZDksIDBweCAwcHggMTVweCAzcHggcmdiYSgyMjMsIDIyNCwgMjI5LCAwKTtcbiAgYm94LXNoYWRvdzogLTEwcHggMHB4IDEzcHggLTdweCAjZDlkMGQ4LCAxMHB4IDBweCAxM3B4IC03cHggI2QwZDRkOSwgMHB4IDBweCAxNXB4IDNweCByZ2JhKDIyMywgMjI0LCAyMjksIDApO1xufVxuXG4uY29sLTUge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-register-home',\n templateUrl: './register-home.component.html',\n styleUrls: ['./register-home.component.scss', '../register.component.scss'],\n})\nexport class RegisterHomeComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RegisterHomeComponent } from './register-home.component';\n\n\n\n@NgModule({\n declarations: [RegisterHomeComponent],\n imports: [\n CommonModule\n ]\n})\nexport class RegisterHomeModule { }\n","export default \"form .ng-touched.ng-invalid {\\n border: solid #e32b4d 0.5px;\\n}\\n\\n.logo-text {\\n font-family: \\\"DIN Next LT Pro\\\" !important;\\n font-weight: 500;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3B1YmxpYy9yZWdpc3Rlci9yZWdpc3Rlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSTtFQUNJLDJCQUFBO0FDQVI7O0FESUE7RUFDSSx5Q0FBQTtFQUNBLGdCQUFBO0FDREoiLCJmaWxlIjoic3JjL2FwcC9wdWJsaWMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJmb3JtIHtcbiAgICAubmctdG91Y2hlZC5uZy1pbnZhbGlkIHtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCNlMzJiNGQgMC41cHg7XG4gICAgfVxufVxuXG4ubG9nby10ZXh0IHtcbiAgICBmb250LWZhbWlseTogJ0RJTiBOZXh0IExUIFBybychaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cblxuIiwiZm9ybSAubmctdG91Y2hlZC5uZy1pbnZhbGlkIHtcbiAgYm9yZGVyOiBzb2xpZCAjZTMyYjRkIDAuNXB4O1xufVxuXG4ubG9nby10ZXh0IHtcbiAgZm9udC1mYW1pbHk6IFwiRElOIE5leHQgTFQgUHJvXCIgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { tRegistrationInfo } from 'src/app/services/glow.typings';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { Router } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TermsconditionsModalComponent } from 'src/app/components/termsconditions-modal/termsconditions-modal.component';\nimport { tLoadingElementWithSuccess } from 'src/app/services/app-config.typings';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FormValidationService } from 'src/app/services/form-validation.service';\n\n@Component({\n selector: 'app-register',\n templateUrl: './register.component.html',\n styleUrls: ['./register.component.scss'],\n})\n\nexport class RegisterComponent implements OnInit {\n\n registerForm: FormGroup;\n viewPassword: boolean = false;\n error = false;\n errorMessages;\n loadObj: tLoadingElementWithSuccess;\n\n constructor(private formBuilder: FormBuilder,\n private authService: GlowService,\n private router: Router,\n private modalService: NgbModal,\n private uiConfigService: CustomUIConfigService,\n private translate: TranslateService,\n private formValidationService: FormValidationService\n ) {\n this.registerForm = this.formBuilder.group({\n emailAddress: ['', [Validators.required, FormValidator.isEmailValid]],\n password: ['', [Validators.required, FormValidator.isPasswordStrong]],\n confirmPassword: ['', [Validators.required, FormValidator.isPasswordSame]],\n });\n\n }\n\n ngOnInit() { }\n\n togglePassword(viewPassword) {\n this.viewPassword = viewPassword ? false : true;\n }\n\n openTermsConditions() {\n const termsconditionsRef = this.modalService.open(TermsconditionsModalComponent, {\n scrollable: true,\n centered: true,\n size: 'xl',\n });\n termsconditionsRef.componentInstance.displayForm = false\n termsconditionsRef.componentInstance.title = 'Glow'\n\n\n\n }\n\n\n checkFormValidity(formControlName, translateKey?) {\n \n return this.formValidationService.checkFormValidity(this.registerForm, formControlName, translateKey)\n }\n sanitiseDetails(user: tRegistrationInfo) {\n if (user.email) {\n user.email = user.email.toLowerCase();\n user.email = user.email.replace(/\\s+/g, ''); //remove spaces at start\n user.email = user.email.replace(/\\s+$/, ''); //remove trailing spaces\n user.username = user.email;\n }\n if (user.password) {\n user.password = user.password.replace(/\\s+/g, ''); //remove spaces at start\n user.password = user.password.replace(/\\s+$/, ''); //remove trailing spaces\n }\n return user;\n }\n\n doRegister() {\n if (!this.registerForm.valid) {\n } else {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(true);\n const user = new tRegistrationInfo();\n user.email = this.registerForm.get('emailAddress').value;\n user.password = this.registerForm.get('password').value;\n const sanitisedUser = this.sanitiseDetails(user);\n this.authService.register(sanitisedUser).subscribe(\n (authResponse) => {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loaded: true,\n loadedMessage: 'Success',\n };\n this.router.navigateByUrl(`/verify-email?email=${sanitisedUser.email}`)\n },\n (errResp) => {\n this.loadObj = {\n ...this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false),\n loadError: true,\n // errorString: 'Access Denied',\n };\n\n this.error = true\n this.errorMessages = [errResp.error.error]\n console.warn(errResp.error.error);\n }\n );\n }\n }\n\n\n}","export default \".form-container {\\n background-position: center left;\\n background-size: cover;\\n height: 80%;\\n width: 100%;\\n}\\n\\n.form-overlay {\\n width: 100%;\\n height: 80%;\\n background-color: rgba(255, 255, 255, 0.741);\\n}\\n\\ninput {\\n border: 0px solid !important;\\n border-radius: 0px !important;\\n border-bottom: 1px solid #888888 !important;\\n background-color: transparent !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2dsb3dkZXBsb3ltZW50c2NyaXB0cy93ZWJzaXRlcy9nbG93bWFya3QvZ2xvd21hcmt0LXdlYnNpdGUvc3JjL2FwcC9wdWJsaWMvcmVzZXQtcGFzc3dvcmQvcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3B1YmxpYy9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUVJLGdDQUFBO0VBQ0Esc0JBQUE7RUFDQSxXQUFBO0VBQ0EsV0FBQTtBQ0FKOztBRElBO0VBQ0ksV0FBQTtFQUNBLFdBQUE7RUFFQSw0Q0FBQTtBQ0ZKOztBRElBO0VBQ0ksNEJBQUE7RUFDQSw2QkFBQTtFQUNBLDJDQUFBO0VBQ0Esd0NBQUE7QUNESiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWNvbnRhaW5lciB7XG4gICAgLy8gYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYWJzdHJhY3QxLnBuZyk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGxlZnQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBoZWlnaHQ6IDgwJTtcbiAgICB3aWR0aDogMTAwJTtcblxufVxuXG4uZm9ybS1vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDgwJTtcbiAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmN2ZmZTA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc0MSk7XG59XG5pbnB1dCB7XG4gICAgYm9yZGVyOiAwcHggc29saWQgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDEzNiwgMTM2LCAxMzYpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn0iLCIuZm9ybS1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgaGVpZ2h0OiA4MCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZm9ybS1vdmVybGF5IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogODAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzQxKTtcbn1cblxuaW5wdXQge1xuICBib3JkZXI6IDBweCBzb2xpZCAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM4ODg4ODggIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn0iXX0= */\"","import { Component } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { tLoadingElementWithSuccess } from 'src/app/services/app-config.typings';\nimport { CustomUIConfigService } from 'src/app/services/custom-ui-config.service';\nimport { GlowEventService } from 'src/app/services/event.service';\nimport { GlowService } from 'src/app/services/glow.service';\nimport { tLoginInfo } from 'src/app/services/glow.typings';\nimport { FormValidator } from 'src/app/services/user-validators';\nimport { UserGroupSelectorService } from 'src/app/services/usergroup-selector.service';\n\n@Component({\n selector: 'app-reset-password',\n templateUrl: './reset-password.component.html',\n styleUrls: ['./reset-password.component.scss'],\n})\nexport class ResetPasswordComponent {\n formInfo: FormGroup;\n loadObj: tLoadingElementWithSuccess;\n viewPassword: boolean = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private authService: GlowService,\n private glowEventService: GlowEventService,\n private router: Router,\n private uiConfigService: CustomUIConfigService,\n private userGroupSelectorService: UserGroupSelectorService\n ) {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(false);\n\n this.formInfo = this.formBuilder.group({\n username: ['', [Validators.required, FormValidator.isUsernameValid]],\n token: ['', Validators.required],\n password: ['', [Validators.required, FormValidator.isPasswordStrong]],\n confirmPassword: ['', [Validators.required, FormValidator.isPasswordSame]],\n });\n }\n\n togglePassword(viewPassword) {\n this.viewPassword = viewPassword ? false : true;\n }\n\n submitForm() {\n // console.log('Password Reset attempt');\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(true);\n\n var resetPasswordBody = {\n username: this.formInfo.value.username,\n token: this.formInfo.value.token,\n newPassword: this.formInfo.value.password,\n };\n this.authService.resetPassword(resetPasswordBody).subscribe(\n (response) => {\n this.loadObj.loading = false;\n\n if (response.valid === true) {\n this.loadObj.loaded = true;\n // this.loadObj.loadedMessage = 'Your password was successfully reset';\n this.doLogin();\n } else {\n this.loadObj.loadError = true;\n this.loadObj.errorString = 'An error has occurred';\n }\n },\n (err) => {\n console.warn(err);\n let errMsg = 'An error has occurred';\n try {\n const errJson = err.json();\n if (errJson.error) {\n errMsg = errJson.error;\n } else if (errJson.valid === false) {\n errMsg = 'Invalid username or password';\n }\n } catch (e) {\n console.warn(e);\n }\n this.loadObj.loading = false;\n this.loadObj.loadError = true;\n this.loadObj.errorString = errMsg;\n }\n );\n }\n\n // Attempt to login in through our User service\n doLogin() {\n this.loadObj = this.uiConfigService.initialiseLoadingBooleansWithLoadedMsg(true);\n\n // console.log('Login attempt');\n let loginDetails = this.sanitiseDetails({ ...this.formInfo.value });\n this.authService.login(loginDetails).subscribe(\n (authResponse) => {\n this.loadObj.loading = false;\n\n if (authResponse === true) {\n this.loadObj.loaded = true;\n // this.loadObj.loadedMessage = 'Success';\n this.glowEventService.sendEvent({}, 'login');\n this.authService.getUserOrganizationsOfUser().subscribe(\n (userOrganizationGroups) => {\n if (\n userOrganizationGroups &&\n Array.isArray(userOrganizationGroups) &&\n userOrganizationGroups.length > 1\n ) {\n this.router.navigateByUrl('/pages/usergroup');\n } else if (userOrganizationGroups.length == 1) {\n this.userGroupSelectorService.setUserOrganization(userOrganizationGroups[0]);\n this.router.navigateByUrl('/pages/overview');\n } else {\n console.warn('No user Organizations found');\n this.router.navigateByUrl(`/login?email=${this.formInfo.value.username}`);\n \n }\n },\n (error) => {\n console.warn(error);\n // console.log('User Organizations loading error is : ' + error);\n }\n );\n } else {\n this.loadObj.loadError = true;\n this.loadObj.errorString = 'Access Denied';\n }\n },\n (err) => {\n console.warn(err);\n let errMsg = 'An error has occurred';\n try {\n const errJson = err.json();\n if (errJson.error) {\n errMsg = errJson.error;\n } else if (errJson.valid === false) {\n errMsg = 'Invalid username or password';\n }\n } catch (e) {\n console.warn(e);\n }\n this.loadObj.loading = false;\n this.loadObj.loadError = true;\n this.loadObj.errorString = errMsg;\n }\n );\n }\n\n sanitiseDetails(loginDetailsForm: tLoginInfo): tLoginInfo {\n // Lowercase Username:\n if (loginDetailsForm && loginDetailsForm.username) {\n loginDetailsForm.username = loginDetailsForm.username.toLowerCase();\n loginDetailsForm.username = loginDetailsForm.username.replace(/\\s+/g, '');\n }\n\n if (loginDetailsForm.password) {\n loginDetailsForm.password = loginDetailsForm.password.replace(/\\s+$/, ''); // Trailing spaces\n loginDetailsForm.password = loginDetailsForm.password.replace(/^\\s+/g, ''); // Spaces at the start of the string\n }\n\n return loginDetailsForm;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9yZXNvdXJjZXMtbGlzdC9yZXNvdXJjZXMtbGlzdC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MetaTagsService } from 'src/app/services/meta-tags.service';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-resources-list',\n templateUrl: './resources-list.component.html',\n styleUrls: ['./resources-list.component.scss'],\n})\nexport class ResourcesListComponent implements OnInit {\n url;\n resourcesList: any;\n loading: any = false;\n constructor(private route: ActivatedRoute, private router: Router, private strapiService: StrapiService, private seoService: SeoService) {\n route.params.subscribe((params) => {\n // // console.log(params)\n this.loading = true;\n this.getUrl();\n this.getResourcesList(params.resourceList).then((resourcesList) => {\n this.resourcesList = resourcesList;\n this.loading = false;\n });\n });\n }\n\n ngOnInit() {\n // // console.log(this.url)\n }\n\n ngOnDestroy() {\n this.seoService.resetSEOconfig();\n }\n\n getUrl() {\n this.url = this.route.snapshot.url.map((segment) => segment.path);\n }\n\n async getResourcesList(slug) {\n const resourcesList = await this.strapiService.getContentBySlug('resources-lists', slug, ['tags', 'authors', 'resources', 'blogs', 'articles', 'infographics']);\n if (resourcesList) {\n const summary = resourcesList && resourcesList.attributes.summary ? resourcesList.attributes.summary : '';\n this.seoService.configureSEO(Utils.removeHTMLFromString(resourcesList.attributes.title), Utils.removeHTMLFromString(summary), `https://glowmarkt.com${this.router.url}`);\n }\n return resourcesList;\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9zZWFyY2gtcmVzdWx0cy9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuc2NzcyJ9 */\"","import { ChangeDetectorRef, Component, HostListener, Input, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { th } from 'date-fns/locale';\nimport { LandingSearchbarComponent } from 'src/app/components/landing-searchbar/landing-searchbar.component';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\nimport _ from 'underscore';\n\n@Component({\n selector: 'app-search-results',\n templateUrl: './search-results.component.html',\n styleUrls: ['./search-results.component.scss'],\n})\nexport class SearchResultsComponent implements OnInit {\n @ViewChild('searchBar', { static: true }) searchBar: LandingSearchbarComponent;\n @HostListener('window:resize', []) onResize() {\n // checks size of window to view specific menu\n this.innerWidth = window.innerWidth;\n }\n loading: boolean = true;\n innerWidth = window.innerWidth;\n\n results: any;\n allContent: any[];\n invalidQuery: boolean = true;\n displayableTypes = ['resources-lists', 'articles', 'blogs', 'tutorials', 'infographics'];\n professionalTagSlugs = ['professional', 'installer'];\n tags: any[] = [];\n availableTags: any[] = [];\n qFormatted: any;\n constructor(\n private route: ActivatedRoute,\n private ref: ChangeDetectorRef,\n private strapiService: StrapiService,\n private router: Router\n ) {\n route.queryParams.subscribe(async (params) => {\n if (typeof params['q[tags]'] === 'string' && typeof params['q[s]'] === 'string') {\n this.invalidQuery = false;\n const tagsAsArray = params['q[tags]'].split(',');\n const qFormatted = { label: params['q[s]'] };\n this.qFormatted = qFormatted;\n const allTags = (await this.strapiService.getAllOfContentType('tags')).filter((tag) => !this.professionalTagSlugs.includes(tag.attributes.slug));\n this.tags = allTags;\n this.availableTags = allTags.filter((tag) => !tagsAsArray.includes(tag.attributes.title));\n Utils.waitForElemById('searchBar').then((el) => {\n this.searchBar.setSearchParameters([...tagsAsArray, qFormatted]);\n this.searchBar.searchAllContent();\n });\n }\n });\n }\n\n ngOnInit() {}\n\n processSearchParameters(event) {\n // console.log(\"processSearchParameters\", event)\n if (event.tagsToFilter.length && event.tags.length) {\n this.availableTags = this.tags.filter((tag) => !event.tagsToFilter.includes(tag.attributes.title));\n } else {\n this.availableTags = this.tags;\n }\n }\n\n addTag(event, tag) {\n const searchParameters = Array.from(\n new Set([...this.searchBar.searchParametersForm.value.searchParameters, tag.attributes.title, this.qFormatted])\n );\n this.searchBar.setSearchParameters(searchParameters);\n this.searchBar.focusSearchBar();\n }\n\n formatSearchResultsToDisplay(results) {\n let formattedContents = [];\n results.forEach((content) => {\n const formattedContent = Utils.fromatSearchContent(content);\n formattedContents.push(formattedContent);\n });\n return formattedContents;\n }\n\n async displaySearchResults(results) {\n this.loading = true;\n this.results = { ...results };\n if (results.searchTerm || results.tagsToFilter.length) {\n const formattedResults = this.formatSearchResultsToDisplay(results.results).filter((content) =>\n this.displayableTypes.includes(content.contentType)\n );\n this.allContent = formattedResults.sort(\n (a: any, b: any) => new Date(b.attributes.createdAt).valueOf() - new Date(a.attributes.createdAt).valueOf()\n );\n }\n this.loading = false;\n this.ref.markForCheck();\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy9zdWNjZXNzZnVsLXJlZ2lzdGVyL3N1Y2Nlc3NmdWwtcmVnaXN0ZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { AuthenticationService } from 'src/app/services/authentication.service';\n\n@Component({\n selector: 'app-successful-register',\n templateUrl: './successful-register.component.html',\n styleUrls: ['./successful-register.component.scss']\n})\nexport class SuccessfulRegisterComponent implements OnInit {\n\n constructor(public auth: AuthenticationService,) { }\n\n ngOnInit() {\n }\n tiggerAuthentication(): void {\n this.auth.authenticate();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SuccessfulRegisterComponent } from './successful-register.component';\n\n\n\n@NgModule({\n declarations: [SuccessfulRegisterComponent],\n imports: [\n CommonModule\n ]\n , exports: [SuccessfulRegisterComponent]\n})\nexport class SuccessfulRegisterModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy90YWctcGFnZS90YWctcGFnZS5jb21wb25lbnQuc2NzcyJ9 */\"","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport _ from 'underscore';\n\n@Component({\n selector: 'app-tag-page',\n templateUrl: './tag-page.component.html',\n styleUrls: ['./tag-page.component.scss'],\n})\nexport class TagPageComponent implements OnInit {\n tag: any;\n allContent: any[] = [];\n tagSlug: string;\n sortType: string;\n featuredContent: any = [];\n loading: boolean = true;\n\n constructor(private strapiService: StrapiService, private route: ActivatedRoute, private seoService: SeoService, private ref: ChangeDetectorRef) {\n route.params.subscribe((params) => {\n this.tagSlug = params.tag;\n this.getTag(this.tagSlug).then((tag) => {\n if (tag) {\n this.tag = tag;\n this.configureSEO(tag);\n this.sortType = params['q[sort]'];\n this.allContent = this.getSortedContent(this.tag, this.sortType);\n }\n this.loading = false;\n });\n });\n\n route.queryParams.subscribe((params) => {\n this.getTag(this.tagSlug).then((tag) => {\n if (tag) {\n this.tag = tag;\n this.configureSEO(tag);\n this.sortType = params['q[sort]'];\n this.allContent = this.getSortedContent(this.tag, this.sortType);\n }\n this.loading = false;\n });\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.seoService.resetSEOconfig();\n }\n\n configureSEO(tag) {\n this.seoService.configureSEO(tag.attributes.title, `Content tagged with ${tag.attributes.title}`, `https://glowmarkt.com/tag/${tag.attributes.slug}`);\n }\n\n sortHREF(sortType: 'latest' | 'oldest') {\n switch (sortType) {\n case 'latest':\n return `/tag/${this.tag.attributes.slug}?q[sort]=latest`;\n case 'oldest':\n return `/tag/${this.tag.attributes.slug}?q[sort]=oldest`;\n default:\n return `/tag/${this.tag.attributes.slug}`;\n }\n }\n\n async getTag(slug) {\n const tag = await this.strapiService.getContentBySlug('tags', slug, ['blogs', 'articles']);\n return tag;\n }\n\n getSortedContent(tag, sortType) {\n const blogs = tag.attributes.blogs.data.map((blog: any) => Object.assign(blog, { contentType: 'blogs' }));\n const articles = tag.attributes.articles.data.map((article: any) => Object.assign(article, { contentType: 'articles' }));\n let sorted = [];\n switch (sortType) {\n case 'oldest':\n sorted = [...blogs, ...articles].sort((a: any, b: any) => new Date(b.createdAt).valueOf() - new Date(a.createdAt).valueOf());\n break;\n default:\n sorted = [...blogs, ...articles].sort((a: any, b: any) => new Date(b.createdAt).valueOf() - new Date(a.createdAt).valueOf()).reverse();\n break;\n }\n // this.featuredContent = this.getFeatured(sorted);\n return sorted;\n }\n\n getFeatured(contentArray) {\n return contentArray.filter((content) => content.attributes.tags.data.some((tag) => tag.attributes.slug === 'featured'));\n }\n\n getShuffledContent(tag) {\n const blogs = tag.attributes.blogs.data.map((blog: any) => Object.assign(blog, { contentType: 'blogs' }));\n const articles = tag.attributes.articles.data.map((article: any) => Object.assign(article, { contentType: 'articles' }));\n return _.shuffle([...blogs, ...articles]);\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy90b3AtZ2xvc3NhcnktdGVybXMvdG9wLWdsb3NzYXJ5LXRlcm1zLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MetaTagsService } from 'src/app/services/meta-tags.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-top-glossary-terms',\n templateUrl: './top-glossary-terms.component.html',\n styleUrls: ['./top-glossary-terms.component.scss'],\n})\nexport class TopGlossaryTermsComponent implements OnInit {\n url;\n topTerms;\n title = '';\n loading: boolean = true;\n constructor(private strapiService: StrapiService, private route: ActivatedRoute, private router: Router, private metaTagsService: MetaTagsService) {\n route.params.subscribe((params) => {\n this.getUrl();\n this.getTopTerms(params.topGlossaryTerms).then((terms) => {\n this.topTerms = terms;\n this.title = 'Top 7 Terms for ' + this.topTerms.attributes.title;\n this.loading = false;\n });\n });\n }\n\n ngOnInit() {}\n async getTopTerms(slug) {\n const page = await this.strapiService.getContentBySlug('top-glossary-terms', slug, ['glossary_terms']);\n // console.log('page', page);\n return page;\n }\n getUrl() {\n this.url = this.route.snapshot.url.map((segment) => segment.path);\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy90dXRvcmlhbC90dXRvcmlhbC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { JsonLdService } from 'src/app/services/json-ld.service';\nimport { SeoService } from 'src/app/services/seo.service';\nimport { StrapiService } from 'src/app/services/strapi.service';\nimport { Utils } from 'src/utils';\n\n@Component({\n selector: 'app-tutorial',\n templateUrl: './tutorial.component.html',\n styleUrls: ['./tutorial.component.scss']\n})\nexport class TutorialComponent implements OnInit {\n tutorial: any;\n url;\n loading: boolean = true;\n constructor(\n private route: ActivatedRoute,\n private strapiService: StrapiService,\n private router: Router,\n private seoService: SeoService\n ) {\n route.params.subscribe((params) => {\n this.getUrl();\n this.getTutorial(params.tutorial).then((tutorial) => {\n this.tutorial = tutorial;\n if (tutorial) {\n this.configureSEO(tutorial);\n }\n this.loading = false;\n });\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.seoService.resetSEOconfig();\n }\n async getTutorial(slug) {\n const tutorial = await this.strapiService.getContentBySlug('tutorials', slug);\n return tutorial;\n }\n\n configureSEO(tutorial) {\n const title = Utils.removeHTMLFromString(tutorial.attributes.title);\n const summary = Utils.removeHTMLFromString(tutorial.attributes.summary);\n const authorNames = tutorial.attributes.authors.data.map((author) => author.attributes.name);\n const image = this.tutorial.attributes.displayImage.data\n ? this.strapiService.getFileFullUrl(this.tutorial.attributes.displayImage.data.attributes.url)\n : '';\n const schema = JsonLdService.articleSchema(title, summary, [image], authorNames);\n this.seoService.configureSEO(title, summary, `https://glowmarkt.com${this.router.url}`, schema);\n }\n getUrl() {\n this.url = this.route.snapshot.url.map((segment) => segment.path);\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy91bnN1YnNjcmliZS1wYWdlL3Vuc3Vic2NyaWJlLXBhZ2UuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { StrapiService } from 'src/app/services/strapi.service';\n\n@Component({\n selector: 'app-unsubscribe-page',\n templateUrl: './unsubscribe-page.component.html',\n styleUrls: ['./unsubscribe-page.component.scss'],\n})\nexport class UnsubscribePageComponent implements OnInit {\n id;\n success: boolean = false;\n loading: boolean = true;\n errorMsg = '';\n constructor(private strapiService: StrapiService, private route: ActivatedRoute) {\n this.route.params.subscribe((params) => {\n this.id = params.id;\n this.strapiService.getOneContent('system-incidents-mail-subscribers', this.id, []).then((resp) => {\n if (!resp) {\n this.success = true;\n }else{\n this.success=false\n }\n }).finally(()=>this.loading=false);\n });\n }\n\n ngOnInit() {}\n\n async findEmail(id) {\n this.strapiService.getOneContent('system-incidents-mail-subscribers', id, []).then((resp) => {\n if (!resp) {\n this.success = true;\n }\n });\n }\n\n async unsubscribe() {\n this.loading = true;\n this.strapiService\n .deleteSystemIncidentsMailSubscriber(this.id)\n .then((resp) => {\n this.success = true;\n })\n .catch((err) => {\n this.errorMsg = \"Due to an error we couldn't unsubscribe you. Please try again later.\";\n })\n .finally(() => {\n this.loading = false;\n });\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy91c2VyLXN0b3J5LWRldGFpbGVkL3VzZXItc3RvcnktZGV0YWlsZWQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n\n@Component({\n selector: 'app-user-story-detailed',\n templateUrl: './user-story-detailed.component.html',\n styleUrls: ['./user-story-detailed.component.scss']\n})\nexport class UserStoryDetailedComponent implements OnInit {\nurl!:Array\npage: String = 'user-story'\n constructor(private route:ActivatedRoute) { }\n\n ngOnInit(): void {\n\n this.getUrl()\n\n }\n\n getUrl(){\n this.url = this.route.snapshot.url.map(segment=> segment.path.charAt(0).toLowerCase() + segment.path.slice(1))\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1YmxpYy92ZXJpZnktZW1haWwvdmVyaWZ5LWVtYWlsLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { GlowService } from 'src/app/services/glow.service';\n\n@Component({\n selector: 'app-verify-email',\n templateUrl: './verify-email.component.html',\n styleUrls: ['./verify-email.component.scss'],\n})\nexport class VerifyEmailComponent implements OnInit {\n userEmail = ''\n\n constructor(private route: ActivatedRoute, private glow: GlowService) {\n route.queryParams.subscribe((params) => {\n this.userEmail = params['email']\n })\n }\n\n ngOnInit() { }\n\n loginRelativePath() {\n if (this.userEmail){\n return `/login?email=${this.userEmail}`\n } else return `/login`\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n tConfig,\n tEnergyCostResourceTypeMapping,\n tVETypeConfiguredGroups,\n tVETypeConfiguredInfo,\n tEventsConfigurations,\n tFunctionalGroupConfiguration,\n tRefreshRateConfigurations,\n tGlowEventConfiguration,\n tSupportedVETypeListing,\n} from './app-config.typings';\nimport { environment } from '../../environments/environment';\n\n@Injectable()\nexport class ConfigService {\n // private adminConfig: tAdminConfig;\n private appConfig: tConfig;\n public refreshRateConfigurations: tRefreshRateConfigurations; \n public resourceEnergyCostMapping: tEnergyCostResourceTypeMapping[];\n public veTypeConfig: tVETypeConfiguredGroups;\n public supportedVETypes: tSupportedVETypeListing[];\n public veTypeInfoDictionary: tVETypeConfiguredInfo;\n tempAccessAuthenticationTypeServiceName: string;\n\n constructor() {\n this.loadVeTypeGroupConfigurations();\n }\n\n loadTempAccessAuthServiceName() {\n this.tempAccessAuthenticationTypeServiceName = 'temp-access';\n return this.tempAccessAuthenticationTypeServiceName;\n }\n\n public loadConfig(): tConfig {\n this.appConfig = {\n application: {\n applicationId: environment.config.applicationId,\n applicationDisplayName: 'GlowMarkt',\n apipathname: 'glowmarkt-website',\n version: '0.0.1',\n },\n directories: {\n default: {\n directoryId: null,\n },\n glow: {\n directoryId: '951cffa7-863f-4ae7-8f7e-ed682e690f91',\n },\n tempAccess: {\n directoryId: 'f9f89b6f-db18-4c0a-b82b-cd675bc4c8cf',\n },\n },\n content: environment.config.content,\n environments: {\n prod: {\n glow: {\n endpoint: environment.baseUrl,\n rateLimitingHostUrl: environment.rateLimitingHostUrl,\n },\n stripe: {\n publicKey: environment && environment.stripePublicKey,\n },\n },\n dev: {\n glow: {\n endpoint: 'https://dev.glowmarkt.com/api/v0-1/',\n rateLimitingHostUrl: environment.rateLimitingHostUrl,\n },\n stripe: {\n publicKey: environment && environment.stripePublicKey,\n },\n },\n uat: {\n glow: {\n endpoint: 'https://dev.glowmarkt.com/api/v0-1/',\n rateLimitingHostUrl: environment.rateLimitingHostUrl,\n },\n stripe: {\n publicKey: environment && environment.stripePublicKey,\n },\n },\n },\n termsAndConditions: environment.config.termsAndConditions,\n functionalGroups: environment.config.functionalGroups,\n };\n return this.appConfig;\n }\n\n // Returns the minimum delta time the token should have before expiry in order to be refreshed (in days)\n public getTokenRefreshParameters(): number {\n // If the token expires in less than or equal to 3 days, refresh it.\n return 10;\n }\n public getEventConfigurations(): tEventsConfigurations {\n let eventConfigurations = {\n dataRefresh: 'data_refresh',\n dimensionChange: 'dimension_change',\n loading: 'loading',\n healthCheck: 'health_check',\n reflow: 'reflow', // Event triggered to reflow Highcharts\n tabChange: 'tab_change', // Event emitted when tab changes\n timerObservables: 'timer_observables', // Event emitted when timer_observables need to be turned on/off -WiFi set up\n requestHomeNetworkInfo: 'can_request_wifi_home_credentials',\n };\n return eventConfigurations;\n }\n\n public getRefreshRateConfigurations(): tRefreshRateConfigurations {\n this.refreshRateConfigurations = {\n authCheck: 10 * 60 * 1000, // 10 minutes\n healthStatus: 5 * 60 * 1000, // 5 minutes\n healthStatusNoIssues: 20 * 60 * 1000, // 20 minutes\n inbox: 10 * 60 * 1000, // 10 minutes\n languageContent: 60 * 60 * 1000, // 60 minutes\n version: 60 * 60 * 1000, // 60 minutes\n virtualEntity: 30 * 60 * 1000, // 30 minutes\n noVirtualEntity: 5 * 60 * 1000, // 5 minutes\n virtualEntityMissingResources: 2 * 60 * 1000, // 2 minutes\n notifications: 2 * 60 * 1000, // 2 minutes,\n };\n return this.refreshRateConfigurations;\n }\n\n // public loadFunctionalGroupList(): tFunctionalGroupConfiguration[] {\n // return environment.functionalGroupConfigs\n // }\n\n public loadVeTypeGroupConfigurations(): tVETypeConfiguredGroups {\n this.veTypeConfig = environment.veTypeGroupConfig;\n return this.veTypeConfig;\n }\n\n public loadVeTypeInfo(): tVETypeConfiguredInfo {\n if (!this.veTypeInfoDictionary) {\n this.veTypeInfoDictionary = environment.veTypeConfigDictionary;\n }\n\n return this.veTypeInfoDictionary;\n }\n\n public setVeTypeInfo(veTypeInfo: tVETypeConfiguredInfo): void {\n this.veTypeInfoDictionary = veTypeInfo;\n }\n\n public loadEventsConfigurations(): tGlowEventConfiguration {\n let eventConfigurations = {\n pageView: {\n key: 'page-view',\n },\n formSubmission: {\n key: 'form-submission',\n },\n login: {\n key: 'login',\n },\n logout: {\n key: 'logout',\n },\n };\n return eventConfigurations;\n }\n\n public loadSupportedVETypes(): tSupportedVETypeListing[] {\n this.supportedVETypes = [\n {\n veTypeId: '6b61c150-34f8-4e1e-9b65-1df2a63611a6',\n priority: 1,\n },\n {\n veTypeId: 'd7cf2c3c-a681-4cde-af24-82582ce6dcfa', // smart meter electricity only\n priority: 2,\n },\n {\n veTypeId: '23fa688b-77e7-4f05-a7c0-c721c38a6de9', // OT electricity only\n priority: 3,\n },\n {\n veTypeId: '5f30742f-ac02-4285-8b7e-51b4f0aecdd4', // DCC\n priority: 3,\n },\n {\n veTypeId: 'bafdfefa-890a-4586-8d9f-0ba358736b25', // AMR\n priority: 4,\n },\n {\n //THis is not added to live\n veTypeId: '338b7b6e-c495-4cd1-9fbd-6dbfe55f067c', // efergy electricity only\n priority: 6,\n },\n {\n veTypeId: '2a63a063-c889-452c-ac04-b8bf4389208e',\n priority: 7,\n },\n ];\n\n return this.supportedVETypes;\n }\n}\n\n/*Functional Groups\n\nFunctional groups enable a particular part of the application.\n\nIn the case of Reflect the user logging in should firstly have access in the Reflect Functional Group.\n\nIn the future should we wish to allow permission of certain aspects of the application to users, we would\nadd the relevant appFunctional groups to the above configuration.\n\n\n\n\n\n\n*/\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { ConfigService } from '../services/app-config.service';\nimport { tFuctionalGroupConfiguration } from '../services/app-config.typings';\nimport { GlowService } from './glow.service';\nimport { tPrivilegeStatus } from './ui.typings';\n\n\n@Injectable()\nexport class AppPrivilegeService {\n\n functionalGroupConfiguration: tFuctionalGroupConfiguration;\n\n // Observable string sources\n private PrivilegesAnnouncer = new Subject();\n\n // Observable string streams\n privilegeStatus$ = this.PrivilegesAnnouncer.asObservable();\n\n // Service message commands\n\n constructor(\n private configService: ConfigService,\n private glowService: GlowService) {\n\n var configuration = this.configService.loadConfig()\n this.functionalGroupConfiguration = configuration.functionalGroups;\n }\n\n checkPrivilege(privilegeKey: string) {\n // console.log(\"Checking Privilege \" + privilegeKey)\n\n if (privilegeKey && this.functionalGroupConfiguration.hasOwnProperty(privilegeKey)) {\n\n let requiredFunctionalGroupId = this.functionalGroupConfiguration[privilegeKey]\n // console.log(requiredFunctionalGroupId)\n this.glowService.getFunctionalGroupAccounts().subscribe((functionalGroupAccounts) => {\n if (functionalGroupAccounts && Array.isArray(functionalGroupAccounts)) {\n let privilegeMessage = {\n privilegeKey: privilegeKey,\n hasPrivilege: false\n }\n for (let i = 0; i < functionalGroupAccounts.length; i++) { \n if (functionalGroupAccounts[i].functionalGroupId == requiredFunctionalGroupId) {\n privilegeMessage.hasPrivilege = true\n break\n }\n }\n\n this.announcePrivilegeStatus(privilegeMessage)\n\n } else {\n console.warn(\"Unrecognised response getFunctionalGroupAccounts\")\n }\n });\n } else {\n console.warn(\"Unrecognised privilegeKey\")\n }\n\n }\n\n refreshPrivileges() {\n var configuration = this.configService.loadConfig()\n this.functionalGroupConfiguration = configuration.functionalGroups;\n // console.log(\"Refresh Privilege\")\n for (let privilegeKey in this.functionalGroupConfiguration) {\n if (this.functionalGroupConfiguration.hasOwnProperty(privilegeKey)) {\n this.checkPrivilege(privilegeKey)\n }\n }\n }\n \n announcePrivilegeStatus(privilegeStatus: tPrivilegeStatus) {\n // console.log(\"announcing readings\")\n this.PrivilegesAnnouncer.next(privilegeStatus);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CanActivate } from '@angular/router';\nimport { GlowService } from './glow.service';\nimport { tap } from 'rxjs/operators';\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n constructor(private router: Router, private authService: GlowService) {}\n\n canActivate() {\n // console.log(\"Authguard\")\n \treturn this.authService.isAuthenticated()\n \t.pipe(tap(authenticated => {\n // console.log(\"can Autheticate\", authenticated)\n if (!authenticated) {\n this.authService.logout();\n this.router.navigate(['login']);\n return false;\n // this.authService.logout().subscribe(response =>{\n // this.router.navigate(['login']);\n // return false;\n // },\n // error =>{\n // this.router.navigate(['login']);\n // return false;\n // }\n // )\n } else {\n return true;\n }\n })\n );\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\nimport { BehaviorSubject, from, Observable } from 'rxjs';\n\nimport { StatehandlerService } from './statehandler.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthenticationService {\n roleSet: EventEmitter = new EventEmitter()\n role;\n private _authenticated: boolean = false;\n private readonly _authenticationChanged: BehaviorSubject = new BehaviorSubject(this.authenticated);\n\n constructor(private oauthService: OAuthService, private authConfig: AuthConfig, private statehandler: StatehandlerService) { }\n\n public get authenticated(): boolean {\n return this._authenticated;\n }\n\n public get authenticationChanged(): Observable {\n return this._authenticationChanged;\n }\n\n checkIsRole(role: string) {\n const roles = this.getOIDCUserRolesFromLocalStorage();\n return roles && roles.some((elem) => elem.role === role);\n }\n\n public getOIDCUser(): Observable {\n return from(this.oauthService.loadUserProfile());\n }\n\n roleAnnouncer(role) {\n this.roleSet.emit(role)\n }\n\n setOIDCUserRoles(user: any) {\n //exclude the orgIds\n const roles = this.getOIDCUserRoles(user).map((elem) => ({ role: elem.role }));\n localStorage.setItem('urn:zitadel:iam:org:project:roles', JSON.stringify(roles));\n this.roleAnnouncer(roles)\n return roles;\n }\n\n getOIDCUserRolesFromLocalStorage() {\n this.role = JSON.parse(localStorage.getItem('urn:zitadel:iam:org:project:roles'))\n return this.role\n }\n\n\n\n public getOIDCUserRoles(user: any) {\n return Object.entries(user['urn:zitadel:iam:org:project:roles']).reduce((acc, elem) => {\n const [key, value] = elem;\n const orgs = Object.keys(value);\n return [...acc, ...orgs.map((elem1) => ({ zitadelOrgId: elem1, role: key }))];\n }, []);\n }\n\n public async authenticate(setState: boolean = true, params: any = {}): Promise {\n this.oauthService.configure(this.authConfig);\n this.oauthService.setupAutomaticSilentRefresh();\n\n this.oauthService.strictDiscoveryDocumentValidation = false;\n await this.oauthService.loadDiscoveryDocumentAndTryLogin();\n\n this._authenticated = this.oauthService.hasValidAccessToken();\n\n if (!this.oauthService.hasValidIdToken() || !this.authenticated) {\n const newState = setState ? await this.statehandler.createState().toPromise() : undefined;\n\n this.oauthService.initCodeFlow(newState, params);\n }\n this._authenticationChanged.next(this.authenticated);\n\n return this.authenticated;\n }\n\n async markAsAuthenticated(setState: boolean = true) {\n this.oauthService.configure(this.authConfig);\n this.oauthService.setupAutomaticSilentRefresh();\n\n this.oauthService.strictDiscoveryDocumentValidation = false;\n await this.oauthService.loadDiscoveryDocumentAndTryLogin();\n\n this._authenticated = this.oauthService.hasValidAccessToken();\n\n this._authenticationChanged.next(this.authenticated);\n\n return this.authenticated;\n }\n\n public signout(): void {\n // console.log('signout')\n this._authenticated = false;\n localStorage.removeItem('urn:zitadel:iam:org:project:roles');\n this.oauthService.logOut();\n this._authenticationChanged.next(false);\n }\n\n authorizationHeader() {\n return this.oauthService.authorizationHeader();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { tResourceReadings } from './glow.typings';\n\n@Injectable()\nexport class CacheService {\n\n cachedData: any = {};\n constructor(){\n\n }\n\n get(key: string): Promise {\n return new Promise( (resolve)=> { \n // console.log(\"cachedData\")\n // console.log(this.cachedData)\n // console.log(key)\n\n if (this.cachedData.hasOwnProperty(key)) {\n return resolve(this.cachedData[key]); \n } else {\n return resolve();\n }\n }); \n\n }\n\n /**\n * Sets the value with key in the cache\n * Notifies all observers of the new value\n */\n set(key: string, value: any): void {\n this.cachedData[key] = value;\n }\n\n /**\n * Sets the value with key in the cache\n * Notifies all observers of the new value\n */\n remove(key: string): void {\n delete this.cachedData[key];\n }\n /**\n * Checks if the a key exists in cache\n */\n has(key: string): boolean {\n return this.cachedData.hasOwnProperty(key);\n }\n\n //clear Cache at log out events\n clear(): void {\n this.cachedData = {};\n }\n\n //TO DO. make more sophisticated. Add a cleaner.\n}","import { EventEmitter, Injectable } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { caseStudyFields } from '../../assets/content/case-study-fields.json';\nimport { GlowService } from './glow.service';\nimport { tCaseStudy } from './glow.typings';\nimport { ServiceSelectorSvc } from './service-selector.service';\nimport { Utils } from 'src/utils';\nimport { CaseStudyService } from './case-study.service';\nimport { Router } from '@angular/router';\nimport { FormValidationService } from './form-validation.service';\nimport { FormValidator } from './user-validators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseStudyFormService {\n caseStudyFields = caseStudyFields;\n caseStudy: tCaseStudy;\n formattedCaseStudy: any = {};\n journal: any;\n\n otherInformationForm: FormGroup;\n\n caseStudyAnnouncer: EventEmitter = new EventEmitter();\n journalAnnouncer: EventEmitter = new EventEmitter();\n formAnnouncer: EventEmitter = new EventEmitter();\n caseStudySubmitSuccessAnnouncer: EventEmitter = new EventEmitter();\n\n selectedService: any;\n\n subscriptionSelectedService: any;\n\n locationForm: FormGroup;\n\n heatingSystemPreForm: FormGroup;\n heatingSystemPostForm: FormGroup;\n\n buildingPreForm: FormGroup;\n hasDoneRetrofitForm: FormGroup;\n buildingPostForm: FormGroup;\n\n microgeneratorPreForm: FormGroup;\n microgeneratorPostForm: FormGroup;\n\n hasMicrogeneratorPreForm: FormGroup;\n hasMicrogeneratorPostForm: FormGroup;\n\n hasEnergyStoragePreForm: FormGroup;\n hasEnergyStoragePostForm: FormGroup;\n\n energyStoragesPreForm: FormGroup;\n energyStoragesPostForm: FormGroup;\n\n hasCarbonEmissionsPreForm: FormGroup;\n hasCarbonEmissionsPostForm: FormGroup;\n\n carbonEmissionsPreForm: FormGroup;\n carbonEmissionsPostForm: FormGroup;\n\n installationForm: FormGroup;\n installerForm: FormGroup;\n financeForm: FormGroup;\n hasReceivedGrantsForm: FormGroup;\n awardedGrantsForm: FormGroup;\n hasReceivedLoansForm: FormGroup;\n awardedLoansForm: FormGroup;\n satisfactionForm: FormGroup;\n\n formsBuilder: any = [];\n sections: any = [];\n\n hasInitServiceVariables: boolean = false;\n isInitialisingServiceVariables: boolean = false;\n\n constructor(private fb: FormBuilder, private glowService: GlowService, private serviceSelectorService: ServiceSelectorSvc, private caseStudyService: CaseStudyService, private router: Router, private formValidationService: FormValidationService) {\n // this.initServiceVariables(this.serviceSelectorService.getSelectedService()).then();\n }\n\n async initServiceVariables(selectedService) {\n if(this.isInitialisingServiceVariables) return;\n this.hasInitServiceVariables= false;\n this.isInitialisingServiceVariables = true;\n \n this.selectedService = selectedService;\n this.setFormSections();\n const journal = await this.getJournal();\n if (!journal) {\n this.journal = await this.initEmptyJournal();\n }\n let caseStudy = await this.getCaseStudy();\n if (!caseStudy) {\n caseStudy = await this.initEmptyCaseStudy();\n }\n this.setAndAnnounceJournal(journal);\n const formattedCaseStudy = await this.caseStudyService.fetchCaseStudyData(caseStudy);\n this.setFormattedCaseStudy(formattedCaseStudy);\n this.setAndAnnounceCaseStudy(caseStudy, formattedCaseStudy);\n \n await this.setFormsBuilder();\n this.initForms();\n this.announceForm('all', true);\n this.hasInitServiceVariables = true;\n this.isInitialisingServiceVariables = false;\n }\n\n async setFormsBuilder() {\n this.formsBuilder = [\n { formName: 'locationForm', caseStudyFieldCategory: 'location', value: this.formattedCaseStudy, formSection: 'pre-installation-building', shouldInit: true },\n { formName: 'buildingPreForm', caseStudyFieldCategory: 'building', value: await this.getBuildingPreFormValue(), formSection: 'pre-installation-building', shouldInit: true },\n {\n formName: 'hasDoneRetrofitForm',\n caseStudyFieldCategory: 'hasDoneRetrofit',\n value: { isTrue: this.hasDoneRetrofit() },\n formSection: 'post-installation-building',\n shouldInit: true,\n },\n {\n formName: 'buildingPostForm',\n caseStudyFieldCategory: 'buildingPost',\n value: this.formattedCaseStudy.after.building && this.formattedCaseStudy.after.building[0],\n formSection: 'post-installation-building',\n shouldInit: this.hasDoneRetrofit(),\n },\n {\n formName: 'hasCarbonEmissionsPreForm',\n caseStudyFieldCategory: 'hasCarbonEmissions',\n value: { isTrue: Boolean(this.formattedCaseStudy.before.building && this.formattedCaseStudy.before.building[0].carbon_emissions) },\n formSection: 'pre-installation-building',\n shouldInit: true,\n },\n {\n formName: 'carbonEmissionsPreForm',\n caseStudyFieldCategory: 'carbonEmissions',\n value: this.formattedCaseStudy.before.building && this.formattedCaseStudy.before.building[0].carbon_emissions,\n formSection: 'pre-installation-building',\n shouldInit: Boolean(this.formattedCaseStudy.before.building && this.formattedCaseStudy.before.building[0].carbon_emissions),\n },\n {\n formName: 'hasCarbonEmissionsPostForm',\n caseStudyFieldCategory: 'hasCarbonEmissions',\n value: { isTrue: Boolean(this.formattedCaseStudy.after.building && this.formattedCaseStudy.after.building[0].carbon_emissions) },\n formSection: 'post-installation-building',\n shouldInit: true,\n },\n {\n formName: 'carbonEmissionsPostForm',\n caseStudyFieldCategory: 'carbonEmissions',\n value: this.formattedCaseStudy.after.building && this.formattedCaseStudy.after.building[0].carbon_emissions,\n formSection: 'post-installation-building',\n shouldInit: Boolean(this.formattedCaseStudy.after.building && this.formattedCaseStudy.after.building[0].carbon_emissions),\n },\n { formName: 'heatingSystemPreForm', caseStudyFieldCategory: 'heatingSystem', value: this.formattedCaseStudy.before.heating_system, arrayName: 'heatingSystems', minLen: 1, formSection: 'pre-installation-heating', shouldInit: true },\n { formName: 'heatingSystemPostForm', caseStudyFieldCategory: 'heatingSystem', value: this.formattedCaseStudy.after.heating_system, arrayName: 'heatingSystems', minLen: 1, formSection: 'post-installation-heating', shouldInit: true },\n {\n formName: 'hasMicrogeneratorPreForm',\n caseStudyFieldCategory: 'hasMicrogenerator',\n value: { isTrue: Boolean(this.formattedCaseStudy.before.microgenerator && this.formattedCaseStudy.before.microgenerator.length > 0) },\n formSection: 'pre-installation-heating',\n shouldInit: true,\n },\n {\n formName: 'microgeneratorPreForm',\n caseStudyFieldCategory: 'microgenerator',\n value: this.formattedCaseStudy.before.microgenerator,\n arrayName: 'microgenerators',\n formSection: 'pre-installation-heating',\n shouldInit: Boolean(this.formattedCaseStudy.before.microgenerator && this.formattedCaseStudy.before.microgenerator.length > 0),\n },\n {\n formName: 'hasMicrogeneratorPostForm',\n caseStudyFieldCategory: 'hasMicrogenerator',\n value: { isTrue: Boolean(this.formattedCaseStudy.after.microgenerator && this.formattedCaseStudy.after.microgenerator.length > 0) },\n formSection: 'post-installation-heating',\n shouldInit: true,\n },\n {\n formName: 'microgeneratorPostForm',\n caseStudyFieldCategory: 'microgenerator',\n value: this.formattedCaseStudy.after.microgenerator,\n arrayName: 'microgenerators',\n formSection: 'post-installation-heating',\n shouldInit: Boolean(this.formattedCaseStudy.after.microgenerator && this.formattedCaseStudy.after.microgenerator.length > 0),\n },\n {\n formName: 'hasEnergyStoragePreForm',\n caseStudyFieldCategory: 'hasEnergyStorage',\n value: { isTrue: Boolean(this.formattedCaseStudy.before.energy_storage && this.formattedCaseStudy.before.energy_storage.length > 0) },\n formSection: 'pre-installation-heating',\n shouldInit: true,\n },\n {\n formName: 'energyStoragePreForm',\n caseStudyFieldCategory: 'energyStorage',\n value: this.formattedCaseStudy.before.energy_storage,\n arrayName: 'energyStorages',\n formSection: 'pre-installation-heating',\n shouldInit: Boolean(this.formattedCaseStudy.before.energy_storage && this.formattedCaseStudy.before.energy_storage.length > 0),\n },\n {\n formName: 'hasEnergyStoragePostForm',\n caseStudyFieldCategory: 'hasEnergyStorage',\n value: { isTrue: Boolean(this.formattedCaseStudy.after.energy_storage && this.formattedCaseStudy.after.energy_storage.length > 0) },\n formSection: 'post-installation-heating',\n shouldInit: true,\n },\n {\n formName: 'energyStoragePostForm',\n caseStudyFieldCategory: 'energyStorage',\n value: this.formattedCaseStudy.after.energy_storage,\n arrayName: 'energyStorages',\n formSection: 'post-installation-heating',\n shouldInit: Boolean(this.formattedCaseStudy.after.energy_storage && this.formattedCaseStudy.after.energy_storage.length > 0),\n },\n { formName: 'installationForm', caseStudyFieldCategory: 'installation', value: this.getHPInstallationValueFromCs(), formSection: 'installation', shouldInit: true },\n { formName: 'installerForm', caseStudyFieldCategory: 'installer', value: this.getHPInstallationValueFromCs() && this.getHPInstallationValueFromCs().installers, arrayName: 'installers', minLen: 1, formSection: 'installation', shouldInit: true },\n { formName: 'financeForm', caseStudyFieldCategory: 'finance', value: this.formattedCaseStudy.outcome.heating_system && this.formattedCaseStudy.outcome.heating_system[0].finance, formSection: 'post-installation-outcomes', shouldInit: true },\n {\n formName: 'hasReceivedGrantsForm',\n caseStudyFieldCategory: 'hasReceivedGrants',\n value: {\n isTrue: Boolean(this.getAwardedGrantsValueFromCs() && this.getAwardedGrantsValueFromCs().length > 0),\n },\n formSection: 'post-installation-outcomes',\n shouldInit: true,\n },\n {\n formName: 'awardedGrantsForm',\n caseStudyFieldCategory: 'awardedGrant',\n value: this.getAwardedGrantsValueFromCs(),\n arrayName: 'awardedGrants',\n formSection: 'post-installation-outcomes',\n shouldInit: true,\n },\n {\n formName: 'hasReceivedLoansForm',\n caseStudyFieldCategory: 'hasReceivedLoans',\n value: { isTrue: Boolean(this.getAwardedLoansValueFromCs() && this.getAwardedLoansValueFromCs().length > 0) },\n formSection: 'post-installation-outcomes',\n shouldInit: true,\n },\n {\n formName: 'awardedLoansForm',\n caseStudyFieldCategory: 'awardedLoan',\n value: this.getAwardedLoansValueFromCs(),\n arrayName: 'awardedLoans',\n formSection: 'post-installation-outcomes',\n shouldInit: true,\n },\n {\n formName: 'satisfactionForm',\n caseStudyFieldCategory: 'satisfaction',\n value: this.formattedCaseStudy.outcome.heating_system && this.formattedCaseStudy.outcome.heating_system[0].satisfaction,\n formSection: 'post-installation-outcomes',\n shouldInit: true,\n },\n { formName: 'otherInformationForm', caseStudyFieldCategory: 'otherInformation', value: this.formattedCaseStudy, formSection: 'other-information', shouldInit: true },\n ];\n return this.formsBuilder;\n }\n\n async getBuildingPreFormValue() {\n const building = this.formattedCaseStudy.before.building && this.formattedCaseStudy.before.building[0];\n if (building && this.formattedCaseStudy.propertyImage && this.formattedCaseStudy.propertyImage.fileId) {\n building['propertyImage'] = this.formattedCaseStudy.propertyImage;\n }\n return building;\n }\n\n setFormSections() {\n const sections = ['pre-installation-building', 'pre-installation-heating', 'installation', 'post-installation-heating', 'post-installation-building', 'post-installation-outcomes', 'other-information'];\n this.sections = [...sections];\n return sections;\n }\n\n getHPInstallationValueFromCs() {\n if (!this.formattedCaseStudy.after.heating_system) return;\n const hpInstallation = this.caseStudy.after.find((je) => je.journalEntryDataType === 'installation' && je.componentDataType === 'heating_system');\n return hpInstallation && this.formattedCaseStudy.after.heating_system.find((hp) => hp.componentId === hpInstallation.componentId && hp.componentVersion === hpInstallation.componentVersion).installation;\n }\n\n getHpSystemFromCs(csSection) {\n return this.formattedCaseStudy[csSection].heating_system && this.formattedCaseStudy[csSection].heating_system.find((item) => item.type.toLowerCase().includes('heat pump'));\n }\n\n async saveAndContinue(saveCallback, section, loadObj) {\n const validity = this.getSectionValidity(section);\n if (!validity) {\n this.markSectionAsTouched(section);\n loadObj = this.handleLoadObjError(loadObj, 'Please fill out all required fields before continuing.');\n return loadObj;\n }\n const completionStatus = 'completed';\n loadObj = await saveCallback(completionStatus);\n if (loadObj.error) {\n return loadObj;\n }\n this.markSectionAsPristine(section);\n const nextSection = this.nextSection(section);\n this.router.navigate(['/pages/tools/case-study-creator/heat-pump/' + nextSection]);\n }\n\n getAwardedGrantsValueFromCs() {\n const hpSystem = this.getHpSystemFromCs('outcome');\n if (!hpSystem) return;\n const finance = hpSystem.finance;\n return finance && finance.awardedGrants;\n }\n\n getAwardedLoansValueFromCs() {\n const hpSystem = this.getHpSystemFromCs('outcome');\n if (!hpSystem) return;\n const finance = hpSystem.finance;\n return finance && finance.awardedLoans;\n }\n\n hasDoneRetrofit(formattedCaseStudy = this.formattedCaseStudy) {\n const buildingBefore = formattedCaseStudy.before.building && formattedCaseStudy.before.building[0];\n if (!buildingBefore) return false;\n const buildingAfter = formattedCaseStudy.after.building && formattedCaseStudy.after.building[0];\n return buildingAfter && buildingAfter.componentVersion > buildingBefore.componentVersion;\n }\n\n initForms() {\n \n for (let form of this.formsBuilder) {\n if (!form.shouldInit) continue;\n if (form.arrayName) {\n this.initFormArrayAndSet(form.formName, form.caseStudyFieldCategory, form.arrayName, form.value, form.minLen || 0);\n } else {\n this.initFormAndSet(form.formName, form.caseStudyFieldCategory, form.value);\n }\n\n this.announceForm(form.formName, this[form.formName]);\n }\n }\n\n addSummaryToForm(form, formattedComponent) {\n form.patchValue({\n summary: (formattedComponent.text_description && formattedComponent.text_description.description) || formattedComponent.summary,\n });\n form.metadata = {\n componentId: formattedComponent.componentId,\n componentVersion: formattedComponent.componentVersion,\n jeId: formattedComponent.text_description && formattedComponent.text_description.jeId,\n };\n }\n\n async initEmptyCaseStudy() {\n const veId = this.selectedService.veId;\n const caseStudyBody = {\n veId,\n classifier: 'heating_system.heat_pump',\n canContactOwner: false,\n canVisitProperty: false,\n publishedStatus: 'draft',\n completionStatus: 'in-progress',\n };\n const caseStudy = await this.glowService.createCaseStudy(caseStudyBody).toPromise();\n return this.caseStudyService.fetchCaseStudyData(caseStudy);\n }\n\n async initEmptyJournal() {\n const veId = this.selectedService.veId;\n const journal = await this.glowService.createJournal(veId).toPromise();\n return journal;\n }\n\n async getCaseStudy() {\n //todo: get the active case study/ allow selection of existing case studies\n const veId = this.selectedService.veId;\n const all = await this.glowService.getAllCaseStudiesByVeAndClassifier(veId, 'heating_system.heat_pump').toPromise();\n return all.length ? all[0] : null;\n }\n\n async announceLatestCaseStudy() {\n const cs = await this.getCaseStudy();\n const formattedCaseStudy = await this.caseStudyService.fetchCaseStudyData(cs);\n this.setAndAnnounceCaseStudy(cs, formattedCaseStudy);\n }\n\n async getJournal() {\n let err, data;\n const veId = this.selectedService.veId;\n [err, data] = await Utils.promiseHandler(this.glowService.getJournal(veId).toPromise());\n if (err && err.status == 404) {\n [err, data] = await Utils.promiseHandler(this.glowService.createJournal(veId).toPromise());\n }\n return data;\n }\n\n initLoadObj(loading = false) {\n return {\n successMessage: '',\n errorMessage: '',\n errorCode: '',\n error: false,\n loading,\n loadingMessage: '',\n };\n }\n\n handleLoadObjError(loadObj, errMessage) {\n loadObj.error = true;\n loadObj.errorMessage = errMessage;\n loadObj.loading = false;\n loadObj.loadingMessage = '';\n loadObj.successMessage = '';\n return loadObj;\n }\n\n handleLoadObjSuccess(loadObj, successMessage) {\n loadObj.error = false;\n loadObj.errorMessage = '';\n loadObj.loading = false;\n loadObj.loadingMessage = '';\n loadObj.successMessage = successMessage;\n return loadObj;\n }\n\n handleLoadObjLoading(loadObj, loadingMessage) {\n loadObj.error = false;\n loadObj.errorMessage = '';\n loadObj.loading = true;\n loadObj.loadingMessage = loadingMessage;\n loadObj.successMessage = '';\n return loadObj;\n }\n\n //initialises all forms except microgenerators/energystorage/installers/heating system\n initForm(caseStudyFieldCategory, value, formName?) {\n if (!value) value = {};\n const group = {};\n for (let field in caseStudyFields[caseStudyFieldCategory]) {\n const fieldObj = caseStudyFields[caseStudyFieldCategory][field];\n // get validators and filter out null validators\n const validators = [\n fieldObj.required ? Validators.required : null,\n fieldObj.type == 'number' ? Validators.pattern('^[0-9]*$') : null,\n fieldObj.type == 'email' ? FormValidator.isEmailValid : null,\n fieldObj.minLength ? FormValidator.minLength(+fieldObj.minLength) : null,\n fieldObj.maxLength ? FormValidator.maxLength(+fieldObj.maxLength) : null,\n fieldObj.type == 'file' ? FormValidator.maxFileSize(+fieldObj.maxSize) : null,\n fieldObj.type == 'file' ? FormValidator.allowedFileTypes(new RegExp(fieldObj.accept)) : null,\n ].filter((validator) => validator != null);\n const initialValue = fieldObj.default !== 'undefined' && value[field] == null ? fieldObj.default : value[field];\n group[field] = new FormControl(initialValue, [...validators]);\n }\n const formGroup = this.fb.group(group);\n if (formGroup.controls.summary) {\n this.addSummaryToForm(formGroup, value);\n }\n if (!formGroup.metadata) {\n formGroup.metadata = { componentId: value['componentId'], componentVersion: value['componentVersion'], jeId: value['jeId'] };\n }\n if (formName) {\n formGroup.metadata.formName = formName;\n }\n\n return formGroup;\n }\n\n initFormArray(caseStudyFieldCategory, arrayControlName, arrayValues = [], minLen) {\n const arrayForm = this.fb.group({ [arrayControlName]: this.fb.array([]) });\n this.addFormsToFormArray(caseStudyFieldCategory, arrayControlName, arrayForm, arrayValues, minLen);\n return arrayForm;\n }\n\n addFormsToFormArray(type, arrayName, form: FormGroup, arrayValues = [], minLen = 0) {\n const array = form.get(arrayName) as FormArray;\n arrayValues.forEach((value) => {\n let group = this.initForm(type, value);\n this.addSummaryToForm(group, value);\n array.push(group);\n });\n\n if (minLen && array.length < minLen) {\n for (let i = 0; i < minLen - array.length; i++) {\n let group = this.initForm(type, {});\n array.push(group);\n }\n }\n\n return form;\n }\n\n getSectionValidity(section) {\n const forms = this.formsBuilder.filter((form) => form.formSection === section);\n return forms.every((form) => !this[form.formName] || this[form.formName].valid);\n }\n\n getSectionValidityForNonEmptyControls(section) {\n const forms = this.formsBuilder.filter((form) => form.formSection === section);\n return forms.every((form) => !this[form.formName] || this.formValidationService.isFormValidForNonEmptyControls(this[form.formName]));\n }\n\n isSectionEmpty(section) {\n const forms = this.formsBuilder.filter((form) => form.formSection === section);\n return forms.every((form) => this.isFormEmpty(this[form.formName]));\n }\n\n isSectionPristine(section) {\n const forms = this.formsBuilder.filter((form) => form.formSection === section);\n return forms.every((form) => !this[form.formName] || this[form.formName].pristine);\n }\n\n markSectionAsTouched(section) {\n \n const forms = this.formsBuilder.filter((form) => form.formSection === section);\n forms.forEach((form) => {\n if (this[form.formName]) {\n this[form.formName].markAllAsTouched();\n this.announceForm(form.formName, this[form.formName]);\n }\n });\n }\n\n markSectionAsPristine(section) {\n \n const forms = this.formsBuilder.filter((form) => form.formSection === section);\n forms.forEach((form) => {\n if (this[form.formName]) {\n this[form.formName].markAsPristine();\n this.announceForm(form.formName, this[form.formName]);\n }\n });\n }\n\n getSectionFromRouter() {\n const urlArray = this.router.url.split('/');\n const section = urlArray[urlArray.length - 1];\n return section;\n }\n\n addGroupToFormArray(type, form: FormGroup, arrayName, value = {}) {\n let group = this.initForm(type, value);\n const array = form.get(arrayName) as FormArray;\n array.push(group);\n return group;\n }\n\n removeForm(index, form: FormGroup, arrayName) {\n const array = form.get(arrayName) as FormArray;\n array.removeAt(index);\n return form;\n }\n\n processChangeBooleanControl(type, form, formToUpdate, arrayName, booleanField, formToUpdateName) {\n form.controls[booleanField].valueChanges.subscribe((value) => {\n \n if (value && !formToUpdate) {\n if (!arrayName) {\n this.initFormAndSet(formToUpdateName, type);\n this.announceForm(formToUpdateName, this[formToUpdateName]);\n return;\n }\n this.initFormArrayAndSet(formToUpdateName, type, arrayName, [], 1);\n this.announceForm(formToUpdateName, this[formToUpdateName]);\n return;\n }\n if (!value) {\n this[formToUpdateName] = null;\n this.announceForm(formToUpdateName, this[formToUpdateName]);\n return;\n }\n if (value && arrayName) {\n this.addGroupToFormArray(type, formToUpdate, arrayName);\n return;\n }\n });\n return form;\n }\n\n initFormAndSet(formName, caseStudyFieldCategory, value = {}) {\n this[formName] = this.initForm(caseStudyFieldCategory, value, formName);\n }\n\n setForm(formName, form) {\n this[formName] = form;\n }\n setFormAndAnnounce(formName, form) {\n this.setForm(formName, form);\n \n this.announceForm(formName, form);\n }\n\n initFormArrayAndSet(formName, caseStudyFieldCategory, arrayControlName, arrayValues = [], minLen) {\n this[formName] = this.initFormArray(caseStudyFieldCategory, arrayControlName, arrayValues, minLen);\n }\n\n announceCaseStudy(caseStudy = this.caseStudy, formattedCaseStudy = this.formattedCaseStudy) {\n this.caseStudyAnnouncer.emit({ caseStudy, formattedCaseStudy });\n }\n\n announceJournal() {\n this.journalAnnouncer.emit(this.journal);\n }\n\n announceForm(formName, form) {\n this.formAnnouncer.emit({ formName, form });\n }\n\n setCaseStudy(caseStudy) {\n this.caseStudy = caseStudy;\n }\n\n setFormattedCaseStudy(formattedCaseStudy) {\n this.formattedCaseStudy = formattedCaseStudy;\n }\n\n setAndAnnounceCaseStudy(caseStudy, formattedCaseStudy) {\n this.caseStudy = caseStudy;\n this.formattedCaseStudy = formattedCaseStudy;\n this.announceCaseStudy(caseStudy, formattedCaseStudy);\n }\n\n async setFormatAnnounceCaseStudy(caseStudy) {\n this.caseStudy = caseStudy;\n this.formattedCaseStudy = await this.caseStudyService.fetchCaseStudyData(caseStudy);\n this.announceCaseStudy(caseStudy, this.formattedCaseStudy);\n }\n\n setAndAnnounceJournal(journal) {\n this.journal = journal;\n this.announceJournal();\n }\n\n getAndAnnounceCaseStudySubmitSuccess() {\n const sectionSuccessMap = {};\n for (let section of this.sections) {\n sectionSuccessMap[section] = this.getSectionValidity(section);\n }\n this.caseStudySubmitSuccessAnnouncer.emit(sectionSuccessMap);\n }\n\n // getFormCategories(form: FormGroup) {\n // switch (form) {\n // case this.microgeneratorForm:\n // return ['microgenerator'];\n // case this.buildingForm:\n // return ['building'];\n // case this.energyStoragesForm:\n // return ['energyStorage'];\n // case this.heatingSystemForm:\n // return ['heatingSystem'];\n // case this.installationForm:\n // return ['installer', 'installation'];\n // // case this.outcomesForm:\n // // return ['satisfaction', 'finance'];\n // case this.buildingPostInstallForm:\n // return ['buildingPostInstall'];\n // }\n // }\n\n isFormEmpty(form) {\n return form && form.value && Object.keys(form.value).every((key) => form.value[key] === '');\n }\n\n getActiveForms() {\n return this.formsBuilder.map((form) => this[form.formName]).filter((form) => form);\n }\n\n areFormsPristine() {\n const activeForms = this.getActiveForms();\n return activeForms.every((form) => form.pristine);\n }\n\n async getOrCreateHpSystem(completionStatus) {\n let hpSystem = this.formattedCaseStudy.after.heating_system && this.formattedCaseStudy.after.heating_system.find((system) => system.type.toLowerCase().includes('heat pump'));\n if (!hpSystem) {\n hpSystem = await this.createComponent({ formValue: { type: 'Air Source Heat Pump' }, fieldsToAdd: [], fieldsToDelete: [], componentDataType: 'heating_system', componentVersion: 1, completionStatus });\n const descriptionJe = await this.createDescriptionJournalEntry({ formValue: {}, componentDataType: 'heating_system', componentVersion: 1, componentId: hpSystem.componentId, completionStatus });\n const r = await this.addJournalEntryToCaseStudy({ journalEntry: descriptionJe, caseStudy: this.caseStudy, section: 'after' });\n }\n\n await this.announceLatestCaseStudy();\n this.initFormArrayAndSet('heatingSystemPostForm', 'heatingSystem', 'heatingSystems', this.formattedCaseStudy.after.heating_system, 1);\n this.announceForm('heatingSystemPostForm', this.heatingSystemPostForm);\n return this.formattedCaseStudy.after.heating_system && this.formattedCaseStudy.after.heating_system.find((system) => system.type.toLowerCase().includes('heat pump'));\n }\n\n async processDeletedComponents(componentArray, componentFormArray, formArrayName, csSection) {\n if (!componentArray) return;\n const existingComponentIds = componentArray.map((component) => component.componentId);\n const componentIds = componentFormArray ? componentFormArray.controls[formArrayName]['controls'].map((form) => form.metadata.componentId) : [];\n if (existingComponentIds.length === componentIds.length) return;\n const deletedComponentIds = existingComponentIds.filter((id) => !componentIds.includes(id));\n const journalEntriesToDelete = this.caseStudy[csSection].filter((je) => deletedComponentIds.includes(je.componentId));\n for (let je of journalEntriesToDelete) {\n await this.removeJournalEntryFromCaseStudy({\n caseStudy: this.caseStudy,\n jeId: je.jeId,\n section: csSection,\n });\n }\n }\n\n async addJournalEntryToCaseStudy({ caseStudy, journalEntry, section }: { caseStudy; journalEntry; section: 'before' | 'after' | 'outcome' }) {\n caseStudy[section].push({\n jeId: journalEntry.jeId,\n componentId: journalEntry.componentId,\n componentVersion: journalEntry.componentVersion,\n componentDataType: journalEntry.componentDataType,\n journalEntryDataType: journalEntry.data.journalEntryDataType,\n });\n return this.glowService.updateCaseStudy(caseStudy.csId, { [section]: caseStudy[section] }).toPromise();\n }\n\n removeJournalEntryFromCaseStudy({ caseStudy, jeId, section }: { caseStudy; jeId; section: 'before' | 'after' | 'outcome' }) {\n caseStudy[section] = caseStudy[section].filter((je) => je.jeId !== jeId);\n return this.glowService.updateCaseStudy(caseStudy.csId, { [section]: caseStudy[section] }).toPromise();\n }\n\n async createJournalEntry({ journalEntryData, componentId, componentVersion, componentDataType, completionStatus }) {\n journalEntryData = {\n ...journalEntryData,\n componentId,\n componentVersion,\n componentDataType,\n veId: this.selectedService.veId,\n journalId: this.journal.journalId,\n summary: journalEntryData.summary || '',\n completionStatus,\n };\n return this.glowService.createJournalEntry(journalEntryData).toPromise();\n }\n\n getDescrptionJournalEntryFromFormValue(formValue) {\n const journalEntryData = {\n data: {\n description: formValue.summary || '',\n journalEntryDataType: 'text_description',\n },\n };\n return journalEntryData;\n }\n\n async createDescriptionJournalEntry({ formValue, componentId, componentVersion, componentDataType, completionStatus }) {\n const journalEntryData = this.getDescrptionJournalEntryFromFormValue(formValue);\n const journalEntry = await this.createJournalEntry({ journalEntryData, componentId, componentVersion, componentDataType, completionStatus });\n return journalEntry;\n }\n\n async updateDescriptionJournalEntry({ formValue, existingTextDescription }) {\n const journalEntryData = this.getDescrptionJournalEntryFromFormValue(formValue);\n const jeId = existingTextDescription && existingTextDescription.jeId;\n return this.glowService.updateJournalEntry(jeId, journalEntryData).toPromise();\n }\n\n getComponentFromFormValue({ formValue, componentDataType, fieldsToDelete, fieldsToAdd }) {\n let componentData = { ...formValue };\n let component: any = {};\n for (let field of fieldsToDelete) {\n delete componentData[field];\n }\n for (let field of fieldsToAdd) {\n component[field] = formValue[field];\n }\n componentData = Utils.setNumbersInObject(componentData);\n component['data'] = componentData;\n component['data']['componentDataType'] = componentDataType;\n return component;\n }\n\n async updateComponent({ componentId, componentVersion, componentDataType, fieldsToDelete, fieldsToAdd, formValue }) {\n const component = this.getComponentFromFormValue({ formValue, componentDataType, fieldsToDelete, fieldsToAdd });\n return this.glowService.updateComponent(componentId, componentVersion, component).toPromise();\n }\n\n async uploadComponentMediaFiles(mediaFiles, componentId, componentVersion) {\n if (!(mediaFiles instanceof FileList)) return mediaFiles;\n const formData = Utils.formDataFromFiles(mediaFiles);\n const updatedComponent = await this.glowService.updateComponentMedia(componentId, componentVersion, formData).toPromise();\n return updatedComponent.mediaFiles;\n }\n\n async uploadComponentMediaFilesFromForm(formValue, componentId, componentVersion) {\n if (formValue.mediaFiles && formValue.mediaFiles.length) {\n const uploadedMediaFiles = await this.uploadComponentMediaFiles(formValue.mediaFiles, componentId, componentVersion);\n formValue.mediaFiles = uploadedMediaFiles;\n }\n return formValue;\n }\n\n async createComponent({ formValue, fieldsToDelete, fieldsToAdd, componentVersion, componentDataType, completionStatus, componentId }: { formValue; fieldsToDelete; fieldsToAdd; componentVersion; componentDataType; completionStatus; componentId? }) {\n const component = this.getComponentFromFormValue({ formValue, componentDataType, fieldsToDelete, fieldsToAdd });\n component['componentVersion'] = componentVersion;\n if (componentId) {\n component['componentId'] = componentId;\n }\n component['veId'] = this.selectedService.veId;\n component['completionStatus'] = completionStatus;\n return this.glowService.createComponent(component).toPromise();\n }\n\n nextSection(currentSection) {\n //todo: put pages in this service- set up setter to fetch them from here\n const sections = ['pre-installation-building', 'pre-installation-heating', 'installation', 'post-installation-heating', 'post-installation-building', 'post-installation-outcomes', 'other-information'];\n const index = sections.indexOf(currentSection);\n return sections[index + 1];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GlowService } from './glow.service';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseStudyService {\n constructor(private glowService: GlowService, private http: HttpClient) {}\n\n async fetchCaseStudyData(caseStudy: any) {\n ;\n let fullCs = { ...caseStudy };\n const before = await this.fetchCaseStudyItems(caseStudy.before);\n const after = await this.fetchCaseStudyItems(caseStudy.after);\n const outcome = await this.fetchCaseStudyItems(caseStudy.outcome);\n fullCs.before = this.convertObject(before);\n fullCs.after = this.convertObject(after);\n fullCs.outcome = this.convertObject(outcome);\n return fullCs;\n }\n\n async fetchCaseStudyItems(sectionArray: any[]) {\n const section = {};\n if (!(Array.isArray(sectionArray) && sectionArray.length)) return {};\n for (let je of sectionArray) {\n if (!section[je.componentDataType]) {\n section[je.componentDataType] = {};\n }\n let data = {};\n const journalEntry = await this.glowService.getJournalEntry(je.jeId).toPromise();\n journalEntry.data['validFrom'] = journalEntry.validFrom && journalEntry.validFrom.split('T')[0];\n journalEntry.data['validTo'] = journalEntry.validTo && journalEntry.validTo.split('T')[0];\n journalEntry.data['jeId'] = journalEntry.jeId;\n if (journalEntry.data.journalEntryDataType !== 'resource_extract') {\n data[journalEntry.data.journalEntryDataType] = journalEntry.data;\n } else {\n data[journalEntry.data.classifier] = journalEntry.data;\n }\n if (!section[je.componentDataType][je.componentId]) {\n const component = await this.glowService.getComponent(je.componentId, je.componentVersion).toPromise();\n const compData = component.data;\n delete component.data;\n data = { ...data, ...compData, ...component };\n data['installedAt'] = component.installedAt && component.installedAt.split('T')[0];\n data['decommissionedAt'] = component.decommissionedAt && component.decommissionedAt.split('T')[0];\n section[je.componentDataType][je.componentId] = data;\n } else {\n section[je.componentDataType][je.componentId] = { ...section[je.componentDataType][je.componentId], ...data };\n }\n }\n return section;\n }\n\n fileExists(url: any, baseUrl) {\n const urlObj = new URL(url, baseUrl);\n return this.http\n .head(urlObj.href)\n .toPromise()\n .then(() => true)\n .catch(() => false);\n }\n\n async getDefaultPropertyImage(formattedCaseStudy) {\n const builtForm = formattedCaseStudy.before.building ? formattedCaseStudy.before.building[0].builtForm.toLowerCase() : '';\n const baseUrl = window.location.href.split('/').slice(0, -1).join('/');\n const url = `../../assets/images/case-study/building/${builtForm}.jpg`;\n const absUrl = new URL(url, baseUrl).href;\n const fileExists = await this.fileExists(absUrl, baseUrl);\n if (!fileExists) {\n return `../../assets/images/case-study/building/detached.jpg`;\n }\n return url;\n }\n\n async getImage(caseStudy, field, index?) {\n const imageInfo = index >= 0 ? caseStudy[field][index] : caseStudy[field]\n if (!imageInfo) return null;\n const image = await this.glowService.getImage(imageInfo.fileId);\n return image;\n }\n\n convertObject(inputObject) {\n const convertedObject = {};\n\n for (const key in inputObject) {\n if (inputObject.hasOwnProperty(key)) {\n const innerObject = inputObject[key];\n convertedObject[key] = Object.values(innerObject);\n }\n }\n\n return convertedObject;\n }\n\n //todo: include loans\n calculateNetCosts(totalCost, awardedGrants) {\n if (!totalCost) {\n return null;\n }\n if (!awardedGrants) {\n return totalCost;\n }\n const totalGrantAmount = awardedGrants.reduce((acc, ag) => {\n const accAmountWon = acc.amount || 0;\n const agAmountWon = ag.amount || 0;\n return accAmountWon + agAmountWon;\n }, 0);\n return totalCost - totalGrantAmount;\n }\n\n calculateNetRunningCosts(componentArray) {\n if (!componentArray) {\n return null;\n }\n const runningCosts = componentArray.reduce((acc, hs) => {\n const accRunningCost = acc['gas.cost'] ? acc['gas.cost'].totalValue : acc['electricity.cost'] ? acc['electricity.cost'].totalValue : 0;\n const hsRunningCost = hs['gas.cost'] ? hs['gas.cost'].totalValue : hs['electricity.cost'] ? hs['electricity.cost'].totalValue : 0;\n return accRunningCost + hsRunningCost;\n }, 0);\n return runningCosts;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { tDeviceTypeConnectivityMapping, tAssetTypeConnectivityMapping, tResourceTypeSmartMeterMapping, tResourceTypeMapping, tResourceTypeRestrictionConfig, tResourceTypeGroupMapping } from './configuration.typings';\nimport { GlowService } from './glow.service';\n\n@Injectable({\n providedIn: 'root'\n})\n//June 2018: DO not use DeviceTypes to evaluate WiFi/ethernet\nexport class DeviceTypeConfigService {\n\n //This service classifies the resource types as are required for the vatious vetypes\n deviceTypeConnectivityMappings: tDeviceTypeConnectivityMapping;\n\n getDeviceTypeConnectivityConfigurations() {\n\n this.deviceTypeConnectivityMappings = {\n connectivity: {\n wifi: [\"9613ffb0-fb70-48fb-8927-4a936fd98c44\", \"1027b6e8-9bfd-4dcb-8068-c73f6413cfaf\", \"b91cf82f-aafe-47f4-930a-b2ed1c7b2691\", \"7adcd7d3-3cd5-4c6d-882d-e5af636cc46f\"],\n ethernet: [\"a6224773-f6de-4808-b422-dcf9cece1201\", \"00a5f229-ae7e-4ee0-bcf3-309b2211f3d5\"]\n },\n type: {\n network: [\"9613ffb0-fb70-48fb-8927-4a936fd98c44\", \"b91cf82f-aafe-47f4-930a-b2ed1c7b2691\", \"1027b6e8-9bfd-4dcb-8068-c73f6413cfaf\", \"a6224773-f6de-4808-b422-dcf9cece1201\", \"00a5f229-ae7e-4ee0-bcf3-309b2211f3d5\", \"b91cf82f-aafe-47f4-930a-b2ed1c7b2691\", \"7adcd7d3-3cd5-4c6d-882d-e5af636cc46f\"],\n sensor: [\"1ff18981-76ab-4f54-ba5c-eba107e1d6d2\", \"12cac22f-2fe3-4219-bf56-42fda3505605\", \"fa72a7b9-a574-4bec-b2a4-fa1eb36fd9a4\", \"4d090136-a8d5-4ef0-a76a-d4b090dc1ac6\"]\n }\n }\n return this.deviceTypeConnectivityMappings;\n }\n\n getDeviceTypesToShowSetUpWiFiButton() {\n // IHD WiFi Set Up should happen on the IHD itself. If it is a Glow Stick we need to prompt to use the Mobile Set up process.\n const deviceTypesGlowSticks = [\"9613ffb0-fb70-48fb-8927-4a936fd98c44\", \"1027b6e8-9bfd-4dcb-8068-c73f6413cfaf\"]\n return deviceTypesGlowSticks;\n }\n};\n\n@Injectable()\nexport class AssetTypeConfigService {\n\n //This service classifies the resource types as are required for the vatious vetypes\n assetTypeConnectivityMappings: tAssetTypeConnectivityMapping;\n\n getAssetTypeConnectivityConfigurations() {\n\n this.assetTypeConnectivityMappings = {\n connectivity: {\n wifi: [\"ecf6a7e3-eff8-4e7d-af12-b24f23b7a5c7\", \"00012fd2-51b7-471e-965f-00e6535c0a37\", \"764ef28d-6cc5-48b2-8ab9-7a659d7ffb18\", \"07e1802c-d2af-47b9-bd11-c34e17a6301d\"],\n ethernet: [\"172b6b4b-aa59-463c-a3b6-117106dd0f36\", \"60619589-9249-4f04-9480-960faa5f9c18\"]\n },\n wiFiPassword: {\n fixed: [\"ecf6a7e3-eff8-4e7d-af12-b24f23b7a5c7\", \"00012fd2-51b7-471e-965f-00e6535c0a37\"]\n }\n }\n return this.assetTypeConnectivityMappings;\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ResourceTypeConfigService {\n\n public resourceTypeMapping: tResourceTypeMapping\n public resourceTypeGroupMapping: tResourceTypeGroupMapping\n\n public resourceClassifierMapping: tResourceTypeMapping\n public resourceClassifierGroupMapping: tResourceTypeGroupMapping\n\n public resourceClassifierToResourceTypeMap: { [key: string]: string[] }\n\n\n constructor(private glowService: GlowService) {\n\n }\n loadResourceTypeMappings() {\n this.resourceTypeMapping = {\n dataStreamType: {\n \"electricity\": [\"ea02304a-2820-4ea0-8399-f1d1b430c3a0\", \"b4158501-a678-484a-837a-874194d3bd48\",\n \"b5791d9a-6f58-4372-bae4-ae79d1cc0712\", \"23e9084a-19d4-4849-ab78-bd22753457f5\",\n \"9ec2bd19-bfa3-430b-9f08-9550c8cd4bbe\", \"bb0b2429-7776-44da-a3b4-f87ce3a47dd0\",\n \"b3c80261-f9d3-4453-a6e7-5fd02e89fc67\", \"c58b4039-3cdf-425a-873d-f9e82d8c4009\",\n \"b8a8b8ca-ee59-4fc9-97c1-77dfa6bd9b46\", \"177a0707-154b-4666-be59-2a5eff88a160\",\n \"e3a5db34-6e0c-4221-9653-8d33e27511ba\", \"78859e39-611e-4e84-a402-1d4460abcb56\", // DCC\n \"92d6d2fb-26bc-4ada-9698-9f678ecdfdcf\", \"ba9d973a-ffc8-4f29-98f7-0fe36dbbc136\", // AMR\n \"0bb1fb70-c443-416f-843b-c166dcff0a87\", \"55326886-dbc3-4840-ae24-8cdbf51a8485\", // Secure\n \"4bae327d-787f-43e1-8b2d-07cbc8235c7a\", \"1bbc8103-cc49-46ff-8fe0-209924697e9c\",\n \"5d3a6b5f-78f4-4ade-8f57-a9db10bc2b30\", \"2f5fc03f-771e-48e9-a6bc-9d49edd8bfae\"// DH\n ],\n \"gas\": [\"672b8071-44ff-4f23-bca2-f50c6a3ddd02\", \"32d9821b-34fd-46d1-9ba1-56259afd4734\",\n \"08ab415f-d851-423f-adf4-c2b1e0529e27\", \"a6b95f41-771d-4bd2-99f4-93ee43c38f5a\", // DCC\n \"5bc20a07-f50a-4b7b-931f-836a9e6188e0\", \"972c95ba-9c99-4461-95fa-9d072eaa20af\", // AMR\n \"f6c3da95-f81a-4640-ac20-cfd82b88412e\", \"5c4bbe04-1fee-4701-9366-cb37285167f5\" // Secure\n ],\n cooling: [\n \"54a86b22-1ec0-4404-b968-e136864e4cf2\", \"c9b94bfe-31d3-48f2-8b2d-5c4386ea45cd\",\n \"388527d2-b51b-4aa0-b065-c70bc1b287ad\", \"67779bc1-a8eb-4934-a3df-097ac4b0548e\"\n ],\n heat: [\"a16c0dfc-8cb8-4d15-a7bc-59c9d5555eff\", \"de946467-1e32-4f65-a3c6-bf65b66b3b0c\",\n \"dd272457-d812-4bfc-b25e-811a4a7207c6\", \"9cdc3482-3f9c-4afc-b59d-bcfa098b19b6\",\n \"5415d743-ffc5-4659-ae7e-f4c400ded4dc\", \"8a60dd47-0589-4700-a018-ce52fbf38aab\"],\n competitionPoints: ['9d90695b-2173-48af-9e1c-c53a4badc659'],\n water: ['17ccf7b8-d887-4029-bc97-a8a70900a738', 'b9684b04-4b78-4d20-8c6c-e0119e7e0367'],\n \"consumption\": [\"45b6b096-1a23-4584-9a58-9631ea1f3274\"],\n \"generation\": [\"9b4ff990-60db-4d6c-9a0c-ab02bdd62fd3\"],\n \"diversion\": [\"7f464f1b-14ad-48a0-bc9d-0e464e9d6c36\"],\n \"import\": [\"d4181ac4-f182-412e-9106-3b298e0d4c62\"],\n \"export\": [\"20dc3d46-f07d-4d61-af52-b0ac148206bf\", \"b8aba9a5-effa-42e6-8e27-29c93a14e090\"],\n temperature: [\"temperatureResourceTypeId\", \"5a0ac248-ab63-4bd7-9788-a9fa26b85c1a\"],\n relativeHumidity: [\"34b43bd1-d724-4c3f-954e-e74b5bbdcc7e\"],\n daylight: [\"dayightTimeSeriesResourceTypeId\"],\n illuminance: ['61af065b-d737-44d2-b30a-f9f1a3bd1b0f']\n },\n analytics: {\n forecast: [\"67779bc1-a8eb-4934-a3df-097ac4b0548e\", \"8a60dd47-0589-4700-a018-ce52fbf38aab\", \"2f5fc03f-771e-48e9-a6bc-9d49edd8bfae\"]\n },\n dimension: {\n energy: [\n \"ea02304a-2820-4ea0-8399-f1d1b430c3a0\", \"672b8071-44ff-4f23-bca2-f50c6a3ddd02\",\n \"b5791d9a-6f58-4372-bae4-ae79d1cc0712\", \"23e9084a-19d4-4849-ab78-bd22753457f5\",\n \"9ec2bd19-bfa3-430b-9f08-9550c8cd4bbe\", \"bb0b2429-7776-44da-a3b4-f87ce3a47dd0\",\n \"a16c0dfc-8cb8-4d15-a7bc-59c9d5555eff\", \"de946467-1e32-4f65-a3c6-bf65b66b3b0c\",\n '17ccf7b8-d887-4029-bc97-a8a70900a738',\n \"45b6b096-1a23-4584-9a58-9631ea1f3274\", \"9b4ff990-60db-4d6c-9a0c-ab02bdd62fd3\",\n \"7f464f1b-14ad-48a0-bc9d-0e464e9d6c36\", \"d4181ac4-f182-412e-9106-3b298e0d4c62\",\n \"20dc3d46-f07d-4d61-af52-b0ac148206bf\", \"e3a5db34-6e0c-4221-9653-8d33e27511ba\",\n \"92d6d2fb-26bc-4ada-9698-9f678ecdfdcf\", \"08ab415f-d851-423f-adf4-c2b1e0529e27\",\n \"5bc20a07-f50a-4b7b-931f-836a9e6188e0\",\n \"0bb1fb70-c443-416f-843b-c166dcff0a87\", \"f6c3da95-f81a-4640-ac20-cfd82b88412e\",\n \"4bae327d-787f-43e1-8b2d-07cbc8235c7a\",\n \"54a86b22-1ec0-4404-b968-e136864e4cf2\",\n \"8bfe5602-5f35-45f7-b8bb-3c43d7859432\"\n ], // Rename energy to USAGE\n cost: [\n \"b4158501-a678-484a-837a-874194d3bd48\", \"32d9821b-34fd-46d1-9ba1-56259afd4734\",\n \"b3c80261-f9d3-4453-a6e7-5fd02e89fc67\", \"c58b4039-3cdf-425a-873d-f9e82d8c4009\",\n \"b8a8b8ca-ee59-4fc9-97c1-77dfa6bd9b46\", \"177a0707-154b-4666-be59-2a5eff88a160\",\n 'b9684b04-4b78-4d20-8c6c-e0119e7e0367', \"78859e39-611e-4e84-a402-1d4460abcb56\",\n \"ba9d973a-ffc8-4f29-98f7-0fe36dbbc136\", \"a6b95f41-771d-4bd2-99f4-93ee43c38f5a\",\n \"972c95ba-9c99-4461-95fa-9d072eaa20af\",\n \"dd272457-d812-4bfc-b25e-811a4a7207c6\", \"9cdc3482-3f9c-4afc-b59d-bcfa098b19b6\",\n \"55326886-dbc3-4840-ae24-8cdbf51a8485\", \"5c4bbe04-1fee-4701-9366-cb37285167f5\",\n \"c9b94bfe-31d3-48f2-8b2d-5c4386ea45cd\", \"1bbc8103-cc49-46ff-8fe0-209924697e9c\"\n ],\n balance: [\n \"5415d743-ffc5-4659-ae7e-f4c400ded4dc\", \"5d3a6b5f-78f4-4ade-8f57-a9db10bc2b30\", \"388527d2-b51b-4aa0-b065-c70bc1b287ad\"\n ]\n }\n }\n return this.resourceTypeMapping;\n }\n\n async loadClassifierResourceTypeMap() {\n const resourceTypes = await this.glowService.getResourceTypes().toPromise();\n\n this.resourceClassifierToResourceTypeMap = resourceTypes.reduce((acc, elem) => {\n if(acc[elem.classifier] ) {\n acc[elem.classifier].push(elem.resourceTypeId)\n } else {\n acc[elem.classifier] =[elem.resourceTypeId]\n }\n return acc\n }, {})\n return this.resourceClassifierToResourceTypeMap\n }\n\n async getClassifierToResourceTypeMap() {\n if (this.resourceClassifierToResourceTypeMap) {\n return this.resourceClassifierToResourceTypeMap\n } else {\n return this.loadClassifierResourceTypeMap()\n }\n }\n\n loadResourceClassiffierMappings(): tResourceTypeMapping {\n this.resourceClassifierMapping = {\n dataStreamType: {\n competitionPoints: ['points.competition'],\n electricity: [\n 'electricity.consumption', 'electricity.consumption.cost',\n 'balance.electricity', \"electricity.forecast\"],\n gas: ['gas.consumption', 'gas.consumption.cost'],\n heat: [\n 'heat.energy', 'heat.consumption', 'heat.consumption.cost',\n 'gas.consumption', 'gas.consumption.cost', 'heat.energy.cost',\n 'balance.heat', \"heat.forecast\"],\n cooling: ['cool.energy', 'cool.energy.cost', 'balance.cooling', \"cooling.forecast\"],\n water: ['water.consumption', 'water.consumption.cost'],\n consumption: ['electricity.consumption'],\n generation: ['electricity.generation'],\n diversion: ['electricity.diversion'],\n import: ['electricity.import'],\n export: [\"electricity.export\"],\n illuminance: ['illuminance'],\n daylight: [\"dayight.normalization\"],\n temperature: [\"temperature\"],\n relativeHumidity: [\"relative_humidity\"],\n }, // Rename energy to USAGE\n analytics: {\n forecast: [\"heat.forecast\", \"cooling.forecast\", \"electricity.forecast\"]\n },\n dimension: {\n energy: ['electricity.consumption', 'gas.consumption', 'heat.consumption', 'heat.energy', 'water.consumption',\n 'electricity.generation', 'electricity.diversion', 'electricity.import', \"electricity.export\", 'cool.energy'\n ],\n cost: ['electricity.consumption.cost', 'gas.consumption.cost', 'heat.consumption.cost', 'water.consumption.cost', 'heat.energy.cost', 'cool.energy.cost'],\n balance: ['balance.cooling', 'balance.electricity', 'balance.heat']\n }\n };\n return this.resourceClassifierMapping;\n };\n\n loadResourceTypeGroupMappings(): tResourceTypeGroupMapping {\n this.resourceTypeGroupMapping = {\n summary: {\n \"heat\": ['fc143f87-221a-4294-9fde-5cb871df6bb9'],\n elecGas: ['2bac239e-32c6-4518-a1b2-6a6e855c0dfa']\n\n },\n value: {\n \"heat\": ['00d5ea56-6895-49b2-a6d9-85ad2e1b6547'],\n elecGas: ['e3f4fc6b-3505-4f3a-a989-d5ddb6210aed']\n },\n meterReadCount: {\n \"heat\": [\"f5454a33-46a7-423e-a140-5acd5ab95ebe\"],\n elecGas: []\n },\n groups: {\n summary: [\"52440667-0e66-485d-bece-abaed22f374f\"]\n }\n }\n return this.resourceTypeGroupMapping;\n }\n\n loadResourceClassifierGroupMappings(): tResourceTypeGroupMapping {\n this.resourceClassifierGroupMapping = {\n summary: {\n \"heat\": ['group.heat.summary'],\n elecGas: ['group.energy.summary']\n },\n meterReadCount: {\n \"heat\": [\"group.meter-read.count\"],\n elecGas: []\n },\n value: {\n \"heat\": ['group.heat.consumption'],\n elecGas: ['group.energy.consumption']\n },\n groups: {\n summary: [\"groups.energy.summary\"]\n }\n }\n return this.resourceClassifierGroupMapping;\n }\n\n public loadResourceTypeRestrictionConfig(): tResourceTypeRestrictionConfig {\n const resourceTypeConfig = {\n // heat\n \"a16c0dfc-8cb8-4d15-a7bc-59c9d5555eff\": {\n minimumAggPeriod: 'P1D',\n minimumCurrentSummaryValue: 'week',\n defaultDayToDisplay: -1\n },\n \"de946467-1e32-4f65-a3c6-bf65b66b3b0c\": {\n minimumAggPeriod: 'P1D',\n minimumCurrentSummaryValue: 'week',\n defaultDayToDisplay: -1\n },\n \"dd272457-d812-4bfc-b25e-811a4a7207c6\": {\n minimumAggPeriod: 'P1D',\n minimumCurrentSummaryValue: 'week',\n defaultDayToDisplay: -1\n },\n \"9cdc3482-3f9c-4afc-b59d-bcfa098b19b6\": {\n minimumAggPeriod: 'P1D',\n minimumCurrentSummaryValue: 'week',\n defaultDayToDisplay: -1\n },\n \"672b8071-44ff-4f23-bca2-f50c6a3ddd02\": { // gas\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: 0\n },\n \"32d9821b-34fd-46d1-9ba1-56259afd4734\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: 0\n },\n \"17ccf7b8-d887-4029-bc97-a8a70900a738\": { // water\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: 0\n },\n \"b9684b04-4b78-4d20-8c6c-e0119e7e0367\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: 0\n },\n\n // electricity cost\n \"b4158501-a678-484a-837a-874194d3bd48\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: 0\n },\n \"b3c80261-f9d3-4453-a6e7-5fd02e89fc67\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: 0\n },\n \"c58b4039-3cdf-425a-873d-f9e82d8c4009\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: 0\n },\n \"b8a8b8ca-ee59-4fc9-97c1-77dfa6bd9b46\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: 0\n },\n \"177a0707-154b-4666-be59-2a5eff88a160\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: 0\n },\n // DCC\n \"e3a5db34-6e0c-4221-9653-8d33e27511ba\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n \"78859e39-611e-4e84-a402-1d4460abcb56\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n \"08ab415f-d851-423f-adf4-c2b1e0529e27\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n \"a6b95f41-771d-4bd2-99f4-93ee43c38f5a\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n // AMR\n \"92d6d2fb-26bc-4ada-9698-9f678ecdfdcf\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n \"ba9d973a-ffc8-4f29-98f7-0fe36dbbc136\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n \"5bc20a07-f50a-4b7b-931f-836a9e6188e0\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n \"972c95ba-9c99-4461-95fa-9d072eaa20af\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n // Secure\n \"0bb1fb70-c443-416f-843b-c166dcff0a87\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n \"55326886-dbc3-4840-ae24-8cdbf51a8485\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n \"f6c3da95-f81a-4640-ac20-cfd82b88412e\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n },\n \"5c4bbe04-1fee-4701-9366-cb37285167f5\": {\n minimumAggPeriod: 'PT30M',\n minimumCurrentSummaryValue: 'day',\n defaultDayToDisplay: -1\n }\n }\n return resourceTypeConfig\n }\n\n}","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from \"@angular/common/http\";\nimport { TranslateLoader } from '@ngx-translate/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { tContentWithLocalIndicator, tPromptWithLocalIndicator } from './content.typings';\nimport { ConfigService } from './app-config.service';\nimport { GlowService } from './glow.service';\nimport { tContent, tPromptUser, tPrompt, tPromptUserReq } from './glow.typings';\nimport { tPromptReferenceMappingElem } from './ui.typings';\n\n\n@Injectable()\nexport class CustomTranslateLoader implements TranslateLoader {\n\n constructor(\n private http: HttpClient,\n private glowService: GlowService) { }\n\n getTranslation(lang: string): Observable {\n // console.log(\"getTranslation\")\n\n const configuration = {content: {languageContent:{defaultLanguageCode: \"en-GB\", reference: \"GlowmarktWebLanguageContent\", version: \"1.0.0\"}}}\n if (!lang) {\n lang = configuration.content.languageContent.defaultLanguageCode\n console.warn(\"Defaulting to \" + lang)\n }\n const reference = configuration.content.languageContent.reference\n const version = configuration.content.languageContent.version\n // if (this.glowService.isLoggedIn()) {\n // return Observable.create(observer => {\n // this.glowService.getLanguageContent(reference, lang).subscribe((contentList) => {\n // let content;\n // let selectedLanguageContent = contentList.find(lc => lc.version === version)\n // if (!selectedLanguageContent && contentList && Array.isArray(contentList) && contentList.length > 0) {\n // console.warn(`Language Version ${version}, not found default to first one in array ${contentList[0].languageContentId}`)\n // selectedLanguageContent = contentList[0]\n // }\n // // console.log(\"selectedLanguageContent\")\n\n // // console.log(selectedLanguageContent)\n // if (selectedLanguageContent) {\n // content = selectedLanguageContent.data\n // // console.log(\"Language Content received via API\")\n // }\n // if (content) {\n // observer.next(content);\n // observer.complete();\n // } else {\n // this.http.get(\"/assets/i18n/\" + lang + \".json\").subscribe((res: Response) => {\n // // console.log(\"Content received from assets\")\n // observer.next(res);\n // observer.complete();\n // }, err => {\n // console.warn(err)\n // })\n // }\n\n // }, err => {\n // console.warn(err)\n // this.http.get(\"/assets/i18n/\" + lang + \".json\").subscribe((res: Response) => {\n // // console.log(\"Content received from assets\")\n // observer.next(res);\n // observer.complete();\n // }, err => {\n // console.warn(err)\n // })\n // });\n // });\n // } else {\n return Observable.create(observer => {\n this.http.get(\"/assets/i18n/\" + lang + \".json\").subscribe((res: Response) => {\n // console.log(\"Content received from assets\")\n observer.next(res);\n observer.complete();\n }, err => {\n console.warn(err)\n })\n });\n }\n\n // }\n}\n\n@Injectable()\nexport class ContentLoaderService {\n\n private ContentAnnouncer = new Subject();\n\n content$ = this.ContentAnnouncer.asObservable();\n\n constructor(\n private http: HttpClient,\n private glowService: GlowService) {\n\n }\n\n announceContent(content: tContentWithLocalIndicator) {\n // console.log(\"announcing readings\")\n this.ContentAnnouncer.next(content);\n }\n\n getContent(reference: string) {\n // console.log(\"getContent: \" + reference)\n this.glowService.getContent(reference).subscribe((contentList) => {\n // console.log(\"Content received via API\")\n if (contentList && Array.isArray(contentList) && contentList.length > 0) {\n if (contentList[0].hasOwnProperty(\"data\") && contentList[0].data) {\n let content = contentList[0]\n const contentWithLocalIndicator: tContentWithLocalIndicator = { ...content, ...{ isLocal: false } };\n this.announceContent(contentWithLocalIndicator)\n }\n }\n console.warn(`No content found ${reference}, Getting default content`)\n this.getContentLocally(reference)\n }, err => {\n console.warn(`Unable to get content ${reference}, Getting default content`)\n console.warn(err)\n this.getContentLocally(reference)\n });\n }\n\n getContentLocally(reference: string) {\n this.http.get(`/assets/content/${reference}.json`).subscribe((content) => {\n // console.log(\"Content received from assets\")\n const contentWithLocalIndicator: tContentWithLocalIndicator = { ...content, ...{ isLocal: true } };\n this.announceContent(contentWithLocalIndicator)\n }, err => {\n console.warn(err)\n })\n }\n\n // *PROMISE METHODS\n async getContentAsync(reference: string): Promise {\n const contentList = await this.glowService.getContent(reference).toPromise()\n if (contentList && Array.isArray(contentList) && contentList.length > 0) {\n if (contentList[0].hasOwnProperty(\"data\") && contentList[0].data) {\n const prompt = contentList[0]\n return { ...prompt, ...{ isLocal: false } };\n }\n }\n console.warn(`No content found ${reference}, Getting default content`)\n return this.getContentLocallyAsync(reference)\n }\n\n async getContentLocallyAsync(reference: string): Promise {\n const content = await this.http.get(`/assets/content/${reference}.json`).toPromise()\n if (content) {\n return { ...content, ...{ isLocal: true } }\n }\n return\n }\n}\n\n\n@Injectable()\nexport class PromptService {\n\n private PromptAnnouncer = new Subject();\n private PromptUserAnnouncer = new Subject();\n\n prompt$ = this.PromptAnnouncer.asObservable();\n promptUser$ = this.PromptUserAnnouncer.asObservable();\n\n constructor(\n private http: HttpClient,\n private glowService: GlowService) {\n\n }\n // *OBSERVABLE METHODS\n announcePrompt(prompt: tPromptWithLocalIndicator) {\n // console.log(\"announcing prompts\")\n this.PromptAnnouncer.next(prompt);\n }\n\n announcePromptUser(promptUser: tPromptUser) {\n // console.log(\"announcing promptUser\")\n this.PromptUserAnnouncer.next(promptUser);\n }\n\n getPrompt(reference: string) {\n // console.log(\"getPrompt: \" + reference)\n this.glowService.getPrompts(reference).subscribe((promptList) => {\n if (promptList && Array.isArray(promptList) && promptList.length > 0) {\n // console.log(\"Prompt received via API\")\n if (promptList[0].hasOwnProperty(\"data\") && promptList[0].data) {\n const prompt = promptList[0]\n const promptWithLocalIndicator: tPromptWithLocalIndicator = { ...prompt, ...{ isLocal: false } };\n this.announcePrompt(promptWithLocalIndicator)\n }\n } else {\n // console.log(\"No Prompt found will look locally\")\n this.getPromptLocally(reference)\n }\n }, err => {\n console.warn(\"Unable to get content \" + reference)\n console.warn(err)\n // console.log(\"Getting default content\")\n this.getPromptLocally(reference)\n });\n }\n\n getPromptLocally(reference: string) {\n this.http.get(\"/assets/prompts/\" + reference + \".json\").subscribe((prompt) => {\n // console.log(\"Prompt received from assets\")\n const promptWithLocalIndicator: tPromptWithLocalIndicator = { ...prompt, ...{ isLocal: true } };\n this.announcePrompt(promptWithLocalIndicator)\n })\n }\n\n getPromptUser(promptInfo: tPromptReferenceMappingElem) {\n // console.log(\"getPromptUser: \" + promptInfo.reference)\n this.glowService.getPromptUser(promptInfo.reference).subscribe((promptUserList) => {\n // console.log(\"PromptUser received via API\")\n // console.log(promptUserList)\n if (promptUserList && Array.isArray(promptUserList) && promptUserList.length > 0) {\n for (let i = 0; i < promptUserList.length; i++) {\n if (promptUserList[i] && promptUserList[i].promptId == promptInfo.promptId) {\n this.announcePromptUser(promptUserList[i])\n // console.log(\"Valid PromptUser found\")\n break;\n }\n }\n }\n }, err => {\n console.warn(\"Unable to get prompt user \" + promptInfo.reference)\n console.warn(err)\n // console.log(\"Getting default prompt user \")\n });\n }\n\n postPromptUser(promptReply: tPromptUserReq) {\n this.glowService.sendPromptReply(promptReply).subscribe((promptUserRes) => {\n // console.log(\"PromptUser send\")\n if (promptUserRes) {\n // console.log(promptUserRes)\n }\n }, err => {\n console.warn(\"Unable to send prompt user\")\n console.warn(err)\n });\n }\n\n // *PROMISE METHODS\n async getPromptAsync(reference: string): Promise {\n // console.log(\"getPrompt: \" + reference)\n const promptList = await this.glowService.getPrompts(reference).toPromise()\n if (promptList && Array.isArray(promptList) && promptList.length > 0) {\n // console.log(\"Prompt received via API\")\n if (promptList[0].hasOwnProperty(\"data\") && promptList[0].data) {\n const prompt = promptList[0]\n return { ...prompt, ...{ isLocal: false } };\n }\n } else {\n // console.log(\"No Prompt found will look locally\")\n return this.getPromptLocallyAsync(reference)\n }\n }\n\n async getPromptLocallyAsync(reference: string): Promise {\n const prompt = await this.http.get(\"/assets/prompts/\" + reference + \".json\").toPromise()\n if (prompt) {\n return { ...prompt, ...{ isLocal: true } }\n }\n return\n }\n \n}\n\n@Injectable()\nexport class PluralConfigService {\n //https://codeburst.io/using-the-plural-pipe-in-angular-2-2bcc67a14030\n constructor() {\n\n }\n\n getPluralConfiguration() {\n const itemPluralMapping = {\n // 'site': {\n // '=0': '0 Sites',\n // '=1': '1 Site',\n // 'other': '# Sites'\n // },\n 'property': {\n '=0': '0 Properties',\n '=1': '1 Property',\n 'other': '# Properties'\n },\n 'block': {\n '=0': '0 Blocks',\n '=1': '1 Block',\n 'other': '# Blocks'\n },\n };\n return itemPluralMapping\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { ResourceTypeConfigService } from './configuration.service';\nimport { tPeriodRangeMapping, tResourceAvailability, tBusinessCaseTypeMapping, tVeTypeAdditionalInfo, tDataStreamIconMapping } from './ui.typings';\nimport { tVE } from './glow.typings';\nimport { tEnergyCostResourceTypeMapping, tLoadingElement, tLoadingElementWithSuccess, tLoadingElementWithSuccessAndErrorObj } from './app-config.typings';\nimport { tResourceTypeMapping } from './configuration.typings';\nimport { ConfigService } from './app-config.service';\nimport { environment } from '../../environments/environment';\n\n@Injectable()\nexport class CustomUIConfigService {\n\n //This service classifies the resource types as are required for the vatious vetypes\n periodRangeMapping: tPeriodRangeMapping | undefined;\n businessCasePlanTypes: tBusinessCaseTypeMapping[] = [];\n\n dataStreamIconsMapping: tDataStreamIconMapping | undefined;\n // resourceAvailability: tResourceAvailability;\n // resourceTypeMappings: tResourceTypeSolarMapping;\n veTypeUIInfo: any;\n veTypeAdditionalInfo: tVeTypeAdditionalInfo | undefined;\n\n resourceTypeMappings: tResourceTypeMapping | undefined;\n resourceEnergyCostMapping: tEnergyCostResourceTypeMapping[] = [];\n\n constructor(\n private configService: ConfigService,\n private resourceTypeConfiguration: ResourceTypeConfigService) {\n\n }\n\n public initialiseLoadingBooleans(loading = true): tLoadingElement {\n return {\n errorString: '',\n loaded: false,\n loadError: false,\n loading: loading,\n }\n }\n\n public initialiseLoadingBooleansWithLoadedMsg(loading = true): tLoadingElementWithSuccess {\n return { ...this.initialiseLoadingBooleans(loading), loadedMessage: '' };\n }\n\n public initialiseLoadingBooleansWithLoadedMsgErrorObj(loading = true): tLoadingElementWithSuccessAndErrorObj {\n return { ...this.initialiseLoadingBooleansWithLoadedMsg(loading), loadedMessage: '', errorObj: {} };\n }\n\n getPeriodRangeConfigurations() {\n\n this.periodRangeMapping = {\n \"minute\": {\n \"range\": \"day\",\n \"apiFormat\": \"PT1M\",\n \"datePipeFormat\": \"dd-MM-yyyy HH:mm\",\n refreshRate: 5*60*1000 // 5 minutes\n },\n \"30minute\": {\n \"range\": \"day\",\n \"apiFormat\": \"PT30M\",\n \"datePipeFormat\": \"dd-MM-yyyy HH:mm\",\n refreshRate: 5*60*1000 // 5 minutes\n },\n \"hour\": {\n \"range\": \"day\",\n \"apiFormat\": \"PT1H\",\n \"datePipeFormat\": \"dd-MM-yyyy HH:mm\",\n refreshRate: 5*60*1000 // 5 minutes\n },\n \"day\": {\n \"range\": \"week\",\n \"apiFormat\": \"P1D\",\n \"datePipeFormat\": \"EEE dd MMM y\",\n refreshRate: 30*60*1000 // 30 minutes\n },\n \"week\": {\n \"range\": \"month\",\n \"apiFormat\": \"P1W\",\n \"datePipeFormat\": \"EEE dd MMM y\",\n refreshRate: 30*60*1000 // 30 minutes\n },\n \"weekday\": {\n \"range\": \"month\",\n \"apiFormat\": \"P1W\",\n \"datePipeFormat\": \"EEE dd MMM y\",\n refreshRate: 30*60*1000 // 30 minutes\n },\n \"month\": {\n \"range\": \"year\",\n \"apiFormat\": \"P1M\",\n \"datePipeFormat\": \"MMM y\",\n refreshRate: 30*60*1000 // 30 minutes\n }\n }\n return this.periodRangeMapping;\n };\n\n getPeriodRangeConsumptionConfigurations() {\n\n this.periodRangeMapping = {\n \"minute\": {\n \"range\": \"day\",\n \"apiFormat\": \"PT1M\",\n \"datePipeFormat\": \"dd-MM-yyyy HH:mm\",\n refreshRate: 5*60*1000 // 5 minutes\n },\n \"30minute\": {\n \"range\": \"day\",\n \"apiFormat\": \"PT30M\",\n \"datePipeFormat\": \"dd-MM-yyyy HH:mm\",\n refreshRate: 5*60*1000 // 5 minutes\n },\n \"hour\": {\n \"range\": \"day\",\n \"apiFormat\": \"PT1H\",\n \"datePipeFormat\": \"dd-MM-yyyy HH:mm\",\n refreshRate: 5*60*1000 // 5 minutes\n },\n \"day\": {\n \"range\": \"day\",\n \"apiFormat\": \"PT1H\",\n \"datePipeFormat\": \"dd-MM-yyyy HH:mm\",\n refreshRate: 5*60*1000 // 5 minutes\n },\n \"week\": {\n \"range\": \"week\",\n \"apiFormat\": \"P1D\",\n \"datePipeFormat\": \"EEE dd MMM y\",\n refreshRate: 30*60*1000 // 30 minutes\n },\n \"weekday\": {\n \"range\": \"week\",\n \"apiFormat\": \"P1D\",\n \"datePipeFormat\": \"EEE dd MMM y\",\n refreshRate: 30*60*1000 // 30 minutes\n },\n \"month\": {\n \"range\": \"month\",\n \"apiFormat\": \"P1W\",\n \"datePipeFormat\": \"EEE dd MMM y\",\n refreshRate: 30*60*1000 // 30 minutes\n }\n }\n return this.periodRangeMapping;\n };\n\n getResourceClassifierConfigurations() {\n\n return {\n \"electricity.consumption\": {\n showPT1M: true,\n resourceTypesPriority: ['ea02304a-2820-4ea0-8399-f1d1b430c3a0','bb0b2429-7776-44da-a3b4-f87ce3a47dd0', '7969e3c4-66cf-4568-be29-4913023faa7e']\n },\n \"electricity.consumption.cost\": {\n showPT1M: false\n },\n \"gas.consumption\": {\n showPT1M: false\n },\n \"gas.consumption.cost\": {\n showPT1M: false\n },\n \"temperature\": {\n showPT1M: false\n }\n }\n };\n\n public loadEnergyCostResourceMapping(): tEnergyCostResourceTypeMapping[] {\n\n // const chartColours = [...environment.charts.colour.energy]\n // const [df1, df2, df3, df4, df5, df6] = chartColours\n this.resourceEnergyCostMapping = [\n {\n energy: \"ea02304a-2820-4ea0-8399-f1d1b430c3a0\",\n cost: \"b4158501-a678-484a-837a-874194d3bd48\",\n label: \"smart electicity\",\n count: 0,\n defaultColour: '#CC4528',\n resourceListings: [],\n },\n {\n energy: \"672b8071-44ff-4f23-bca2-f50c6a3ddd02\",\n cost: \"32d9821b-34fd-46d1-9ba1-56259afd4734\",\n label: \"smart gas\",\n defaultColour: \"#154e72\",\n resourceListings: [],\n count: 0\n\n },\n {\n energy: \"bb0b2429-7776-44da-a3b4-f87ce3a47dd0\",\n cost: \"b3c80261-f9d3-4453-a6e7-5fd02e89fc67\",\n label: \"ot total power\",\n defaultColour: '#E77C2B',\n resourceListings: [],\n count: 0\n },\n {\n energy: \"b5791d9a-6f58-4372-bae4-ae79d1cc0712\",\n cost: \"c58b4039-3cdf-425a-873d-f9e82d8c4009\",\n label: \"ot power 1\",\n count: 0,\n defaultColour: '#8bbc21',\n resourceListings: [],\n },\n {\n energy: \"23e9084a-19d4-4849-ab78-bd22753457f5\",\n cost: \"b8a8b8ca-ee59-4fc9-97c1-77dfa6bd9b46\",\n label: \"ot power 2\",\n count: 0,\n defaultColour: '#ffbd33',\n resourceListings: []\n },\n {\n energy: \"9ec2bd19-bfa3-430b-9f08-9550c8cd4bbe\",\n cost: \"177a0707-154b-4666-be59-2a5eff88a160\",\n label: \"ot power 3\",\n count: 0,\n defaultColour: '#9f9f9f',\n resourceListings: []\n }\n ]\n\n return this.resourceEnergyCostMapping;\n };\n\n getVeTypeAdditionalInfoForm(): tVeTypeAdditionalInfo {\n this.veTypeAdditionalInfo = {\n \"retail\": {\n appliances: {\n group: { isInGroup: false, reference: \"appliances\", name: \"Appliances\" },\n categoryInfo: { reference: \"appliances\", name: \"Appliances\"},\n \"categories\": [\n // { displayKey: \"Extractor fans\", reference: \"extractorFans\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] }\n ]\n },\n lighting: {\n \"group\": { isInGroup: false, reference: \"lighting\", name: \"Lighting\" },\n categoryInfo: { reference: \"lighting\", name: \"Lighting\"},\n \"categories\": [\n { displayKey: \"LED spot lights\", reference: \"ledSpotLights\", values: [{ reference: \"capacityPerUnit\", displayKey: \"Capacitiy of bulb in W\", valueType: \"number\" }, { reference: \"numberOfUnits\", displayKey: \"Capacitiy in W per unit\", valueType: \"number\" }] },\n { displayKey: \"Neon stip lights\", reference: \"neonStripLights\", values: [{ reference: \"capacityPerUnit\", displayKey: \"Capacitiy of bulb in W\", valueType: \"number\" }, { reference: \"numberOfUnits\", displayKey: \"Capacitiy in W per unit\", valueType: \"number\" }] },\n { displayKey: \"Other\", reference: \"otherLighting\", values: [{ reference: \"lightingType\", displayKey: \"Lighting Type\", valueType: \"number\" }, { reference: \"capacityPerUnit\", displayKey: \"Capacitiy of bulb in W\", valueType: \"number\" }, { reference: \"numberOfUnits\", displayKey: \"Capacitiy in W per unit\", valueType: \"number\" }] }\n ]\n },\n gasHeating: {\n \"group\": { isInGroup: false, reference: \"heating\", name: \"Heating\" },\n categoryInfo: { reference: \"gasHeating\", name: \"Gas Heating\"},\n \"categories\": [\n { displayKey: \"Wall heaters / radiators\", reference: \"wallHeaterRadiators\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }] }\n ]\n },\n elecHeating: {\n \"group\": { isInGroup: false, reference: \"heating\", name: \"Heating\" },\n categoryInfo: { reference: \"elecHeating\", name: \"Electricity Heating\"},\n \"categories\": [\n { displayKey: \"Wall heaters / radiators\", reference: \"wallHeaterRadiators\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }] },\n { displayKey: \"Fan heaters\", reference: \"fanHeaters\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] }\n ]\n },\n otherHeating: {\n \"group\": { isInGroup: false, reference: \"otherHeating\", name: \"Other\" },\n categoryInfo: { reference: \"otherHeating\", name: \"Heating\"},\n \"categories\": [\n { displayKey: \"Other\", reference: \"otherHeating\", values: [{ reference: \"heatingType\", displayKey: \"Heating Type\", valueType: \"string\" }, { reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" } ] }\n ]\n },\n cooling: {\n \"group\": { isInGroup: false, reference: \"cooling\", name: \"Cooling\" },\n categoryInfo: { reference: \"cooling\", name: \"Cooling\"},\n \"categories\": [\n { displayKey: \"Other\", reference: \"airConditioning\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] }\n ]\n }\n },\n \"hospitality\": {\n appliances: {\n group: { isInGroup: false, reference: \"appliances\", name: \"Appliances\" },\n categoryInfo: { reference: \"appliances\", name: \"Appliances\"},\n \"categories\": [\n { displayKey: \"Extractor fans\", reference: \"extractorFans\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] },\n { displayKey: \"Fridge\", reference: \"fridge\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }, { reference: \"fidgeType\", displayKey: \"Fridge Type\", valueType: \"enum\", values: [\"walk-in\", \"normal\"] }] },\n { displayKey: \"Freezer\", reference: \"freezer\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }, { reference: \"freezerType\", displayKey: \"Freezer Type\", valueType: \"enum\", values: [\"walk-in\", \"normal\"] }] },\n { displayKey: \"Ice Machine\", reference: \"iceMachine\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] },\n { displayKey: \"Dishwasher\", reference: \"dishWasher\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] },\n { displayKey: \"Oven\", reference: \"oven\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }, { reference: \"energyType\", displayKey: \"Energy Type\", valueType: \"text\", values: [\"electricity\", \"gas\", \"coal\", \"pellet\"] }] },\n { displayKey: \"Grill\", reference: \"grill\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }, { reference: \"energyType\", displayKey: \"Energy Type\", valueType: \"text\", values: [\"electricity\", \"gas\", \"coal\", \"pellet\"] }] },\n { displayKey: \"Hobs\", reference: \"hobs\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }, { reference: \"energyType\", displayKey: \"Energy Type\", valueType: \"text\", values: [\"electricity\", \"gas\", \"coal\", \"pellet\"] }] },\n { displayKey: \"Deep Fryer\", reference: \"deepFryer\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }, { reference: \"energyType\", displayKey: \"Energy Type\", valueType: \"text\", values: [\"electricity\", \"gas\"] }] },\n { displayKey: \"Microwave\", reference: \"microwave\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] },\n { displayKey: \"Steamer\", reference: \"steamer\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] },\n ]\n },\n lighting: {\n \"group\": { isInGroup: false, reference: \"lighting\", name: \"Lighting\" },\n categoryInfo: { reference: \"lighting\", name: \"Lighting\"},\n \"categories\": [\n { displayKey: \"LED spot lights\", reference: \"ledSpotLights\", values: [{ reference: \"capacityPerUnit\", displayKey: \"Capacitiy of bulb in W\", valueType: \"number\" }, { reference: \"numberOfUnits\", displayKey: \"Capacitiy in W per unit\", valueType: \"number\" }] },\n { displayKey: \"Neon stip lights\", reference: \"neonStripLights\", values: [{ reference: \"capacityPerUnit\", displayKey: \"Capacitiy of bulb in W\", valueType: \"number\" }, { reference: \"numberOfUnits\", displayKey: \"Capacitiy in W per unit\", valueType: \"number\" }] },\n { displayKey: \"Other\", reference: \"otherLighting\", values: [{ reference: \"lightingType\", displayKey: \"Lighting Type\", valueType: \"number\" }, { reference: \"capacityPerUnit\", displayKey: \"Capacitiy of bulb in W\", valueType: \"number\" }, { reference: \"numberOfUnits\", displayKey: \"Capacitiy in W per unit\", valueType: \"number\" }] }\n ]\n },\n gasHeating: {\n \"group\": { isInGroup: false, reference: \"heating\", name: \"Heating\" },\n categoryInfo: { reference: \"gasHeating\", name: \"Gas Heating\"},\n \"categories\": [\n { displayKey: \"Wall heaters / radiators\", reference: \"wallHeaterRadiators\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }] }\n ]\n },\n elecHeating: {\n \"group\": { isInGroup: false, reference: \"heating\", name: \"Heating\" },\n categoryInfo: { reference: \"elecHeating\", name: \"Electricity Heating\"},\n \"categories\": [\n { displayKey: \"Wall heaters / radiators\", reference: \"wallHeaterRadiators\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }] },\n { displayKey: \"Fan heaters\", reference: \"fanHeaters\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] }\n ]\n },\n otherHeating: {\n \"group\": { isInGroup: false, reference: \"otherHeating\", name: \"Other\" },\n categoryInfo: { reference: \"otherHeating\", name: \"Heating\"},\n \"categories\": [\n { displayKey: \"Other\", reference: \"otherHeating\", values: [{ reference: \"heatingType\", displayKey: \"Heating Type\", valueType: \"string\" }, { reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" } ] }\n ]\n },\n cooling: {\n \"group\": { isInGroup: false, reference: \"cooling\", name: \"Cooling\" },\n categoryInfo: { reference: \"cooling\", name: \"Cooling\"},\n \"categories\": [\n { displayKey: \"Other\", reference: \"airConditioning\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] }\n ]\n }\n },\n \"spaTreatment\": {\n appliances: {\n group: { isInGroup: false, reference: \"appliances\", name: \"Appliances\" },\n categoryInfo: { reference: \"appliances\", name: \"Appliances\"},\n \"categories\": [\n // { displayKey: \"Extractor fans\", reference: \"extractorFans\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] }\n ]\n },\n lighting: {\n \"group\": { isInGroup: false, reference: \"lighting\", name: \"Lighting\" },\n categoryInfo: { reference: \"lighting\", name: \"Lighting\"},\n \"categories\": [\n { displayKey: \"LED spot lights\", reference: \"ledSpotLights\", values: [{ reference: \"capacityPerUnit\", displayKey: \"Capacitiy of bulb in W\", valueType: \"number\" }, { reference: \"numberOfUnits\", displayKey: \"Capacitiy in W per unit\", valueType: \"number\" }] },\n { displayKey: \"Neon stip lights\", reference: \"neonStripLights\", values: [{ reference: \"capacityPerUnit\", displayKey: \"Capacitiy of bulb in W\", valueType: \"number\" }, { reference: \"numberOfUnits\", displayKey: \"Capacitiy in W per unit\", valueType: \"number\" }] },\n { displayKey: \"Other\", reference: \"otherLighting\", values: [{ reference: \"lightingType\", displayKey: \"Lighting Type\", valueType: \"number\" }, { reference: \"capacityPerUnit\", displayKey: \"Capacitiy of bulb in W\", valueType: \"number\" }, { reference: \"numberOfUnits\", displayKey: \"Capacitiy in W per unit\", valueType: \"number\" }] }\n ]\n },\n gasHeating: {\n \"group\": { isInGroup: false, reference: \"heating\", name: \"Heating\" },\n categoryInfo: { reference: \"gasHeating\", name: \"Gas Heating\"},\n \"categories\": [\n { displayKey: \"Wall heaters / radiators\", reference: \"wallHeaterRadiators\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }] }\n ]\n },\n elecHeating: {\n \"group\": { isInGroup: false, reference: \"heating\", name: \"Heating\" },\n categoryInfo: { reference: \"elecHeating\", name: \"Electricity Heating\"},\n \"categories\": [\n { displayKey: \"Wall heaters / radiators\", reference: \"wallHeaterRadiators\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }] },\n { displayKey: \"Fan heaters\", reference: \"fanHeaters\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] }\n ]\n },\n otherHeating: {\n \"group\": { isInGroup: false, reference: \"otherHeating\", name: \"Other\" },\n categoryInfo: { reference: \"otherHeating\", name: \"Heating\"},\n \"categories\": [\n { displayKey: \"Other\", reference: \"otherHeating\", values: [{ reference: \"heatingType\", displayKey: \"Heating Type\", valueType: \"string\" }, { reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" } ] }\n ]\n },\n cooling: {\n \"group\": { isInGroup: false, reference: \"cooling\", name: \"Cooling\" },\n categoryInfo: { reference: \"cooling\", name: \"Cooling\"},\n \"categories\": [\n { displayKey: \"Other\", reference: \"airConditioning\", values: [{ reference: \"capacity\", displayKey: \"Capacitiy in W\", valueType: \"number\" }, { reference: \"energyRating\", displayKey: \"Energy Rating\", valueType: \"text\" }] }\n ]\n }\n }\n }\n return this.veTypeAdditionalInfo\n }\n\n public loadDataStreamTypeIcons(): tDataStreamIconMapping {\n this.dataStreamIconsMapping = {\n \n electricity: {\n classifiers: ['electricity.consumption', 'electricity.consumption.cost'],\n icon: 'lightbulb'\n },\n gas: {\n classifiers: ['gas.consumption', 'gas.consumption.cost'],\n icon: 'flame'\n },\n temperature: {\n classifiers: [\"temperature\"],\n icon: 'thermometer'\n },\n relativeHumidity: {\n classifiers: [\"relative_humidity\"],\n icon: 'cloud'\n },\n generation: {\n classifiers: [\"electricity.generation\"],\n icon: 'sun'\n },\n diversion: {\n classifiers: [\"electricity.diversion\"],\n icon: \"battery\"\n },\n import: {\n classifiers: [\"electricity.import\"],\n icon: 'rewind'\n },\n export: {\n classifiers: [\"electricity.export\"],\n icon: 'fast-foward'\n },\n illuminance: {\n classifiers: [\"illuminance\"],\n icon: 'eye'\n },\n \n }\n return this.dataStreamIconsMapping;\n };\n\n setResourceAvailability(selectedVE: tVE): tResourceAvailability {\n this.resourceTypeMappings = this.resourceTypeConfiguration.loadResourceTypeMappings();\n\n var resourceAvailability = {\n type: {\n electricity: {\n type: \"electricity\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n consumption: {\n type: \"consumption\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n gas: {\n type: \"electricity\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n generation: {\n type: \"generation\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n diversion: {\n type: \"diversion\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n import: {\n type: \"import\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n export: {\n type: \"export\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n temperature: {\n type: \"temperature\",\n availability: false,\n function: 'avg',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n relativeHumidity: {\n type: \"relativeHumidity\",\n availability: false,\n function: 'avg',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n daylight: {\n type: \"daylight\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n }\n },\n dimension: {\n energy: {\n type: \"energy\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n },\n cost: {\n type: \"cost\",\n availability: false,\n function: 'sum',\n resourceListings: [],\n resourceIds: [],\n resourceTypeIds: []\n }\n }\n }\n\n for (let dataStreamType in resourceAvailability.type) {\n // Step 1. Get all neccessary resource info\n // console.log(dataStreamType)\n\n for (let i = 0; i < selectedVE.resources.length; i++) {\n // // console.log(resourceAvailability.type.hasOwnProperty(dataStreamType))\n if (resourceAvailability.type.hasOwnProperty(dataStreamType)) {\n // // console.log(selectedVE.resources[i].resourceTypeId, dataStreamType )\n if (this.resourceTypeMappings.dataStreamType[dataStreamType].indexOf(selectedVE.resources[i].resourceTypeId) > -1) {\n resourceAvailability.type[dataStreamType].availability = true;\n resourceAvailability.type[dataStreamType].resourceIds.push(selectedVE.resources[i].resourceId);\n resourceAvailability.type[dataStreamType].resourceTypeIds.push(selectedVE.resources[i].resourceTypeId);\n }\n }\n\n }\n\n\n }\n for (let dataStreamType in resourceAvailability.dimension) {\n // Step 1. Get all neccessary resource info\n // // console.log(dataStreamType)\n for (let i = 0; i < selectedVE.resources.length; i++) {\n if (resourceAvailability.dimension.hasOwnProperty(dataStreamType)) {\n if (this.resourceTypeMappings.dimension[dataStreamType].indexOf(selectedVE.resources[i].resourceTypeId) > -1) {\n resourceAvailability.dimension[dataStreamType].availability = true;\n resourceAvailability.dimension[dataStreamType].resourceIds.push(selectedVE.resources[i].resourceId);\n resourceAvailability.dimension[dataStreamType].resourceTypeIds.push(selectedVE.resources[i].resourceTypeId);\n resourceAvailability.dimension[dataStreamType].resourceListings.push(selectedVE.resources[i]);\n\n }\n }\n }\n }\n return resourceAvailability;\n\n }\n\n setResourceEnergyCostGroups(resourceAvailability: tResourceAvailability): tEnergyCostResourceTypeMapping[] {\n // console.log(resourceAvailability)\n if (resourceAvailability) {\n var energyResourceListings = resourceAvailability.dimension.energy.resourceListings;\n var costsResourceListings = resourceAvailability.dimension.cost.resourceListings;\n\n this.resourceEnergyCostMapping = this.loadEnergyCostResourceMapping();\n\n //add energy resource listsing to groups\n for (let i = 0; i < energyResourceListings.length; i++) {\n var resourceTypeId = energyResourceListings[i].resourceTypeId;\n\n for (let j = 0; j < this.resourceEnergyCostMapping.length; j++) {\n\n var resourceGroupElem = this.resourceEnergyCostMapping[j];\n if (resourceTypeId === resourceGroupElem.energy) {\n\n this.resourceEnergyCostMapping[j].resourceListings.push(JSON.parse(JSON.stringify(energyResourceListings[i])));\n break;\n }\n\n }\n }\n //add cost resource listsing to groups\n\n for (let i = 0; i < costsResourceListings.length; i++) {\n var resourceTypeId = costsResourceListings[i].resourceTypeId;\n\n for (let j = 0; j < this.resourceEnergyCostMapping.length; j++) {\n if (resourceTypeId === this.resourceEnergyCostMapping[j].cost) {\n this.resourceEnergyCostMapping[j].resourceListings.push(costsResourceListings[i]);\n break;\n }\n\n }\n }\n }\n\n\n return this.resourceEnergyCostMapping;\n }\n\n getBusinessCasePlanTypeInfo(): tBusinessCaseTypeMapping[] {\n // this return an object that informs how the form should react and also provides some placeholder data (i.e. breakeven)\n\n this.businessCasePlanTypes = [\n {\n type: \"LightingUpgrade\",\n name: \"Lighting Upgrade\",\n formOptions: {\n existingUnitType: {\n active: true,\n options: [\"Halogen bulbs 100W\", \"Halogen bulbs 50W\"]\n },\n newUnitType: {\n active: true,\n options: [\"LED bulbs 10W\", \"LED bulbs 5W\"]\n }\n },\n breakeven: 450, //15 months,\n outcome: {\n yAxisTitle: \"Consumption [£]\"\n },\n text: \"Starting on '{{businessCase.startDate | date: 'EEEE dd MMMM y'}}', the works will approximately last '{{businessCase.duration}}' days at the location '{{businessCase.virtualEntity.name}}', focusing on '{{indexedBusinessCasePlanTypes[businessCase.businessCaseType].name}}'. The plan involves changing '{{businessCase.unitNumber}}' units of '{{businessCase.existingUnitType}}' to '{{businessCase.newUnitType}}' due to '{{businessCase.projectRationale}}', with a hypothesis of '{{businessCase.projectHypothesis}}' at a cost of '{{businessCase.projectCost | currency:'GBP':'symbol'}}'.\",\n comparisonText: {\n units: \"Replacing '{{unitNumber}}' units of '{{existingUnitType}}' to '{{newUnitType}}'\"\n }\n },\n {\n type: \"SolarPVInstallation\",\n name: \"Solar PV Installation\",\n formOptions: {\n existingUnitType: {\n active: false,\n options: []\n },\n newUnitType: {\n active: true,\n options: [\"Monocrystalline PV panels\", \"Polycrystalline PV panels\", \"Thin-Film Solar Panels\"]\n }\n },\n breakeven: 3650, //10 years \n outcome: {\n yAxisTitle: \"Generation [£]\"\n },\n text: \"Starting on '{{businessCase.startDate | date: 'EEEE dd MMMM y'}}', the works will approximately last '{{businessCase.duration}}' days at the location '{{businessCase.virtualEntity.name}}', focusing on '{{indexedBusinessCasePlanTypes[businessCase.businessCaseType].name}}'. The plan involves installing '{{businessCase.unitNumber}}' kWh of '{{businessCase.newUnitType}}' due to '{{businessCase.projectRationale}}', with a hypothesis of '{{businessCase.projectHypothesis}}' at a cost of '{{businessCase.projectCost | currency:'GBP':'symbol'}}'.\",\n comparisonText: {\n units: \"Installing '{{unitNumber}}' kWh of '{{newUnitType}}'\"\n }\n },\n // {å\n // type: \"SolarThermalHeating\",\n // name: \"Solar Thermal Heating\",\n // formOptions: {\n // existingUnitType:{\n // active: false,\n // options: []\n // },\n // newUnitType: {\n // active: true,\n // options: [\"Evacuated Tube\", \"Flat Plate\", \"Batch\"]\n // }\n // },\n // breakeven: 1825 //5 years \n // }\n ];\n\n return this.businessCasePlanTypes;\n };\n\n};\n\n\n\n\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { tResourceReadings, tResourceInstantReadings, tResourceSummaryReadings, tResourceMeterReading, tResource, tResourceListing, tResourceLastTime } from './glow.typings';\nimport { ErrorMessageParser } from './error-handler.service';\nimport { GlowService } from './glow.service';\nimport { tResourceTypeMapping, tResourceTypeRestrictionConfig } from './configuration.typings';\nimport { ResourceTypeConfigService } from './configuration.service';\nimport { tResourceError, tVeCumulativeValues, tTariffPlan, tVeCumulativeValuesWithEstimationFlag, tResourceAvailabilityElement } from '../components/component.typings';\nimport { DateFormatService } from './date-format.service';\n\n@Injectable()\nexport class ResourceDataService {\n\n serviceId: string = \"ResourceDataService\"\n\n // Observable string sources\n private ReadingsAnnouncer = new Subject();\n private CumulativeReadingsAnnouncer = new Subject();\n private CumulativeReadingsWithEstimationFlagAnnouncer = new Subject();\n private OffsetCumulativeReadingsWithEstimationFlagAnnouncer = new Subject();\n private SummaryReadingsAnnouncer = new Subject();\n private TariffAnnouncer = new Subject();\n private InstantReadingsAnnouncer = new Subject();\n private LastTimeAnnouncer = new Subject();\n private LastTimeErrorAnnouncer = new Subject();\n private InstantReadingsErrorAnnouncer = new Subject();\n private MeterReadingsAnnouncer = new Subject();\n private MeterReadingsErrorAnnouncer = new Subject();\n\n // Observable string streams\n readings$ = this.ReadingsAnnouncer.asObservable();\n instantReadings$ = this.InstantReadingsAnnouncer.asObservable();\n instantReadingsError$ = this.InstantReadingsErrorAnnouncer.asObservable();\n lastTime$ = this.LastTimeAnnouncer.asObservable();\n lastTimeError$ = this.LastTimeErrorAnnouncer.asObservable();\n meterReadings$ = this.MeterReadingsAnnouncer.asObservable();\n meterReadingsError$ = this.MeterReadingsErrorAnnouncer.asObservable();\n\n summaryReadings$ = this.SummaryReadingsAnnouncer.asObservable();\n cumulativeReadings$ = this.CumulativeReadingsAnnouncer.asObservable();\n cumulativeReadingsWithEstimationFlag$ = this.CumulativeReadingsWithEstimationFlagAnnouncer.asObservable();\n offsetCumulativeReadingsWithEstimationFlag$ = this.OffsetCumulativeReadingsWithEstimationFlagAnnouncer.asObservable();\n tariff$ = this.TariffAnnouncer.asObservable();\n\n resourceTypeMapping: tResourceTypeMapping\n resourceTypeRestrictionConfig: tResourceTypeRestrictionConfig\n constructor(\n private dateFormatService: DateFormatService,\n private errorMessageParser: ErrorMessageParser,\n private glowService: GlowService,\n private resourceTypeConfigService: ResourceTypeConfigService) {\n this.resourceTypeMapping = this.resourceTypeConfigService.loadResourceTypeMappings()\n this.resourceTypeRestrictionConfig = this.resourceTypeConfigService.loadResourceTypeRestrictionConfig()\n\n }\n\n announceReadings(readings: tResourceReadings) {\n this.ReadingsAnnouncer.next(readings);\n }\n announceInstantReadings(instantReadingsRaw: tResourceInstantReadings) {\n this.InstantReadingsAnnouncer.next(instantReadingsRaw);\n }\n announceInstantReadingsError(instantReadingsError: tResourceError) {\n this.InstantReadingsErrorAnnouncer.next(instantReadingsError);\n }\n announceLastTime(lastTime: tResourceLastTime) {\n this.LastTimeAnnouncer.next(lastTime);\n }\n announceLastTimeError(error: tResourceError) {\n this.LastTimeErrorAnnouncer.next(error);\n }\n announceMeterRead(meterRead: tResourceMeterReading) {\n this.MeterReadingsAnnouncer.next(meterRead);\n }\n announceMeterReadError(resourceDataError: tResourceError) {\n this.MeterReadingsErrorAnnouncer.next(resourceDataError);\n }\n announceCumulativeReadings(cumulativeReadings: tVeCumulativeValues) {\n this.CumulativeReadingsAnnouncer.next(cumulativeReadings);\n }\n announceCumulativeReadingsWithEstimationFlag(cumulativeReadings: tVeCumulativeValuesWithEstimationFlag) {\n this.CumulativeReadingsWithEstimationFlagAnnouncer.next(cumulativeReadings);\n }\n\n announceOffsetCumulativeReadingsWithEstimationFlag(cumulativeReadings: tVeCumulativeValuesWithEstimationFlag) {\n this.OffsetCumulativeReadingsWithEstimationFlagAnnouncer.next(cumulativeReadings);\n }\n announceTariff(tariffData: tTariffPlan) {\n this.TariffAnnouncer.next(tariffData);\n }\n announceSummaryReadings(summaryReadings: tResourceSummaryReadings) {\n this.SummaryReadingsAnnouncer.next(summaryReadings);\n }\n\n getInstanteneousReadings(resourceId: string) {\n this.glowService.getResourceCurrentReading(resourceId)\n .subscribe(instantReadings => {\n if (instantReadings) {\n if (instantReadings.data) {\n if (Array.isArray(instantReadings.data)) {\n this.announceInstantReadings(instantReadings);\n } else {\n console.warn(\"Instant Readings are not in array\")\n }\n } else {\n // console.log(\"no data attached to instant readings\")\n }\n } else {\n // console.log(\"Instant readings are null\")\n }\n\n }, (error: any) => {\n console.warn(error);\n let errorMsg = this.errorMessageParser.getErrorMessage(error)\n console.warn(errorMsg);\n\n let errorResource = {\n error: errorMsg,\n resourceId\n }\n this.announceInstantReadingsError(errorResource)\n });\n }\n\n // async inferLatestAvailableReading(resourceListing: tResourceListing) {\n // const to = this.dateFormatService.apiTimeToFormat(new Date())\n // const from = this.dateFormatService.apiTimeFromFormat(this.dateFormatService.slideInTime('past', 'month', new Date()))\n // let period: string = 'PT1H';\n\n // if (this.resourceTypeRestrictionConfig[resourceListing.resourceTypeId]) {\n // const minimumPeriod: string = this.resourceTypeRestrictionConfig[resourceListing.resourceTypeId].minimumAggPeriod || \"\"\n // if (minimumPeriod != 'PT1H' && minimumPeriod !== 'PT30M' && minimumPeriod !== \"PT1M\") {\n // period = minimumPeriod\n // }\n // try {\n // const resourceReadings$ = this.glowService.getResourceReadings(resourceListing.resourceId, from, to, period)\n // const readings = await resourceReadings$.toPromise();\n // let firstReading;\n // if (readings && Array.isArray(readings.data) && readings.data.length > 0) {\n // firstReading = readings.data.reduce((acc, reading) => {\n // if (reading && reading[1]) acc = [reading[0] / 1000, reading[1]]\n // return acc\n // }, null);\n // }\n // // console.log(\"inferLatestAvailableReading\")\n // if (firstReading) {\n // this.announceInstantReadings({ ...readings, data: [firstReading] })\n // } else {\n // console.warn(`inferLatestAvailableReading no data`)\n // let errorResource = {\n // error: 'No data found',\n // resourceId: resourceListing.resourceId\n // }\n // this.announceInstantReadingsError(errorResource)\n // }\n // } catch (error: any) {\n // console.warn(error)\n // let errorResource = {\n // error: 'Unable to receive status information.',\n // resourceId: resourceListing.resourceId\n // }\n // this.announceInstantReadingsError(errorResource)\n // }\n // }\n // }\n\n getLastReadingTs(resourceListing: tResourceListing) {\n\n this.glowService.getResourceLastTime(resourceListing.resourceId).toPromise()\n .then(readings => {\n\n if (readings) {\n this.announceLastTime(readings)\n } else {\n console.warn(`getLastReadingTs no data`)\n let errorResource = {\n error: 'No data found',\n resourceId: resourceListing.resourceId\n }\n this.announceLastTimeError(errorResource)\n }\n })\n .catch(error => {\n console.warn(error)\n let errorResource = {\n error: 'Unable to receive status information.',\n resourceId: resourceListing.resourceId\n }\n this.announceLastTimeError(errorResource)\n })\n\n }\n // async getCurrentReadingsPromise(resourceId: string): Promise {\n\n // let error: any;\n // let resourceCurrentReadings: tResourceInstantReadings;\n // const resourceCurrentReadings$ = this.glowService.getResourceCurrentReading(resourceId)\n // try {\n // resourceCurrentReadings = await resourceCurrentReadings$.toPromise();\n // } catch (e: any) {\n // error = e\n // }\n\n // return new Promise((resolve, reject) => {\n\n // if (resourceCurrentReadings && resourceCurrentReadings.resourceId) {\n // resolve(resourceCurrentReadings)\n // } else {\n // console.warn(this.serviceId + \" resource data returned in unexpected format\")\n // console.warn(error)\n // error = {\n // resourceId: resourceId,\n // hasError: true,\n // error: (error.error) ? error.error : 'ERROR'\n // }\n // resourceCurrentReadings = { ...resourceCurrentReadings, ...error }\n // resolve(resourceCurrentReadings)\n\n // }\n // });\n // }\n\n async getLastMeterReadingsPromise(resourceId: string): Promise {\n let error;\n let meterReading;\n try {\n meterReading = await this.glowService.getResourceMeterReading(resourceId).toPromise()\n } catch (e) {\n console.warn(error)\n }\n // console.log(\"getLastMeterReadingsPromise\")\n // console.log(meterReading)\n\n return meterReading\n }\n\n setTariffElement({ classifier = null, resourceId = null, rate = null, structure = null, standing = null, futureRates = null, type = null, hasError = false, errorString = null }: any): tTariffPlan {\n return { classifier, resourceId, rate, standing, hasError, errorString, futureRates, type, structure }\n }\n\n\n getResourceTariffs(resourceInfo: tResourceAvailabilityElement): void {\n this.getResourceTariffsPromise(resourceInfo)\n\n // if (resourceInfo && resourceInfo.resourceId) {\n // let tariffInfo: tTariffPlan = this.setTariffElement({ ...resourceInfo })\n // this.glowService.getResourceTariff(resourceInfo.resourceId)\n // .subscribe(resourceTariff => {\n // if (resourceTariff.data && resourceTariff.data.length > 0) {\n // const [ tariffElem ] = resourceTariff.data\n // if (tariffElem.currentRates) {\n // tariffInfo.rate = tariffElem.currentRates.rate;\n // tariffInfo.standing = tariffElem.currentRates.standingCharge;\n // } \n // tariffInfo.type = tariffElem.type;\n // tariffInfo.futureRates = tariffElem.futureRates;\n // // console.log(tariffInfo)\n\n // } else {\n // tariffInfo = { ...tariffInfo, hasError: true, errorString: 'TARIFF_NOT_FOUND' }\n // }\n\n // this.announceTariff(tariffInfo);\n\n // }, (error: any) => {\n // console.warn('Tariff loading error is : ' + error);\n // tariffInfo = { ...tariffInfo, hasError: true, errorString: 'TARIFF_ERROR' }\n // // console.log(error);\n // });\n // }\n }\n\n async getResourceTariffsPromise(resourceInfo: tResourceAvailabilityElement): Promise {\n\n if (!(resourceInfo && resourceInfo.resourceId)) {\n console.warn(`No resource info found`)\n throw new Error(\"Bad Input\")\n }\n let tariffInfo: tTariffPlan = this.setTariffElement({ ...resourceInfo })\n\n try {\n\n this.glowService.getResourceTariff(resourceInfo.resourceId).subscribe(resourceTariff => {\n\n if (resourceTariff.data && resourceTariff.data.length > 0) {\n const [tariffElem] = resourceTariff.data\n if (tariffElem.currentRates) {\n tariffInfo.rate = tariffElem.currentRates.rate;\n tariffInfo.standing = tariffElem.currentRates.standingCharge;\n }\n tariffInfo.type = tariffElem.type;\n tariffInfo.structure = tariffElem.structure;\n tariffInfo.futureRates = tariffElem.futureRates;\n\n } else {\n tariffInfo = { ...tariffInfo, hasError: true, errorString: 'TARIFF_NOT_FOUND' }\n }\n\n this.announceTariff(tariffInfo);\n\n })\n\n } catch (e) {\n console.warn('Tariff loading error is : ' + e);\n tariffInfo = { ...tariffInfo, hasError: true, errorString: 'TARIFF_ERROR' }\n // console.log(e);\n }\n return tariffInfo\n\n }\n\n getResourceMeterRead(resource: tResource): void {\n if (resource && resource.resourceId) {\n let errorDataRetrieval\n this.glowService.getResourceMeterReading(resource.resourceId)\n .subscribe((meterRead) => {\n if (meterRead.data && meterRead.data.length > 0) {\n this.announceMeterRead(meterRead);\n } else {\n errorDataRetrieval = {\n resourceId: resource.resourceId,\n hasError: true,\n error: 'DATA_NOT_FOUND'\n }\n this.announceMeterReadError(errorDataRetrieval)\n }\n }, (errorMsg) => {\n\n let errorDataRetrieval = {\n resourceId: resource.resourceId,\n hasError: true,\n error: 'ERROR'\n }\n this.announceMeterReadError(errorDataRetrieval)\n console.warn('Meter Read loading error is : ');\n // console.log(errorMsg);\n });\n }\n }\n\n async getResourceMeterReadPromise(resource: tResource): Promise {\n\n if (resource && resource.resourceId) {\n let errorDataRetrieval;\n let meterRead;\n\n const resourceMeterReading$ = this.glowService.getResourceMeterReading(resource.resourceId)\n try {\n meterRead = await resourceMeterReading$.toPromise();\n console.warn('Meter Read loading error is : ');\n\n } catch (e) {\n console.warn(e);\n errorDataRetrieval = {\n resourceId: resource.resourceId,\n hasError: true,\n error: 'ERROR'\n }\n }\n\n if (meterRead && meterRead.data && meterRead.data.length > 0) {\n return meterRead;\n } else {\n if (!errorDataRetrieval) {\n errorDataRetrieval = {\n resourceId: resource.resourceId,\n hasError: true,\n error: 'DATA_NOT_FOUND'\n }\n }\n\n return errorDataRetrieval;\n\n }\n }\n }\n /**\n * July 2018: Get Resource Readings defaults to the sum function.\n * For some reasourceTypes this is not correct. If we need any other function, this method is responsible for setting it.\n * \n */\n public getFunctionTypeByResourceType(resourceTypeId: string) {\n let functionType = 'sum';\n // // console.log(this.resourceTypeMapping)\n if (this.resourceTypeMapping['dataStreamType'][\"temperature\"] && this.resourceTypeMapping['dataStreamType'][\"temperature\"].indexOf(resourceTypeId) > -1) {\n functionType = 'avg';\n } else if (this.resourceTypeMapping['dataStreamType'][\"illuminance\"] && this.resourceTypeMapping['dataStreamType'][\"illuminance\"].indexOf(resourceTypeId) > -1) {\n functionType = 'avg';\n }\n return functionType;\n }\n\n async getResourceReadings(resourceId: string, fromDate: string, toDate: string, period: string, funct: string = 'sum', getFromHttp = false, dimension = null): Promise {\n let error: any;\n\n const resourceReadings$ = this.glowService.getResourceReadings(resourceId, fromDate, toDate, period, funct, getFromHttp, dimension)\n let resourceReadings = await resourceReadings$.toPromise();\n\n return new Promise((resolve, reject) => {\n\n if (resourceReadings && resourceReadings.resourceId) {\n resolve(resourceReadings)\n\n } else {\n console.warn(this.serviceId + \" resource data returned in unexpected format\")\n console.warn(error)\n error = {\n resourceId: resourceId,\n hasError: true,\n error: (error.error) ? error.error : 'ERROR'\n }\n resourceReadings = { ...resourceReadings, ...error }\n resolve(resourceReadings)\n\n }\n\n });\n }\n}\n\n\n\n\n\n","/**\n * Service responsible for dealing with date formats\n */\n\nimport { Injectable } from '@angular/core';\nimport * as d3TimeFormat from 'd3-time-format';\n\n@Injectable()\nexport class DateFormatService {\n\n public apiDMYFormat(dateToFormat): string {\n var apiTimeFormatD3 = d3TimeFormat.timeFormat(\"%d/%m/%Y\")\n return apiTimeFormatD3(dateToFormat)\n }\n\n public apiYMDFormat(dateToFormat): string {\n var apiTimeFormatD3 = d3TimeFormat.timeFormat(\"%Y-%m-%d\")\n return apiTimeFormatD3(dateToFormat)\n }\n\n public apiTimeFormat(dateToFormat): string {\n const apiTimeFormatD3 = d3TimeFormat.timeFormat('%Y-%m-%dT%H:%M:%S');\n return apiTimeFormatD3(dateToFormat);\n }\n\n public apiTimeFromFormat(dateToFormat, fromTime = '00:00:00'): string {\n const apiTimeFromFormatD3 = d3TimeFormat.timeFormat('%Y-%m-%dT' + fromTime);\n return apiTimeFromFormatD3(dateToFormat);\n }\n\n public apiTimeToFormat(dateToFormat, toTime = '23:59:59'): string {\n const apiTimeToFormatD3 = d3TimeFormat.timeFormat('%Y-%m-%dT' + toTime);\n return apiTimeToFormatD3(dateToFormat);\n }\n\n public getPreviousDate(dateToFormat, numberOfDaysToSlideInPast, fromTime = '00:00:00'): string {\n // step 1 find weekday 0 os sunday\n // if given date is sunday we need to roll over one week further back\n let slider = numberOfDaysToSlideInPast\n const dayInPast = new Date(dateToFormat.getFullYear(), dateToFormat.getMonth(), dateToFormat.getDate() - slider, 0, 0, 0);\n return this.apiTimeFromFormat(dayInPast, fromTime);\n }\n\n public getStartOfWeek(dateToFormat): string {\n // step 1 find weekday 0 os sunday\n // if given date is sunday we need to roll over one week further back\n let slider;\n if (dateToFormat.getDay() === 0) {\n slider = - 7 + 1;\n } else {\n slider = - dateToFormat.getDay() + 1;\n }\n const startOfWeek = new Date(dateToFormat.getFullYear(), dateToFormat.getMonth(), dateToFormat.getDate() + slider, 0, 0, 0);\n return this.apiTimeFromFormat(startOfWeek);\n }\n\n public getEndOfWeek(dateToFormat): string {\n // step 1 find weekday 0 os sunday\n // +6 if we want week to end on staturday 23:59:59\n let slider;\n if (dateToFormat.getDay() === 0) {\n slider = 0;\n } else {\n slider = 7 - dateToFormat.getDay(); // +1 because start of week should be Monday\n }\n const endOfWeek = new Date(dateToFormat.getFullYear(), dateToFormat.getMonth(), dateToFormat.getDate() + slider, 23, 59, 59);\n\n return this.apiTimeToFormat(endOfWeek);\n }\n\n public getStartOfLastSevenDays(dateToFormat): string {\n const today = new Date();\n const startOflastSevenDays = new Date(dateToFormat.getFullYear(), dateToFormat.getMonth(), dateToFormat.getDate() - 7, 0, 0, 0);\n return this.apiTimeFromFormat(startOflastSevenDays);\n }\n\n public getEndOfLastSevenDays(dateToFormat): string {\n // step 1 find weekday 0 os sunday\n // +6 if we want week to end on staturday 23:59:59\n const today = new Date();\n const endOflastSevenDays = new Date(dateToFormat.getFullYear(), dateToFormat.getMonth(), dateToFormat.getDate() - 1, 0, 0, 0);\n\n return this.apiTimeToFormat(endOflastSevenDays);\n }\n\n public getStartOfMonth(dateToFormat): string {\n const startOfMonth = new Date(dateToFormat.getFullYear(), dateToFormat.getMonth(), 1, 0, 0, 0);\n const getStartOfMonth = d3TimeFormat.timeFormat('%Y-%m-01T00:00:00');\n return getStartOfMonth(startOfMonth);\n }\n\n public getEndOfMonth(dateToFormat): string {\n let lastMonthDay;\n const findMonth = d3TimeFormat.timeFormat('%m');\n const month = findMonth(dateToFormat);\n if (['01', '03', '05', '07', '08', '10', '12'].indexOf(month) > -1) {\n lastMonthDay = 31;\n } else if (['04', '06', '09', '11'].indexOf(month) > -1) {\n lastMonthDay = 30;\n } else {\n const findYear = d3TimeFormat.timeFormat('%Y');\n const year = findYear(dateToFormat);\n if (year % 4 === 0) {\n lastMonthDay = 29;\n } else {\n lastMonthDay = 28;\n }\n }\n const lastMonthDate = new Date(dateToFormat.getFullYear(), dateToFormat.getMonth(), lastMonthDay, 0, 0, 0);\n const getEndOfMonth = d3TimeFormat.timeFormat('%Y-%m-' + lastMonthDay + 'T23:59:59');\n return getEndOfMonth(lastMonthDate);\n }\n\n // This function moves the start of the month to the start of the first week of the month. It is important for weekly aggregation graphs\n public getStartOfMonthByFullWeek(dateToFormat): string {\n const startOfMonth = new Date(dateToFormat.getFullYear(), dateToFormat.getMonth(), 1, 0, 0, 0);\n\n // if the first of the month is not a Monday we need to find the closest preceding Monday.\n if (startOfMonth.getDate() === 1) {\n return this.getStartOfWeek(startOfMonth);\n } else {\n const getStartOfMonth = d3TimeFormat.timeFormat('%Y-%m-01T00:00:00');\n return getStartOfMonth(startOfMonth);\n }\n }\n\n // This function moves the end of the month to the end of the last week of the month. It is important for weekly aggregation graphs\n public getEndOfMonthByFullWeek(dateToFormat): string {\n let lastMonthDay;\n const findMonth = d3TimeFormat.timeFormat('%m');\n const month = findMonth(dateToFormat);\n if (['01', '03', '05', '07', '08', '10', '12'].indexOf(month) > -1) {\n lastMonthDay = 31;\n } else if (['04', '06', '09', '11'].indexOf(month) > -1) {\n lastMonthDay = 30;\n } else {\n const findYear = d3TimeFormat.timeFormat('%Y');\n const year = findYear(dateToFormat);\n if (year % 4 === 0) {\n lastMonthDay = 29;\n } else {\n lastMonthDay = 28;\n }\n }\n const lastMonthDate = new Date(dateToFormat.getFullYear(), dateToFormat.getMonth(), lastMonthDay, 0, 0, 0);\n if (lastMonthDate.getDate() !== 0) {\n return this.getEndOfWeek(lastMonthDate);\n } else {\n const getEndOfMonth = d3TimeFormat.timeFormat('%Y-%m-' + lastMonthDay + 'T23:59:59');\n return getEndOfMonth(lastMonthDate);\n }\n }\n\n public getStartOfYear(dateToFormat): string {\n const getStartOfYear = d3TimeFormat.timeFormat('%Y-01-01T00:00:00');\n return getStartOfYear(dateToFormat);\n }\n\n public getEndOfYear(dateToFormat): string {\n const getEndOfYear = d3TimeFormat.timeFormat('%Y-12-31T23:59:59');\n return getEndOfYear(dateToFormat);\n }\n\n public fullDateFormat(dateToFormat): string {\n const timestampFormatD3 = d3TimeFormat.timeFormat('%A %d %B %Y at %H:%M:%S');\n return timestampFormatD3(dateToFormat);\n }\n\n public fullDateFormatNoSeconds(dateToFormat): string {\n const timestampFormatD3 = d3TimeFormat.timeFormat('%A %d %B %Y at %H:%M');\n return timestampFormatD3(dateToFormat);\n }\n public fullDateFormatNoMinutesNoSeconds(dateToFormat){\n const timestampFormatD3 = d3TimeFormat.timeFormat('%A %d %B %Y at %H');\n return timestampFormatD3(dateToFormat);\n\n }\n public getHourFormat(dateToFormat): string {\n const getHourFormatD3 = d3TimeFormat.timeFormat('%H:%M');\n return getHourFormatD3(dateToFormat);\n }\n\n public getYearMonthDay(dateToFormat): string {\n const getYearMonthDayD3 = d3TimeFormat.timeFormat('%Y-%m-%d');\n return getYearMonthDayD3(dateToFormat);\n }\n\n public getWeekDay(wd: number, stringFormat = \"SHORT\"): string {\n const weekdays = [{ \"SHORT\": \"Sun\", \"LONG\": \"Sunday\" }, { \"SHORT\": \"Mon\", \"LONG\": \"Monday\" }, { \"SHORT\": \"Tue\", \"LONG\": \"Tuesday\" }, { \"SHORT\": \"Wed\", \"LONG\": \"Wednesday\" }, { \"SHORT\": \"Thu\", \"LONG\": \"Thursday\" }, { \"SHORT\": \"Fri\", \"LONG\": \"Friday\" }, { \"SHORT\": \"Sat\", \"LONG\": \"Saturday\" }]\n let weekdayStr\n if (wd <= weekdays.length - 1) {\n weekdayStr = weekdays[wd][stringFormat]\n }\n return weekdayStr\n }\n\n public goToWeekday(currentDay, requiredWeekdayId): Date {\n let slider: number;\n let currentWeekdayId = currentDay.getDay()\n\n // Step 1. Define slider\n\n if (requiredWeekdayId == currentWeekdayId) {\n slider = 0;\n } else if (requiredWeekdayId < currentWeekdayId) {\n slider = - (currentWeekdayId - requiredWeekdayId);\n } else {\n slider = (- currentWeekdayId - 7 + requiredWeekdayId);\n }\n // Step 2. Calculate date displayed depending on slider\n return new Date(currentDay.getFullYear(), currentDay.getMonth(), currentDay.getDate() + slider, 0, 0, 0);\n };\n\n\n public getDateTextLabelMonth(dateDisplayed): string {\n const displayFormatD3 = d3TimeFormat.timeFormat(\"%B %Y\")\n return displayFormatD3(dateDisplayed);\n }\n\n public getDateTextLabelYear(dateDisplayed): string {\n const displayFormatD3 = d3TimeFormat.timeFormat(\"%Y\")\n return displayFormatD3(dateDisplayed);\n }\n\n public slideInTime(timeDirection, range, dateDisplayed): Date {\n let slider: number;\n // Step 1. Define slider\n if (timeDirection === 'past') {\n slider = -1;\n } else {\n slider = 1;\n }\n // Step 2. Calculate date displayed depending on slider and time direction\n if (range === 'day') {\n dateDisplayed = new Date(dateDisplayed.getFullYear(), dateDisplayed.getMonth(), dateDisplayed.getDate() + slider, 0, 0, 0)\n } else if (range === '6hours') {\n dateDisplayed = new Date(dateDisplayed.getFullYear(), dateDisplayed.getMonth(), dateDisplayed.getDate(), dateDisplayed.getHours() + 6 * slider, 0, 0)\n } else if (range === 'week') {\n // for day we have to deal with range which is quite different we will nedd to calculate the range in anotheer function\n dateDisplayed = new Date(dateDisplayed.getFullYear(), dateDisplayed.getMonth(), dateDisplayed.getDate() + slider * 7, 0, 0, 0)\n\n } else if (range === 'month') {\n dateDisplayed = new Date(dateDisplayed.getFullYear(), dateDisplayed.getMonth() + slider, dateDisplayed.getDate(), 0, 0, 0)\n\n } else {\n //year\n dateDisplayed = new Date(dateDisplayed.getFullYear() + slider, dateDisplayed.getMonth(), dateDisplayed.getDate(), 0, 0, 0)\n }\n\n return dateDisplayed;\n\n };\n\n public getDateTextLabelWeekInYear(dateDisplayed): string {\n const displayFormatD3 = d3TimeFormat.timeFormat(\"%V\")\n return displayFormatD3(dateDisplayed);\n }\n\n public getDateTextLabelDay(dateDisplayed): string {\n const displayFormatD3 = d3TimeFormat.timeFormat(\"%a %e %b\")\n return displayFormatD3(dateDisplayed);\n }\n\n public getStartOfMonthForYearTs(dateDisplayed: Date): number[] {\n let timestampsOfYearPerMonth = []\n const year = dateDisplayed.getFullYear()\n for (let i = 0; i < 12; i++) {\n timestampsOfYearPerMonth.push(new Date(year, i, 1, 0, 0, 0).getTime() / 1000)\n }\n return timestampsOfYearPerMonth;\n }\n\n // This is required for iOS\n public convertToDate(string) {\n return new Date(string);;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { tApiErrorResponse } from './glow.typings';\n// import { tApiErrorResponse } from '../../services/glowservices-mobile-sdk/glow.typings';\n\n@Injectable()\nexport class ErrorMessageParser {\n\n private ErrorAnnouncer = new Subject();\n\n errorMsg$ = this.ErrorAnnouncer.asObservable();\n\n constructor() {\n };\n\n private apiErrorMessagesMap = {\n \"An error has occurred\": \"ERROR\",\n \"incorrect elements -hardwareId\": \"HARDWARE_INCORRECT_DETAILS\",\n \"No interner Access\": \"ERROR_NO_NETWORK\",\n \"username already exists\": \"ERROR_USERNAME_ALREADY_EXISTS\",\n \"email address already verified\": \"ERROR_EMAIL_ALREADY_VERIFIED\",\n \"incorrect elements -activationCode, customerCode\": \"ERROR_REVIEW_ACTIVATION_CODE_CUSTOMER_CODE\",\n \"incorrect elements -customerCode, activationCode\": \"ERROR_REVIEW_ACTIVATION_CODE_CUSTOMER_CODE\",\n \"incorrect elements activationCode, customerCode combination\": \"ERROR_REVIEW_ACTIVATION_CODE_CUSTOMER_CODE_COMBINATION\",\n \"incorrect elements customerCode, activationCode combination\": \"ERROR_REVIEW_ACTIVATION_CODE_CUSTOMER_CODE_COMBINATION\",\n \"not implemented\": \"ERROR_NOT_IMPLEMENTED\",\n 'invalid email address' : \"ERROR_INVALID_EMAIL_ADDRESS\",\n \"incorrect elements -invalid email\": \"ERROR_INVALID_EMAIL_ADDRESS\",\n \"registration type not implemented\": \"ERROR_REGISTRATION_TYPE_NOT_IMPLEMENTED\",\n }\n\n getErrorMessage(err: any, method=null): string {\n\n var errorKey = \"ERROR\";\n\n if (err && err.hasOwnProperty(\"isError\") && err.hasOwnProperty(\"message\")) {\n errorKey = err.message\n\n } else {\n // Check if the error message already has been formatted\n if (err && (err.status || err.statusCode)) {\n var statusCode = err.status || err.statusCode;\n let msg = err.error && err.error.error\n if (statusCode == 400) {\n errorKey = \"ERROR_CLIENT_SIDE\"\n if (this.apiErrorMessagesMap.hasOwnProperty(msg)) {\n errorKey = this.apiErrorMessagesMap[msg]\n }\n } else if (statusCode == 429 && method === 'login') {\n errorKey = \"ERROR_ACCOUNT_LOCKED_TOO_MANY_FAILED_ATTEMPTS\"\n } else if (statusCode == 401) {\n errorKey = \"ERROR_UNAUTHORISED\"\n } else if (statusCode == 500) {\n errorKey = \"ERROR_SERVER_SIDE\"\n }\n }\n }\n // console.log(\"ErrorMessageParser: error key\")\n // console.log(errorKey)\n\n return errorKey;\n }\n\n announceErrorMessage(error: tApiErrorResponse) {\n this.ErrorAnnouncer.next(error)\n }\n\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { ConfigService } from './app-config.service';\nimport { tEventsConfigurations, tConfig, tGlowEventConfiguration } from './app-config.typings';\nimport { GlowService } from './glow.service';\nimport { tGlowEventReq } from './glow.typings';\n\n@Injectable()\nexport class EventService {\n\n eventTopicConfig: tEventsConfigurations\n\n private DataRefreshAnnouncer = new Subject();\n private HealthCheckAnnouncer = new Subject();\n private LoadingEventAnnouncer = new Subject();\n private DimensionChangeEventAnnouncer = new Subject();\n private TimerObservablesAnnouncer = new Subject();\n private AppEventAnnouncer = new Subject();\n\n\n $dataRefresh = this.DataRefreshAnnouncer.asObservable();\n $loading = this.LoadingEventAnnouncer.asObservable();\n $dimensionChange = this.DimensionChangeEventAnnouncer.asObservable();\n $timerObservables = this.TimerObservablesAnnouncer.asObservable();\n $appEvent = this.AppEventAnnouncer.asObservable();\n $healthCheck = this.HealthCheckAnnouncer.asObservable();\n\n\n\n constructor(\n private configService: ConfigService) {\n this.eventTopicConfig = this.configService.getEventConfigurations();\n };\n\n\n\n publish(topic, event) {\n // console.log(event)\n event.topic = topic;\n\n if (topic == this.eventTopicConfig.dataRefresh) {\n this.DataRefreshAnnouncer.next(event);\n\n } else if (topic == this.eventTopicConfig.loading) {\n this.LoadingEventAnnouncer.next(event);\n\n } else if (topic == this.eventTopicConfig.dimensionChange) {\n this.DimensionChangeEventAnnouncer.next(event);\n\n } else if (topic == this.eventTopicConfig.timerObservables) {\n this.TimerObservablesAnnouncer.next(event);\n\n } else if (topic == this.eventTopicConfig.healthCheck) {\n this.HealthCheckAnnouncer.next(event);\n\n } else {\n this.AppEventAnnouncer.next(event);\n }\n }\n\n\n\n}\n\n@Injectable()\nexport class GlowEventService {\n liveSystemApi: string;\n eventPreText: string = 'reflect'\n\n config: tConfig\n eventConfiguration: tGlowEventConfiguration\n\n constructor(\n private configService: ConfigService,\n private glowService: GlowService) {\n\n this.config = this.configService.loadConfig()\n this.eventConfiguration = this.configService.loadEventsConfigurations()\n };\n\n sendEvent(data: any, category, event = null) {\n let glowEvent = {\n data: data,\n categoryReference: category,\n event: null\n }\n if (this.glowService.isLoggedIn() === true) {\n\n let hostUrl = this.glowService.getHostUrl();\n if (hostUrl != this.config.environments.prod.glow.endpoint) {\n let env;\n try {\n env = (hostUrl.split('//')[1]).split('.glowmarkt.com')[0]\n\n } catch (e) {\n console.warn(e)\n env = 'not_prod'\n }\n glowEvent.event = (event)? env + '.' + this.eventPreText + '.' + event : env + '.' + this.eventPreText;\n\n } else {\n glowEvent.event = (event)? this.eventPreText + '.' + event: this.eventPreText;\n }\n\n this.glowService.sendGlowEvent(glowEvent).subscribe((response) => {\n // console.log(\"event submitted\")\n }, (error) => {\n console.warn(error)\n })\n }\n }\n\n submitFormSubmissionEvent(data, event) {\n this.sendEvent(data, this.eventConfiguration.formSubmission.key, event)\n }\n\n}","import { Injectable } from '@angular/core';\nimport { environment } from '../../environments/environment';\nimport { StrapiService } from './strapi.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FaqsService {\n contentSystemBaseUrl: string = environment.contentSystemBaseUrl;\n relatedContentTypes: Array = ['related-faqs'];\n\n constructor(private strapiService: StrapiService) {}\n\n async getFAQ(id: string | number) {\n const url = `${this.contentSystemBaseUrl}/api/faqs/${id}?populate[faq_topics][populate]=*`;\n const response = await this.strapiService.getDataFromStrapi(url);\n return response;\n }\n\n async getFAQBySlug(slug: string) {\n const url = `${this.contentSystemBaseUrl}/api/faqs?filters\\[slug\\][$eq]=${slug}&&populate[faq_topics][populate]=*&&populate[related_faqs][populate]=*`;\n const faq = (await this.strapiService.getDataFromStrapi(url))[0];\n return faq;\n }\n\n async getFAQsTopics() {\n const url = `${this.contentSystemBaseUrl}/api/faq-topics`;\n const response = await this.strapiService.getDataFromStrapi(url);\n return response;\n }\n\n async getFAQsTopic(id: string | number) {\n const url = `${this.contentSystemBaseUrl}/api/faq-topics/${id}?populate[faq_sub_topics][populate]=*`;\n const response = await this.strapiService.getDataFromStrapi(url);\n return response;\n }\n\n async getFAQsTopicBySlug(slug: string) {\n const url = `${this.contentSystemBaseUrl}/api/faq-topics?filters\\[slug\\][$eq]=${slug}&&populate[faq_sub_topics][populate]=*`;\n const topic = (await this.strapiService.getDataFromStrapi(url))[0];\n return topic;\n }\n\n async postFeedback(id, feedback, isPositive, reason?) {\n const body = {\n faq: Number(id),\n feedback: feedback,\n isPositive: isPositive,\n reason: reason ? reason : '',\n };\n await this.strapiService.postDataToStrapi(`${this.contentSystemBaseUrl}/api/faq-feedbacks`, body);\n }\n\n async postSuggestion(suggestion) {\n const body = {\n suggestion: suggestion,\n };\n await this.strapiService.postDataToStrapi(`${this.contentSystemBaseUrl}/api/faq-suggestions`, body);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormValidationService {\n constructor(private translate: TranslateService) {}\n\n checkFormValidity(formGroup: FormGroup, formControlName, translateKey?) {\n if (!(formGroup.get(formControlName).errors || formGroup.get(formControlName).value instanceof FileList)) return;\n\n let messages = [];\n let formFieldName;\n translateKey ? (formFieldName = this.translate.instant(translateKey)) : (formFieldName = 'This field');\n //check if form control has extra validators and user has begun typing\n if (\n (formGroup.get(formControlName).dirty || formGroup.get(formControlName).touched) &&\n formGroup.get(formControlName).value &&\n !(formGroup.get(formControlName).value instanceof FileList) &&\n (formGroup.get(formControlName).value.length || formGroup.get(formControlName).value.size)\n ) {\n const errors = formGroup.get(formControlName).errors;\n const errorsWithMsg = Object.values(errors).filter((v) => v.errMsg);\n messages = errorsWithMsg.map((v) => v.errMsg);\n \n return messages;\n }\n if (\n formGroup.get(formControlName).errors &&\n formGroup.get(formControlName).errors.required &&\n formGroup.get(formControlName).touched &&\n !formGroup.get(formControlName).valid &&\n !(formGroup.get(formControlName).value && formGroup.get(formControlName).value.length)\n ) {\n const errorMsg = `${formFieldName} is required.`;\n messages = [errorMsg]; \n return messages;\n }\n if (formGroup.get(formControlName).value instanceof FileList) {\n const fileArray = Array.from(formGroup.get(formControlName).value);\n const isControlValid = fileArray.every((file: any) => !file.type.includes('image') || (file.type.includes('image') && file.width && file.height && file.description));\n if (!isControlValid) {\n messages = ['Please add a description to all images.'];\n return messages;\n }\n \n }\n }\n\n isFormValidForNonEmptyControls(formGroup: FormGroup) {\n return Object.values(formGroup.controls).every((control) => {\n const isfileList = control.value instanceof FileList;\n let isControlValid = control.valid;\n if (isfileList) {\n const fileArray = Array.from(control.value);\n isControlValid = fileArray.every((file: any) => !file.type.includes('image') || (file.type.includes('image') && file.width && file.height && file.description));\n }\n return !control.value || isControlValid;\n });\n }\n\n markFormGroup(formGroup: FormGroup, type) {\n Object.values(formGroup.controls).forEach((control) => {\n if (type == 'touched') control.markAsTouched();\n if (type == 'untouched') control.markAsUntouched();\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { HeatPumpCaseStudyComponent } from '../pages/case-study-creator-tool/heat-pump-case-study/heat-pump-case-study.component';\nimport { ConfirmationModalComponent } from '../components/confirmation-modal/confirmation-modal.component';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { CaseStudyFormService } from './case-study-form.service';\nimport { BuildingFormComponent } from '../components/case-study/building-form/building-form.component';\nimport { HeatingSystemFormComponent } from '../components/case-study/heating-system-form/heating-system-form.component';\nimport { InstallationFormComponent } from '../components/case-study/installation-form/installation-form.component';\nimport { OutcomesFormComponent } from '../components/case-study/outcomes-form/outcomes-form.component';\nimport { OtherInfoFormComponent } from '../components/case-study/other-info-form/other-info-form.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormGuard implements CanDeactivate {\n constructor(private modalService: NgbModal, private caseStudyFormService: CaseStudyFormService) {}\n canDeactivate(\n component: BuildingFormComponent | HeatingSystemFormComponent | InstallationFormComponent | OutcomesFormComponent | OtherInfoFormComponent,\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean | UrlTree {\n return new Promise((resolve) => {\n if (!this.caseStudyFormService.isSectionPristine(component.section)) {\n component.saveChanges();\n }\n resolve(true);\n });\n }\n}\n","/**\n * August 2018\n * This service is responsible for setting up some configuration to the Glow Serivce APK.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class GlowConfigurationService {\n\n resourceTypeDimensionConfig: tResourceTypeDimensionConfig;\n\n constructor() {\n // this.alive = true;\n };\n \n getResourceTypeDivisors(): tResourceTypeDimensionConfig {\n this.resourceTypeDimensionConfig = {\n energy: {\n Wmin: {\n resourceTypeIds: [], // This has now been transferred to the back end\n divisor: 60000.0\n },\n pence: {\n resourceTypeIds:[\"b4158501-a678-484a-837a-874194d3bd48\", , \"32d9821b-34fd-46d1-9ba1-56259afd4734\", \"b3c80261-f9d3-4453-a6e7-5fd02e89fc67\",\"c58b4039-3cdf-425a-873d-f9e82d8c4009\",\"b8a8b8ca-ee59-4fc9-97c1-77dfa6bd9b46\", \"177a0707-154b-4666-be59-2a5eff88a160\"],\n divisor: 100.0\n }\n }\n }\n return this.resourceTypeDimensionConfig;\n\n }\n\n}\n\nexport class tResourceTypeDimensionConfig{\n energy: {\n Wmin: {\n resourceTypeIds: string[],\n divisor: number\n };\n pence: {\n resourceTypeIds: string[],\n divisor: number\n };\n };\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { GlowService } from './glow.service';\nimport { GlowConfigurationService } from './glow-config.service';\nimport { CacheService } from './cache.service';\nimport { DateFormatService } from './date-format.service';\nimport { JwtModule } from '@auth0/angular-jwt';\n\nexport function tokenGetter() {\n return localStorage.getItem('id_token');\n}\n@NgModule({\n declarations: [\n ],\n imports: [\n JwtModule.forRoot({\n config: {\n tokenGetter: tokenGetter\n }\n }),\n ],\n exports: [\n ],\n providers: [\n CacheService,\n DateFormatService,\n GlowConfigurationService,\n GlowService,\n ]\n})\nexport class GlowModule {\n}\n","import { Injectable, EventEmitter } from '@angular/core';\nimport { HttpHeaders, HttpClient, HttpResponse, HttpParams } from '@angular/common/http';\n\nimport { Observable, throwError } from 'rxjs';\nimport { from, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\n\nimport { JwtHelperService } from '@auth0/angular-jwt';\n\nimport {\n tAccount,\n tVE,\n tVEType,\n tVEwithDetailedResources,\n tFunctionalGroupAccount,\n tDevice,\n tDeviceStatus,\n tDeviceProductDiscovery,\n tProvisioningStatus,\n tDiscoveryInfo,\n tResource,\n tResourceType,\n tResourceTariff,\n tResourceReadings,\n tGroupedResource,\n tResourceInstantReadings,\n tResourceMeterReading,\n tInboxMessage,\n tInboxStatus,\n tInboxDeleteStatus,\n tInboxMessageList,\n tApplicationVersions,\n tFAQ,\n tSupportDetails,\n tAccountStatus,\n tTokenValidityResponse,\n tNewTokenResponse,\n tLoginInfo,\n tRegistrationInfo,\n tApiErrorResponse,\n tGlowStickAccessPointPassword,\n tPrompt,\n tPromptUser,\n tTermsConditionsUser,\n tTermsConditions,\n tContent,\n tUserAction,\n tLanguageContent,\n tPromptUserReq,\n tApplicationEventReq,\n tApplicationEventRes,\n tResourceSummaryReadings,\n tVEwithGroupedChildren,\n tVeState,\n tVeIdListing,\n tUserGroup,\n tUserOrganization,\n tProvisioningAddChildDeviceReq,\n tAlertHistoryUserGroup,\n tVeGroup,\n tAlertHistoryUser,\n tAlertType,\n tAlertStatus,\n tTemplate,\n tOAuthResponse,\n tIsValid,\n tSavedCards,\n tUserGroupCreateRes,\n tUserGroupCreateReq,\n tUserGroupAppPermissionsReq,\n tUserGroupAdminDeletionRes,\n tUserIdElement,\n tUserGroupAdminAdditionReq,\n tUserGroupAdminAdditionRes,\n tUserGrouping,\n tUserFromUserGroupDeletionRes,\n tVeAccessAddUser,\n tVeAccessAddUserGroup,\n tVeAccessAdditionRes,\n tVeAccessPermission,\n tUserOrgCreateReq,\n tDeviceWithSetting,\n tIsUserGroupValid,\n tIsUserOrganizationValid,\n tGlowEventReq,\n tStatusResponse,\n tUserGroupAdmin,\n tDeviceRegisters,\n tSetPasswordReq,\n tTicketCreateResponse,\n tForgottenPasswordResponse,\n tIsValidPaymentRes,\n tPaymentTransactionCallbackInfo,\n tHasVeAccess,\n tHasVeAdminAccess,\n tTermsConditionsUserRaw,\n tTermsConditionsUserCreateRes,\n tResourceFirstTime,\n tDataGroupCreateReq,\n tChangeUsernameReq,\n tUserGroupingWithUserInfo,\n tUserGroupAdminWithUserInfo,\n tCalculateHTC,\n tEuiPostcode,\n tEligibitySmetsIhdPostcodeCheck,\n tEligibitySmetsFuelTypesReq,\n tEligibitySmetsFuelTypes,\n tAccountProfile,\n tAccountProfilesResp,\n tAccountProfileCreateResp,\n tResourceLastTime,\n tSimulation,\n tIsValidTicket,\n tJournalEntry,\n tComponent,\n tCaseStudy,\n tVerificationStatus,\n tVerificationInfoSubmissionIsValidRes,\n\n // tmeterPointVerificationList,\n // tDeviceBalance\n} from './glow.typings';\n\nimport { ConfigService } from './app-config.service';\nimport { DateFormatService } from './date-format.service';\nimport { CacheService } from './cache.service';\nimport { AuthenticationService } from './authentication.service';\n\nexport class AppIdHeadersGlow extends Headers {\n constructor(appId: string, functionalGroupId = null) {\n super();\n this.append('X-GLOW-Version', '0');\n this.append('Content-type', 'application/json');\n this.append('token', localStorage.getItem('id_token'));\n this.append('applicationId', appId);\n // console.log('AppIdHeaders ' + appId);\n if (functionalGroupId) {\n this.append('functionalGroupId', functionalGroupId);\n }\n }\n}\n\n@Injectable()\nexport class GlowService {\n private applicationId: string;\n private applicationName: string;\n private directoryId: string;\n private glowDirectoryId: string;\n private hostUrl; // Check CORS?\n private hostJournalUrl = 'http://localhost:3066/api/v0-1/';\n private authFunctionalGroupId: string;\n private tempAccessDirectoryId: string;\n public getAuthEvent: EventEmitter = new EventEmitter();\n private environment: string;\n\n private rateLimitingHostUrl: string;\n\n constructor(private configService: ConfigService, private dateFormatService: DateFormatService, private http: HttpClient, public jwtHelper: JwtHelperService, private auth: AuthenticationService, private storage: CacheService) {\n const configuration = this.configService.loadConfig();\n this.applicationId = configuration.application.applicationId;\n this.applicationName = configuration.application.apipathname;\n // this.hostUrl = configuration.environments.prod.glow.endpoint;\n this.hostUrl = configuration.environments.prod.glow.endpoint;\n this.rateLimitingHostUrl = configuration.environments.prod.glow.rateLimitingHostUrl;\n this.directoryId = configuration.directories.default.directoryId;\n this.glowDirectoryId = configuration.directories.glow.directoryId;\n this.tempAccessDirectoryId = configuration.directories.tempAccess.directoryId;\n\n if (configuration.hasOwnProperty('functionalGroups') && configuration.functionalGroups.hasOwnProperty('auth')) {\n this.authFunctionalGroupId = configuration.functionalGroups.auth;\n }\n\n // this.events.subscribe('user:loggedIn', () => {\n // // console.log('glow service got loggedIn event');\n // });\n\n // this.events.subscribe('user:logout', () => {\n // // console.log('glow service got Log OUT event');\n // });\n }\n\n ngOnDestroy() {}\n\n // ************************* Environment Functionality *************************/\n /**\n * Function responsible for setting environmnet as given by username and also clean up username from env\n */\n checkEnvironment(username: string): string {\n // console.log('checkEnvironment ' + username);\n\n const configuration = this.configService.loadConfig();\n const supportedEnvironments = Object.keys(configuration.environments).map((env) => env);\n\n const usernameNoDomain = username.split('@')[0];\n const usernameSetsEnvironmentCheck = /\\[.*\\]/;\n\n if (usernameSetsEnvironmentCheck.test(usernameNoDomain) === true) {\n // console.log('Need to set environment');\n const executedRegex = usernameNoDomain.match(usernameSetsEnvironmentCheck);\n if (executedRegex && executedRegex[0]) {\n const env = executedRegex[0].replace('[', '').replace(']', '');\n // console.log(`Setting environment to ${env}`);\n if (supportedEnvironments.indexOf(env) > -1) {\n this.setEnvironment(env);\n } else {\n console.warn(`env ${env} not in supported list, setting to: ${env}.glowmarkt.com`);\n const url = `https://${env}.glowmarkt.com/api/v0-1/`;\n this.setHostUrl(url);\n }\n }\n } else {\n // console.log('Setting environment to prod');\n this.setEnvironment('prod');\n }\n const usernameNoDomainSplit = usernameNoDomain.split('[');\n return usernameNoDomainSplit[0] + '@' + username.split('@')[1];\n }\n\n setHostUrl(hostUrl: string) {\n // console.log('Glowservice setting host to: ' + hostUrl);\n this.hostUrl = hostUrl;\n }\n\n setEnvironment(environment: string) {\n const configuration = this.configService.loadConfig();\n this.environment = environment;\n this.setHostUrl(configuration.environments[environment].glow.endpoint);\n }\n\n getEnvironment() {\n return this.environment ? this.environment : 'prod';\n }\n\n getHostUrl() {\n return this.hostUrl;\n }\n\n // ****************** API checks *********************/\n\n performPreAPIChecksWithAuth(): tApiErrorResponse {\n let response = {\n isError: false,\n messages: [],\n data: '',\n };\n const authCheck = this.performAuthCheck();\n const networkCheck = this.performNetworkCheck();\n if (authCheck.isError === true) {\n response.isError = true;\n response.messages = response.messages.concat(authCheck.messages);\n }\n if (networkCheck.isError === true) {\n response.isError = true;\n response.messages = response.messages.concat(networkCheck.messages);\n }\n return response;\n }\n\n performNetworkCheck(): tApiErrorResponse {\n let response = {\n isError: false,\n messages: [],\n data: '',\n };\n // if (this.networkActive === false) {\n // response.isError = true\n // response.messages = ['ERROR_NO_NETWORK']\n // }\n return response;\n }\n\n performAuthCheck(): tApiErrorResponse {\n let response = {\n isError: false,\n messages: [],\n data: '',\n };\n if (this.checkExistingToken() === false) {\n response.isError = true;\n response.messages = ['ERROR_TOKEN_NOT_VALID'];\n }\n return response;\n }\n\n performPreAPIChecksWithoutAuth(): tApiErrorResponse {\n return this.performNetworkCheck();\n }\n\n // Checks that do not check the network\n performPreAPIChecksNoNetwork(): tApiErrorResponse {\n return this.performAuthCheck();\n }\n\n public setHeaders(): AppIdHeadersGlow {\n const headers: Headers = new AppIdHeadersGlow(this.applicationId);\n return headers;\n }\n\n //******************** Headers *************/\n public getNoAuthHeaders(): HttpHeaders {\n let headers: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json',\n applicationId: this.applicationId,\n });\n if (this.authFunctionalGroupId) {\n headers = headers.append('functionalGroupId', this.authFunctionalGroupId);\n }\n return headers;\n }\n\n public getNoAuthOptionsRequestInit(): RequestInit {\n return { headers: { applicationId: this.applicationId } };\n }\n\n public getAuthHeaders(): HttpHeaders {\n let headers: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json',\n applicationId: this.applicationId,\n token: localStorage.getItem('id_token'),\n 'X-GLOW-Version': '0',\n });\n if (this.authFunctionalGroupId) {\n headers = headers.append('functionalGroupId', this.authFunctionalGroupId);\n }\n return headers;\n }\n\n public getAuthHeadersCSV(): HttpHeaders {\n let headers: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/csv',\n applicationId: this.applicationId,\n token: localStorage.getItem('id_token'),\n 'X-GLOW-Version': '0',\n });\n if (this.authFunctionalGroupId) {\n headers = headers.append('functionalGroupId', this.authFunctionalGroupId);\n }\n return headers;\n }\n\n public getNoAuthOptions() {\n const headers = this.getNoAuthHeaders();\n return { headers };\n }\n\n public getAuthOptions() {\n const headers = this.getAuthHeaders();\n return { headers };\n }\n\n public getOAuthOptions() {\n const headers = this.getOAuthHeaders();\n return { headers };\n }\n public getOAuthOptionsWithoutContentType() {\n const headers = this.getOAuthHeadersWithoutContentType();\n return { headers };\n }\n\n public getAuthHeadersWithUserId(userId: string) {\n let headers: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json',\n applicationId: this.applicationId,\n // token: localStorage.getItem('id_token'),\n 'X-GLOW-Version': '0',\n userId: userId,\n });\n if (this.authFunctionalGroupId) {\n headers = headers.append('functionalGroupId', this.authFunctionalGroupId);\n }\n return headers;\n }\n\n public getOAuthHeadersWithoutContentType() {\n let headers: HttpHeaders = new HttpHeaders({\n applicationId: this.applicationId,\n Authorization: this.auth.authorizationHeader(),\n });\n return headers;\n }\n\n public getOAuthHeaders() {\n let headers: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json',\n applicationId: this.applicationId,\n Authorization: this.auth.authorizationHeader(),\n });\n return headers;\n }\n\n public getAuthOptionsUserId(userId: string) {\n const headers = this.getAuthHeadersWithUserId(userId);\n return { headers };\n }\n\n public getAuthOptionsCsv() {\n const headers = this.getAuthHeadersCSV();\n const options = { headers, responseType: 'text' as any };\n\n return options;\n }\n\n public getAuthOptionsAppId({ applicationId }: any = {}) {\n const headers = this.getAuthHeaders();\n // console.log(headers);\n return { headers };\n }\n\n public getImageAuthHeaders(): HttpHeaders {\n return new HttpHeaders({\n applicationId: this.applicationId,\n token: localStorage.getItem('id_token'),\n 'X-GLOW-Version': '0',\n });\n }\n\n public getImageAuthOptions() {\n const headers = this.getImageAuthHeaders();\n return { headers };\n }\n\n // ************************** Service Agent **********************************/\n // public registerServiceAgent(body): Observable {\n // // console.log('registerServiceAgent');\n // const response = this.performPreAPIChecksWithoutAuth();\n // if (response && response.isError === false) {\n // return this.http.post(this.hostUrl + 'service-agent/register', body, this.getNoAuthOptions());\n // } else {\n // return throwError(response);\n // }\n // }\n\n // getServiceAgent(): Observable {\n // const response = this.performPreAPIChecksWithoutAuth();\n // if (response && response.isError === false) {\n // return this.http.get(`${this.hostUrl}service-agent`, this.getOAuthOptions());\n // } else {\n // return throwError(response);\n // }\n // }\n\n // ************************** User Calls **********************************/\n public register(user: tRegistrationInfo): Observable {\n // // console.log('Register user');\n\n user.applicationId = this.applicationId;\n user.directoryId = this.glowDirectoryId;\n user.alertTypeId = 'Glow_EmailVerification_Glowmarkt';\n const response = this.performPreAPIChecksWithoutAuth();\n\n if (response && response.isError === false) {\n const headers: HttpHeaders = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n return this.http.post(this.hostUrl + 'register', user, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n postTicket(body) {\n const response = this.performPreAPIChecksWithAuth();\n // console.log(response);\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'ticket', body, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n postTicketPublic(body) {\n const response = this.performPreAPIChecksWithoutAuth();\n // console.log(response);\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'ticket/public', body, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public login(accountInfo: tLoginInfo): Observable {\n // console.log('Log in');\n const response = this.performPreAPIChecksWithoutAuth();\n\n if (response && response.isError === false) {\n const cleanUsername = this.checkEnvironment(accountInfo.username);\n accountInfo.username = cleanUsername;\n\n if (accountInfo.username.split('@')[1] == 'null.com') {\n accountInfo['directoryId'] = this.tempAccessDirectoryId;\n } else if (accountInfo.username.split('@')[1] == 'hdb.com' || accountInfo.username.split('@')[1] == 'glowtest.com') {\n accountInfo['directoryId'] = this.glowDirectoryId;\n } else {\n // console.log(this.directoryId);\n if (this.directoryId) accountInfo['directoryId'] = this.directoryId;\n }\n return this.http.post(this.hostUrl + 'auth/', JSON.stringify(accountInfo), this.getNoAuthOptions()).pipe(\n map((res) => {\n return this.saveJwt(res);\n }),\n catchError((error: any) => throwError(error))\n );\n } else {\n return throwError(response);\n }\n }\n\n public authenticateOAuth(accountInfo: tLoginInfo, applicationId: string): Observable {\n // console.log('Log in');\n const response = this.performPreAPIChecksWithoutAuth();\n\n if (response && response.isError === false) {\n const cleanUsername = this.checkEnvironment(accountInfo.username);\n accountInfo.username = cleanUsername;\n\n if (accountInfo.username.split('@')[1] == 'null.com') {\n accountInfo['directoryId'] = this.tempAccessDirectoryId;\n }\n const headers: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json',\n applicationId: applicationId,\n });\n return this.http.post(this.hostUrl + 'auth/oauth', JSON.stringify(accountInfo), { headers });\n } else {\n return throwError(response);\n }\n }\n\n public logout(): Observable {\n // console.log('Logging Out');\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n // To log out, delete token from server side, and remove the token and profile from local Storage\n const options = this.getAuthOptions();\n this.deleteJwt();\n this.emitLogOut();\n return this.http.delete(this.hostUrl + 'auth/deleteToken', options);\n } else {\n return throwError(response);\n }\n }\n\n public verify(verificationInfo): Observable {\n // console.log('Verifying Account');\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n if (!verificationInfo.applicationId) {\n verificationInfo.applicationId = this.applicationId;\n }\n return this.http.put(this.hostUrl + 'user/verify', verificationInfo, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public generateVerificationToken(generateVerificationInfo): Observable {\n // console.log('Generate Verification Token');\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n generateVerificationInfo.applicationId = this.applicationId;\n return this.http.post(this.hostUrl + 'user/verify', generateVerificationInfo, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public resetPassword(resetPasswordInfo): Observable {\n // console.log('Password Reset');\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n resetPasswordInfo.applicationId = this.applicationId;\n return this.http.put(this.hostUrl + 'user/resetpassword', resetPasswordInfo, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public setPassword(resetPasswordInfo: tSetPasswordReq): Observable {\n // console.log('Password Set');\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'user/setpassword', resetPasswordInfo, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public triggerForgottenPasswordProcess(triggerForgottenPasswordInfo): Observable {\n // console.log('Generate Password Reset Token');\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n triggerForgottenPasswordInfo.applicationId = this.applicationId;\n return this.http.post(this.hostUrl + 'user/resetpassword', triggerForgottenPasswordInfo, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public changePassword(changePasswordInfo): Observable {\n // console.log('Change Password');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'account/changepassword', changePasswordInfo, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public changeEmail(emailData): Observable {\n // console.log('Change Email');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'account/email', emailData, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public changeUsername(data: tChangeUsernameReq): Observable {\n // console.log('Change Username');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(this.hostUrl + 'user/username', data, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public changeUsernameAndEmail(data: tChangeUsernameReq): Observable {\n // console.log('Change Username and email');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(this.hostUrl + 'user/username-email', data, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // Add Firebase token for User.\n public addMobileToken(mobileToken: string) {\n // console.log('Adding mobile app token to glow');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n let addMobileToken = { newToken: mobileToken };\n let accountId = localStorage.getItem('id');\n return this.http.post(this.hostUrl + 'account/' + accountId + '/mobileapptoken', addMobileToken, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public refreshToken(): Observable {\n // console.log('refreshToken function');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'auth/newtoken', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public validateToken(): Observable {\n // console.log('validateToken');\n const response = this.performPreAPIChecksNoNetwork();\n // console.log(response);\n if (response && response.isError === false) {\n const networkCheck = this.performNetworkCheck();\n if (networkCheck.isError === false) {\n return this.http.get(this.hostUrl + 'auth', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n } else {\n return throwError(response);\n }\n }\n\n public getAccount(): Observable {\n // console.log('Get an account ');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'account/details', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public getAccountStatus(): Observable {\n // console.log('Get Account Status');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'account/status', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ************************** Account Profile Calls **********************************/\n\n public getProfile(profileName: string) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'accountprofile/' + profileName, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public getAllProfiles() {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'accountprofile', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n public addProfile(profileBody: tAccountProfile) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'accountprofile', profileBody, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ************************** User Groups Calls **********************************/\n\n getUserGroups(functionalGroupId = ''): Observable {\n // console.log('Get user groups');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'usergroup/user', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n createUserGroup(userGroupBody: tUserGroupCreateReq): Observable {\n // console.log('Get user groups');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'usergroup', userGroupBody, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n createUserOrganization(userOrganizationBody: tUserOrgCreateReq): Observable {\n // console.log('create user organization');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'userorganization', userOrganizationBody, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n appAppPermissionsToUserGroup(userGroupId: string, appPermissionsBody: tUserGroupAppPermissionsReq): Observable {\n // console.log('Get user groups');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'usergroup/' + userGroupId + '/application', appPermissionsBody, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n checkIfUserIsUserGroupAdmin(userGroupId): Observable {\n // console.log('Check if user is admin of user group ', userGroupId);\n\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'usergroup/' + userGroupId + '/admin', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getUserOrganizationsOfUser(functionalGroupId = ''): Observable {\n // console.log('Get user groups');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'userorganization/user', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getUsersOfUserGroup(userGroupId: string): Observable {\n // console.log('Get users of user group ' + userGroupId);\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'usergroup/' + userGroupId + '/user', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n addUsersToUserGroup({ userGroupId, usernames }): Observable {\n // console.log('Get user groups');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const body = { usernames };\n return this.http.post(`${this.hostUrl}usergroup/${userGroupId}/user`, body, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n deleteUserFromUserGroup(userGroupId, userId: string): Observable {\n // console.log('Delete user ' + userId + ' from user group ' + userGroupId);\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'usergroup/' + userGroupId + '/user/' + userId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getAdminOfUserGroup(userGroupId: string): Observable {\n // console.log('Get user groups');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'usergroup/' + userGroupId + '/admin/user', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n addAdminOfUserGroup({ userGroupId, usernames }): Observable {\n // console.log('Add user groups');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const body = { usernames };\n return this.http.post(`${this.hostUrl}usergroup/${userGroupId}/admin/user`, body, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n removeAdminFromUserGroup(userGroupId: string, userId: string): Observable {\n // console.log('Remove userId from user group');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'usergroup/' + userGroupId + '/admin/user/' + userId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getUserGroupsOfOrganization(userOrganizationId): Observable {\n // console.log('Get user groups of user organization ', userOrganizationId);\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'userorganization/' + userOrganizationId + '/usergroups', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n checkIfUserIsUserOrganizationAdmin(userOrganizationId): Observable {\n // console.log('Check if user is admin of organization ', userOrganizationId);\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'userorganization/' + userOrganizationId + '/admin', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getUserOrganizationAdmins(userOrganizationId): Observable {\n // console.log('Get user groups of user organization ', userOrganizationId);\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'userorganization/' + userOrganizationId + '/usergroups', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n createUserOrganizationAdmin(userOrganizationId: string, userId: string): Observable {\n // console.log('Add a user as user organization admin ', userOrganizationId);\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n let body = {\n users: [\n {\n userId: userId,\n },\n ],\n };\n return this.http.post(this.hostUrl + 'userorganization/' + userOrganizationId + '/admin/user', JSON.stringify(body), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n deleteUserOrganizationAdmin(userOrganizationId: string, userId: string): Observable {\n // console.log('Delete a user from being an admin of a user organization ' + userOrganizationId);\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'userorganization/' + userOrganizationId + '/admin/user/' + userId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ***************Functional Group Account ***********************\n\n getFunctionalGroupAccounts(): Observable {\n // console.log('Get functional group account');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'functionalgroupaccount', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ************************** Simulation Calls **********************************/\n public runSimulation(simulation: tSimulation): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'simulation/run', JSON.stringify(simulation), this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public runSimulationVeId(simulation: tSimulation, veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'simulation/virtual-entity/' + veId + '/run', JSON.stringify(simulation), this.getAuthOptions());\n }\n return;\n }\n\n // ************************** Journal Calls **********************************/\n\n public createJournal(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'journal', { veId }, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public getJournal(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'journal/ve/' + veId, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public getJournalEntries(journalId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'journal/' + journalId + '/entries', this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public getJournalEntriesByComponent(componentId: string, componentVersion: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'journal-entry/component/' + componentId + '/version/' + componentVersion + '/entries', this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public getJournalEntry(entryId: string): Observable {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'journal-entry/' + entryId, this.getNoAuthOptions());\n }\n return throwError(response);\n }\n\n public createJournalEntry(entry: tJournalEntry): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'journal-entry', entry, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public createComponent(component: tComponent): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'journal/component', component, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public getComponent(componentId: string, componentVersion: string): Observable {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'journal/component/' + componentId + '/version/' + componentVersion, this.getNoAuthOptions());\n }\n return throwError(response);\n }\n\n public updateComponent(componentId: string, componentVersion: string, component: tComponent): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.patch(this.hostUrl + 'journal/component/' + componentId + '/version/' + componentVersion, component, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public updateComponentMedia(componentId: string, componentVersion: string, body: any): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.patch(this.hostUrl + 'journal/component/' + componentId + '/version/' + componentVersion + '/media', body, this.getImageAuthOptions());\n }\n return throwError(response);\n }\n\n public deleteComponent(componentId: string, componentVersion: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'journal/component/' + componentId + '/version/' + componentVersion, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public updateJournalEntry(jeId: string, entry: any): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.patch(this.hostUrl + 'journal-entry/' + jeId, entry, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n getAllCaseStudiesByVe(veId: string): Observable {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'case-study/ve/' + veId, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n getAllCaseStudiesByVeAndClassifier(veId: string, classifier: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'case-study/ve/' + veId + '/classifier/' + classifier, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n getAllCaseStudies(classifier?: string): Observable {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n const path = classifier ? this.hostUrl + 'case-study?classifier=' + classifier : this.hostUrl + 'case-study';\n return this.http.get(path, this.getNoAuthOptions());\n }\n return throwError(response);\n }\n\n public createCaseStudy(caseStudy: tCaseStudy): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'case-study', caseStudy, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public updateCaseStudy(csId, body): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.patch(this.hostUrl + 'case-study/' + csId, body, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public getCaseStudy(caseStudyId: string): Observable {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'case-study/' + caseStudyId, this.getNoAuthOptions());\n }\n return throwError(response);\n }\n\n public getCaseStudyByRef(csRef: string): Observable {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'case-study/ref/' + csRef, this.getNoAuthOptions());\n }\n return throwError(response);\n }\n\n //like functionality\n public likeCaseStudy(csId): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'case-study-like', { csId }, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public removeLikeCaseStudy(csId, csLikeId): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'case-study-like/' + csLikeId, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public getCaseStudyLikesCount(csId): Observable {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'case-study-like/case-study/' + csId + '/count', this.getNoAuthOptions());\n }\n return throwError(response);\n }\n\n public getCaseStudyLikeForUser(csId): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'case-study-like/case-study/' + csId + '/user', this.getAuthOptions());\n }\n return throwError(response);\n }\n\n public editMediaFieldCaseStudy(csId, fieldName, body): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n const url = this.hostUrl + 'case-study/' + csId + '/media/field/' + fieldName;\n return this.http.patch(url, body, this.getImageAuthOptions());\n }\n return throwError(response);\n }\n\n //comment functionality\n public createCaseStudyComment(body: { csId: string; data: string }): Observable {\n return this.http.post(this.hostUrl + 'case-study-comment', body, this.getAuthOptions());\n }\n\n public getImage(imageId: string): Promise {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return fetch(this.hostUrl + 'journal/file/' + imageId, this.getNoAuthOptionsRequestInit())\n .then((res) => res.blob())\n .then((blob) => {\n return blob;\n });\n }\n }\n\n // ************************** Property Passport **********************************/\n getPropertyPassport(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/' + veId + '/property-passport', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n createPropertyPassport(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'virtualentity/' + veId + '/property-passport', {}, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n calculateHTC(payload: tCalculateHTC): Observable {\n // console.log('calculateHTC');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n const url = this.hostUrl + 'passport/htc';\n return this.http.post(url, JSON.stringify(payload), this.getAuthOptions());\n }\n return throwError(response);\n }\n\n getHTCHistory(veId) {\n // console.log('getHTCHistory');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n // console.log(response);\n const url = this.hostUrl + 'passport/ve/' + veId + '/htc-history';\n return this.http.get(url, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n manualCreatePropertyPassport(veId: string, data: any): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'virtualentity/' + veId + '/property-passport/manual', JSON.stringify(data), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ************************** Application Calls **********************************/\n\n getApplicationVersion(): Observable {\n // console.log('Get application Version');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'application/version', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ************************** Support/FAQ/T&C Calls **********************************/\n getFAQs(reference = null): Observable {\n // console.log('Get FAQs');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n if (reference === null) {\n const configuration = this.configService.loadConfig();\n reference = configuration.content.faqs.reference;\n }\n // console.log('the url is ');\n //return this.http.get(this.hostUrl + 'faq?reference=' + reference, this.getAuthOptions())\n return this.http.get(this.hostUrl + 'faq', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getAllFAQs(reference = null): Observable {\n // console.log('Get FAQs');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const appIdHeaders: Headers = new AppIdHeadersGlow(this.applicationId);\n\n return this.http.get(this.hostUrl + 'faq', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getSupportDetails(): Observable {\n // console.log('Get Support Details');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const configuration = this.configService.loadConfig();\n const supportDetailsRef = configuration.content.supportDetails.reference;\n return this.http.get(this.hostUrl + 'supportdetails?reference=' + supportDetailsRef, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getTermsAndConditions(tcReference: string = null): Observable {\n // console.log('Get Current Terms and Conditions');\n if (tcReference === null) {\n const configuration = this.configService.loadConfig();\n tcReference = configuration.termsAndConditions && configuration.termsAndConditions.reference;\n // console.log('Defaulting T&C reference to ' + tcReference);\n }\n const response = this.performPreAPIChecksWithAuth();\n const checkNoAuth = this.performPreAPIChecksWithoutAuth();\n\n let url;\n if (tcReference) {\n url = this.hostUrl + 'termsconditions?reference=' + tcReference;\n } else {\n url = this.hostUrl + 'termsconditions';\n }\n\n if (response && response.isError === false) {\n return this.http.get(url, this.getAuthOptions());\n } else if (checkNoAuth && checkNoAuth.isError === false) {\n return this.http.get(url, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getCurrentTermsAndConditions(tcReference: string = null): Observable {\n // console.log('Get Current Terms and Conditions');\n const response = this.performPreAPIChecksWithAuth();\n const checkNoAuth = this.performPreAPIChecksWithoutAuth();\n\n if (tcReference === null) {\n const configuration = this.configService.loadConfig();\n tcReference = configuration.termsAndConditions && configuration.termsAndConditions.reference;\n // console.log('Defaulting T&C reference to ' + tcReference);\n }\n\n let url;\n if (tcReference) {\n url = this.hostUrl + 'termsconditions/current?reference=' + tcReference;\n } else {\n url = this.hostUrl + 'termsconditions/current';\n }\n // console.log('getting ts with api', url);\n if (response && response.isError === false) {\n return this.http.get(url, this.getAuthOptions());\n } else if (checkNoAuth && checkNoAuth.isError === false) {\n return this.http.get(url, this.getNoAuthOptions());\n } else {\n // console.log('throwing error - apichecks with auth failed');\n return throwError(response);\n }\n }\n\n getUserTermsAndConditionsByReference(tcReference = null): Observable {\n // console.log('Get User Current Terms and Conditions');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n let url;\n if (tcReference) {\n url = this.hostUrl + 'termsconditionsuser?reference=' + tcReference;\n } else {\n url = this.hostUrl + 'termsconditionsuser';\n }\n return this.http.get(url, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n sendUserTermsAndConditions(tcUser: tTermsConditionsUserRaw): Observable {\n // console.log('Send User Response to Current Terms and Conditions');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n const url = this.hostUrl + 'termsconditionsuser';\n return this.http.post(url, JSON.stringify(tcUser), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ***************Content/Prompt Calls ***********************\n getContent(reference = null, version = null, environment = 'prod'): Observable {\n // console.log('Get Prompts');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const url = this.hostUrl + 'content?';\n\n let params: HttpParams = new HttpParams();\n if (reference) params = params.set('reference', reference);\n if (version) params = params.set('version', version);\n if (environment) params = params.set('environment', environment);\n\n let options = this.getAuthOptions();\n options['params'] = params;\n return this.http.get(url, options);\n } else {\n return throwError(response);\n }\n }\n\n getLanguageContent(reference = null, languageCode = null, version = null, environment = 'prod'): Observable {\n // console.log('Get Language Content');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const url = this.hostUrl + 'languagecontent?';\n let params: HttpParams = new HttpParams();\n\n if (reference) params = params.set('reference', reference);\n if (languageCode) params = params.set('languageCode', languageCode);\n if (version) params = params.set('version', version);\n if (environment) params = params.set('environment', environment);\n\n let options = this.getAuthOptions();\n options['params'] = params;\n return this.http.get(url, options);\n } else {\n return throwError(response);\n }\n }\n\n getPrompts(reference = null): Observable {\n // console.log('Get Prompts');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const url = this.hostUrl + 'prompt?';\n let params: HttpParams = new HttpParams();\n if (reference) params = params.set('reference', reference);\n\n let options = this.getAuthOptions();\n options['params'] = params;\n return this.http.get(url, options);\n } else {\n return throwError(response);\n }\n }\n\n getPromptUser(reference = null): Observable {\n // console.log('Get Prompt User');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const url = this.hostUrl + 'promptuser?';\n let params: HttpParams = new HttpParams();\n if (reference) params = params.set('reference', reference);\n\n let options = this.getAuthOptions();\n options['params'] = params;\n return this.http.get(url, options);\n } else {\n return throwError(response);\n }\n }\n\n sendPromptReply(promptReply: tPromptUserReq): Observable {\n // console.log('Send Prompt Reply');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n let url = this.hostUrl + 'promptuser';\n return this.http.post(url, JSON.stringify(promptReply), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getUserActions(userActionRef: string): Observable {\n // console.log('Send User Action');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n let url;\n if (userActionRef) {\n url = this.hostUrl + 'useraction?reference=' + userActionRef;\n } else {\n url = this.hostUrl + 'useraction';\n }\n return this.http.get(url, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n sendUserAction(userActionBody): Observable {\n // console.log('Send User Action');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n const url = this.hostUrl + 'useraction';\n return this.http.post(url, userActionBody, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ************************** VE Calls **********************************/\n\n getVEs(): Observable {\n // console.log('Get virtual entities ' + this.applicationId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVE(veId: string): Observable {\n // console.log('Get virtual entity ' + veId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/' + veId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResourcesOfVE(veId: string): Observable {\n // console.log('Get virtual entity ' + veId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/' + veId + '/resources', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResourceLastTime(resourceId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(`${this.hostUrl}resource/${resourceId}/last-time`, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVETypes(): Observable {\n // console.log('Get virtual entity types ' + this.applicationId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'vetype/', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVEType(veTypeId: string): Observable {\n // console.log('Get virtual entity type ' + veTypeId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'vetype/' + veTypeId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getGroupedChildrenOfVe(veId: string): Observable {\n // console.log('getGroupedChildrenOfVe ' + veId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/' + veId + '/child?vechildmode=grouped', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVeState(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/' + veId + '/vestate', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVeGroup(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/' + veId + '/group', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n addChildrenToVe(parentVeId: string, childrenVEs: tVeIdListing[]): Observable {\n // console.log('Add virtual entity children ' + parentVeId);\n const addChildrenBody = {\n add: childrenVEs,\n };\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'virtualentity/' + parentVeId + '/child', JSON.stringify(addChildrenBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n removeChildrenFromVe(parentVeId: string, childVeId: string): Observable {\n // console.log('remove virtual entity children ' + parentVeId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'virtualentity/' + parentVeId + '/child/' + childVeId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n updateVirtualEntity(veId: string, updateBody: any): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(this.hostUrl + 'virtualentity/' + veId, JSON.stringify(updateBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n createVirtualEntityDocument(veId: string, body: any): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'virtualentity/' + veId + '/document', JSON.stringify(body), this.getAuthOptions());\n }\n return throwError(response);\n }\n\n updateVirtualEntityDocument(veId: string, documentId: string, updateBody: any): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(this.hostUrl + 'virtualentity/' + veId + '/document/' + documentId, JSON.stringify(updateBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVirtualEntityDocumentCount(veId: string, queryString?): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/' + veId + '/document/count?' + queryString, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n deactivateVirtualEntity(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'virtualentity/' + veId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVe10DayForecast({ veId, lat = null, lon = null, msl = 10, postcode = null, postcodeDistrict = null }): Observable {\n // console.log('Get weather forecast');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const url = this.hostUrl + 'virtualentity/' + veId + '/10dayweather?';\n let params: HttpParams = new HttpParams();\n if (lat && lon) {\n params = params.set('lat', lat);\n params = params.set('lon', lon);\n params = params.set('msl', msl.toString());\n } else if (postcode) {\n params = params.set('postcode', postcode);\n } else if (postcodeDistrict) {\n params = params.set('postcodeDistrict', postcodeDistrict);\n }\n const options = this.getAuthOptions();\n options['params'] = params;\n return this.http.get(url, options);\n } else {\n return throwError(response);\n }\n }\n\n updateVeResource(veId: string, resourceId: string, resourceUpdateBody: any, userId: string = null): Observable {\n // console.log('Update resource ' + resourceId + ' of virtual entity ' + veId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n const url = this.hostUrl + 'virtualentity/' + veId + '/resources/' + resourceId;\n return this.http.put(url, JSON.stringify(resourceUpdateBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVEDocumentList(veId: string, queryString = ''): Observable {\n // console.log('Get virtual entity document list ' + veId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/' + veId + '/document' + queryString, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVEDocumentByID(veId: string, documentId: string): Observable {\n // console.log('Get virtual entity document list ' + veId);\n // const response = this.performPreAPIChecksWithAuth();\n // if (response && response.isError === false) {\n\n return this.http.get(this.hostUrl + 'virtualentity/' + veId + '/document/' + documentId, this.getAuthOptionsCsv());\n // } else {\n // return throwError(response);\n // }\n }\n\n getVEDocumentByIDMedia(veId: string, documentId: string): Promise {\n const headers = {\n headers: {\n applicationId: this.applicationId,\n token: localStorage.getItem('id_token'),\n 'X-GLOW-Version': '0',\n },\n };\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return fetch(this.hostUrl + 'virtualentity/' + veId + '/document/' + documentId, headers)\n .then((res) => res.blob())\n .then((blob) => {\n return blob;\n });\n }\n }\n\n updateVEDocumentStatus(veId: string, documentId: string, status: string): Observable {\n // console.log('Get virtual entity document list ' + veId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.patch(this.hostUrl + 'virtualentity/' + veId + '/document/' + documentId + '/status', { status }, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n deleteVEDocumentByID(veId: string, documentId: string): Observable {\n // console.log('Get virtual entity document list ' + veId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'virtualentity/' + veId + '/document/' + documentId, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n getVirtualEntityAttributes(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'virtualentity/' + veId + '/attribute', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n addVirtualEntityAttributes(veId: string, updateBody: any): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(this.hostUrl + 'virtualentity/' + veId + '/attribute', JSON.stringify(updateBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n updateVirtualEntityAttributes(veId: string, updateBody: any): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(this.hostUrl + 'virtualentity/' + veId + '/attribute', JSON.stringify(updateBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n deleteVirtualEntityAttributes(veId: string, updateBody: any): Observable {\n const response = this.performPreAPIChecksWithAuth();\n const options = {\n headers: this.getAuthHeaders(),\n body: updateBody,\n };\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'virtualentity/' + veId + '/attribute', options);\n } else {\n return throwError(response);\n }\n }\n\n /**************************** Virtual Entity Access ******************************/\n\n getVeAccessOfUser(userOrganizationId = null): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n let url = this.hostUrl + 'veaccess?';\n if (userOrganizationId) {\n url += 'userOrganizationId=' + userOrganizationId;\n }\n return this.http.get(url, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVeAccessOfVirtualEntity(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'veaccess/ve/' + veId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVeAccessByUserGroup(userGroupId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'veaccess/usergroup/' + userGroupId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVeAccessByUser(userId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'veaccess/user/' + userId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n addVirtualEntityAccessForUser(veAccessBody: tVeAccessAddUser, resourcePermission: boolean = true): Observable {\n // console.log('Add virtual entity access ' + JSON.stringify(veAccessBody));\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'veaccess?resourcePermission=' + resourcePermission, JSON.stringify(veAccessBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n addVirtualEntityAccessForUserGroup(veAccessBody: tVeAccessAddUserGroup, resourcePermission: boolean = true): Observable {\n // console.log('Add virtual entity access ' + JSON.stringify(veAccessBody));\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'veaccess?resourcePermission=' + resourcePermission, JSON.stringify(veAccessBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n deleteVirtualEntityAccess(veAccessId: string): Observable {\n // console.log('Remove virtual entity access');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'veaccess/' + veAccessId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n checkHasVeAccess(veId: string): Observable {\n // console.log('Check user has access to ve ' + veId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'veaccess/ve/' + veId + '/permission', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n checkHasVeAdminAccess(veId: string): Observable {\n // console.log('Check user has admin access to ve ' + veId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'veaccess/ve/' + veId + '/permission/admin', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVeAccessAdminPermission(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'veaccess/ve/' + veId + '/permission/admin', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getVeAccessPermission(veId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'veaccess/ve/' + veId + '/permission', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ************************** Resource Calls **********************************/\n\n getResources(): Observable {\n // console.log('Get resources ' + this.applicationId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'resource/', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResource(resourceId: string): Observable {\n // console.log('Get resource ' + resourceId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'resource/' + resourceId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResourceReadingsAPI(url: string, newTimestampCacheIsValid: number, dimension = null): Observable {\n const response = this.performPreAPIChecksWithAuth();\n let conventToWmin = false;\n let conventTokWmin = false;\n if (response && response.isError === false) {\n return this.http.get(url, this.getAuthOptions()).pipe(\n map((res: any) => {\n const resource = res;\n // console.log('Getting from http');\n // console.log(url);\n let saveResource = false;\n\n if (dimension === 'Wmin') {\n conventToWmin = true;\n }\n if (dimension === 'kWmin') {\n conventTokWmin = true;\n }\n if (resource.data && Array.isArray(resource.data)) {\n for (let i = 0; i < resource.data.length; i++) {\n resource.data[i][0] = resource.data[i][0] * 1000;\n if (resource.data[i][1] === 18446744073709552000) {\n resource.data[i][1] = 0;\n }\n if (resource.data[i][1] !== 0 && saveResource === false) {\n saveResource = true;\n }\n if (resource.data[i][1]) {\n if (conventToWmin === true) {\n resource.data[i][1] = Number(resource.data[i][1].toFixed(2) * 60000);\n } else if (conventTokWmin === true) {\n resource.data[i][1] = Number(resource.data[i][1].toFixed(4) * 60);\n // If units in pence convert to £\n } else if (resource.units === 'pence') {\n resource.data[i][1] = Number((resource.data[i][1] / 100).toFixed(2));\n } else {\n resource.data[i][1] = Number(resource.data[i][1].toFixed(4));\n }\n }\n }\n }\n if (resource.units === 'pence') {\n resource.units = '£';\n }\n // console.log('Setting in storage');\n resource.timestampCacheIsValid = newTimestampCacheIsValid;\n if (saveResource === true) {\n this.storage.set(url, resource);\n } else {\n // console.log('Received data will not be put in cache');\n }\n return resource;\n }),\n catchError((error: any) => throwError(error))\n );\n } else {\n return throwError(response);\n }\n }\n\n getResourceReadings(resourceId: string, fromDate: string, toDate: string, period: string, func: string = 'sum', getFromHttp = false, dimension = null): Observable {\n const response = this.performPreAPIChecksNoNetwork();\n if (response && response.isError === false) {\n const offset = localStorage.getItem('offset');\n // console.log(\n // 'Get resource readings ' +\n // resourceId +\n // ' for app=' +\n // this.applicationId +\n // ' offset ' +\n // offset +\n // ' funct ' +\n // func\n // );\n // use a hash of the resource URL query and store the result\n let url: string;\n if (offset && offset != '0') {\n url = this.hostUrl + 'resource/' + resourceId + '/readings?from=' + fromDate + '&to=' + toDate + '&period=' + period + '&offset=' + offset + '&function=' + func;\n } else {\n url = this.hostUrl + 'resource/' + resourceId + '/readings?from=' + fromDate + '&to=' + toDate + '&period=' + period + '&function=' + func;\n }\n\n const currentDatetime = new Date();\n const currentDate = this.dateFormatService.apiTimeFormat(new Date());\n let maxCacheDate = this.dateFormatService.apiTimeFormat(new Date(currentDatetime.getFullYear(), currentDatetime.getMonth(), currentDatetime.getDate() + 1, 23, 59, 59));\n let minCacheDate = this.dateFormatService.apiTimeFormat(new Date(currentDatetime.getFullYear(), currentDatetime.getMonth(), currentDatetime.getDate(), currentDatetime.getHours(), currentDatetime.getMinutes() + 30, 59));\n\n // if is after 23:00 set the cache to current date\n if (currentDatetime.getHours() >= 22) {\n minCacheDate = currentDate;\n }\n var newTimestampCacheIsValid;\n\n if (currentDate > toDate) {\n newTimestampCacheIsValid = maxCacheDate;\n // // console.log('Valid Timestamp Cache set to maximum', maxCacheDate, toDate, fromDate)\n } else {\n // // console.log('Valid Timestamp Cache set to minimum', minCacheDate, toDate, fromDate)\n newTimestampCacheIsValid = minCacheDate;\n }\n\n //Get from http (force refresh)\n if (getFromHttp === true) {\n return this.getResourceReadingsAPI(url, newTimestampCacheIsValid, dimension);\n } else {\n //Look into cache first\n return from(this.getDataFromStorage(url)) //convert to Promise and return chain.\n .pipe(\n switchMap((value) => {\n //use Observable.switchMap to move to second observable\n var proceedWithHTTP = false;\n if (value != null) {\n // console.log('Getting from cache ' + url);\n if (value.timestampCacheIsValid) {\n // // console.log('Timestamp Cache is valid', value.timestampCacheIsValid)\n // // console.log('TImestamp now', currentDate)\n\n if (value.timestampCacheIsValid <= currentDate) {\n // console.log('Cache is no longer valid, proceeding with http');\n proceedWithHTTP = true;\n }\n } else {\n // console.log('No timestamp to check validity of cache, proceeding with http');\n proceedWithHTTP = true;\n }\n } else {\n // console.log('No data was found in cache, proceeding with http');\n proceedWithHTTP = true;\n }\n\n if (proceedWithHTTP === true) {\n return this.getResourceReadingsAPI(url, newTimestampCacheIsValid, dimension);\n } else {\n // console.log('Returning from cache ' + url);\n // console.log(value);\n return of(JSON.parse(JSON.stringify(value)));\n }\n })\n );\n }\n } else {\n return throwError(response);\n }\n }\n\n getBalanceResourceReadings(resourceId: string, fromDate: string, toDate: string, getFromHttp = false, dimension = null): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n const offset = localStorage.getItem('offset');\n // console.log('Get resource readings ' + resourceId + ' for app=' + this.applicationId + ' offset ' + offset);\n // use a hash of the resource URL query and store the result\n let url: string;\n if (offset && offset != '0') {\n url = this.hostUrl + 'resource/' + resourceId + '/readings?from=' + fromDate + '&to=' + toDate;\n } else {\n url = this.hostUrl + 'resource/' + resourceId + '/readings?from=' + fromDate + '&to=' + toDate;\n }\n\n const currentDatetime = new Date();\n const currentDate = this.dateFormatService.apiTimeFormat(new Date());\n let maxCacheDate = this.dateFormatService.apiTimeFormat(new Date(currentDatetime.getFullYear(), currentDatetime.getMonth(), currentDatetime.getDate() + 1, 23, 59, 59));\n let minCacheDate = this.dateFormatService.apiTimeFormat(new Date(currentDatetime.getFullYear(), currentDatetime.getMonth(), currentDatetime.getDate(), currentDatetime.getHours(), currentDatetime.getMinutes() + 30, 59));\n\n // if is after 23:00 set the cache to current date\n if (currentDatetime.getHours() >= 22) {\n minCacheDate = currentDate;\n }\n var newTimestampCacheIsValid;\n\n if (currentDate > toDate) {\n newTimestampCacheIsValid = maxCacheDate;\n } else {\n newTimestampCacheIsValid = minCacheDate;\n }\n\n //Get from http (force refresh)\n if (getFromHttp === true) {\n return this.getResourceReadingsAPI(url, newTimestampCacheIsValid, dimension);\n } else {\n //Look into cache first\n return from(this.getDataFromStorage(url)) //convert to Promise and return chain.\n .pipe(\n switchMap((value) => {\n //use Observable.switchMap to move to second observable\n var proceedWithHTTP = false;\n if (value != null) {\n // console.log('Getting from cache ' + url);\n if (value.timestampCacheIsValid) {\n // // console.log('Timestamp Cache is valid', value.timestampCacheIsValid)\n // // console.log('TImestamp now', currentDate)\n\n if (value.timestampCacheIsValid <= currentDate) {\n // console.log('Cache is no longer valid, proceeding with http');\n proceedWithHTTP = true;\n }\n } else {\n // console.log('No timestamp to check validity of cache, proceeding with http');\n proceedWithHTTP = true;\n }\n } else {\n // console.log('No data was found in cache, proceeding with http');\n proceedWithHTTP = true;\n }\n\n if (proceedWithHTTP === true) {\n return this.getResourceReadingsAPI(url, newTimestampCacheIsValid, dimension);\n } else {\n // console.log('Returning from cache ' + url);\n // console.log(value);\n return of(value);\n }\n })\n );\n }\n } else {\n return throwError(response);\n }\n }\n\n getForecastResourceReadings(resourceId: string, fromDate: string, toDate: string, period: string, func: string = 'sum', offset: string = '0', forecastType: string = 'long', getFromHttp = false, dimension = null): Observable {\n const response = this.performPreAPIChecksNoNetwork();\n if (response && response.isError === false) {\n // console.log(\n // 'Get forecast resource readings ' +\n // resourceId +\n // ' for app=' +\n // this.applicationId +\n // ' offset ' +\n // offset +\n // ' funct ' +\n // func\n // );\n // use a hash of the resource URL query and store the result\n let url: string;\n if (offset && offset != '0') {\n url = this.hostUrl + 'resource/' + resourceId + '/readings?from=' + fromDate + '&to=' + toDate + '&period=' + period + '&forecastType=' + forecastType + '&offset=' + offset + '&function=' + func;\n } else {\n url = this.hostUrl + 'resource/' + resourceId + '/readings?from=' + fromDate + '&to=' + toDate + '&period=' + period + '&forecastType=' + forecastType + '&function=' + func;\n }\n\n // console.log('url', url);\n\n const currentDatetime = new Date();\n const currentDate = this.dateFormatService.apiTimeFormat(new Date());\n let maxCacheDate = this.dateFormatService.apiTimeFormat(new Date(currentDatetime.getFullYear(), currentDatetime.getMonth(), currentDatetime.getDate() + 1, 23, 59, 59));\n let minCacheDate = this.dateFormatService.apiTimeFormat(new Date(currentDatetime.getFullYear(), currentDatetime.getMonth(), currentDatetime.getDate(), currentDatetime.getHours(), currentDatetime.getMinutes() + 30, 59));\n\n // if is after 23:00 set the cache to current date\n if (currentDatetime.getHours() >= 22) {\n minCacheDate = currentDate;\n }\n var newTimestampCacheIsValid;\n\n if (currentDate > toDate) {\n newTimestampCacheIsValid = maxCacheDate;\n } else {\n newTimestampCacheIsValid = minCacheDate;\n }\n\n //Get from http (force refresh)\n if (getFromHttp === true) {\n return this.getResourceReadingsAPI(url, newTimestampCacheIsValid, dimension);\n } else {\n //Look into cache first\n return from(this.getDataFromStorage(url)) //convert to Promise and return chain.\n .pipe(\n switchMap((value) => {\n //use Observable.switchMap to move to second observable\n var proceedWithHTTP = false;\n if (value != null) {\n // console.log('Getting from cache ' + url);\n if (value.timestampCacheIsValid) {\n if (value.timestampCacheIsValid <= currentDate) {\n // console.log('Cache is no longer valid, proceeding with http');\n proceedWithHTTP = true;\n }\n } else {\n // console.log('No timestamp to check validity of cache, proceeding with http');\n proceedWithHTTP = true;\n }\n } else {\n // console.log('No data was found in cache, proceeding with http');\n proceedWithHTTP = true;\n }\n if (proceedWithHTTP === true) {\n return this.getResourceReadingsAPI(url, newTimestampCacheIsValid, dimension);\n } else {\n // console.log('Returning from cache ' + url);\n // console.log(value);\n return of(value);\n }\n })\n );\n }\n } else {\n return throwError(response);\n }\n }\n\n getGroupedResourceAPI(url: string, newTimestampCacheIsValid: number): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(url, this.getAuthOptions()).pipe(\n map((res: any) => {\n let resource = res;\n // console.log('Getting from http');\n var saveResource = false;\n\n if (resource.data && Array.isArray(resource.data)) {\n for (let i = 0; i < resource.data.length; i++) {\n resource.data[i][0] = resource.data[i][0] * 1000;\n if (resource.data[i][1] == 18446744073709552000) {\n resource.data[i][1] = 0;\n }\n if (resource.data[i][1] != 0 && saveResource === false) {\n saveResource = true;\n }\n if (resource.data[i][1]) {\n resource.data[i][1] = Number(resource.data[i][1].toFixed(4));\n }\n }\n }\n // console.log('Setting in storage');\n resource.timestampCacheIsValid = newTimestampCacheIsValid;\n if (saveResource === true) {\n this.storage.set(url, resource);\n } else {\n // console.log('Received data will not be put in cache');\n }\n return resource;\n }),\n catchError((error: any) => throwError(error))\n );\n } else {\n return throwError(response);\n }\n }\n\n getGroupedResource(resourceId: string, fromDate: string = null, toDate: string = null, getFromHttp = false): Observable {\n // console.log('getGroupedResource');\n\n const response = this.performPreAPIChecksNoNetwork();\n if (response && response.isError === false) {\n const offset = localStorage.getItem('offset');\n // console.log('Get resource readings ' + resourceId + ' for app=' + this.applicationId + ' offset ' + offset);\n // use a hash of the resource URL query and store the result\n let url: string;\n\n if (fromDate && toDate) {\n url = this.hostUrl + 'resource/' + resourceId + '/readings?from=' + fromDate + '&to=' + toDate;\n } else {\n url = this.hostUrl + 'resource/' + resourceId + '/readings';\n }\n\n const currentDatetime = new Date();\n const currentDate = this.dateFormatService.apiTimeFormat(new Date());\n let maxCacheDate = this.dateFormatService.apiTimeFormat(new Date(currentDatetime.getFullYear(), currentDatetime.getMonth(), currentDatetime.getDate() + 1, 23, 59, 59));\n let minCacheDate = this.dateFormatService.apiTimeFormat(new Date(currentDatetime.getFullYear(), currentDatetime.getMonth(), currentDatetime.getDate(), currentDatetime.getHours(), currentDatetime.getMinutes() + 30, 59));\n\n // if is after 23:00 set the cache to current date\n if (currentDatetime.getHours() >= 22) {\n minCacheDate = currentDate;\n }\n\n var newTimestampCacheIsValid;\n if (currentDate > toDate) {\n newTimestampCacheIsValid = maxCacheDate;\n } else {\n newTimestampCacheIsValid = minCacheDate;\n }\n\n //Get from http (force refresh)\n if (getFromHttp === true) {\n return this.getGroupedResourceAPI(url, newTimestampCacheIsValid);\n } else {\n //Look into cache first\n return from(this.getDataFromStorage(url)) //convert to Promise and return chain.\n .pipe(\n switchMap((value) => {\n //use Observable.switchMap to move to second observable\n var proceedWithHTTP = false;\n if (value != null) {\n // console.log('Getting from cache ' + url);\n if (value.timestampCacheIsValid) {\n if (value.timestampCacheIsValid <= currentDate) {\n // console.log('Cache is no longer valid, proceeding with http');\n proceedWithHTTP = true;\n }\n } else {\n // console.log('No timestamp to check validity of cache, proceeding with http');\n proceedWithHTTP = true;\n }\n } else {\n // console.log('No data was found in cache, proceeding with http');\n proceedWithHTTP = true;\n }\n\n if (proceedWithHTTP === true) {\n return this.getGroupedResourceAPI(url, newTimestampCacheIsValid);\n } else {\n // console.log('Returning from cache ' + url);\n // console.log(value);\n return of(value);\n }\n })\n );\n }\n } else {\n return throwError(response);\n }\n }\n\n getResourceFirstTime(resourceId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'resource/' + resourceId + '/firsttime', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getDataFromStorage(key: string): Promise {\n return this.storage.get(key);\n }\n\n getResourceSummaryReadings(resourceId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'resource/' + resourceId + '/summary', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResourceCurrentReading(resourceId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'resource/' + resourceId + '/current', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResourceMeterReading(resourceId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'resource/' + resourceId + '/meterread', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResourceTariff(resourceId: string): Observable {\n // console.log('Get resource tariff ' + resourceId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'resource/' + resourceId + '/tariff', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResourceTypes(): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'resourcetype/', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResourceType(resourceTypeId: string): Observable {\n // console.log('Get resource type ' + resourceTypeId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'resourcetype/' + resourceTypeId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ************************** Device Calls / Provisioning *********************************/\n getDevices(tag = null): Observable {\n // console.log('Get devices ');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n let url = this.hostUrl + 'device?';\n if (tag) {\n url += 'tags=' + tag;\n }\n return this.http.get(url, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getDevice(deviceId: string): Observable {\n // console.log('Get device ' + deviceId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'device/' + deviceId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getDeviceByResourceId(resourceId: string): Observable {\n // console.log('Get device by resource Id ' + resourceId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'device/resource/' + resourceId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getDeviceStatus(deviceId: string): Observable {\n // console.log('Get device status ' + deviceId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'device/' + deviceId + '/status', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getDeviceRegisters(deviceId: string): Observable {\n // console.log(`Get device registers ${deviceId}`);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(`${this.hostUrl}device/${deviceId}/registers`, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // getDeviceBalance(deviceId: string): Observable {\n // // console.log(`Get device balance ${deviceId}`);\n // const response = this.performPreAPIChecksWithAuth();\n // if (response && response.isError === false) {\n // return this.http.get(`${this.hostUrl}device/${deviceId}/balance`, this.getAuthOptions());\n // } else {\n // return throwError(response);\n // }\n // }\n\n // getDeviceBalanceByHardwareId(hardwareId: string): Observable {\n // // console.log(`Get device balance ${hardwareId}`);\n // const response = this.performPreAPIChecksWithAuth();\n // if (response && response.isError === false) {\n // return this.http.get(`${this.hostUrl}device/balance?tags=${hardwareId}`, this.getAuthOptions());\n // } else {\n // return throwError(response);\n // }\n // }\n\n getDeviceSetting(setting: string, deviceId: string, params: any = {}): Observable {\n // console.log('Get device setting' + deviceId);\n const response = this.performPreAPIChecksWithAuth();\n\n let url = `${this.hostUrl}device/${deviceId}/settings/${setting}?`;\n if (params) {\n const { operation } = params;\n url = `${url}operation=${operation}`;\n }\n\n if (response && response.isError === false) {\n return this.http.get(url, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n setDeviceSetting(setting: string, deviceId: string, settingBody: any): Observable {\n // console.log('setDeviceSetting ' + deviceId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'device/' + deviceId + '/settings/' + setting, JSON.stringify(settingBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getResourceDevice(resourceId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'device/resource/' + resourceId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n refreshResourceBinary(resourceId: string): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(`${this.hostUrl}resource/${resourceId}/glowbinary?clearCache=1`, {}, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // TODO fix typing for product\n getProduct(productId: string): Observable {\n // console.log('Get product ' + productId);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'product/' + productId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getGlowStickAccessPointCredentials(hardwareDetails: tDiscoveryInfo): Observable {\n // console.log('getGlowStickAccessPointCredentials');\n const response = this.performPreAPIChecksWithoutAuth();\n\n if (response && response.isError === false) {\n if (hardwareDetails && hardwareDetails.hasOwnProperty('MAC') && hardwareDetails.hasOwnProperty('serialNumber')) {\n let params: HttpParams = new HttpParams();\n params = params.set('MAC', hardwareDetails.MAC);\n params = params.set('serialNumber', hardwareDetails.serialNumber);\n let options = this.getNoAuthOptions();\n options['params'] = params;\n return this.http.get(this.hostUrl + 'wifisetup?', options);\n } else {\n return throwError('missing query parameters, MAC, serial Number');\n }\n } else {\n return throwError(response);\n }\n }\n\n discoverHardware(hardwareInfo: tDiscoveryInfo): Observable {\n // console.log('Discover assets and devices');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'discover', JSON.stringify(hardwareInfo), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n addKit(hardwareInfo: tDiscoveryInfo): Observable {\n // console.log('Add kit');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n const provisionBody = hardwareInfo;\n return this.http.post(this.hostUrl + 'provision/devices/' + this.applicationName, JSON.stringify(provisionBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n onboardSmartMeterEuiPostcode(euiPostcode: tEuiPostcode): Observable {\n // console.log('onboardSmartMeterEuiPostcode');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(`${this.hostUrl}provision/eui-postcode`, JSON.stringify(euiPostcode), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n onboardSmartMeterMpxnAvs({ mpxn, consent }): Observable {\n // POST 'https://HOST_GLOW/api/v0-1/provision/smart-meter-mpxn-avs'\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(`${this.hostUrl}provision/smart-meter-mpxn-avs`, JSON.stringify({ consent, mpxn: { key: 'mpan', value: mpxn } }), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n addChildDevice(provisionBody: tProvisioningAddChildDeviceReq) {\n // console.log('Add Sensor');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'provision/devices/children', JSON.stringify(provisionBody), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ****************************** EligibilityChecks ******************************************/\n checkSmetsIhdPostcodeIsEligible(data: tEligibitySmetsIhdPostcodeCheck) {\n // console.log('Add Sensor');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.rateLimitingHostUrl + 'eligibility/checksmetsihd/postcode', JSON.stringify(data), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n checkMpxnAvailableFuelTypes(data: tEligibitySmetsFuelTypesReq): Observable {\n // console.log('Add Sensor');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.rateLimitingHostUrl + 'eligibility/checksmetsmpxn/fuels', JSON.stringify(data), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n checkSmetsMpxnIsEligible(data: tEligibitySmetsFuelTypesReq): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.rateLimitingHostUrl + 'eligibility/checksmetsmpxn', JSON.stringify(data), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n gethealthCheckReport(userOrganizationId: string, reportType: string): Observable {\n // console.log('getHealthCheckReport');\n let url = this.hostUrl + `devices/report/mpxn-health-check/userorganization/${userOrganizationId}?reportType=${reportType}`;\n return this.http.get(url, this.getAuthOptions());\n }\n\n gethealthCheckCount(userOrganizationId: string, reportType: string): Observable {\n // console.log('getHealthCheckReport');\n let url = this.hostUrl + `devices/report/mpxn-health-check-count/userorganization/${userOrganizationId}?reportType=${reportType}`;\n return this.http.get(url, this.getAuthOptions());\n }\n\n // getmeterPointVerification(): Observable {\n // // console.log(\"getMeterPointVerification\");\n // let url = this.hostUrl + `provision/meter-points/smart-meter-consent`;\n // // console.log(\"the url \")\n // // console.log(url)\n // return this.http.get(url, this.getAuthOptions());\n // }\n\n postmeterPointBulkConsent(bulkmeter: any): Observable {\n // console.log('getMeterPointVerification');\n let url = this.hostUrl + `provision/meter-points/smart-meter-consent`;\n // console.log('the url ');\n // console.log(url);\n return this.http.post(this.hostUrl + 'provision/meter-points/smart-meter-consent/bulk-consent', JSON.stringify(bulkmeter), this.getAuthOptions());\n }\n\n postmeterPointRemoveConsent(bulkmeter: any): Observable {\n // console.log('getMeterPointVerification');\n let url = this.hostUrl + `provision/meter-points/smart-meter-consent`;\n // console.log('the url ');\n // console.log(url);\n return this.http.post(this.hostUrl + 'user/verification/status/mpxns/revocation', JSON.stringify(bulkmeter), this.getAuthOptions());\n }\n\n // gethealthCheckReport( userOrganizationId: string, reportType: string): Promise {\n // // console.log('getHealthCheckReport');\n // let url = this.hostUrl + `devices/report/mpxn-health-check/userorganization/${userOrganizationId}?reportType=${reportType}`;\n\n // return new Promise((resolve, reject) => {\n // this.http.get(url, this.getAuthOptions( )).subscribe((response: any) => {\n // // console.log(\"the result of health check \")\n // // console.log(JSON.stringify(response))\n // resolve(response);\n // }, reject);\n // });\n\n // //return this.http.get(url, this.getAuthOptions( ))\n // }\n\n // ****************************** Message/Alert Calls ******************************************/\n\n getInboxStatus(): Observable {\n // console.log('Get inbox status');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'inbox/message/status', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getInboxMessages(): Observable {\n // console.log('Get inbox messages');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'inbox/message', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n readInboxMessage(messageId: string): Observable {\n // console.log('Read inbox message');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'inbox/message/' + messageId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n deleteInboxMessage(messageId: string): Observable {\n // console.log('deleteInboxMessage');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n const messagesToBeDeleted = {\n MessageIds: [messageId],\n };\n return this.http.post(this.hostUrl + 'inbox/message/delete', JSON.stringify(messagesToBeDeleted), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n deleteInboxMessages(messageIds: string[]): Observable {\n // console.log('deleteInboxMessages');\n const response = this.performPreAPIChecksWithAuth();\n\n if (response && response.isError === false) {\n const messagesToBeDeleted = {\n MessageIds: messageIds,\n };\n return this.http.post(this.hostUrl + 'inbox/message/delete', JSON.stringify(messagesToBeDeleted), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n // ****************************** Notification Calls ******************************************/\n getTemplates(applicationId = ''): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'ns/template', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getTemplatebyProperties(alertTypeId: string, channelType: string, cultureCode: string): Observable {\n // note that the applicationId is an optional parameter and needs to be listed last\n //https://www.typescriptlang.org/docs/handbook/functions.html\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n // console.log('getTemplatebyProperties');\n // console.log(\n // 'Get template for app ' + this.applicationId + ' alert Type ' + alertTypeId + channelType + cultureCode\n // );\n return this.http.get(this.hostUrl + 'ns/template/' + alertTypeId + '/' + channelType + '/' + cultureCode, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n sendAlert(alertInfo: any, applicationId = ''): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n // console.log('Send Alert');\n return this.http.post(this.hostUrl + 'ns/alert', JSON.stringify(alertInfo), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getAlertTypes(): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n // console.log('Get alert types');\n return this.http.get(this.hostUrl + 'ns/alerttype', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getAlertsOfUser(userId, applicationId = ''): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n // console.log('Get alerts');\n return this.http.get(this.hostUrl + 'ns/alert/user/' + userId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getAlertsOfUserGroup(userGroupId, applicationId = ''): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n // console.log('Get alerts, getAlertsOfUserGroup');\n // use a Promise in this instance as it is a straight forward single GET\n return this.http.get(this.hostUrl + 'ns/alert/usergroup/' + userGroupId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ****************************** Ticket Calls ******************************************/\n\n createTicket(ticket: any): Observable {\n // console.log('Create ticket');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'ticket', JSON.stringify(ticket), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ****************************** Payment Calls ******************************************/\n // October 2019 (better doc required eventually). Expected input is:\n // {\"amount\": 0.0,\"cardType\":\"MC_DEBIT\",\"cardToken\":\"PAYPOINT TOKEN\",\"cardholderName\":\"firstName lastName\",\"expiryDate\":\"MM/YYYY\",\"cvv\":\"000\"}\n makePayment(paymentInfo: any, paymentProvider: string): Observable {\n // console.log('Make payment');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'payment/' + paymentProvider, JSON.stringify(paymentInfo), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getPaymentTransaction(transactionId: string): Observable {\n // console.log('Get Payment Transaction');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'payment/transaction/' + transactionId + '/callback', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getSavedCards(paymentProvider: string): Observable {\n // console.log('Get Saved Cards');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'paymentmethod/' + paymentProvider, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n removeSavedCard(paymentCardId: string): Observable {\n // console.log('Remove Saved Card');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'paymentmethod/paypoint/' + paymentCardId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getPaymentLocation(paymentProvider: string, searchCriteria): Observable {\n // console.log('Get payment provider location');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(`${this.hostUrl}payment/${paymentProvider}/locations?search=${searchCriteria}`, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n saveCard(paymentInfo: any, paymentProvider: string): Observable {\n // console.log('Save Card');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'paymentmethod/' + paymentProvider, JSON.stringify(paymentInfo), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n paymentValidation(paymentInfo: any, paymentType: string): Observable {\n // console.log('Payment Validation');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'payment/' + paymentType + '/validation', JSON.stringify(paymentInfo), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // ****************************** Event Calls ******************************************/\n\n //App events typically trigger a customised process\n sendAppEvent(applicationEvent: tApplicationEventReq[]): Observable {\n // console.log('Send App Event');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'appevent', JSON.stringify(applicationEvent), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n //Glow events are used to log events that we care about happening to a user.\n sendGlowEvent(glowEvent: tGlowEventReq): Observable {\n // console.log('Send Glow Event');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'glowevent', JSON.stringify(glowEvent), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n onError(res: HttpResponse) {\n const statusCode = res.status;\n const body = res;\n const error = {\n statusCode: statusCode,\n error: body['error'],\n };\n return throwError(error);\n }\n\n public isLoggedIn(): boolean {\n const token = localStorage.getItem('id_token');\n if (token) {\n if (this.jwtHelper.isTokenExpired(token) == false) {\n return true;\n } else {\n console.warn('Token expired');\n }\n } else {\n console.warn('Token non-existent');\n }\n return false;\n }\n\n // ************************** Token Check *******************************/\n /* This function is the same as loggedIn but also does the following:\n 1. If token not good,\n i) it logs the user out\n ii) emits a logout event (this is picked up by app component that is responsible for setting root page)\n 2. If token good: it checks at whether the token should be refreshed.\n A token is good if it is not expired. (note: this function does not check the token in the back-end system)\n */\n public checkExistingToken(): boolean {\n const loggedIn = this.isLoggedIn();\n\n if (loggedIn === false) {\n this.emitLogOut();\n }\n return loggedIn;\n }\n\n checkValidateExistingToken(): void {\n const validToken = this.checkExistingToken();\n if (validToken === true) {\n this.validateToken().subscribe(\n (validToken) => {\n // console.log('Validate Token HttpResponse');\n // console.log(validToken);\n if (validToken && validToken.hasOwnProperty('valid') && validToken.valid == true) {\n this.checkRefreshToken();\n } else {\n this.emitLoggingOut();\n }\n },\n (error) => {\n console.warn('validateToken returns with error');\n console.warn(error);\n let emitLogOut = true;\n // Do not emit logout if there is a network error.\n if (error && error.hasOwnProperty('messages') && Array.isArray(error.messages) && error.messages.length > 0) {\n for (let i = 0; i < error.messages.length; i++) {\n if (error.messages[i] == 'ERROR_NO_NETWORK') {\n emitLogOut = false;\n }\n }\n if (emitLogOut === true) {\n console.warn('Token Validity Check Error : ' + error);\n this.emitLoggingOut();\n }\n }\n }\n );\n }\n }\n\n // Function that checks expiration date on existing token and evaluates whether it should refresh the token.\n checkRefreshToken(forceUpdate = false): void {\n const token = localStorage.getItem('id_token');\n if (token) {\n const tokenExpirationDate = this.jwtHelper.getTokenExpirationDate(token);\n // // console.log(tokenExpirationDate);\n\n // Step 1. Check the limit after which we can proceed with expiring a token\n let numberOfDaysBeforeExpiry = this.configService.getTokenRefreshParameters();\n\n if (numberOfDaysBeforeExpiry > 6) {\n console.warn('Setting numberOfDaysBeforeExpiry to default');\n numberOfDaysBeforeExpiry = 6;\n }\n const minExpiryDate = new Date(new Date().getTime() + numberOfDaysBeforeExpiry * 24 * 60 * 60 * 1000);\n\n if (tokenExpirationDate <= minExpiryDate || forceUpdate === true) {\n // console.log('Will Refresh token due to forceUpdate: ' + forceUpdate + ' or expiry ' + !forceUpdate);\n // TO DO. trigger respective call . Need to take care that we are not in the middle of multiple\n // calls being made bcs refresh token makes other token invalid (?).\n this.refreshToken().subscribe(\n (newToken) => {\n if (newToken && newToken.hasOwnProperty('valid') && newToken.hasOwnProperty('token')) {\n // console.log('Setting new token', newToken);\n\n if (newToken.valid == true) {\n this.setToken(newToken.token);\n }\n }\n },\n (error) => {\n // console.log('Token Validity Check Error : ' + error);\n }\n );\n } else {\n // console.log('Token not required to be refreshed, skipping');\n }\n }\n }\n\n public isAuthenticated(): Observable {\n return of(this.checkExistingToken());\n }\n\n setToken(token: string) {\n localStorage.setItem('id_token', token);\n }\n\n //This event activates toasts and features when the application actively logs someone out, use with caution\n emitLoggingOut() {\n // console.log('emitting logging out');\n this.getAuthEvent.emit('user:logging_out');\n this.getAuthEvent.emit('user:logout');\n }\n\n emitLogIn() {\n // console.log('emitting login ');\n this.getAuthEvent.emit('user:loggedIn');\n }\n\n emitLogOut() {\n // console.log('emitting logout');\n this.getAuthEvent.emit('user:logout');\n }\n\n //removes token, name and accountId from localStorage\n //reomoves ve\n deleteJwt() {\n // console.log('deleteJWT token from local storage');\n localStorage.removeItem('id');\n localStorage.removeItem('id_token');\n localStorage.removeItem('name');\n localStorage.removeItem('isTempAuth');\n localStorage.removeItem('passport');\n localStorage.removeItem('manualHTC');\n localStorage.removeItem('selectedService');\n this.storage.remove('selectedVeApplicationDetails'); // Should not be here\n return;\n }\n\n saveJwt(data: any): boolean {\n // console.log(data);\n if (data.valid === true) {\n // console.log('got a token and storing JWT locally');\n localStorage.setItem('id_token', data.token);\n localStorage.setItem('id', data.accountId);\n localStorage.setItem('name', data.name);\n if (data.isTempAuth === true) {\n localStorage.setItem('isTempAuth', data.isTempAuth);\n }\n this.emitLogIn();\n return true;\n }\n return false;\n }\n\n /* Septemeber 2018. \n This function is responsible for checking the status of external directory services.\n This check may be required for some applications and is depndedant firstly on the external authentication systems used,\n and secondly on the functionality, requirements and user journey that the app supports. It could be the case that \n in order to perform specific action a user will need to have a valid external authentication token, in addition to\n their Glow JWT token.\n */\n checkExternalDirectory() {\n this.getAccountStatus().subscribe(\n (accountStatus) => {\n // console.log('Account Status successfully retrieved', accountStatus);\n\n if (accountStatus && accountStatus.directory && accountStatus.directory.data && accountStatus.directory.data.tokenExpiryDate) {\n var minimumExpiryDate = new Date(new Date().getTime() + 60 * 60 * 1000); // The token should have at least one hour of life.\n // console.log(new Date(accountStatus.directory.data.tokenExpiryDate), minimumExpiryDate);\n if (new Date(accountStatus.directory.data.tokenExpiryDate) <= minimumExpiryDate) {\n console.warn('External token is about to expire, logging out');\n this.emitLoggingOut();\n } else {\n // console.log('Token not required to be refreshed');\n }\n }\n },\n (error) => {\n // console.log('Account Status loading error is : ' + error);\n console.warn(error);\n }\n );\n }\n\n isTempAuth(): boolean {\n return localStorage.getItem('isTempAuth') === 'true' ? true : false;\n }\n\n // ************************** Groups *******************************/\n\n createGroup(groupBody: tDataGroupCreateReq): Observable {\n // console.log('create group ' + groupBody);\n // console.log('the body sending to the groups system @glowservice ' + JSON.stringify(groupBody));\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'data-group/group/entities', groupBody, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n addEntitiesToGroup(groupId: string, groupBody: any): Observable {\n // console.log('add entities to group ' + groupBody);\n // console.log('the body sending to the groups system @glowservice ' + JSON.stringify(groupBody));\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'data-group/group/' + groupId + '/entities', groupBody, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n registerDFSEventParticipation(eventInfo): Observable {\n // console.log('register user to dfs event');\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + '/public-dfs/event/user/participation', eventInfo, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n /// request estimates\n\n validateVirtualEntityRequirements(veId) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n // let headers: HttpHeaders = new HttpHeaders({\n // userId: 'f2c4c4b6-df3e-4688-aa8f-0d6f603db9d6',\n // applicationId: 'b0f1b774-a586-4f72-9edd-27ead8aa7a8d',\n // });\n return this.http.get(this.hostUrl + 'estimate-requirement/heat-pump-estimate/virtual-entity/' + veId + '/validation', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getSnapshotBySnapshotId(snapshotId) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'snapshot/' + snapshotId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n findAllEstimateRequestsByUserId(showProfessionalMeta?): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + `estimate-request?includeProfessionalMeta=${showProfessionalMeta ? true : false}`, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n findEstimateRequestsByVeIdAndState(veId, showProfessionalMeta = false, state = '') {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + '/estimate-request/virtual-entity/' + veId + `/lookup?estimateRequestState=${state}&includeProfessionalMeta=${showProfessionalMeta}`, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n // findAllEstimateRequestsByState(state) {\n // const response = this.performPreAPIChecksWithoutAuth();\n // if (response && response.isError === false) {\n // return this.http.get(this.hostUrl + 'service-agent/estimate-requests?state=' + state, this.getOAuthOptions());\n // } else {\n // return throwError(response);\n // }\n // }\n\n createEstimateRequest(body, veId) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'estimate-request/virtual-entity/' + veId, JSON.stringify(body), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n updateEstimateRequestUserState(body, estimateRequestId) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(this.hostUrl + 'estimate-request/' + estimateRequestId + '/state', JSON.stringify(body), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getMpanInventory(mpan) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + '/device/meter-point/' + mpan + '/inventory', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n updateEstimateRequest(body, estimateRequestId, veId) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(this.hostUrl + 'estimate-request/' + estimateRequestId + '/virtual-entity/' + veId + '/accept', JSON.stringify(body), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getEstimateCustomer(estimateId) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'estimate-response/' + estimateId, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getEstimateRequestById(estimateId) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'estimate-request/' + estimateId, this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n updateEstimateRequestByCustomer(estimateRequestId, body) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(this.hostUrl + 'estimate-request/' + estimateRequestId + '/update', JSON.stringify(body), this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n checkUserEmailLogin(body) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'user/determine-login/', JSON.stringify(body), this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getUserVerificationStatus(): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(`${this.hostUrl}user/verification/status`, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n renewMeterPointVerification({ mpxn }: any) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(`${this.hostUrl}user/verification/status/mpxn/${mpxn}/renewal`, {}, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n revokeMeterPointVerification({ mpxn, isValidUntil }: any) {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(`${this.hostUrl}user/verification/status/mpxn/${mpxn}/revocation`, { isValidUntil }, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getUserVerificationStatusRevocations(): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(`${this.hostUrl}user/verification/status/mpxn/revocation`, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n declineEstimateRequest(estimateRequestId, veId): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(`${this.hostUrl}estimate-request/${estimateRequestId}/virtual-entity/${veId}/decline`, {}, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n // ****************************** Stripe Calls ******************************************/\n\n srtipeSetUpCustomer(): Observable {\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'payment/stripe/setup', {}, this.getAuthOptions());\n }\n return throwError(response);\n }\n\n stripeSetupIntent(): Observable {\n console.log('stripeSetupIntent');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'paymentmethod/stripe', { usage: 'on_session' }, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getPaymentMethods(): Observable {\n console.log('Get user groups');\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'paymentmethod/stripe', this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n deleteSavedCard(id) {\n console.log('deleteSavedCard', id);\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.delete(this.hostUrl + 'paymentmethod/stripe/' + id, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n updateDefaultPaymentMethod(paymentMethodId: string) {\n console.log(`updateDefaultPaymentMethod ${paymentMethodId}`);\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(`${this.hostUrl}paymentmethod/stripe/${paymentMethodId}/set-default`, {}, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n refreshEPC(veId: string){\n const response = this.performPreAPIChecksWithAuth();\n if (response && response.isError === false) {\n return this.http.put(`${this.hostUrl}virtualentity/${veId}/property-passport/update-epc`, {}, this.getAuthOptions());\n } else {\n return throwError(response);\n }\n }\n}\n","export class tAccount {\n accountId: string;\n username: string;\n name: string;\n email: string;\n password: string;\n directoryId: string;\n createdAt: string;\n applicationId: string;\n}\n\nexport class tAccountProfile {\n profileName: string;\n data: any;\n}\n\nexport class tAccountProfilesResp {\n accountId: string;\n profileNames: string[];\n}\n\nexport class tAccountProfileCreateResp {\n status: string;\n devUserId: string;\n profileName: string;\n}\n\nexport class tAccountStatus {\n accountId: string;\n password: string;\n directoryId: string;\n createdAt: string;\n applicationId: string;\n directory: tExternalDirectoryStatus;\n}\n\nexport class tAlertHistoryUser {\n alertTypeId: string;\n userId: string;\n AlertTime: Date;\n Timestamp: Date;\n email: string;\n inbox: string;\n push: string;\n}\n\nexport class tAlertHistoryUserGroup {\n alertTypeId: string;\n userGroupId: string;\n AlertTime: Date;\n Timestamp: Date;\n email: string;\n inbox: string;\n push: string;\n}\n\nexport class tAlertStatus {\n ns_alertid: string;\n status: string;\n}\n\nexport class tAlertType {\n alertTypeId: string;\n applicationId: string;\n name: string;\n systemAlertTypeId: string;\n createdAt: Date;\n updatedAt: Date;\n description: string;\n}\n\nexport class tApiErrorResponse {\n isError: boolean;\n messages: string[];\n data: any;\n}\n\nexport class tApplication {\n applicationId: string;\n name: string;\n description: string;\n status: string;\n createdAt: string;\n}\n\nexport class tApplicationEventReq {\n eventType: string;\n eventName: string;\n data: any;\n veId: string;\n veTypeId: string;\n systemName: string;\n}\n\nexport class tApplicationEventRes {\n eventId: string;\n status: string;\n}\n\nexport class tApplicationVersion {\n operatingSystem: string;\n version: string;\n minimumVersion: string;\n}\n\nexport class tApplicationVersions {\n applicationId: string;\n name: string;\n version: tApplicationVersion[];\n}\n\nexport class tAsset {\n assetId: string;\n assetTypeId: string;\n category: string;\n hardwareIds: any;\n hardwareIdTags: string[];\n hardwareIdNames: string[];\n name: string;\n productId: string;\n productTypeId: string;\n}\n\nexport class tCaseStudy {\n csId?: string;\n csRef?: number;\n userId?: string;\n veId: string;\n classifier: string;\n filterAttributes?: object;\n userForumHandle?: string;\n canContactOwner: boolean;\n canVisitProperty: boolean;\n summary?: string;\n postcode?: string;\n publishedStatus: string\n before?: any[];\n after?: any[];\n outcome?: any[];\n mediaFiles?: any[];\n}\n\nexport class tChangeUsernameReq {\n username: string;\n password: string;\n}\n\nexport class tComponent {\n componentId: string;\n userId: string;\n veId: string;\n componentVersion: number;\n installedAt: Date;\n decommissionedAt?: Date;\n data: any;\n mediaFiles?: any[];\n}\n\nexport class tContent {\n contentId: string;\n applicationId: string;\n environment: string;\n version: string;\n minimumVersion: string;\n reference: string;\n data: any;\n}\n\nexport class tCreateDevices {\n status: string;\n}\n\nexport class tDataGroupCreateReq {\n userOrganizationId: string;\n userGroupId: string;\n 'name': string;\n 'description': string;\n 'groupCriteria': string;\n 'groupCriteriaValue': string;\n}\n\nexport class tDeviceType {\n deviceTypeId: string;\n name: string;\n description: string;\n status: string;\n createdAt: string;\n configuration: any;\n}\n\nexport class tDevice {\n deviceId: string;\n deviceTypeId: string;\n hardwareId: string;\n parentHardwareId: string[];\n ownerId: string;\n protocol: {\n protocol: string;\n sensors: tSensorListing[];\n };\n name: string;\n description: string;\n status: string;\n createdAt: string;\n configuration: any;\n resources: any;\n}\n\nexport class tDeviceWithSetting extends tDevice {\n setting: any;\n}\n\nexport class tDeviceProductDiscovery {\n assetTypeId: string;\n deviceId: string;\n deviceTypeId: string;\n discoveredEntity: string;\n productId: string;\n productTypeId: string;\n configuration: {\n wifiPassword: string;\n };\n}\n\nexport class tDeviceStatus {\n deviceId: string;\n hardwareId: string;\n timestamp: string;\n status: any;\n}\n\nexport class tDirectory {\n directoryId: string;\n applicationId: string;\n directoryTypeId: string;\n name: string;\n description: string;\n status: string;\n createdAt: string;\n}\n\nexport class tDiscoveryInfo {\n MAC: string;\n serialNumber: string;\n}\n\nexport class tEligibitySmetsIhdPostcodeCheck {\n postcode: string;\n eui: string;\n}\n\nexport class tEligibitySmetsFuelTypesReq {\n mpxn: string;\n}\n\nexport class tEligibitySmetsFuelTypes {\n hasElectricityMeter: boolean;\n hasGasMeter: boolean;\n}\n\nexport class tExternalDirectoryStatus {\n data: {\n tokenIssueDate: Date;\n tokenExpiryDate: Date;\n };\n}\n\nexport class tEuiPostcode {\n eui: string;\n postcode: string;\n}\n\nexport class tFAQ {\n reference: string;\n faqId: string;\n data: tFAQelem[];\n}\n\nexport class tFAQelem {\n question: string;\n reply: string;\n}\n\nexport class tForgottenPasswordResponse {\n valid: boolean;\n authenticationTypeService: 'string';\n}\n\nexport class tAddAccountResponse {\n status: string;\n accountId: string;\n userId: string;\n applicationId: string;\n isNew: boolean;\n}\n\nexport class tFunctionalGroupAccount {\n accountId: string;\n applicationId: string;\n functionalGroupId: string;\n functionalGroupAccountId: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport class tFunctionalGroupAccountIdElement {\n functionalGroupAccountId: string;\n}\n\nexport class tFunctionalGroupIdListing {\n functionalGroupId: string;\n}\n\nexport class tFunctionalGroupListing extends tFunctionalGroupIdListing {\n name: string;\n}\n\nexport class tGeoCoordinates {\n point: LatLngElement;\n boundingBox: {\n southWest: LatLngElement;\n northEast: LatLngElement;\n };\n}\n\nexport class tGlowEventReq {\n categoryReference: string;\n data: object;\n event: string;\n}\n\nexport class tGlowStickAccessPointPassword {\n accessPointPassword: string;\n}\n\nexport class tInboxDeleteStatus {\n status: string;\n Deleted: string;\n}\n\nexport class tInboxMessage {\n MessageId: string;\n Timestamp: Date;\n ReadStatus: string;\n applicationId: string;\n Priority: string;\n Attributes: string;\n Title: string;\n TruncatedBody: string;\n}\n\nexport class tInboxMessageList {\n status: string;\n MoreMessagesAvailable: boolean;\n Messages: tInboxMessage[];\n}\n\nexport class tInboxStatus {\n status: string;\n TotalCount: number;\n UnreadCount: number;\n}\n\nexport class tIsValid {\n valid: boolean;\n}\n\nexport class tHasVeAccess extends tIsValid {\n veId: boolean;\n}\n\nexport class tHasVeAdminAccess extends tIsValid {\n veId: boolean;\n}\n\nexport class tIsValidTicket extends tIsValid {\n ticketId: string;\n type: string;\n}\n\nexport class tIsValidPaymentRes extends tIsValid {\n transactionId: string;\n}\n\nexport class tIsUserGroupValid extends tIsValid {\n userGroupId: string;\n}\n\nexport class tIsUserOrganizationValid extends tIsValid {\n userOrganizationId: string;\n}\n\nexport class tJournalEntry {\n jeId: string;\n journalId: string;\n propertyPassportId: string;\n veId: string;\n componentId: string;\n componentVersion: string;\n componentDataType: string;\n journalEntryDataType: string;\n summary: string;\n data: any;\n relatedJournalEntryIds: string[];\n validFrom?: Date;\n validTo?: Date;\n mediaFiles?: any[];\n}\n\nexport class tLanguageContent {\n contentId: string;\n applicationId: string;\n environment: string;\n version: string;\n languageCode: string;\n languageContentId: string;\n minimumVersion: string;\n reference: string;\n data: any;\n}\n\nexport class LatLngElement {\n lng;\n lat;\n}\n\nexport class tLoginInfo {\n username: string;\n password: string;\n}\n\nexport class tLoginToken {\n valid: boolean;\n name: string;\n accountId: string;\n token: string;\n exp: Date;\n}\n\nexport class tNewTokenResponse {\n exp: number;\n token: string;\n valid: boolean;\n}\n\nexport class tOAuthResponse {\n valid: boolean;\n userGroups: string[];\n functionalGroupAccounts: tFunctionalGroupAccountIdElement[];\n code: string;\n accountId: string;\n name: string;\n}\n\nexport class tPaymentTransaction {\n applicationId: string;\n transactionId: string;\n userId: string;\n createdAt: string;\n updatedAt: string;\n status: string;\n}\n\nexport class tPaymentTransactionCallbackInfo extends tPaymentTransaction {\n callbackInfo: any;\n}\nexport class tSavedCards {\n data: any;\n}\n\nexport class tPrompt {\n promptId: string;\n promptTypeId: string;\n reference: string;\n data: any;\n dataSourcePromptTypeInfo: any;\n}\n\nexport class tPromptUser {\n promptId: string;\n promptTypeId: string;\n applicationId: string;\n data: any;\n userId: string;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport class tPromptUserReq {\n promptId: string;\n data: any;\n}\n\nexport class tProvisioningInfoReq {\n hardwareIds: {\n MAC: string;\n serialNumber: string;\n };\n virtualEntity: any;\n}\n\nexport class tProvisioningAddChildDeviceReq {\n MAC: string;\n uniqueSID: string;\n virtualEntity: {\n veId: string;\n };\n}\n\nexport class tProvisioningStatus {\n status: string;\n virtualEntity: tVE;\n resources: tResource[];\n devices: tDevice[];\n}\n\nexport class tRegistrationInfo {\n username: string;\n name: string;\n email: string;\n password: string;\n directoryId: string;\n applicationId: string;\n alertTypeId: string;\n}\n\nexport class tResource {\n resourceId: string;\n resourceTypeId: string;\n ownerId: string;\n name: string;\n description: string;\n status: string;\n createdAt: string;\n classifier: string;\n}\n\nexport class tResourceDataBase {\n resourceId: string;\n resourceTypeId: string;\n name: string;\n data: any;\n status: string;\n classifier: string;\n}\n\nexport class tResourceMeterReading extends tResourceDataBase {\n data: [[number, number]];\n units: string;\n}\n\nexport class tResourceFirstTime extends tResourceDataBase {\n data: {\n firstTs: number;\n };\n}\n\nexport class tResourceAddPermissionRes {\n valid: boolean;\n resourcePermissions: tResourceUserPermission[];\n}\n\nexport class tResourceInstantReadings {\n name: string;\n resourceTypeId: string;\n data: [[number, number]];\n resourceId: string;\n status: string;\n classifier: string;\n units: string;\n}\n\nexport class tResourceListing {\n resourceId: string;\n resourceTypeId: string;\n}\n\nexport class tResourceReadings {\n resourceId: string;\n resourceTypeId: string;\n name: string;\n data: any[];\n status: string;\n units: string;\n classifier: string;\n query: {\n from: string;\n to: string;\n period: string;\n function: string;\n };\n}\n\nexport class tGroupedResource {\n resourceId: string;\n resourceTypeId: string;\n name: string;\n data: any[];\n status: string;\n}\n\nexport class tResourceSummaryReadings {\n resourceId: string;\n resourceTypeId: string;\n name: string;\n data: any;\n status: string;\n classifier: string;\n query: {\n from: string;\n to: string;\n period: string;\n function: string;\n };\n}\n\nexport class tResourceTariff {\n resourceId: string;\n resourceTypeId: string;\n name: string;\n classifier: string;\n status: string;\n data: [\n {\n commodity: string;\n from: string;\n name: string;\n id: number;\n plan: {\n planDetail: [\n {\n rate: number;\n standing: number;\n }\n ];\n };\n }\n ];\n}\n\nexport class tResourceType {\n resourceTypeId: string;\n applicationId: string;\n ownerId: string;\n name: string;\n description: string;\n status: string;\n classifier: string;\n createdAt: string;\n}\n\nexport class tResourceUserPermission {\n resourceId: string;\n resourceTypeId: string;\n userId: string;\n ownerId: string;\n createdAt: string;\n updatedAt: string;\n isNew: boolean;\n valid: boolean;\n resourceAccessId: string;\n}\n\nexport class tSensorListing {\n resourceId: string;\n resourceTypeId: string;\n protocolId: string;\n}\n\nexport class tSetPasswordReq {\n username: string;\n newPassword: string;\n token: string;\n applicationId: string;\n}\n\nexport class tSimulation {\n simulationTypeId: string;\n input: any;\n}\n\nexport class tStatusResponse {\n status: string;\n}\n\nexport class tSupportDetails {\n reference: string;\n supportDetailsId: string;\n data: tSupportDetailsElem[];\n}\n\nexport class tSupportDetailsElem {\n availability: string;\n contactDetails: string;\n type: string;\n}\n\nexport class tTemplate {\n templateId: string;\n applicationId: string;\n name: string;\n desc: string;\n active: string;\n updateDtm: string;\n alertTypeId: string;\n channelType: string;\n cultureCode: string;\n systemAlertTypeId: string;\n datapayloadTemplate: string;\n}\n\nexport class tTermsConditions {\n tcId: string;\n reference: string;\n data: any;\n current: boolean;\n}\n\nexport class tTermsConditionsUserRaw {\n reference: string;\n data: any;\n}\n\nexport class tTermsConditionsUser extends tTermsConditionsUserRaw {\n tcId: string;\n tcUserId: string;\n userId: string;\n current: boolean;\n createdAt: string;\n}\n\nexport class tTermsConditionsUserCreateRes {\n applicationId: string;\n isNew: boolean;\n reference: string;\n tcId: string;\n tcUserId: string;\n userId: string;\n}\n\nexport class tTokenValidityResponse {\n valid: boolean;\n accountId: string;\n applicationId: string;\n}\n\nexport class tUserAction {\n reference: string;\n applicationId: string;\n userId: string;\n userActionId: string;\n userActionTypeId: string;\n data: any;\n}\n\nexport class tUserFromUserGroupDeletionRes {\n userGroupId: string;\n userId: string;\n valid: boolean;\n}\n\nexport class tUserGroupAdmin {\n userGroupAdminId: string;\n userOrganizationId: string;\n userGroupId: string;\n userId: string;\n addedBy: {\n userId: string;\n };\n}\n\nexport class tUserGroupAdminWithUserInfo extends tUserGroupAdmin {\n username: string;\n email: string;\n name: string;\n}\n\nexport class tUserGroupAdminAdditionReq {\n usernames: tUserIdElement[];\n}\n\nexport class tUserGroupAdminAdditionRes {\n valid: boolean;\n users: tUserGroupAdminAdditionResElement[];\n}\n\nexport class tUserGroupAdminAdditionResElement {\n userId: string;\n valid: boolean;\n isNew: boolean;\n}\n\nexport class tUserIdElement {\n userId: string;\n}\n\nexport class tUserGroupAdminDeletionRes {\n userGroupId: string;\n userId: string;\n valid: boolean;\n}\n\nexport class tUserGroup {\n userGroupId: string;\n userOrganizationId: string;\n name: string;\n applicationAccess: tUserGroupApplicationAccess[];\n}\n\nexport class tUserGrouping {\n status: string;\n userGroupingId: string;\n userGroupId: string;\n userId: string;\n updatedAt: string;\n createdAt: string;\n}\n\nexport class tUserGroupingWithUserInfo extends tUserGrouping {\n username: string;\n email: string;\n name: string;\n}\n\nexport class tUserGroupCreateReq {\n userOrganizationId: string;\n name: string;\n}\n\nexport class tUserGroupCreateRes extends tUserGroupCreateReq {\n userGroupId: string;\n status: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport class tUserGroupAppPermissionsReq {\n applications: tUserGroupAppPermissionsReqApp[];\n}\n\nexport class tUserGroupAppPermissionsReqApp {\n applicationId: string;\n functionalGroups: tFunctionalGroupIdListing[];\n}\n\nexport class tUserGroupApplicationAccess {\n applicationId: string;\n functionalGroups: tFunctionalGroupListing[];\n}\n\nexport class tUserGroupUserAdditionRes {\n status: string;\n userList: tUserGroupUserAdditionResElement[];\n}\n\nexport class tUserGroupUserAdditionResElement {\n userId: string;\n isInGroup: boolean;\n isNew: boolean;\n}\n\nexport class tUserOrgCreateReq {\n name: string;\n email: string;\n}\n\nexport class tUserOrganization {\n userOrganizationId: string;\n name: string;\n userGroups: tUserGroup[];\n}\n\nexport class tUserOrganizationAdmin {\n userOrgAdminId: string;\n userId: string;\n userOrganizationId: string;\n addedBy: {\n userId: string;\n };\n createdAt: string;\n updatedAt: string;\n}\n\nexport class tAddUserOrganizationResponse {\n userOrgAdminId: string;\n userId: string;\n userOrganizationId: string;\n userList: {\n userId: string;\n };\n createdAt: string;\n updatedAt: string;\n}\n\nexport class tVerificationInfo {\n username: string;\n password: string;\n token: string;\n}\n\nexport class tVE {\n veId: string;\n veTypeId: string;\n location: string;\n openStreetMapsRef: any;\n geoCoordinates: tGeoCoordinates;\n applicationId: string;\n postalCode: string;\n ownerId: string;\n name: string;\n attributes: any;\n description: string;\n status: string;\n createdAt: string;\n resources: tResourceListing[];\n veChildren: tVEChild[];\n}\n\nexport class tVeAccessAddUser {\n veId: string;\n userId: string;\n}\n\nexport class tVeAccessAddUserGroup {\n veId: string;\n userGroupId: string;\n userOrganizationId: string;\n}\n\nexport class tVeAccessAdditionRes {\n veId: string;\n userId: string;\n userGroupId: string;\n isNew: boolean;\n valid: boolean;\n resources: tResourceAddPermissionRes;\n}\n\nexport class tVeAccessPermission {\n applicationId: string;\n ownerId: string;\n userId: string;\n userGroupId: string;\n userOrganizationId: string;\n veAccessId: string;\n veId: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport class tVEChild {\n veId: string;\n veTypeId: string;\n name: string;\n}\n\nexport class tVEwithDetailedResources extends tVE {\n resources: tResource[];\n}\n\nexport class tVEGroupedChildListing {\n name: string;\n label: string;\n veTypeId: string;\n veChildren: tVE[];\n}\n\nexport class tVEwithGroupedChildren extends tVE {\n veId: string;\n veTypeId: string;\n location: string;\n openStreetMapsRef: any;\n geoCoordinates: tGeoCoordinates;\n applicationId: string;\n ownerId: string;\n name: string;\n description: string;\n status: string;\n createdAt: string;\n resources: tResourceListing[];\n veChildren: tVEChild[];\n groupedVeChildren: tVEGroupedChildListing[];\n}\n\nexport class tVEwithGroupedChildrenDetailedResources extends tVEwithDetailedResources {\n veChildren: tVEChild[];\n groupedVeChildren: tVEGroupedChildListing[];\n}\n\nexport class tVEType {\n veTypeId: string;\n location: string;\n applicationId: string;\n ownerId: string;\n name: string;\n description: string;\n status: string;\n createdAt: string;\n attributes: any;\n}\n\nexport class tVeState {\n reference: string;\n veId: string;\n stateTypeId: string;\n veStateId: string;\n data: any;\n}\n\nexport class tVeIdListing {\n veId: string;\n}\n\nexport class tTicketCreateResponse {\n ticket: any;\n valid: boolean;\n}\n\nexport class tVeGroup {\n veTypeId: string;\n name: string;\n veId: string;\n}\n\nexport class tDeviceBase {\n deviceId: string;\n hardwareId: string;\n timestamp: string;\n}\n\nexport class tDeviceRegisters extends tDeviceBase {\n registers: any;\n}\n\nexport class tHeatControlStatusConfig {\n showNavToHeatSettings: boolean;\n}\n\nexport class tUserActionResponse {\n reference: string;\n applicationId: string;\n userId: string;\n userActionId: string;\n userActionTypeId: string;\n}\n\nexport class tCalculateHTC {\n veId: string;\n // propertyPassportId: string;\n temperatureResources: [];\n}\n\nexport class tResourceLastTime extends tResourceDataBase {\n data: {\n lastTs: number;\n };\n}\nexport class tMeterPointVerificationElement {\n isVerified: boolean;\n isValidUntil: Date\n mpxnKey: string;\n mpxn: string;\n}\nexport class tVerificationStatus {\n identityVerification: {\n isVerified: boolean\n }\n meterPointVerification: tMeterPointVerificationElement[]\n}\nexport class tVerificationInfoSubmissionIsValidRes {\n verificationInfoSubmissionId: string;\n valid: boolean\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport mcshp from '../../assets/db/mcshp.json';\n\nconst GCN_GAS_PREFIX = '4';\nconst LOCAL_DATABASE_FILE = '../../assets/db/pcdb10.dat';\nconst TABLE_IDENTIFIER = '$';\nconst COMMENT_IDENTIFIER = '#';\nconst ILLUSTRATIVE_IDENTIFIER = '69';\nconst MANIFACTURERS = TABLE_IDENTIFIER + '301,207';\nconst GAS_AND_OIL_BOILERS = TABLE_IDENTIFIER + '105,211';\nconst SOLID_FUEL_BOILERS = TABLE_IDENTIFIER + '122,225';\nconst TWIN_BURNER_BOILERS = TABLE_IDENTIFIER + '131,234';\nconst HEAT_PUMPS = TABLE_IDENTIFIER + '362,465';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeatingSystemService {\n constructor(private httpClient: HttpClient) {}\n\n async getManufacturers() {\n const repo = new PcdbRepository(this.httpClient);\n const manifacturers = await repo.getManufacturers();\n return manifacturers.map((manifacturer) => {\n if (manifacturer.toApiModel) {\n return manifacturer.toApiModel();\n }\n return manifacturer;\n });\n }\n\n getManufacturersFromArray(hsArray) {\n return hsArray\n .map((hs) => hs.brand||hs.manufacturer)\n .filter((value, index, self) => self.indexOf(value) === index)\n .map((brand) => {\n return { name: brand };\n })\n .sort((a, b) => {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n });\n }\n\n async getHeatPumps(ignoreQualifiers = false) {\n const repo = new PcdbRepository(this.httpClient);\n let heatPumps = await repo.getHeatPumps(HEAT_PUMPS);\n heatPumps = heatPumps.map((heatPump) => {\n if (heatPump.toApiModel) {\n return heatPump.toApiModel();\n }\n return heatPump;\n });\n if (ignoreQualifiers) {\n return heatPumps\n .filter((heatPump, index, self) => {\n return self.findIndex((hp) => hp.model.name === heatPump.model.name) === index;\n })\n .sort((a, b) => {\n if (a.model.name < b.model.name) {\n return -1;\n }\n if (a.model.name > b.model.name) {\n return 1;\n }\n return 0;\n });\n }\n return heatPumps;\n }\n\n getHeatPumpsFromMcs(ignoreQualifiers = false) {\n if (!mcshp) {\n return [];\n }\n // console.log(mcshp)\n if (!ignoreQualifiers) {\n return mcshp;\n }\n \n return mcshp\n .filter((heatPump, index, self) => {\n return self.findIndex((hp) => hp.model === heatPump.model) === index;\n })\n .sort((a, b) => {\n if (a.model < b.model) {\n return -1;\n }\n if (a.model > b.model) {\n return 1;\n }\n return 0;\n });\n }\n\n async getBoilers(tableIdentifier, ignoreQualifiers = false) {\n const repo = new PcdbRepository(this.httpClient);\n const boilers = (await repo.getBoilers(tableIdentifier)).map((boiler) => {\n if (boiler.toApiModel) {\n return boiler.toApiModel();\n }\n return boiler;\n });\n if (ignoreQualifiers) {\n return boilers\n .filter((boiler, index, self) => {\n return self.findIndex((b) => b.model.name === boiler.model.name) === index;\n })\n .sort((a, b) => {\n if (a.model.name < b.model.name) {\n return -1;\n }\n if (a.model.name > b.model.name) {\n return 1;\n }\n return 0;\n });\n }\n return boilers;\n }\n\n async getGasAndOilBoilers(ignoreQualifiers = false, gasOnly = false, oilOnly = false) {\n const boilers = await this.getBoilers(GAS_AND_OIL_BOILERS, ignoreQualifiers);\n if (gasOnly) {\n return boilers.filter(\n (boiler) =>\n (boiler.gasCouncilNumber && boiler.gasCouncilNumber.startsWith(GCN_GAS_PREFIX)) ||\n (boiler.model.qualifier && !boiler.model.qualifier.toLowerCase().includes('oil')) ||\n !boiler.model.qualifier\n );\n }\n if (oilOnly) {\n return boilers.filter(\n (boiler) =>\n (boiler.gasCouncilNumber && !boiler.gasCouncilNumber.startsWith(GCN_GAS_PREFIX)) ||\n (boiler.model.qualifier && boiler.model.qualifier.toLowerCase().includes('oil')) ||\n !boiler.model.qualifier\n );\n }\n return boilers;\n }\n\n async getSolidFuelBoilers(ignoreQualifiers = false) {\n return this.getBoilers(SOLID_FUEL_BOILERS, ignoreQualifiers);\n }\n\n async getTwinBurnerBoilers(ignoreQualifiers = false) {\n return this.getBoilers(TWIN_BURNER_BOILERS, ignoreQualifiers);\n }\n\n async getGasAndOilBoilerManufacturers() {\n const gasAndOilBoilers = await this.getGasAndOilBoilers();\n const manufacturers = this.getManufacturersFromArray(gasAndOilBoilers);\n return manufacturers;\n }\n\n async getSolidFuelBoilerManufacturers() {\n const solidFuelBoilers = await this.getSolidFuelBoilers();\n const manufacturers = this.getManufacturersFromArray(solidFuelBoilers);\n return manufacturers;\n }\n\n async getTwinBurnerBoilerManufacturers() {\n const twinBurnerBoilers = await this.getTwinBurnerBoilers();\n const manufacturers = this.getManufacturersFromArray(twinBurnerBoilers);\n return manufacturers;\n }\n}\n\nclass PcdbRepository {\n cachedBoilers: any;\n constructor(private httpClient: HttpClient) {\n // this.cachedBoilers = JSON.parse(localStorage.getItem('gasAndOilBoilers'));\n }\n\n open(): any {\n return this.httpClient.get(LOCAL_DATABASE_FILE, { responseType: 'text' }).toPromise();\n }\n\n // cacheBoilers(boilers) {\n // localStorage.setItem('gasAndOilBoilers', JSON.stringify(boilers));\n // }\n\n getManufacturers() {\n return this.getTable(MANIFACTURERS).then((data) => {\n const manifacturers = data.map((row) => new ManufacturerModel(row));\n return manifacturers;\n });\n }\n\n getTable(tableIdentifier) {\n return this.open().then((data) => {\n let startIndex, endIndex;\n let rows: any = '';\n while ((startIndex = data.indexOf(tableIdentifier, endIndex)) > -1) {\n endIndex = data.indexOf(TABLE_IDENTIFIER, startIndex + 1);\n rows += data.substring(startIndex, endIndex);\n }\n let rawData = [];\n rows = rows.split('\\n');\n for (let index = 0; index < rows.length; index++) {\n let row = rows[index];\n if (\n row &&\n !row.startsWith(TABLE_IDENTIFIER) &&\n !row.startsWith(COMMENT_IDENTIFIER) &&\n !row.startsWith(ILLUSTRATIVE_IDENTIFIER)\n ) {\n rawData.push(row);\n }\n }\n return rawData;\n });\n }\n\n getHeatPumps(heatPumpsIdentifier) {\n return this.getTable(heatPumpsIdentifier).then((data) => {\n return data.map((row) => new HeatPumpModel(row));\n });\n }\n\n getBoilers(boilersIdentifier) {\n // if (this.cachedBoilers) {\n // return Promise.resolve(this.cachedBoilers);\n // }\n return this.getTable(boilersIdentifier).then((data) => {\n return data.map((row) => new BoilerModel(row));\n });\n }\n}\n\nclass HeatPumpModel {\n id: string;\n brand: string;\n model: any;\n name: string;\n manufacturedYears: any;\n\n constructor(csv) {\n if (!csv) {\n throw new SyntaxError('CSV parameter must be specified');\n }\n this.processCsv(csv);\n }\n\n processCsv(csv) {\n csv = csv.split(',');\n\n this.id = csv[0];\n this.brand = csv[5];\n this.model = {\n name: csv[6] || null,\n qualifier: csv[7] || null,\n };\n\n let name = this.brand.split(' ');\n if (this.model.name) {\n name = name.concat(this.model.name.split(' '));\n }\n if (this.model.qualifier) {\n name = name.concat(this.model.qualifier.split(' '));\n }\n this.name = [...new Set(name)].join(' '); // de-dup name parts\n\n this.manufacturedYears = {\n range: csv[9] + '-' + csv[10],\n first: parseInt(csv[9]) || null,\n last: parseInt(csv[10]) || null,\n };\n }\n\n toApiModel() {\n return {\n id: this.id,\n name: this.name,\n brand: this.brand,\n model: this.model,\n manufacturedYears: this.manufacturedYears,\n };\n }\n}\n\nclass BoilerModel {\n id: string;\n brand: string;\n model: any;\n name: string;\n manufacturedYears: any;\n gasCouncilNumber: string;\n sapEfficiencies: any;\n searchName: string;\n searchNumber: string;\n\n constructor(csv) {\n if (!csv) {\n throw new SyntaxError('CSV parameter must be specified');\n }\n this.processCsv(csv);\n }\n\n processCsv(csv) {\n csv = csv.split(',');\n\n this.id = csv[0];\n this.brand = csv[5];\n this.model = {\n name: csv[6] || null,\n qualifier: csv[7] || null,\n };\n\n let name = this.brand.split(' ');\n if (this.model.name) {\n name = name.concat(this.model.name.split(' '));\n }\n if (this.model.qualifier) {\n name = name.concat(this.model.qualifier.split(' '));\n }\n this.name = [...new Set(name)].join(' '); // de-dup name parts\n\n this.manufacturedYears = {\n range: csv[9] + '-' + csv[10],\n first: parseInt(csv[9]) || null,\n last: parseInt(csv[10]) || null,\n };\n this.gasCouncilNumber = this.getGCNumber(csv[8]);\n this.sapEfficiencies = {\n annual: parseFloat(csv[24]) || null,\n winterSeasonal: parseFloat(csv[25]) || null,\n summerSeasonal: parseFloat(csv[26]) || null,\n hotWater: parseFloat(csv[28]) || null,\n };\n\n this.searchName = this.name.toLowerCase().replace(/[^a-z0-9]/g, '');\n this.searchNumber = (this.gasCouncilNumber || '').replace(/[^0-9]/g, '');\n }\n\n toApiModel() {\n return {\n id: this.id,\n name: this.name,\n brand: this.brand,\n model: this.model,\n manufacturedYears: this.manufacturedYears,\n gasCouncilNumber: this.gasCouncilNumber,\n sapEfficiencies: this.sapEfficiencies,\n };\n }\n\n getGCNumber(boilerId) {\n if (boilerId) {\n boilerId = boilerId.replace(/\\D/g, '');\n\n if (boilerId.length == 7 && boilerId.startsWith(GCN_GAS_PREFIX)) {\n // return formatted GC no. with hyphens\n return boilerId.substr(0, 2) + '-' + boilerId.substr(2, 3) + '-' + boilerId.substr(5, 2);\n }\n }\n\n return null;\n }\n}\n\nclass ManufacturerModel {\n id: string;\n name: string;\n searchName: string;\n\n constructor(csv) {\n if (!csv) {\n throw new SyntaxError('CSV parameter must be specified');\n }\n\n csv = csv.split(',');\n\n this.id = csv[0];\n this.name = csv[1];\n\n this.searchName = this.name.toLowerCase().replace(/[^a-z0-9]/g, '');\n }\n\n toApiModel() {\n return {\n id: this.id,\n name: this.name,\n };\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { GlowService } from './glow.service';\nimport { ServiceSelectorSvc } from './service-selector.service';\nimport { SchematicsService } from './schematics.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HpJourneyService {\n steps\n passport: boolean\n schematic;\n formFilledOut: boolean;\n stepsAnnouncer: EventEmitter = new EventEmitter();\n installerField;\n htc\n stepTwoDisable: boolean\n stepThreeDisable: boolean\n schematicDocuments\n stepFourDisable: boolean\n pendingInvitations: boolean\n constructor(private glowService: GlowService, private serviceSelectorSvc: ServiceSelectorSvc, private schematicsService: SchematicsService) { }\n\n\n\n\n async getPropertyPassport() {\n const selectedService = this.serviceSelectorSvc.getSelectedService()\n return await this.glowService.getPropertyPassport(selectedService.veId).toPromise().then(resp => {\n console.log(resp)\n if (resp.valid) {\n this.passport = resp\n }\n this.setSteps()\n return this.passport\n\n })\n\n }\n\n async getSchematicDocuments() {\n const selectedService = this.serviceSelectorSvc.getSelectedService()\n return this.schematicsService.getSchematicsByStatus('complete', selectedService.veId).then((documents) => {\n this.schematicDocuments = documents;\n // this.setSteps()\n return this.schematicDocuments\n });\n }\n\n resetSteps() {\n this.formFilledOut = false\n this.passport = false\n this.htc = false\n this.schematic = false\n this.setSteps()\n\n }\n\n setField(field, value){\n this[field] = value\n this.setSteps()\n }\n\n setInstallers(installers) {\n console.log(installers)\n if (!installers.length) {\n this.installerField = false\n } else {\n this.installerField = true\n }\n this.setSteps()\n }\n\n // enableSteps(step) {\n // this[step] = true\n // this.setSteps()\n // }\n\n // showStepAcceptInvitations() {\n // this.pendingInvitations = true\n // this.setSteps()\n // }\n\n\n\n setSteps() {\n console.log('set steps')\n let steps = [{\n title: 'Share your home information with an installer',\n icon: 'bi bi-circle',\n step: 1,\n steps: [\n {\n title: 'Property passport *',\n icon: this.passport ? 'bi bi-check-circle' : 'bi bi-circle',\n complete: this.passport ? true : false,\n show: true\n },\n {\n title: 'Helpful questions *',\n icon: this.formFilledOut ? 'bi bi-check-circle' : 'bi bi-circle',\n complete: this.formFilledOut ? true : false,\n show: true\n },\n {\n title: 'Radiator schematics',\n icon: this.schematic ? 'bi bi-check-circle' : 'bi bi-circle',\n complete: this.schematic ? true : false,\n show: true\n\n },\n {\n title: 'Building fabric score',\n icon: this.htc ? 'bi bi-check-circle' : 'bi bi-circle',\n complete: this.htc ? true : false,\n show: true\n // complete: this.passport ? true : false \n\n },\n {\n title: 'Send an invitation to installer *',\n icon: this.installerField ? 'bi bi-check-circle' : 'bi bi-circle',\n complete: this.installerField ? true : false,\n show: true\n },\n {\n title: 'Accept a request',\n icon: 'bi bi-circle',\n complete: false,\n show: this.pendingInvitations ? true : false\n },\n\n ]\n },\n {\n title: 'Assess quotes / estimates',\n icon: 'bi bi-circle',\n step: 2,\n disabled: this.stepTwoDisable ? false : true\n },\n {\n title: 'Get heat pump installed',\n icon: 'bi bi-circle',\n step: 3,\n disabled: true\n },\n {\n title: 'Share your experience',\n icon: 'bi bi-circle',\n step: 4,\n disabled: true\n }]\n this.announceSteps(steps)\n return this.steps\n }\n\n announceSteps(steps) {\n this.stepsAnnouncer.emit(steps)\n }\n}","import { EventEmitter, Injectable } from '@angular/core';\nimport { GlowService } from './glow.service';\nimport { any } from 'core-js/fn/promise';\nimport { ProfessionalGlowService } from './professional-glow.service';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class InvitationsService {\n activeEstimateRequestsStates = [\n 'estimate-request-accepted-by-professional',\n 'estimate-response-submitted',\n 'estimate-response-accepted',\n 'estimate-response-user-questioned',\n 'site-visit-arranged',\n 'quote-pending-user-acceptance',\n 'quote-accepted',\n 'quote-declined',\n 'installation-complete',\n 'estimate-request-accepted-by-user',\n ]\n\n\n estimatesRequests;\n EstimatesAnnouncer: EventEmitter = new EventEmitter();\n ProfessionalEstimatesAnnouncer: EventEmitter = new EventEmitter()\n SnapshotAnnouncer: EventEmitter = new EventEmitter();\n AcceptedEstimatesAnnouncer: EventEmitter = new EventEmitter();\n PendingAcceptanceEstimateAnnouncer: EventEmitter = new EventEmitter();\n EstimateRequestAnnouncer: EventEmitter = new EventEmitter\n EstimateRequestsByVeIdAnnouncer: EventEmitter = new EventEmitter\n invalidVEs\n validVEs\n\n\n constructor(private glowService: GlowService, private professionalGlowService: ProfessionalGlowService) { }\n\n\n\n ///---- for user accounts ----\n async getAllEstimateRequests(showProfessionalMeta?) {\n console.log(showProfessionalMeta)\n const resp = await this.glowService.findAllEstimateRequestsByUserId(showProfessionalMeta).toPromise()\n console.log(resp, 'resp')\n this.announceEstimates(resp)\n\n }\n\n async getAllProfessionalEstimateRequests() {\n return this.professionalGlowService.getAllEstimateRequestForProfessionals().toPromise().then((resp: any) => {\n this.announceProfessionalEstimateRequests(resp)\n }).catch((err) =>\n this.announceProfessionalEstimateRequests(err)\n )\n\n }\n\n getEstimateRequestsByVeIdAndState(veId, showProfessionalMeta) {\n this.glowService.findEstimateRequestsByVeIdAndState(veId, showProfessionalMeta).subscribe(resp => {\n this.announceEstimateRequestsByVeId(resp)\n })\n }\n\n\n announceEstimateRequestsByVeId(estimateRequests) {\n console.log(estimateRequests, 'er by veId')\n this.EstimateRequestsByVeIdAnnouncer.emit(estimateRequests)\n }\n announceEstimates(estimatesRequests) {\n console.log(estimatesRequests)\n this.EstimatesAnnouncer.emit(estimatesRequests)\n }\n\n\n ///---- for professional accounts ---- \n\n //get snapshots per estimate request\n getSnapshotsByEstimateRequestId(id) {\n this.professionalGlowService.getSnapshotByEstimateId(id, true).subscribe((resp: any) => {\n this.announceSnapshots(resp.snapshots)\n })\n }\n\n announceSnapshots(snapshots) {\n this.SnapshotAnnouncer.emit(snapshots)\n\n }\n\n //get estimateRequest by estimateId\n getEstimateRequestById(estimateId) {\n this.professionalGlowService.getEstimateRequestByIdProfessional(estimateId).subscribe(resp => {\n this.announceEstimateRequest(resp)\n })\n }\n\n announceEstimateRequest(estimateRequest) {\n this.EstimateRequestAnnouncer.emit(estimateRequest)\n }\n\n //get estimate requests for professional by state\n async getAllEstimateRequestsByState(state) {\n const resp = await this.professionalGlowService.findAllEstimateRequestsByState(state).toPromise().then(resp => {\n if (state == 'estimate-request-accepted-by-professional') {\n this.announceAcceptedByProfessionalEstimates(resp)\n } else if (state == 'pending-professional-acceptance') {\n this.announcePendingAcceptanceEstimates(resp)\n }\n }).catch((err) =>\n this.announcePendingAcceptanceEstimates(err)\n )\n }\n\n\n //-----------\n announceAcceptedByProfessionalEstimates(estimates) {\n this.AcceptedEstimatesAnnouncer.emit(estimates)\n }\n\n announcePendingAcceptanceEstimates(estimates) {\n this.PendingAcceptanceEstimateAnnouncer.emit(estimates)\n }\n announceProfessionalEstimateRequests(estimates) {\n this.ProfessionalEstimatesAnnouncer.emit(estimates)\n }\n\n\n async validateVirtualEntityRequirements(ve) {\n let veRequirement;\n try {\n veRequirement = await this.glowService.validateVirtualEntityRequirements(ve.veId).toPromise();\n // console.log(veRequirement)\n } catch (e) {\n // console.warn(e)\n }\n if (veRequirement) {\n return veRequirement.requirements.every(x => x.valid) ? { valid: true, ...ve } : { valid: false, ...ve, ...veRequirement }\n }\n };\n\n\n async validateVirtualEntitites(virtualEntities: any) {\n console.log('validateVirtualEntitites', virtualEntities)\n\n let requirements = [];\n const lastRequirement = await virtualEntities.reduce((accumulatorPromise, ve) => {\n return accumulatorPromise.then(response => {\n if (response) requirements.push(response)\n // console.log(requirements)\n return this.validateVirtualEntityRequirements(ve);\n })\n }, Promise.resolve());\n if (lastRequirement) requirements.push(lastRequirement)\n // console.log(requirements)\n this.validVEs = [];\n this.invalidVEs = [];\n\n requirements.map(x => {\n // console.log(x)\n x.valid ? this.validVEs.push({ ...x }) : this.invalidVEs.push({ ...x })\n })\n console.log(this.validVEs)\n console.log('this.invalidVEs', this.invalidVEs)\n\n return this.invalidVEs\n\n\n }\n\n\n formatEstimateRequestState(state) {\n let stateObj = {\n name: '',\n colour: ''\n }\n\n switch (state) {\n case 'pending-professional-registration':\n stateObj.name = 'Pending Installer acceptance';\n stateObj.colour = 'warning';\n break;\n case 'pending-professional-acceptance':\n stateObj.name = 'Pending Installer acceptance';\n stateObj.colour = 'warning';\n break;\n case 'estimation-request-cancelled-professional-unfit':\n stateObj.name = 'Cancelled';\n stateObj.colour = 'danger';\n break;\n case 'estimate-request-rejected-by-professional':\n stateObj.name = 'Denied';\n stateObj.colour = 'danger';\n break;\n case 'estimate-request-rejected-by-professional':\n stateObj.name = 'Denied';\n stateObj.colour = 'danger';\n break;\n case 'estimate-request-accepted-by-professional':\n stateObj.name = 'Accepted request';\n stateObj.colour = 'success';\n break;\n case 'estimate-request-revoked-by-customer':\n stateObj.name = 'Customer revoked access';\n stateObj.colour = 'danger';\n break;\n case 'estimate-response-submitted':\n stateObj.name = 'Estimate received';\n stateObj.colour = 'success';\n break;\n case 'estimate-response-accepted':\n stateObj.name = 'Estimate sent';\n stateObj.colour = 'success';\n break;\n case 'estimate-response-user-questioned':\n stateObj.name = 'Questioned';\n stateObj.colour = 'warning';\n break;\n case 'estimate-response-declined':\n stateObj.name = 'Estimate declined';\n stateObj.colour = 'danger';\n break;\n case 'site-visit-arranged':\n stateObj.name = 'Site visit arranged';\n stateObj.colour = 'success';\n break;\n case 'quote-pending-user-acceptance':\n stateObj.name = 'Pending acceptance';\n stateObj.colour = 'warning';\n break;\n case 'quote-accepted':\n stateObj.name = 'Quote accepted';\n stateObj.colour = 'success';\n break;\n case 'installation-complete':\n stateObj.name = 'Installation complete';\n stateObj.colour = 'success';\n break;\n case 'pending-user-registration':\n stateObj.name = 'Pending acceptance';\n stateObj.colour = 'warning';\n break;\n case 'pending-user-eligibility':\n stateObj.name = 'Pending acceptance';\n stateObj.colour = 'warning';\n break;\n case 'pending-user-acceptance':\n stateObj.name = 'Pending acceptance';\n stateObj.colour = 'warning';\n break;\n case 'estimate-request-rejected-by-user':\n stateObj.name = 'Request denied';\n stateObj.colour = 'danger';\n break;\n case 'estimate-request-accepted-by-user':\n stateObj.name = 'Accepted request';\n stateObj.colour = 'success';\n break;\n case 'estimate-request-revoked-by-professional':\n stateObj.name = 'Installer revoked access';\n stateObj.colour = 'danger';\n break;\n }\n return stateObj;\n }\n\n\n getAllActiveEstimateRequests(resp) {\n let acceptedEstimateRequests = []\n this.activeEstimateRequestsStates.forEach(state => {\n resp.estimateRequests.forEach(estimateRequest => {\n if (state == estimateRequest.estimateRequestState) {\n acceptedEstimateRequests.push(estimateRequest)\n }\n })\n })\n return acceptedEstimateRequests\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class JsonLdService {\n constructor() {}\n\n static scriptType = \"application/ld+json\";\n\n static articleSchema(title: string, summary: string, imagesUrls:string[], authorNames?:string[]) {\n let authors;\n if (authorNames){\n authors=authorNames.map(name=>{return {'@type':'Person', 'name':name}})\n }\n return {\n '@context': 'http://schema.org',\n '@type': 'Article',\n headline: title,\n abstract:summary,\n image:imagesUrls,\n author:authors\n };\n }\n\n static websiteSchema(url: string, name: string) {\n return {\n '@context': 'http://schema.org',\n '@type': 'WebSite',\n url: url || 'https://glowmarkt.com/',\n name: name || 'Glowmarkt',\n // \"sameAs\": [\"https://facebook.com/google\",\n // \"https://instagram.com/google\",\n // \"https://twitter.com/google\"]\n };\n }\n\n static organisationSchema() {\n return {\n '@context': 'https://schema.org',\n '@type': 'Organization',\n url: 'https://www.hildebrand.co.uk/',\n name: 'Hildebrand',\n contactPoint: {\n '@type': 'ContactPoint',\n telephone: '0207 486 1020',\n contactType: 'Customer service',\n },\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { environment } from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LandingService {\n // contentToDisplayId!: string | number;\n // userStoryId!: string | number;\n // resourcesListId!: string | number;\n // blogId!: string | number;\n\n\n // private blogAnnouncer = new Subject();\n // selectedBlog$ = this.blogAnnouncer.asObservable();\n private contentToDisplayAnnouncer = new Subject();\n selectedContentToDisplay$ = this.contentToDisplayAnnouncer.asObservable();\n\n relatedContentTypes: Array = ['blogs', 'user-stories', 'resources', 'tags', 'authors'];\n\n\n\n constructor() {\n // this.getIdsFromStorage();\n // this.getContentToDisplayIdFromStorage();\n }\n\n getForumUserProfileUrl(handle:string){\n return `https://forum.glowmarkt.com/index.php?p=/profile/${handle}`\n }\n\n // setContentToDisplayId(id: string | number) {\n // this.contentToDisplayId = id;\n // localStorage.setItem('contentToDisplayId', JSON.stringify(id));\n // this.contentToDisplayAnnouncer.next(id);\n // }\n\n\n // getContentToDisplayIdFromStorage() {\n // const contentToDisplayId = localStorage.getItem('contentToDisplayId');\n // contentToDisplayId ? (this.contentToDisplayId = contentToDisplayId) : null;\n // }\n // setUserStoryId(id: string | number) {\n // this.userStoryId = id;\n // localStorage.setItem('userStoryId', JSON.stringify(id));\n // }\n // setBlogId(id: string | number) {\n // this.blogId = id;\n // localStorage.setItem('blogId', JSON.stringify(id));\n // this.blogAnnouncer.next(this.blogId);\n // }\n\n // setResourceId(id: string | number) {\n // this.resourcesListId = id;\n // localStorage.setItem('resourcesListId', JSON.stringify(id))\n // }\n // getIdsFromStorage() {\n // const userStoryId = localStorage.getItem('userStoryId');\n // const blogId = localStorage.getItem('blogId');\n // const resourcesListId = localStorage.getItem('resourcesListId')\n // userStoryId ? (this.userStoryId = userStoryId) : null;\n // blogId ? (this.blogId = blogId) : null;\n // resourcesListId ? (this.resourcesListId = resourcesListId) : null;\n // }\n\n\n\n \n\n}\n","import { Injectable } from '@angular/core';\nimport { Meta } from '@angular/platform-browser';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MetaTagsService {\n constructor(private metaService: Meta) {}\n\n addMetaTags(title: string, description: string, url: string) {\n this.metaService.addTag({name: 'description', content:description})\n this.metaService.addTag({ property: 'og:title', content: title });\n this.metaService.addTag({ property: 'twitter:title', content: title });\n this.metaService.addTag({ property: 'og:description', content: description });\n this.metaService.addTag({ property: 'twitter:description', content: description });\n this.metaService.addTag({ property: 'og:url', content: url });\n this.metaService.addTag({ property: 'twitter:url', content: url });\n }\n\n removeMetaTags() {\n this.metaService.removeTag(\"name='description'\")\n this.metaService.removeTag(\"property='og:title'\");\n this.metaService.removeTag(\"property='og:url'\");\n this.metaService.removeTag(\"property='og:description'\");\n this.metaService.removeTag(\"property='twitter:title'\");\n this.metaService.removeTag(\"property='twitter:url'\");\n this.metaService.removeTag(\"property='twitter:description'\");\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { tMeterPointVerificationElement, tVerificationStatus } from './glow.typings';\nimport { max } from 'underscore';\nimport { GlowService } from './glow.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MeterPointVerificationConsentManagementService {\n meters: EventEmitter = new EventEmitter()\n constructor(private glowService: GlowService) { }\n\n timeBeforeExpires: number = 15552000 // 6 months in seconds\n checkIfMeterPointConsentRefreshIsRequired(meterPointVerificationElem: tMeterPointVerificationElement): boolean {\n let requiresConsentUpdate = false\n\n if (meterPointVerificationElem.isValidUntil && meterPointVerificationElem.isVerified) {\n const maxExpiryDateTs = new Date().getTime() + this.timeBeforeExpires * 1000\n const maxExpiryDate = new Date(maxExpiryDateTs)// \n try {\n const isValidUntilDate = new Date(meterPointVerificationElem.isValidUntil);\n // console.log( \"isValidUntilDate maxExpiryDate\", isValidUntilDate, maxExpiryDate)\n\n if (isValidUntilDate > new Date()) {\n if (isValidUntilDate < maxExpiryDate) {\n\n console.log(`${meterPointVerificationElem.mpxn} checkIfConsentRefreshIsRequired is true | isValidUntilDate ${isValidUntilDate} | maxExpiryDate ${maxExpiryDate}`)\n requiresConsentUpdate = true\n }\n } else {\n requiresConsentUpdate = null\n }\n\n } catch (e) {\n console.warn(e)\n }\n\n }\n // console.log(`${meterPointVerificationElem.mpxn} checkIfConsentRefreshIsRequired is true because meter point is not verified`)\n\n\n return requiresConsentUpdate\n\n }\n\n // returns a boolean if at least one of the meter points requires verification\n checkIfConsentRefreshIsRequired(verificationStatus: tVerificationStatus): boolean {\n\n let requiresConsentUpdate = false\n if (Array.isArray(verificationStatus.meterPointVerification)) {\n verificationStatus.meterPointVerification.forEach(elem => {\n requiresConsentUpdate = requiresConsentUpdate || this.checkIfMeterPointConsentRefreshIsRequired(elem)\n });\n }\n console.log(\"checkIfConsentRefreshIsRequired \" + requiresConsentUpdate)\n return requiresConsentUpdate;\n }\n\n getVerificationStatus() {\n this.glowService.getUserVerificationStatus().subscribe((resp: any) => {\n console.log(resp)\n this.announceMeters(resp) \n }, (err) => {\n this.announceMeters(err) \n\n })\n }\n\n announceMeters(meters) {\n this.meters.emit(meters)\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { AuthenticationService } from '../services/authentication.service';\n// import { OAuthService } from 'angular-oauth2-oidc';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OIDCAuthGuard implements CanActivate {\n constructor(\n private auth: AuthenticationService // private router: Router, // private oauthService: OAuthService\n ) {}\n\n public canActivate(\n _: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | Promise | boolean {\n if (!this.auth.authenticated) {\n return this.auth.authenticate();\n }\n return this.auth.authenticated;\n\n // var hasIdToken = this.oauthService.hasValidIdToken();\n // var hasAccessToken = this.oauthService.hasValidAccessToken();\n // // console.log('canActivate', hasIdToken, hasAccessToken)\n // return (hasIdToken && hasAccessToken);\n\n // // console.log('canActivate this.auth.authenticated', this.auth.authenticated)\n // if (!this.auth.authenticated) {\n // this.auth.signout()\n // this.router.navigate(['login']);\n // return false;\n // }\n // else {\n // return true;\n // }\n }\n\n\n}\n","import { Injectable, ViewChild } from '@angular/core';\nimport pdfMake from 'pdfmake/build/pdfmake';\nimport pdfFonts from 'pdfmake/build/vfs_fonts';\nimport { Utils } from 'src/utils';\nimport { SchematicsService } from './schematics.service';\nimport { Subscription } from 'rxjs';\nimport { RadiatorSchematicComponent } from '../components/radiator-schematic/radiator-schematic.component';\npdfMake.vfs = pdfFonts.pdfMake.vfs;\n@Injectable({\n providedIn: 'root'\n})\nexport class PdfService {\n pdfMake: any;\n currentProperty;\n currentSnapshot;\n schematic\n dataURL\n @ViewChild(RadiatorSchematicComponent, { static: false }) radiatorSchematic;\n\n constructor(private schematicsService: SchematicsService) {\n }\n async loadPdfMaker() {\n if (!this.pdfMake) {\n const pdfMakeModule = await import(\"pdfmake/build/pdfmake\");\n const pdfFontsModule = await import(\"pdfmake/build/vfs_fonts\");\n this.pdfMake = pdfMakeModule.default;\n this.pdfMake.vfs = pdfFontsModule.default.pdfMake.vfs;\n this.pdfMake.title = 'test'\n }\n\n }\n\n\n // getSchematic(snapshot) {\n // this.schematicsService.getSchematic(snapshot.veId, snapshot.heatingSystem.veDocId).then(resp => {\n // console.log(resp)\n // this.schematic = resp\n // })\n // }\n\n async generatePdf(snapshot, imageURL?) {\n console.log(snapshot)\n // this.getSchematic(snapshot)\n await this.loadPdfMaker();\n const def = this.createPdf(snapshot, imageURL)\n this.pdfMake.createPdf(def).open();\n }\n\n\n createPdf(snapshot, imageURL?) {\n var dd = {\n info: {\n title: `${snapshot.address.firstLine}, ${snapshot.address.postcode} - ${snapshot.assessmentPeriodStart} to ${snapshot.assessmentPeriodEnd} `,\n author: 'Glowmarkt'\n\n },\n content: [\n\n\n\n\n { text: `Assessment Period: ${Utils.getReadableDateFromIso(snapshot.assessmentPeriodStart)} to ${Utils.getReadableDateFromIso(snapshot.assessmentPeriodEnd)}`, style: 'heading6' },\n { svg: '', margin: [0, 0, 0, 20] },\n //row 1 \n {\n columnGap: 10,\n columns: [\n {\n // background: '#2b2b2b',\n width: 200,\n type: 'none',\n ul:\n [\n\n { text: 'Address:', style: { bold: true } },\n { text: `${snapshot.address.firstLine}`, style: \"text\" },\n // { text: `${this.currentProperty.region}`, style: \"text\" },\n { text: `${snapshot.address.postcode}`, style: \"text\" }],\n },\n {\n width: 250,\n layout: 'noBorders',\n fillColor: '#F0FDFF',\n table: {\n widths: [200, 100],\n body: [\n [{ text: 'Preferred installation timeframe: ', style: 'tableHeader' }, { text: snapshot.overview.installationDate, style: 'tableData', alignment: 'right' }],\n [{ text: 'Space for hot water tank:', style: 'tableHeader' }, { text: `${snapshot.overview.hotWaterTankSpace == true ? 'Yes' : 'No'}`, style: 'tableData', alignment: 'right' }],\n [{ text: 'New radiators installed:', style: 'tableHeader' }, { text: `${snapshot.overview.newRadiatorsFitted == true ? 'Yes' : 'No'}`, style: 'tableData', alignment: 'right' }],\n ]\n }\n },\n\n ]\n },\n\n\n //epc section\n snapshot.epc ? { text: 'EPC information', style: 'sectionHeading' } : '',\n\n snapshot.epc ? {\n columnGap: 5,\n columns: [\n //epc SCALE\n {\n table: {\n widths: [51, 3, 3, 3, 3, 3, 3, 3, 1, 35, 40],\n color: '#ffffff',\n body: [\n [\n {\n colSpan: 9,\n border: [true, true, true, false],\n fillColor: '#ffffff',\n text: '',\n color: '#ffffff',\n },\n // keep empty {}\n {},\n {},\n {},\n {},\n {},\n {},\n {},\n {},\n\n {\n border: [false, true, false, true],\n fillColor: '#ffffff',\n text: 'Current',\n color: '',\n fontSize: 10\n },\n {\n border: [true, true, true, true],\n fillColor: '#ffffff',\n text: 'Potential',\n color: '',\n fontSize: 10\n },\n\n\n\n ],\n [\n {\n border: [true, false, false, false],\n fillColor: '#01803D',\n text: '(92 +) A',\n color: '#ffffff',\n bold: true\n\n },\n {\n\n border: [false, false, false, false],\n fillColor: '#01803D',\n text: '',\n color: '#ffffff',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: '',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [true, false, false, false],\n fillColor: snapshot.epc.currentEnergyEfficiencyScore >= 92 ? '#01803D' : '#ffffff',\n text: snapshot.epc.currentEnergyEfficiencyScore >= 92 ? `${snapshot.epc.currentEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n {\n border: [true, false, true, false],\n fillColor: snapshot.epc.potentialEnergyEfficiencyScore >= 92 ? '#01803D' : '#ffffff',\n text: snapshot.epc.potentialEnergyEfficiencyScore >= 92 ? `${snapshot.epc.potentialEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n\n },\n\n\n ],\n [\n {\n border: [true, false, false, false],\n fillColor: '#2C9F28',\n text: '(81-91) B',\n color: '#ffffff',\n bold: true\n },\n {\n\n border: [false, false, false, false],\n fillColor: '#2C9F28',\n text: '',\n color: '#ffffff',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#2C9F28',\n text: '',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [true, false, true, false],\n fillColor: snapshot.epc.currentEnergyEfficiencyScore >= 81 && snapshot.epc.currentEnergyEfficiencyScore < 91 ? '#2C9F28' : '#ffffff',\n text: snapshot.epc.currentEnergyEfficiencyScore >= 81 && snapshot.epc.currentEnergyEfficiencyScore < 91 ? `${snapshot.epc.currentEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n {\n border: [true, false, true, false],\n fillColor: snapshot.epc.potentialEnergyEfficiencyScore >= 81 && snapshot.epc.potentialEnergyEfficiencyScore <= 91 ? '#2C9F28' : '#ffffff',\n text: snapshot.epc.potentialEnergyEfficiencyScore >= 81 && snapshot.epc.potentialEnergyEfficiencyScore <= 91 ? `${snapshot.epc.potentialEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n\n\n ],\n [\n {\n border: [true, false, false, false],\n fillColor: '#9ECB3D',\n text: '(69-80) C',\n color: '#ffffff',\n bold: true\n },\n {\n\n border: [false, false, false, false],\n fillColor: '#9ECB3D',\n text: '',\n color: '#ffffff',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#9ECB3D',\n text: '',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#9ECB3D',\n text: ''\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [true, false, false, false],\n fillColor: snapshot.epc.currentEnergyEfficiencyScore >= 69 && snapshot.epc.currentEnergyEfficiencyScore <= 80 ? '#9ECB3D' : '#ffffff',\n text: snapshot.epc.currentEnergyEfficiencyScore >= 69 && snapshot.epc.currentEnergyEfficiencyScore <= 80 ? `${snapshot.epc.currentEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n {\n border: [true, false, true, false],\n fillColor: snapshot.epc.potentialEnergyEfficiencyScore >= 69 && snapshot.epc.potentialEnergyEfficiencyScore <= 80 ? '#9ECB3D' : '#ffffff',\n text: snapshot.epc.potentialEnergyEfficiencyScore >= 69 && snapshot.epc.potentialEnergyEfficiencyScore <= 80 ? `${snapshot.epc.potentialEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n\n\n ],\n [\n {\n border: [true, false, false, false],\n fillColor: '#FEF200',\n text: '(55-68) D',\n color: '#2b2b2b',\n bold: true\n },\n {\n\n border: [false, false, false, false],\n fillColor: '#FEF200',\n text: '',\n color: '#ffffff',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#FEF200',\n text: '',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#FEF200',\n text: ''\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#FEF200',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [true, false, false, false],\n fillColor: snapshot.epc.currentEnergyEfficiencyScore >= 55 && snapshot.epc.currentEnergyEfficiencyScore <= 68 ? '#FEF200' : '#ffffff',\n text: snapshot.epc.currentEnergyEfficiencyScore >= 55 && snapshot.epc.currentEnergyEfficiencyScore <= 68 ? `${snapshot.epc.currentEnergyEfficiencyScore}` : '',\n color: '#2B2B2B',\n bold: true\n\n\n },\n {\n border: [true, false, true, false],\n fillColor: snapshot.epc.potentialEnergyEfficiencyScore >= 55 && snapshot.epc.potentialEnergyEfficiencyScore <= 68 ? '#FEF200' : '#ffffff',\n text: snapshot.epc.potentialEnergyEfficiencyScore >= 55 && snapshot.epc.potentialEnergyEfficiencyScore <= 68 ? `${snapshot.epc.potentialEnergyEfficiencyScore}` : '',\n color: '#2B2B2B',\n bold: true\n\n\n },\n\n\n ],\n [\n {\n border: [true, false, false, false],\n fillColor: '#F7AF1D',\n text: '(39-54) E',\n color: '#ffffff',\n bold: true\n },\n {\n\n border: [false, false, false, false],\n fillColor: '#F7AF1D',\n text: '',\n color: '#ffffff',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#F7AF1D',\n text: '',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#F7AF1D',\n text: ''\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#F7AF1D',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#F7AF1D',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [true, false, false, false],\n fillColor: snapshot.epc.currentEnergyEfficiencyScore >= 39 && snapshot.epc.currentEnergyEfficiencyScore <= 54 ? '#F7AF1D' : '#ffffff',\n text: snapshot.epc.currentEnergyEfficiencyScore >= 39 && snapshot.epc.currentEnergyEfficiencyScore <= 54 ? `${snapshot.epc.currentEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n {\n border: [true, false, true, false],\n fillColor: snapshot.epc.potentialEnergyEfficiencyScore >= 39 && snapshot.epc.potentialEnergyEfficiencyScore <= 54 ? '#F7AF1D' : '#ffffff',\n text: snapshot.epc.potentialEnergyEfficiencyScore >= 39 && snapshot.epc.potentialEnergyEfficiencyScore <= 54 ? `${snapshot.epc.potentialEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n\n\n ],\n [\n {\n border: [true, false, false, false],\n fillColor: '#ED6924',\n text: '(21-38) F',\n color: '#ffffff',\n bold: true\n },\n {\n\n border: [false, false, false, false],\n fillColor: '#ED6924',\n text: '',\n color: '#ffffff',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ED6924',\n text: '',\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ED6924',\n text: ''\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ED6924',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ED6924',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ED6924',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [false, false, false, false],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [true, false, false, false],\n fillColor: snapshot.epc.currentEnergyEfficiencyScore >= 21 && snapshot.epc.currentEnergyEfficiencyScore <= 38 ? '#ED6924' : '#ffffff',\n text: snapshot.epc.currentEnergyEfficiencyScore >= 21 && snapshot.epc.currentEnergyEfficiencyScore <= 38 ? `${snapshot.epc.currentEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n {\n border: [true, false, true, false],\n fillColor: snapshot.epc.potentialEnergyEfficiencyScore >= 21 && snapshot.epc.potentialEnergyEfficiencyScore <= 38 ? '#ED6924' : '#ffffff',\n text: snapshot.epc.potentialEnergyEfficiencyScore >= 21 && snapshot.epc.potentialEnergyEfficiencyScore <= 38 ? `${snapshot.epc.potentialEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n\n\n ],\n [\n {\n border: [true, false, false, true],\n fillColor: '#E41D24',\n text: '(1-20) G',\n color: '#ffffff',\n bold: true\n },\n {\n\n border: [false, false, false, true],\n fillColor: '#E41D24',\n text: '',\n color: '#ffffff',\n\n },\n {\n border: [false, false, false, true],\n fillColor: '#E41D24',\n text: '',\n\n },\n {\n border: [false, false, false, true],\n fillColor: '#E41D24',\n text: ''\n\n },\n {\n border: [false, false, false, true],\n fillColor: '#E41D24',\n text: ''\n\n\n },\n {\n border: [false, false, false, true],\n fillColor: '#E41D24',\n text: ''\n\n\n },\n {\n border: [false, false, false, true],\n fillColor: '#E41D24',\n text: ''\n\n\n },\n {\n border: [false, false, false, true],\n fillColor: '#E41D24',\n text: ''\n\n\n },\n {\n border: [false, false, false, true],\n fillColor: '#ffffff',\n text: ''\n\n\n },\n {\n border: [true, false, false, true],\n fillColor: snapshot.epc.currentEnergyEfficiencyScore <= 20 ? '#E41D24' : '#ffffff',\n text: snapshot.epc.currentEnergyEfficiencyScore <= 20 ? `${snapshot.epc.currentEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n {\n border: [true, false, true, true],\n fillColor: snapshot.epc.potentialEnergyEfficiencyScore <= 20 ? '#E41D24' : '#ffffff',\n text: snapshot.epc.potentialEnergyEfficiencyScore <= 20 ? `${snapshot.epc.potentialEnergyEfficiencyScore}` : '',\n color: '#ffffff',\n bold: true\n\n\n },\n\n\n ],\n ]\n },\n\n },\n\n {\n layout: 'noBorders',\n fillColor: '#F0FDFF',\n table: {\n body: [\n [{ text: 'Current energy rating:', style: 'tableHeader' }, { text: `${snapshot.epc.currentEnergyRating}`, style: 'tableData', alignment: 'right' }],\n [{ text: 'Potential energy rating:', style: 'tableHeader' }, { text: `${snapshot.epc.potentialEnergyRating}`, style: 'tableData', alignment: 'right' }],\n [{ text: 'Lodgement date:', style: 'tableHeader' }, { text: `${snapshot.epc.lodgementDate}`, style: 'tableData', alignment: 'right' }],\n [{ text: 'Building type:', style: 'tableHeader' }, { text: `${snapshot.epc.buildingType}`, style: 'tableData', alignment: 'right' }],\n [{ text: 'Windows type:', style: 'tableHeader' }, { text: `${snapshot.epc.windowType}`, style: 'tableData', alignment: 'right' }],\n [{ text: 'Build date', style: 'tableHeader' }, { text: `${snapshot.epc.buildDate}`, style: 'tableData', alignment: 'right' }],\n\n ]\n }\n },\n\n ]\n } : '',\n //Thermal performance section\n\n // snapshot.thermalPerformance.htc || snapshot.thermalPerformance.hlp ? { text: 'Thermal Performance¹', style: 'sectionHeading' } :'',\n\n // snapshot.thermalPerformance.htc || snapshot.thermalPerformance.hlp?{\n // columnGap: 40,\n // columns: [\n // {\n // layout: 'noBorders',\n // fillColor: '#FFFFFF',\n\n // table: {\n // widths: [160, 80],\n // body: [\n // [{ text: 'Building fabric score (HTC Score):', style: 'tableHeader', background: '' }, { text: `${snapshot.thermalPerformance.htc} W/K`, style: 'tableData', alignment: 'right' }],\n // [{ text: 'Heat loss parameter (HLP)', style: 'tableHeader' }, { text: `${snapshot.thermalPerformance.hlp} W/m²/K`, style: 'tableData', alignment: 'right' }],\n // ]\n // }\n // },\n // {\n\n // // HLP table\n // table: {\n // widths: [30, 50, 10, 10, 10, 20],\n // color: '#ffffff',\n // body: [\n // [\n // {\n // colSpan: 5,\n // border: [true, true, true, true],\n // fillColor: '#FFFFFF',\n // text: '',\n // color: '#ffffff',\n // },\n // {},\n // {},\n // {},\n // {},\n\n // {\n // border: [true, true, true, true],\n // fillColor: '#ffffff',\n // text: `HLP`,\n // color: '#2B2B2B',\n // fontSize: 10,\n // bold: true\n // },\n\n\n // ],\n // [\n // {\n // border: [true, false, false, false],\n // fillColor: '#65A36A',\n // text: '0-1',\n // color: '#ffffff',\n // },\n // {\n\n // border: [false, false, false, false],\n // fillColor: '#2F652D',\n // text: 'Excellent',\n // color: '#ffffff',\n\n // },\n // {\n // border: [false, false, false, false],\n // fillColor: '#ffffff',\n // text: '',\n\n // },\n // {\n // border: [false, false, false, false],\n // fillColor: '#ffffff',\n // text: '',\n\n // },\n // {\n // border: [false, false, false, false],\n // fillColor: '#ffffff',\n // text: '',\n\n // },\n\n // {\n // border: [true, false, true, false],\n // fillColor: '#ffffff',\n // text: snapshot.thermalPerformance.hlp <= 1 ? `${snapshot.thermalPerformance.hlp}` : '',\n // color: '#2F652D',\n // bold: true\n // },\n\n\n // ],\n // [\n // {\n // border: [true, false, false, false],\n // fillColor: '#B7D87E',\n // text: '1-2',\n // color: '#ffffff',\n // },\n // {\n // border: [false, false, false, false],\n // fillColor: '#8EC141',\n // text: 'Good',\n // color: '#ffffff',\n\n // },\n // {\n // border: [false, false, false, false],\n // fillColor: '#8EC141',\n // text: ''\n // },\n\n // {\n // border: [false, false, false, false],\n // fillColor: '#ffffff',\n // text: ''\n\n // },\n\n // {\n // border: [false, false, false, false],\n // fillColor: '#ffffff',\n // text: ''\n // },\n // {\n // border: [true, false, true, false],\n // fillColor: '#ffffff',\n // text: snapshot.thermalPerformance.hlp > 1 && snapshot.thermalPerformance.hlp <= 2 ? `${snapshot.thermalPerformance.hlp}` : '',\n // color: '#8EC141',\n // bold: true\n // },\n\n\n // ],\n // [\n // {\n // border: [true, false, false, false],\n // fillColor: '#F2D767',\n // text: '2-3',\n // color: '#ffffff',\n // },\n // {\n // border: [false, false, false, false],\n // fillColor: '#F7CE46',\n // text: 'Average',\n // color: '#ffffff',\n\n // },\n // {\n // border: [false, false, false, false],\n // fillColor: '#F7CE46',\n // text: ''\n // },\n\n // {\n // border: [false, false, false, false],\n // fillColor: '#F7CE46',\n // text: ''\n\n // },\n\n // {\n // border: [false, false, true, false],\n // fillColor: '#ffffff',\n // text: ''\n // },\n // {\n // border: [true, false, true, false],\n // fillColor: '#ffffff',\n // text: snapshot.thermalPerformance.hlp > 2 && snapshot.thermalPerformance.hlp <= 3 ? `${snapshot.thermalPerformance.hlp}` : '',\n // color: '#F7CE46',\n // bold: true,\n // },\n\n\n // ],\n // [\n // {\n // border: [true, false, false, true],\n // fillColor: '#E75F5A',\n // text: '3+',\n // color: '#ffffff',\n // },\n // {\n // border: [false, false, false, true],\n // fillColor: '#EA3323',\n // text: 'Poor',\n // color: '#ffffff',\n\n // },\n // {\n // border: [false, false, false, true],\n // fillColor: '#EA3323',\n // text: ''\n // },\n\n // {\n // border: [false, false, false, true],\n // fillColor: '#EA3323',\n // text: ''\n\n // },\n\n // {\n // border: [false, false, false, true],\n // fillColor: '#EA3323',\n // text: ''\n // },\n\n // {\n // border: [true, false, true, true],\n // fillColor: '#ffffff',\n // text: snapshot.thermalPerformance.hlp > 3 ? `${snapshot.thermalPerformance.hlp}` : '',\n // color: '#EA3323',\n // bold: true,\n // },\n\n\n // ]\n\n\n\n // ]\n // },\n // },\n\n\n\n\n // ]\n // } :'',\n\n { text: 'Actual current energy consumption- from smart meters', style: 'sectionHeading' },\n\n\n {\n columns: [\n {\n layout: 'noBorders',\n fillColor: '#F0FDFF',\n table: {\n widths: [350, 70],\n body: [\n [{ text: 'Annual electricity consumption:', style: 'tableHeader', background: '' }, { text: `${snapshot.energyConsumption.annualElectricityConsumption} kWh`, style: 'tableData', alignment: 'right' }],\n [{ text: 'Annual gas consumption', style: 'tableHeader' }, { text: `${snapshot.energyConsumption.annualGasConsumption} kWh`, style: 'tableData', alignment: 'right' }],\n [snapshot.energyConsumption.peakDemand.length ? { text: `Gas peak demand on the coldest day² - temperature: ${snapshot.energyConsumption.peakDemand.temperature}°C`, style: 'tableHeader' } : '', snapshot.energyConsumption.peakDemand.length ? { text: `${snapshot.energyConsumption.peakDemand.consumption} kWh`, style: 'tableData', alignment: 'right' } : ''],\n\n ]\n }\n },\n\n\n ]\n \n },\n {\n margin: [0, 5, 5, 30],\n height: 40,\n width: 120,\n image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWkAAABvCAYAAAAuVTHnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABrNSURBVHgB7Z1rrBVVlsfXed73Ay42goIPWnz1Y0SxnYRp1EkYJxOVTmQmgklnBiNIdzrG53zRaPPFOH4gnen4iE4mGSVxNBnUD9KY+DaxUXGmnUFktLmgXFTgAvd17nl3/Qv37WLfveu5q04dXL+kcu49p07VrjpV/71q7bXWzjQajSYxDMMwaWQ4SwzDMExqYZFmGIZJMSzSDMMwKYZFmmEYJsWwSDMMw6QYFmmGYZgUk6c2oVmdoub0EWqMH7Bfsdjvf/sKMp3zrCPqpmzXPMr0LqastWQK3RSWZqlMUzt3U3Xk8Mx7xSVnU/eVlxDDMEwSZNIcJ10/tocax60FrxDn2hQFBUKdnXMR5c5YRjnr1S+Tb31EE9vfo4Yl1DK5uf009Iub7FeGYZgYGU6dSEOY64d3Uf3QO6FE2Q1Y2hDs4nmrKWNZ2zrGf/eeLdBuZLs6aN7d61ioGYaJk/SINMS5tm+b/ZoEuQUrlGJdHx2jbzb/m69tFM46wxZqhmGYmBhuuU8avubq8DaqHdhBSQJLvWQtsljDivZL9eBhqnz2JRW/fzYxDMPEQUtFuma5Naq7nzLu1ggCxHrast4Li1dRftEqW3SDULMs7yIxDMPEQ0tEulXWsw5EiFT2bqXqF+9S/Xiv9U6BGIZh0kDiIt0sHaHpXQ+fEjqXFhrHDhBVytYI46WW07rH13fgw2YYhomLRJNZEEaXVoGeoTJOjdE3LBfMcWIYhmk1iYk0BLqcdoEW1CepOfo6CzXDMC0nEZGeEegWDhAGplFloWYYpuXELtLwQZf/8Ju2EehmzZFh+K1Qw7JmGIZpBbGLdJw+6Ey+284itGt2xIUl1PBRU7NKDMMwSRNrdEfl/7caFWiIMWpwoB5Hbu5Fs8S5MXHADu9DWnnTcrHUjxvKXrQs6cbYf1N2YDkxDMMkSWwibad5G4iDhrWMJBO7SJJHgSSINxDroYOojbxDNdQBidpZlPZRszBAme6lxDAMkxSxiXRl91MUBSHO+cWr7L9DbcOytAvnr7YXCHX1j9siiXVz4v8o03WetWFOdmEYJhliEemolitqQXf++FdGfc35BStsCxuZhXCHhAL+aUuos31/QQzDMEkQy8AhLNawwHru+smvYxkMxDY7fvQrKpy3WrtObtBjv5N7OdqDYZjEMC7SUaxouCWKS9dS3NguEI1Q1w+PeH3dsqZ3E8MwTBIYF+mwVjQsaDcL1zRuQu2JNYjIIXkMwySBUZFGREcYK1oM8CUN9pkd9D+llpMm3B4MwzAxY1akLVdHGDov/+fQERxR6bj01lD7bk6xSDMMEz/GLemgYGaUWDMGPcC+4WoJDFLGK4eJYRgmToyJtD2bdwhXR7EFbg6Z0LHYlW+IYRgmTsyJdIgUbKR4t9KKFojEmaCwJc0wTNwYS2Zxujoa002a3Fuj8tcNynZmqGtxjrrOyc3eueXqSAuwpiufvDjr/UYjT9VKkRr1HOXyVcoXapTN1k5+CEuaozwYhokRYyLdKJ10dRx7u0zHd1ZtoRYcw44GsjRvVQf1LD25S1ivsKTTAtqTtWt+7LP/L09320utMnua2WJXibp7xk+KdX2CGIZh4sKYu6M5cYBGnpmi0bcqpwi0oHaiQV89X6IT71dO7rhvMaWN/IK/sl9Lk300OTaoFGhQKXXR2LEhajSz7PJgGCZWjIg0Bg2PvjpNpf11z3WP7CjbbpDcvPRY0YLsnAupXs/bIu0F3B8TJ+baUR4MwzBxYUSkq0cnbReHXyDomRRa0mBifND3urC0a9UiMQzDxIURkYYrIwiwuJuZIUojzXou0PrVSgcxDMPEhZGBw9roGAVF5bdmzDE+Pk7vv/++/Qr6+vpo4cKFdNFF4dLgkwLtfe2112b+b5d2M0xcxDp9VjuS68hRfdrbt55WDh48SM8++yy9+OKLMwLtBKJ37bXX0saNG+mss87yu1lb8B9//PFZ769bt87eXlTQ1kceecRutwq0e/ny5XTNNdfQjTfeSH644447Zp0DCP7mzZuV66NzeP3112lkZGRmn1u2bFGuqzsf2Db2IfPpp5/ax+cE5//qq68OdP5wPI899hhNTEzYv7XAra1eqM7TFVdcQbfffjsFBb/fSy+9pP1cnBu8ig4Yvyv+NrEft+sRvyt+M+d5A7gX0AaZ9evXkwmi3iNGRLrr4iWB1s8WOymTS2f/kO203B0nqC3BhQshUImzAJ9hPSwQO79ijQv8gw8+mPX+DTfcQFGBON5///2e7cZ6WCBSTz/9tGe7cTNCHJ2oBFSAm95pxYv9qgQE5wJC7USIjq798vnD/9hfkBsY+0QnLON2XG7g/KBjksHvHUak8T35vHiB84ZrEfvzK9a66/GWW27RfgfXjSzsopNQEfQ4dES9R4z4pHOW6BZ6B3yv3zlnPlX3fUVpo1mqULGzFug7HZ1TlAb8CJ0MhBpWVCvBjaCy5NzADQorx+s7KheJsJJVyBaW2/qq98O4ZIRbyi8qQY2CSugAji/IbxIF7OeZZ56hNWvWKH+DIPT29irfx/GoLO8wHVHSmBHpuf3Us3AJZX1Yx/muHuqev5hqB9MXX1y12lQsTFBhoNPX+l1IaMm13jWCCxsCHQZYUrAwWkXYduOm8/quzrpUCSyEQra6wZ49e3xvI+gjuyCI8OpENSxuHYTpfXnht/MNg+oax/Vh4kkwbowls3QsXEC9i5bargwdEOj+cy61/6589iWljemPP7dfe/L7PcUXAo0lP9T6EDz42dwubFyM/f392s9hxSRlNTmBJa+zVCF4S5cutRcdeHpwExk314NMEDEGY2OzB8svvPBCCoObD9cJOhG3J4EwqDomge6cxAmOD9ej6W22qxUNjDmGC2edQfXRMRrs7KHK5AkqH/uG6pVpatZrljj3UqFngLrmLZzxRcNqbZbKlOlKRwhbw2rL9MefUbNWtgV6cOhrZWp4vlixU8LzhbL9f7Y3WMieaYSPWQUGLDZt2jRj4UHQHnjggVmPlNgGbkidby4udBb89ddfT3fddddMu3GTbdiwQSlQEGpdu3Xv4/hlQdV1UjpRPHTo0Kz3woq0cHl4nX/ZXx4VHJub6LsJeFAeeughezBS7PONN97QPkFApOFbDvtkIhPWisa4hwqM+6jODQZuVW2OGplkTKTh8gCwpDuxWH5nL6Z27qaelZdRGhBWtBP4m4XPGYWWMpmGvQgyxSzl5rXWktZZOxiIue+++055DyKAC++6666btT4ebZMUaQiTSiBw8zz44IPK92677bZZ6+NGl49ToLvJVYKse7RXWer4vsqSDhIto9q/1/n/8MMPySRelrJJdwd+wwULFtjL5ZdfbnfE+P1vvvnmWb+HGCT2G8XjBFEvTqJY0brfQ/dUCjEOO4DrhjF3R+cPg0V4AJUwtoqJ7e+5fo5iSk6BBvkF/nzXcaKzhHRWgm402/RjtBc6y3XlypXK93Fjq24AtwEuXbSF6lh1VqNqXd3gVlhLGngJYpioiaj71HWkpsBvs3ateuLpsK4WufNsZ1+0wJhI5y13R1Dgl06DbxoWfT1EQk7x3C5qR2QxwUWLR9E04PaIC6FW4eZP9xvhobKMdeubiuxwAsF0Ow7TAg327vWeAi6O/TrRibRsEYeh3X3RAmMinbV8y8Xvn01BGfuvN6nVeFnROtJsSbuBx0j4z55//nl69913afv27aEeLaOgs0ZN+SEFKkta9Xjt5n+VhUrnpomKbmwBmA69A34E2KRfWoVbbHlUdFZ0WgwSvxid4zCMywMDiJNvfkStAvsOY0VDoLN96U3YdPOPwpJGAgVeTYtiVEy3R+WCkEXW69FaFnWVSEdxdQjchNh0OJxqe6pImqTD8Eyhs6Lh5oirU4gLoyLddeUlFAZY061we0CcZSs60+lvrsOOpT3EpAO3BAiVeMquDa/wQ9majEuksR/doKbpEEmVhXznnXfOErAkk1pMorOik35iNIFRkQ7r8gDHt+4IZdGGBfs6+q8v2KF3Tprjxz2/Cwu6uLSX0kDSA36mSOrGVz1RyOfM65Fe/lzV9iiRHc7tqixX06F3QOXquOCCC+xFblPc15jpa0FnRcPN0W5WNDAq0qDvuqsoDEI0kxBqxGcfe/rl0PvqWuY/BZ5Rk5RI+4nw8KrvIVvqKlEPa0nL+1IJsizcF198MUVF3ibOExbV4Gycg4c6S12X3u0HXfx9uw0YCoyLNCzpsNa0EOpqjCnj2Mfhf3k29D5gRRfO8ecSYdKBKvLCKQyyCMtFemRrUnaXRInsQFU/J7JfGvt1dgoQ0quuCmcICVRuFeGPPvPMM5Xrx4Uu9jvsk8np5IsWGBdpENaaBhDRI5aIjoeMuHADg4TYtqsFnXPPIIQVnemI5bQxMaG6OZ2DhbIIIY5cTlgQ66sGGaMMdso+UrngkmzF4pE96uCqyocv3ByqJ4K4Bg8hqE888YTys7BPJqrysSBtA+RBiCU8QVjTUQYDMaBX2rmbei3B7w45ICkoW+3A9ny1J6sX6TT5ooOCYkS6okBYcFO4lXlsZ1Q3vLAkVaKL9ZEZ57SYxblTPZq71RfxQtTJdooxrGmRcCRb1ojKiRpDrBJd0ZHhuNEm53EKl0QUoUNHKPYhyoxu3bpV6983nf0K6zpIKdQ0EVsM2eDaVbbVKg/MBQEW7wlrQBECC7HusIRfpJ97AXcGMhpNJsz0/Z13qnsawU3hFoMLcAN9l0RaWJNyxyVcFxAJp4Ut/lZ1dFEEBaIB61gW6Xvvvdf+WxZUrIu6F1HwCr/D37IbAt+RXTNBePTRR+3FD/fccw+ZRjyhmJigImliE2mIaf/PVtpRG1ERYg2cPm8h2BgIRGeA9bCgDGqUzkFF91/OSXVctBtRa/S2Oyr/prBGdYOGsrC7iXQU6wzfhfg5B7tEESJ5UA1tw5LPh78OdYk7zqgO/C2LNAQuikj7BdZuXEKKyRJYpCUQN206WaUVqeQdP+i3l9OZdg3l84OI8FBFdMiCJcRZFmnR0akELmpKOPYltw9RHvK+RKZcFJFWtR+Ws7OjUblv4s48BKjaGGcEhog3bzeXR+wjYLCmw0Z7pIHcUNG2opn2RhZS4W+WnzKEOMvWt4jwkH2o2K6Jm14V5SG7JUwUBVKF08ntb4VIw8LVVTM0iela1U7iEv9EwhTmrL8+VAGmVpDJ/7m+NQS6Xf3QTiAkKFEqlnbMunLDbUIDgSqTDsh1oYU4q+KrMcgoi7qpG1N+DJcL/IsBRjB37lwKiyrkbdmyZaf8j8FDmahJLbgG0X4sKveT6bh5WOWq30Y1P6Qp2lqkkYk49Mub2kaogRDo0yHcTtzgYmnXeFEdfm4O1eAhXArOCA4R5SKQrW9VkfwokR1y+5zHoZq92wSqaBb5GHQJQFGSWiCawkhQDQxi26aSZtB2DLyqnjyCzimZBhJTIAj1GfesS02RfzdQPOl0EWjmJCqR3rVr1yn/y6IsC5UqScJEOjiAMLr5tk0MeOlqgwA8UTgXlTVtKl5aFw0TZPtuhobwa+vOmS6WOq0kHq4AHzUEO45kFRN0XNJNnT9sn1jo080qjguVmD733HOn/C9b5LKw62KqTQG/tM7KM2FJ66r9+Q158yOifp5qVLHhAGGiUQcOnQX9cc5U+2m3AcSWmIqIeZ5nWdV+Y56TAB1H/98up84ftGch/6i0s9j7abvqEb5cPjVMUxZCP/HPUSM7nOgEX0R/RCWqJeynIp5f4VOF85mYfUZ2cejCBuMcQDRNy57nMXHtvJS4PxB9grZ0oy25Jp0OuN1MaS49GWfbvARVNWONGyJb0w9+1tOlfJvyR5uI0DA1g7jOFRG1I5F/M4i26QHEpA2aljpdbevVcn9874F/CjVhQFQgzhjQxJImqz4IugvGbTqouEptmiBOkfa6uVRRIm7fCWJF+xVzlSDL1uDQ0BAFxWv2Gb+Y8kuLxBwZr8zYoOC8t/sAYipGxiCQCNODWCYRU+0U53aO4XYj7YXaw/gDo05b5eY/liM7BG5CbCqyw4nsYlFNHBwmmUUn0MINpFpUv1FYkVZtS2VNxzHhbrsPIKYqz1mIp8hSLH/8ubH0bnQEKNTUYVnshTYKBfRCJ3a4KXUXp+nU5jDoxE+OW3biZ+JUN9xEWtcet04g6tOHatuw+pAiLjpZlWUdRqRVwof9v/LKK9rvoB2ykIW1xlXXF54QVL5hdAQmCyy1+wBiKotRQERRoAkgBRyijdfat3U5/ABRhuhjW3CltKs7wwuduOCxEQWT5AsQyRiqG1YVchUnEAi4F2S3DIoHoRORBcytYppf3NbV3ahuwm4yssPZDginOFZT/k9VEotX+3WT+EKoTRy7KAkrXwNxlEbVRc6gk0j7ZACxiHT92B5qThygZnXK/j875yLKzQk3Ci4KKjkHGEUhJQBLGwWWhAjjNYogZ3JFajYqM/+X9jep/FWTGuUmZTsy1HVuhjrmZygt4EaCUMsDOhC6NWvW0ObNm21xwo2AVGPdqHbYOFxsUxYAp+CLG12VRAOrUW4PRGDDhg0z8+1BtF5++WV68sknSUWQQTVVDQ+v7YSxvqMSZEDSL6oBP69zp7NmIXamOiiIp+yHxvZVHbUfdN+Rn1AEGED8Tok0RLk6vI1qB6TKd/swwes8Kpy/mvILVlBUogqxH078vkGjb9epMT072qPvxzma89McFVIyixYudNVNiAt9/fr1nt+PUr/XbYZrJ8g4E+U3BbrHXbT77rvvJj8ETXHHcaoGp3Sio7O+4xBSvwwMzL7w3ARNl8Tix5KWa0uL7ZkCHYXq90A2qMnSuWIAUY7qEAOIputXm8TowGHl49/MFuhvaU4focrup6i6bxulmkzOFugjr9aUAg3G/6dOI/9RtaxrSgW4mKP4Rzdu3Oi5TlT/q0okcGNEuREh/EGtLd36uvofuLlVn8VlRfuhVqsFWl8XNufnGFTWtkl3BJ7gVOfXb+cfdF8q0j6AaEykq3/cZrs5TK3XKqonsrYF7UXteJO++s9gN0tcQEhQEyGMkOJRr5UFl7D/MO2GwGzatImCohJpXWSHQOWvDxrZ0cpkId3EuX6eBFQWpsmytrpzj47FdISSGECUEQOIacWISDdLRwJZyGm2po+9VdFa0DKl/Q3bZ50GIAIQar++ZVgvcD8k5Y/TiZToYIJ0FKJYTxh3g+om9bIoVZ+nJa7cD6qoGL+dhi5jz6RQq/YB0TSVOOO1L5DmDEQjPulGQMu4kVJLujGRodLeSqDvQKjTEjeCG2/Lli22Pw/FgGAhOEfOIcywJrBAFIOIHLYt3CJymJzb3IkCN58fto0BTvgM0W5Yfs4bFO2GtSXaHcUqxXexDbRZtNFrAE0kQ4jvYBthBlrl/YaNs8Z30VGJ38HrGJz7EefO7ywr4nfHvvwIMzo0uLBECrnwa7t1auK8iHKofn5f7EecA7Gf3t5ez84TvyXuCefxiEgjv4hzJ6xvXdVAU2QajUZkU7A+8g6VP3kq0He6//rfKW0gYmT3Tf8Y6Dvf+/nf0/yf/wOlFVxIIha0XQrKMAwzw3DL4qQRCZIpdFPayBY7qVGZptMFFmeGaW9alxY+fYTSBmKuc8WOQN/JWaLOMAwTF2ZEOoRFXJ84QGkDIt09/xzf68Pq7l5yATEMw8SFEZFGokpQGuPpE2mknBd6B6g44F1lLJPL0+CSH1H+NE03ZxgmHZgR6a4QIp1CS7o6crIuSN+ipdQ5Vz8BLSzoAUugs5Zr5HQq1sQwTPowMnCYyXfb1nQzgJ8ZYXhpGzxE1T0AK7nXEuru+YupfGKUKmNHqVmv2e8Xegao64yF9t+oh53pCubDZhiGCYKx6I5s32KqBxwMrH25gwrnraY0MLVz96yyqLCYIchYVOQXshXNMEy8GIvuCFPlTlfnoxVMvvURBeV0nTCAYZj0YEyks4PBRbpZm6LaoXeo1Uxbbg6/daqddLBIMwwTM+ZE2nJ3wDcdlOrerTN1p1vF2LY3KShiUgGGYZg4MZrMkl+0KuhXbGu6lQWXxn/33swEAkEoLmGBZhgmfoyKdO57yygMtS922EvSQJwntr9HYcB8iQzDMHFjVKSzvYtD+aZBxXJ7JOmfhkAf/e0LFAZ2dTAMkxTGa3dgiqywYOaWJIRaCHQYNwfo+5uriGEYJgmMizRC8cJa0yDuKbbKn30ZSaBhRXexq4NhmISIpQpex6W3hor0EGCKreldD9szvpgCM4pjkHA0gkADtqIZhkkSI0X/VUBoTVjE9gzjZ64IVR8EQJyRTYhklSjiDBDRMfTLm4hhGCYhhmMTaYTWTf/+gUD1PHSgLkjWcqMUFq2y47E9920Jc+XgYSr/7+dUUqR7hwF1Oubdvc52dzAMwyREfCINUOmu/OHDtmCbwhZsS6gRSTL1xaA9aaxd7IgK1Dg8ZmcOwmI2IcxO+levpJ6VlxHDMEyCxCvSoPrFDjur0CSl/XX65uVpqp1onPI+akH3LbrQLiFqkp6fXkb9P1tJDMMwCTMc+/RZcFGEyUTUMf6HKo08MzVLoEF14gSNfrKTyqNfkylQL5oFmmGYVpHIHIfFpWspv2AFRaX8dcO2oL0Y/2Iv1UqTFBUI9NAveKCQYZjWkdhEtMVLbo0s1Edf9T+L9+TI5xQFIdBc1J9hmFZirOi/HyDUlO8OVacDA4TwRfsFro9GpRzKP929/BLbxcECzTBMq0lUpAFcH0h0CRpD3SgHH9+sV6YDizRHcTAMkyYSF2lgJ6gsXEHTCM+bNpdVKIPQPL8g/nnw5lVcOIlhmFTREpEGiHfu/Mmv7Sm0/FjV+YEs5QezVDveIL/ku3p8rYdUb1jP7N5gGCZtxB4n7QdY00gj96qAN/p2hY695S9JpTgwRP3nuhdCQpr34NpVnEXIMExaGU6FSAuEWNcP71JmKWLwcP9vJ+1XL+ZefKXWHw1x7rvuKnZtMAyTdtIl0gIINIS6YS31Y3tOEWxEeHz1Qkkr1PBD9y48nzrmzj/lfQgzJo5FmVG2nBmGaRPSKdIyEOoGxHriADVKR6hycJgOPT9Nla//HJIHce6wXBzd88+hwvwz7DhnMYMKxJn9zQzDtCHtIdIqULyp9Pm4/Xcml6N8/wDlenvYSmYY5nSifUWaYRjmO8AwQvCGiWEYhkkjw38CdZ7gTrHxjkYAAAAASUVORK5CYII=\" />',\n opacity: 0.5\n },\n // //new page\n // snapshot.thermalPerformance.htc && snapshot.thermalPerformance.hlp && snapshot.thermalPerformance.epc ? { pageBreak: 'before',text: 'Current heating system', style: 'sectionHeading' } :'',\n { // { text: 'Current heating system', style: 'sectionHeading', pageOrientation: 'landscape', pageBreak: 'before' },\n pageOrientation: 'landscape', pageBreak: 'after', style: 'sectionHeading', text: '' \n },\n {style: 'sectionHeading', text: 'Current heating system' },\n\n // { style: 'sectionHeading', text: 'Current heating system' },\n imageURL ? { image: imageURL, width: 650 } : {},\n\n // {\n // columns: [\n\n // {\n // layout: 'noBorders',\n // fillColor: '#FFFFFF',\n // table: {\n // widths: [50, 170],\n // body: [\n // [{ text: 'Type:', style: 'tableHeader', background: '' }, { text: `${snapshot.heatingSystem.type}`, style: 'tableData', alignment: 'right' }],\n\n // ]\n // }\n // },\n // {\n // //Radiators schematic image\n // },\n\n // ]\n // },\n // snapshot.thermalPerformance.htc && snapshot.thermalPerformance.hlp || snapshot.energyConsumption.peakDemand.length ? { text: 'Footnotes', style: 'sectionHeading' } : '',\n // snapshot.thermalPerformance.htc && snapshot.thermalPerformance.hlp ? { text: \"¹ Thermal performance is determined by the SmartHTC algorithm, developed by our partners at Build Test Solutions. The SmartHTC algorithm uses smart meter data and an internal Temperature and Humidity Sensor (sold in our shop) to generate a home's building fabric score based on how well the home retains or loses heat.\", style: 'paragraph' }:'',\n snapshot.energyConsumption.peakDemand.length ? { text: \"² 'Coldest day' is determined by the average temperature of the coldest day of the heating season.\", style: 'paragraph' } : '',\n\n\n {\n margin: [0, 5, 5, 30],\n height: 40,\n width: 120,\n image: 'data:image/png;base64,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\" />',\n opacity: 0.5\n\n\n },\n\n\n ],\n\n styles: {\n sectionHeading: {\n fontSize: 16,\n color: '#102E7C',\n margin: [0, 20, 0, 20],\n bold: true,\n },\n heading6: {\n fontSize: 16,\n margin: [0, 15, 0, 10]\n },\n text: {\n margin: [0, 2, 0, 2]\n },\n\n table: {\n fontSize: 12,\n bold: false,\n margin: [3, 0, 3, 3],\n color: 'black'\n },\n tablepad: {\n fontSize: 10,\n bold: false,\n margin: [3, 20, 3, 0],\n color: 'black'\n },\n tableHeader: {\n fontSize: 12,\n bold: true,\n margin: [10, 5, 10, 0],\n color: 'black',\n\n },\n tableData: {\n fontSize: 12,\n bold: false,\n margin: [5, 5, 5, 5],\n color: 'black'\n },\n paragraph: {\n fontsize: 12,\n margin: [5, 10, 5, 5]\n }\n\n\n }\n }\n return dd\n }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { Aggregate, loadResource, useConfig, Timeseries, Resource } from \"@hildebrand/picard-javascript\";\nimport { Subject } from \"rxjs\";\nimport { ConfigService } from \"./app-config.service\";\nimport { GlowService } from \"./glow.service\";\nimport { StatsService } from \"./stats-service\";\nimport { environment } from '../../environments/environment';\nimport { ResourceTypeConfigService } from \"./configuration.service\";\nimport { DateFormatService } from \"./date-format.service\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PicardService {\n\n private picardGroupConsumptionAnnouncer = new Subject();\n private picardConsumptionDataAnnouncer = new Subject();\n private picardGroupResourceAnnouncer = new Subject();\n private SelectedPicardGroupTimeseriesAnnouncer = new Subject();\n\n private picardAllGroupResourceAnnouncer = new Subject();\n private picardAllGroupConsumptionAnnouncer = new Subject();\n private picardAllGroupGasConsumptionAnnouncer = new Subject();\n\n private picardMultiGroupResourceAnnouncer = new Subject();\n private picardMultiGroupPerformanceAnnouncer = new Subject();\n private picardMultiGroupSelectedSiteAnnouncer = new Subject();\n\n private selectedGroupTimeseries: any;\n private allGroupResources: any;\n private multiGroupResources: any;\n private resourceArray: any = [];\n classifierToResourceTypeMap: any;\n resourceClassifierMap: any;\n\n // Observable string streams\n picardGroupConsumptionData$ = this.picardGroupConsumptionAnnouncer.asObservable();\n picardConsumptionData$ = this.picardConsumptionDataAnnouncer.asObservable();\n groupResourceData$ = this.picardGroupResourceAnnouncer.asObservable();\n selectedPicardGroupTimeseries$ = this.SelectedPicardGroupTimeseriesAnnouncer.asObservable();\n\n allGroupResourceData$ = this.picardAllGroupResourceAnnouncer.asObservable();\n allPicardGroupConsumptionData$ = this.picardAllGroupConsumptionAnnouncer.asObservable();\n allPicardGroupGasConsumptionData$ = this.picardAllGroupGasConsumptionAnnouncer.asObservable();\n\n multiPicardGroupResourceData$ = this.picardMultiGroupResourceAnnouncer.asObservable();\n multiPicardGroupPerformanceData$ = this.picardMultiGroupPerformanceAnnouncer.asObservable();\n multiPicardGroupSelectedSite$ = this.picardMultiGroupSelectedSiteAnnouncer.asObservable();\n\n constructor(\n private configService: ConfigService,\n private glowService: GlowService,\n private dateFormatService: DateFormatService,\n private resourceTypeConfigService: ResourceTypeConfigService,\n private statsService: StatsService\n ) {\n this.resourceTypeConfigService.getClassifierToResourceTypeMap().then(resp => {\n this.classifierToResourceTypeMap = resp;\n });\n this.resourceClassifierMap = this.resourceTypeConfigService.loadResourceClassiffierMappings()\n }\n\n // rollIn - single value for all group (aggregare across members)\n // rollUp - aggregate in time\n\n // ********* Start Individual Resource ********* //\n\n async getResourceTimeseries(resource, aggregate) {\n\n const refreshedResources = await this.preCheckResourceExpiry([resource]);\n if (refreshedResources && refreshedResources.length > 0) {\n\n const validResources = []\n const invalidResources = []\n refreshedResources.map(resource => { resource.timestamps.length > 0 ? validResources.push(resource) : invalidResources.push(resource) });\n\n let group = Timeseries.combine(...validResources.map((res) => res))\n\n const dataInTimeWindow = group.window({\n clip: true\n });\n\n let aggCount;\n let localDate;\n switch (aggregate) {\n case 'day':\n aggCount = { days: 1 };\n localDate = new Date(this.dateFormatService.apiTimeFromFormat(new Date(group.firstReadingTime)))\n break;\n case 'month':\n aggCount = { months: 1 };\n localDate = new Date(this.dateFormatService.getStartOfMonth(new Date(group.firstReadingTime)))\n break;\n case 'year':\n aggCount = { years: 1 };\n localDate = new Date(this.dateFormatService.getStartOfYear(new Date(group.firstReadingTime)))\n break;\n default:\n aggCount = { days: 1 };\n localDate = new Date(this.dateFormatService.apiTimeFromFormat(new Date(group.firstReadingTime)))\n }\n\n let units = (this.resourceClassifierMap.dataStreamType.gas.find(classifierElem => classifierElem === resource.classifier)) ? 'Wh' : 'kWh';\n\n const consumptionData = []\n validResources.map(resourceElem => {\n let label, veId, resp;\n for (const [key, value] of resourceElem.columns.entries()) {\n label = value.attributes.label;\n veId = value.attributes.data.veId\n }\n\n let data;\n let startDate;\n\n if (aggregate == 'halfHourly') {\n data = dataInTimeWindow.points(resourceElem.resourceId)\n } else {\n startDate = localDate.getTime() - localDate.getTimezoneOffset() * 60000;\n const rolledUpTs = dataInTimeWindow.rollUp({ aggregate: Aggregate.SUM, from: startDate, to: group.lastReadingTime, duration: aggCount });\n data = rolledUpTs.points(resourceElem.resourceId)\n }\n\n consumptionData.push({ veId, resourceId: resourceElem.resourceId, units, label, firstReadingTime: group.firstReadingTime, lastReadingTime: resourceElem.lastReadingTime, data })\n })\n\n invalidResources.map(resourceElem => {\n let label, veId, units;\n for (const [key, value] of resourceElem.columns.entries()) {\n label = value.attributes.label;\n veId = value.attributes.data.veId\n }\n consumptionData.push({ veId, units, resourceId: resourceElem.resourceId, label, firstReadingTime: group.firstReadingTime, lastReadingTime: resourceElem.lastReadingTime, data: [] })\n });\n\n this.announceConsumptionData(consumptionData)\n }\n }\n\n // ********* End Individual Resource ********* //\n\n // ********* Start Individual Group ********* //\n\n async getGroupTimeseries(resources, from, to, period) {\n\n const refreshedResources = await this.preCheckResourceExpiry(resources);\n if (refreshedResources && refreshedResources.length > 0) {\n\n let dayCount;\n switch (period) {\n case 'day':\n dayCount = 1;\n break;\n case 'lastSevenDays':\n case 'week':\n dayCount = 7;\n break;\n case 'month':\n const date = new Date(from);\n const currentYear = date.getFullYear();\n const currentMonth = date.getMonth() + 1;\n dayCount = new Date(currentYear, currentMonth, 0).getDate();\n break;\n case 'year':\n dayCount = 365;\n break;\n default:\n dayCount = 1;\n }\n\n const validResources = []\n const invalidResources = []\n refreshedResources.map(resource => { resource.timestamps.length > 0 ? validResources.push(resource) : invalidResources.push(resource) });\n\n let group;\n if (!this.selectedGroupTimeseries) {\n group = Timeseries.combine(...validResources.map((res) => res))\n this.announceGroupTimeseries(group)\n } else {\n group = this.selectedGroupTimeseries;\n }\n\n const dataInTimeWindow = group.window({\n from: new Date(from).getTime(),\n to: new Date(to).getTime(),\n clip: true\n });\n\n const rolledUpTs = dataInTimeWindow.rollUp({ aggregate: Aggregate.SUM, from: new Date(from).getTime(), to: new Date(to).getTime(), duration: { days: dayCount } });\n\n const consumptionData = []\n validResources.map(resource => {\n\n let label, veId, resp;\n let units = (this.classifierToResourceTypeMap.dataStreamType.gas.find(classifierElem => classifierElem === resource.classifier)) ? 'Wh' : 'kWh';\n\n for (const [key, value] of resource.columns.entries()) {\n label = value.attributes.label;\n // propertyCode = value.attributes.data.attributes.propertyInfo.propertyCode;\n veId = value.attributes.data.veId\n }\n resp = rolledUpTs.points(resource.resourceId);\n resp[0][1] = resp[0][1] > 0 ? resp[0][1] / 1000 : 0;\n consumptionData.push({ veId, resourceId: resource.resourceId, units, label, lastReadingTime: resource.lastReadingTime, data: resp })\n })\n\n invalidResources.map(resource => {\n let label, veId;\n let units = (this.classifierToResourceTypeMap.dataStreamType.gas.find(classifierElem => classifierElem === resource.classifier)) ? 'Wh' : 'kWh';\n for (const [key, value] of resource.columns.entries()) {\n label = value.attributes.label;\n // propertyCode = value.attributes.data.attributes.propertyInfo.propertyCode;\n veId = value.attributes.data.veId\n }\n consumptionData.push({ veId, units, resourceId: resource.resourceId, label, lastReadingTime: resource.lastReadingTime, data: [] })\n });\n\n this.announceConsumptionData(consumptionData)\n }\n }\n\n async getPicardGroupResource(arrayOfResources) {\n const resources: Resource[] = [];\n if (arrayOfResources) {\n const lastResponse = await arrayOfResources.reduce((accumulatorPromise, resourceIdElem) => {\n return accumulatorPromise.then(async response => {\n if (response) resources.push(response)\n return this.getResource(resourceIdElem)\n })\n }, Promise.resolve());\n if (lastResponse) resources.push(lastResponse);\n }\n this.announceGroupResource(resources)\n }\n\n async getGroupConsumption(queries) {\n if (this.selectedGroupTimeseries) {\n const groupResponse = [];\n const lastResponse = await queries.reduce((accumulatorPromise, query) => {\n return accumulatorPromise.then(async response => {\n if (response) groupResponse.push(response)\n return this.rollInGroupTimeseries(this.selectedGroupTimeseries, query)\n })\n }, Promise.resolve());\n if (lastResponse) groupResponse.push(lastResponse);\n this.announceGroupConsumption(groupResponse)\n }\n }\n\n rollInGroupTimeseries(group, query) {\n const dataInTimeWindow = group.window({\n from: new Date(query.from).getTime(),\n to: new Date(query.to).getTime(),\n clip: true\n });\n const rolledInTs = dataInTimeWindow.rollIn({ aggregate: Aggregate.SUM });\n return { ...query, total: rolledInTs.sum() / 1000 }\n }\n\n async addResourceToGroup(groupVeId, addedResources) { // frontend allows adding multiple\n if (this.allGroupResources) {\n const filteredResources = this.allGroupResources.find(x => x.veId === groupVeId)\n const lastResponse = await addedResources.reduce((accumulatorPromise, resourceIdElem) => {\n return accumulatorPromise.then(async response => {\n if (response) filteredResources.resources.push(response)\n return this.getResource(resourceIdElem)\n })\n }, Promise.resolve());\n if (lastResponse) filteredResources.resources.push(lastResponse);\n }\n }\n\n addGroup({ veId, name }) {\n if (this.allGroupResources) {\n this.allGroupResources.push({ veId, name, resources: [] })\n }\n }\n\n removeResourceFromGroup(groupVeId, removedResource) { // frontend prevents removing multiple\n if (this.allGroupResources) {\n const filteredResources = this.allGroupResources.find(resource => resource.veId === groupVeId)\n for (var i = 0; i < filteredResources.resources.length; i++) {\n var obj = filteredResources.resources[i];\n if (removedResource[0].resourceId == obj.resourceId) {\n filteredResources.resources.splice(i, 1);\n }\n }\n }\n }\n\n removeGroup(veId) {\n // console.log('removeGroup', veId, this.allGroupResources)\n for (var i = 0; i < this.allGroupResources.length; i++) {\n var obj = this.allGroupResources[i];\n if (veId == obj.veId) {\n this.allGroupResources.splice(i, 1);\n }\n }\n }\n\n // ********* End Individual Group ********* //\n\n\n\n // ********* Start All Group ********* //\n\n getStoredAllGroupResource() {\n return this.allGroupResources;\n }\n\n clearAllGroupResource() {\n // console.log(\"clearAllGroupResource\")\n this.resourceArray = [];\n this.allGroupResources = [];\n this.multiGroupResources = [];\n this.selectedGroupTimeseries = []\n }\n\n async getAllGroupResource(virtualEntities) {\n const resources: Resource[] = [];\n if (virtualEntities) {\n const lastResponse = await virtualEntities.reduce((accumulatorPromise, resourceIdElem) => {\n return accumulatorPromise.then(async response => {\n if (response) resources.push(response)\n return this.getPicardAllGroupResources(resourceIdElem)\n })\n }, Promise.resolve());\n if (lastResponse) resources.push(lastResponse);\n this.announceAllGroupResources(resources)\n return resources;\n }\n }\n\n async getPicardAllGroupResources({ veId, name, resourceArray }) {\n const resources: Resource[] = [];\n if (resourceArray) {\n const lastResponse = await resourceArray.reduce((accumulatorPromise, resourceIdElem) => {\n return accumulatorPromise.then(async response => {\n if (response) resources.push(response)\n return this.getResource(resourceIdElem)\n })\n }, Promise.resolve());\n if (lastResponse) resources.push(lastResponse);\n }\n return { veId, name, resources: resources }\n }\n\n // async getAllGroupTimeseriesCosumption(resources, from, to, dataStreamType) {\n\n // const refreshedResources = await this.preCheckResourceExpiry(resources);\n // if (refreshedResources && refreshedResources.length > 0) {\n\n // const groupResponse = [];\n // const lastResponse = await refreshedResources.reduce((accumulatorPromise, resource) => {\n // return accumulatorPromise.then(async response => {\n // if (response) groupResponse.push(response)\n // return this.getGroupTimeseriesCosumption({ ...resource, from, to, dataStreamType })\n // })\n // }, Promise.resolve());\n // if (lastResponse) groupResponse.push(lastResponse);\n\n // if (dataStreamType == 'gas.consumption') {\n // this.announceAllGroupGasConsumption(groupResponse)\n // } else {\n // this.announceAllGroupConsumption(groupResponse)\n // }\n // }\n // }\n\n // async getGroupTimeseriesCosumption({ veId, name, resources, from, to, dataStreamType }) {\n\n // const refreshedResources = await this.preCheckResourceExpiry(resources);\n // if (refreshedResources && refreshedResources.length > 0) {\n // const validResources = []\n // const invalidResources = []\n\n // refreshedResources.map(resource => { resource.timestamps.length > 0 && this.classifierToResourceTypeMap[dataStreamType].indexOf(resource.resourceTypeId) > -1 ? validResources.push(resource) : invalidResources.push(resource) });\n\n // const uniqueSite = []\n // refreshedResources.map(x => {\n // let label;\n // for (const [key, value] of x.columns.entries()) {\n // label = value.attributes.label;\n // if (!uniqueSite.includes(label)) {\n // uniqueSite.push(label)\n // }\n // }\n // })\n\n // if (validResources && validResources.length > 0) {\n\n // const group = Timeseries.combine(...validResources.map((res) => res))\n // const dataInTimeWindow = group.window({\n // from: new Date(from).getTime(),\n // to: new Date(to).getTime(),\n // clip: true\n // });\n // const rolledInTs = dataInTimeWindow.rollIn({ aggregate: Aggregate.SUM });\n\n // return {\n // veId, groupName: name,\n // gasTotal: dataStreamType == 'gas.consumption' ? rolledInTs.sum() / 1000 : 0,\n // elecTotal: dataStreamType == 'electricity.consumption' ? rolledInTs.sum() / 1000 : 0,\n // groupSize: uniqueSite.length\n // }\n // }\n\n // return {\n // veId, groupName: name,\n // gasTotal: 0,\n // elecTotal: 0,\n // groupSize: uniqueSite.length\n // }\n // }\n // }\n\n // ********* End All Group ********* //\n\n\n\n // ********* Start Multi Group (Group performance) ********* //\n\n async getMultiGroupResource(virtualEntities) {\n const resources: Resource[] = [];\n if (virtualEntities) {\n const lastResponse = await virtualEntities.reduce((accumulatorPromise, resourceIdElem) => {\n return accumulatorPromise.then(async response => {\n if (response) resources.push(response)\n return this.getPicardAllGroupResources(resourceIdElem)\n })\n }, Promise.resolve());\n if (lastResponse) resources.push(lastResponse);\n this.announceMultiGroupResources(resources)\n }\n }\n\n async getMultiGroupTimeseriesPerformance(veId, resources, from, to, period) {\n const groupResponse = [];\n const lastResponse = await resources.reduce((accumulatorPromise, resource) => {\n return accumulatorPromise.then(async response => {\n if (response) groupResponse.push(response)\n return this.getGroupTimeseriesPerformance({ ...resource, from, to, period, selectedVeId: veId })\n })\n }, Promise.resolve());\n if (lastResponse) groupResponse.push(lastResponse);\n this.announceMultiGroupPerformance(groupResponse)\n }\n\n async getGroupTimeseriesPerformance({ selectedVeId, veId, name, resources, from, to, period }) {\n\n const refreshedResources = await this.preCheckResourceExpiry(resources);\n if (refreshedResources && refreshedResources.length > 0) {\n\n\n const validResources = []\n const invalidResources = []\n refreshedResources.map(resource => { resource.timestamps.length > 0 ? validResources.push(resource) : invalidResources.push(resource) });\n\n const group = Timeseries.combine(...validResources.map((res) => res))\n const dataInTimeWindow = group.window({\n from: new Date(from).getTime(),\n to: new Date(to).getTime(),\n clip: true\n });\n\n let dayCount;\n switch (period) {\n case 'day':\n dayCount = 1;\n break;\n case 'week':\n dayCount = 7;\n break;\n case 'month':\n const date = new Date(from);\n const currentYear = date.getFullYear();\n const currentMonth = date.getMonth() + 1;\n dayCount = new Date(currentYear, currentMonth, 0).getDate();\n break;\n case 'year':\n dayCount = 365;\n break;\n default:\n dayCount = 1;\n }\n\n const rolledUpTs = dataInTimeWindow.rollUp({ aggregate: Aggregate.SUM, from: new Date(from).getTime(), to: new Date(to).getTime(), duration: { days: dayCount } });\n\n const consumptionData = []\n validResources.map(resource => {\n\n let label, veId, resp;\n for (const [key, value] of resource.columns.entries()) {\n label = value.attributes.label;\n veId = value.attributes.data.veId\n }\n resp = rolledUpTs.points(resource.resourceId);\n resp[0][1] = resp[0][1] > 0 ? resp[0][1] / 1000 : 0;\n consumptionData.push([label, resp[0][1]])\n\n if (selectedVeId == veId) {\n this.announceMultiGroupSelectedSite({ name: label, value: resp[0][1] })\n }\n });\n\n invalidResources.map(resource => {\n let label, propertyCode, veId;\n for (const [key, value] of resource.columns.entries()) {\n label = value.attributes.label;\n propertyCode = value.attributes.data.attributes.propertyInfo.propertyCode;\n veId = value.attributes.data.veId\n }\n consumptionData.push([label, 0])\n });\n\n const sortedValues = consumptionData.sort((a, b) => a[1] - b[1])\n const averageValues = sortedValues.filter(val => val[1] !== 0);\n\n let stat = {\n lowerRange: {\n shouldDisplay: true,\n value: sortedValues[0][1]\n },\n lowerQuartile: {\n shouldDisplay: false,\n value: 0\n },\n median: {\n shouldDisplay: false,\n value: 0\n },\n average: {\n shouldDisplay: true,\n value: this.statsService.calculateArrayAverage(averageValues)\n },\n mean: {\n shouldDisplay: true,\n value: this.statsService.calculateArrayAverage(sortedValues)\n },\n upperQuartile: {\n shouldDisplay: false,\n value: 0\n },\n upperRange: {\n shouldDisplay: true,\n value: sortedValues[sortedValues.length - 1][1]\n }\n }\n\n if (consumptionData.length >= 3) {\n stat = {\n ...stat,\n median: {\n shouldDisplay: true,\n value: this.statsService.calculateQuartile(sortedValues, 0.5),\n },\n }\n }\n\n if (consumptionData.length >= 5) {\n stat = {\n ...stat,\n lowerQuartile: {\n shouldDisplay: true,\n value: this.statsService.calculateQuartile(sortedValues, 0.25),\n },\n upperQuartile: {\n shouldDisplay: true,\n value: this.statsService.calculateQuartile(sortedValues, 0.75)\n\n }\n }\n }\n\n return { veId, groupName: name, stat };\n }\n }\n\n getStoredMultiGroupResource() {\n return this.multiGroupResources;\n }\n // ********* End Multi Group (Group performance) ********* //\n\n\n\n // ********* Start global methods ********* //\n\n async getResource({ resourceId, resourceTypeId, attributes }) {\n\n const apiConfig = this.configService.loadConfig();\n const headers = this.glowService.getAuthHeaders()\n // if we already have resource, don't retrieve again\n const existingResource = this.resourceArray.find(x => x.resourceId === resourceId);\n if (existingResource) {\n return existingResource;\n } else {\n useConfig({ baseURL: environment.baseUrl, applicationId: apiConfig.application.applicationId, token: headers.get('token') });\n let resource;\n try {\n resource = await loadResource(resourceId)\n resource.series().id = resource.resourceId;\n resource.series().attributes = attributes;\n resource['resourceTypeId'] = resourceTypeId;\n this.resourceArray.push(resource)\n } catch (e) {\n console.warn(`Error retrieving resource ${resourceId} | attributes veId ${attributes && attributes.veId} | Label ${attributes && attributes.label}`)\n console.warn(e)\n }\n\n return resource;\n }\n }\n\n async preCheckResourceExpiry(resources) {\n // console.log('preCheckResourceExpiry', resources)\n\n if (resources) {\n const expiryTimestamp = new Date().getTime() - (6 * 60 * 60 * 1000); // 6 hours \n const expiredResources = [];\n const stillValidResources = [];\n\n resources.map(x => {\n if (x.retrievalTs < expiryTimestamp) {\n let attributes;\n for (const [key, value] of x.columns.entries()) {\n attributes = value.attributes;\n }\n expiredResources.push({ resourceId: x.resourceId, resourceTypeId: x.resourceTypeId, attributes, expiredBy: (x.retrievalTs - expiryTimestamp) })\n } else {\n stillValidResources.push(x)\n }\n });\n\n if (expiredResources && expiredResources.length > 0) {\n\n const expiredResourceIdArray = []\n expiredResources.map(x => expiredResourceIdArray.push(x.resourceId))\n\n // Remove expired resources from stored resources\n for (var i = 0; i < this.resourceArray.length; i++) {\n var obj = this.resourceArray[i];\n if (expiredResourceIdArray.indexOf(obj.resourceId) !== -1) {\n // console.log(obj.resourceId, ' EXPIRED - REMOVED FROM resourceArray retrievalTs -', new Date(obj.retrievalTs), ' expiry-', new Date(expiryTimestamp));\n this.resourceArray.splice(i, 1);\n }\n }\n\n const refreshedResources: Resource[] = [];\n const lastResponse = await expiredResources.reduce((accumulatorPromise, resourceIdElem) => {\n return accumulatorPromise.then(async response => {\n if (response) refreshedResources.push(response)\n return this.getResource(resourceIdElem)\n })\n }, Promise.resolve());\n if (lastResponse) refreshedResources.push(lastResponse);\n\n return [...refreshedResources, ...stillValidResources]\n }\n }\n\n return resources;\n }\n\n // ********* End global methods ********* //\n\n\n\n // ********* Start Announcers ********* //\n\n announceConsumptionData(consumptionData: any) {\n // console.log(\"announcing consumption data\")\n this.picardConsumptionDataAnnouncer.next(consumptionData);\n }\n\n announceGroupResource(resources: any) {\n // console.log(\"announcing group resources\")\n this.picardGroupResourceAnnouncer.next(resources);\n }\n\n announceGroupConsumption(resources: any) {\n // console.log(\"announcing group consumption\")\n this.picardGroupConsumptionAnnouncer.next(resources);\n }\n\n announceGroupTimeseries(group: any) {\n // console.log(\"announcing group timeseries\")\n this.selectedGroupTimeseries = group;\n this.SelectedPicardGroupTimeseriesAnnouncer.next(group);\n }\n\n\n\n announceAllGroupResources(resources: any) {\n // console.log(\"announcing all group resources\")\n this.allGroupResources = resources;\n this.picardAllGroupResourceAnnouncer.next(resources);\n }\n\n announceAllGroupConsumption(resources: any) {\n // console.log(\"announcing all groups consumption\")\n this.picardAllGroupConsumptionAnnouncer.next(resources);\n }\n\n announceAllGroupGasConsumption(resources: any) {\n // console.log(\"announcing all groups gas consumption\")\n this.picardAllGroupGasConsumptionAnnouncer.next(resources);\n }\n\n\n announceMultiGroupResources(resources: any) {\n // console.log(\"announcing multi group resources\")\n this.multiGroupResources = resources;\n this.picardMultiGroupResourceAnnouncer.next(resources);\n }\n\n announceMultiGroupPerformance(resources: any) {\n // console.log(\"announcing multi group performance\")\n this.picardMultiGroupPerformanceAnnouncer.next(resources);\n }\n\n announceMultiGroupSelectedSite(resources: any) {\n // console.log(\"announcing multi group selected site\")\n this.picardMultiGroupSelectedSiteAnnouncer.next(resources);\n }\n\n // ********* End Announcers ********* //\n}","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PostcodeCheckerService {\n postcodecheckURL = 'https://mapserver.glowpro.shop/postcodes/';\n\n constructor(private http: HttpClient) {}\n\n // checkPostcode(postcode): any{\n // return this.http.get(`${this.postcodecheckURL}${postcode}`)\n // }\n checkPostcode(postcode): Promise {\n return this.http.jsonp(`${this.postcodecheckURL}${postcode}`, 'callback').toPromise();\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { tApiErrorResponse } from './glow.typings';\nimport { ConfigService } from './app-config.service';\nimport { AuthenticationService } from './authentication.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfessionalGlowService {\n private hostUrl\n private devUrl \n private applicationId: string;\n private authFunctionalGroupId: string;\n constructor(private http: HttpClient, private configService: ConfigService, private auth: AuthenticationService) {\n const configuration = this.configService.loadConfig();\n this.hostUrl = configuration.environments.prod.glow.endpoint;\n // this.devUrl = 'https://api.glowtest.com/api/v0-1/'\n this.applicationId = configuration.application.applicationId;\n if (configuration.hasOwnProperty('functionalGroups') && configuration.functionalGroups.hasOwnProperty('auth')) {\n this.authFunctionalGroupId = configuration.functionalGroups.auth;\n }\n }\n //******************** Headers *************/\n public getNoAuthHeaders(): HttpHeaders {\n let headers: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json',\n applicationId: this.applicationId,\n });\n if (this.authFunctionalGroupId) {\n headers = headers.append('functionalGroupId', this.authFunctionalGroupId);\n }\n return headers;\n }\n public getOAuthHeaders() {\n let headers: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json',\n applicationId: this.applicationId,\n Authorization: this.auth.authorizationHeader(),\n });\n return headers;\n }\n public getOAuthHeadersWithoutContentType() {\n let headers: HttpHeaders = new HttpHeaders({\n applicationId: this.applicationId,\n Authorization: this.auth.authorizationHeader(),\n })\n return headers\n }\n public getNoAuthOptions() {\n const headers = this.getNoAuthHeaders();\n return { headers };\n }\n public getOAuthOptions() {\n const headers = this.getOAuthHeaders();\n return { headers };\n }\n public getOAuthOptionsWithoutContentType() {\n const headers = this.getOAuthHeadersWithoutContentType()\n return { headers }\n }\n performNetworkCheck(): tApiErrorResponse {\n let response = {\n isError: false,\n messages: [],\n data: '',\n };\n // if (this.networkActive === false) {\n // response.isError = true\n // response.messages = ['ERROR_NO_NETWORK']\n // }\n return response;\n }\n\n performPreAPIChecksWithoutAuth(): tApiErrorResponse {\n return this.performNetworkCheck();\n }\n\n\n\n public registerServiceAgent(body): Observable {\n // console.log('registerServiceAgent');\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/register', body, this.getNoAuthOptions());\n } else {\n return throwError(response);\n }\n }\n getServiceAgent(): Observable {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(`${this.hostUrl}service-agent`, this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n getSnapshotByEstimateId(estimateId, includeHeatingSystem) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n console.log(response);\n return this.http.get(this.hostUrl + 'service-agent/estimate-request/' + estimateId + '/snapshot?includeHeatingSystem=' + includeHeatingSystem, this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n findAllEstimateRequestsByState(state) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'service-agent/estimate-requests?state=' + state, this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n updateEstimateRequestProfessionalState(body, estimateRequestId) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/estimate-request/' + estimateRequestId + '/state', JSON.stringify(body), this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n createEstimateRequestForCustomer(body) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/estimate-request', JSON.stringify(body), this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getAllEstimateRequestForProfessionals() {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'service-agent/estimate-requests', this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n updateExternalReferenceEstimateRequest(estimateRequestId, body) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/estimate-request/' + estimateRequestId + '/update', JSON.stringify(body), this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n updateServiceAgentDetails(body) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/update', JSON.stringify(body), this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n updateServiceAgentPhone(body) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/phone/update', JSON.stringify(body), this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n updateServiceAgentEmail(body) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/email/update', JSON.stringify(body), this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n\n }\n updateServiceAgentPassword(body) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/password/update', JSON.stringify(body), this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n\n }\n\n updateServiceAgentPhoto(body, imageType) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/upload/' + imageType, body, this.getOAuthOptionsWithoutContentType());\n } else {\n return throwError(response);\n }\n\n }\n\n getServiceAgentFile(docId): Promise {\n const headers = {\n headers: {\n applicationId: this.applicationId,\n Authorization: this.auth.authorizationHeader()\n }\n }\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return fetch(this.hostUrl + 'service-agent/document/' + docId, headers).then((res) => res.blob())\n .then((blob) => {\n return blob;\n });\n }\n }\n\n uploadQuoteOrEstimate(body, estimateRequestId) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/estimate-request/' + estimateRequestId + '/estimate', body, this.getOAuthOptionsWithoutContentType());\n } else {\n return throwError(response);\n }\n }\n getEstimateProfessional(estimateId) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'service-agent/estimate/' + estimateId, this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n getEstimateRequestByIdProfessional(estimateId) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.get(this.hostUrl + 'service-agent/estimate-request/' + estimateId, this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n updateEstimateRequestByProfessional(estimateRequestId, body) {\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/estimate-request/' + estimateRequestId + '/update', JSON.stringify(body), this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n }\n\n getListOfInstallers(body){\n const response = this.performPreAPIChecksWithoutAuth();\n if (response && response.isError === false) {\n return this.http.post(this.hostUrl + 'service-agent/professional/geolookup', JSON.stringify(body), this.getOAuthOptions());\n } else {\n return throwError(response);\n }\n}\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { GlowService } from './glow.service';\nimport { VirtualEntityService } from './virtual-entity.service';\nimport { ServiceSelectorSvc } from './service-selector.service';\nimport { v4 as uuidv4 } from 'uuid';\n@Injectable({\n providedIn: 'root',\n})\nexport class SchematicsService {\n schematicDocument: any = { status: 'in-progress', data: { floors: [], totalFloorArea: 0, totalHeatingPowerOutput: 0, heatingSystem: {}, version: 2.0 } };\n schematicsDocuments: any[];\n virtualEntities: any[] = [];\n saved: boolean = false;\n isEditing: boolean = false;\n selectedService: any;\n radiatorConstants: any = {};\n stage: any;\n\n roomOptions = [\n { imgPath: '../../../assets/images/schematics/bedroom.jpeg', title: 'Bedroom', id: 'bedroom' },\n { imgPath: '../../../assets/images/schematics/living-room.jpeg', title: 'Living Room', id: 'livingRoom' },\n { imgPath: '../../../assets/images/schematics/kitchen.jpeg', title: 'Kitchen', id: 'kitchen' },\n { imgPath: '../../../assets/images/schematics/bathroom.jpeg', title: 'Bathroom', id: 'bathroom' },\n { imgPath: '../../../assets/images/schematics/other.jpeg', title: 'Other', id: 'other' },\n ];\n\n SchematicsAnnouncer = new Subject();\n schematicDocument$ = this.SchematicsAnnouncer.asObservable();\n\n schematicDocumentsAnnouncer = new Subject();\n schematicDocuments$ = this.schematicDocumentsAnnouncer.asObservable();\n\n stageAnnouncer = new Subject();\n stage$ = this.stageAnnouncer.asObservable();\n\n subscriptionVirtualEntityList: Subscription;\n subscriptionSelectedService: Subscription;\n\n constructor(private glowService: GlowService, private veService: VirtualEntityService, private serviceSelectorSvc: ServiceSelectorSvc) {}\n\n setStage(stage) {\n this.stage = stage;\n this.announceStage(stage);\n }\n\n getCanvasDataUrl(pixelRatio = 1) {\n const url = this.stage.toDataURL({ mimeType: 'image/jpeg', pixelRatio });\n return url;\n }\n\n setSelectedService(selectedService) {\n this.selectedService = selectedService;\n }\n\n getSchematicsDocuments() {\n this.veService.findVirtualEntities();\n this.veService.virtualEntitiesForDashboard$.subscribe(async (veList) => {\n console.log(veList && Array.isArray(veList) && veList.length > 0);\n if (veList && Array.isArray(veList) && veList.length > 0) {\n this.setVirtualEntities(veList);\n this.virtualEntities = veList;\n this.schematicsDocuments = await this.getDocumentList(this.selectedService.veId);\n this.announceSchematicDocuments(this.schematicsDocuments);\n }\n });\n }\n\n async getSchematic(veId: string, documentId: string) {\n const schematicRaw = await this.glowService.getVEDocumentByID(veId, documentId).toPromise();\n // this.announceSchematicDocument(JSON.parse(schematicRaw));\n\n return JSON.parse(schematicRaw);\n }\n\n addUnitsSchematicDocument(schematicDocument) {\n schematicDocument.data.floors = schematicDocument.data.floors.map((floor) => {\n floor.rooms = floor.rooms.map((room) => {\n room.radiators = room.radiators.map((rad) => {\n if (!rad.units) {\n rad.units = {\n width: rad.type === 'underFloorHeating' ? 'm' : 'cm',\n length: rad.type === 'underFloorHeating' ? 'm' : 'cm',\n output: 'W',\n };\n }\n return rad;\n });\n return room;\n });\n return floor;\n });\n return schematicDocument;\n }\n\n addVersionSchematicDocument(schematicDocument) {\n if (!schematicDocument.data.version) {\n schematicDocument.data.version = 1.0;\n }\n return schematicDocument;\n }\n\n async getDocumentList(veId: string, queryString = '', documentType = 'heating.element.schematics') {\n const query = `?${queryString}&&documentType=${documentType}`;\n const documents = await this.glowService.getVEDocumentList(veId, query).toPromise();\n return documents;\n }\n\n async getSchematicsByStatus(status: string, veId?: string) {\n const veIdToUse = veId || this.serviceSelectorSvc.getSelectedService().veId;\n const documentList = await this.getDocumentList(veIdToUse, `status=${status}`);\n const refCreatedMap = {};\n for (const document of documentList) {\n if (!refCreatedMap[document.reference]) {\n refCreatedMap[document.reference] = document;\n } else if (new Date(document.createdAt).getTime() > new Date(refCreatedMap[document.reference].createdAt).getTime()) {\n refCreatedMap[document.reference] = document;\n }\n }\n this.announceSchematicDocuments(Object.values(refCreatedMap))\n return Object.values(refCreatedMap);\n }\n\n async getSchematicsCountByStatus(status: string, veId?: string) {\n const veIdToUse = veId || this.serviceSelectorSvc.getSelectedService().veId;\n const countObj = await this.glowService.getVirtualEntityDocumentCount(veIdToUse, `documentType=heating.element.schematics&status=${status}`).toPromise();\n return countObj.count;\n }\n\n announceSchematicDocument(schematicDocument) {\n console.log('announceSchematics');\n this.SchematicsAnnouncer.next({ ...schematicDocument });\n }\n\n announceSchematicDocuments(schematicsDocuments) {\n this.schematicDocumentsAnnouncer.next(schematicsDocuments);\n }\n\n announceStage(stage) {\n this.stageAnnouncer.next(stage);\n }\n\n setVirtualEntities(ves: any[]) {\n this.virtualEntities = [...ves];\n }\n\n setSchematicsDocuments(documents: any[]) {\n this.schematicsDocuments = [...documents];\n }\n\n setSchematicDocument(schematicDocument) {\n this.schematicDocument = { ...schematicDocument };\n }\n\n setIsEditing(isEditing: boolean) {\n this.isEditing = isEditing;\n }\n\n async createSchematicsDocument(schematics) {\n return this.glowService.createVirtualEntityDocument(this.selectedService.veId, this.getBody(schematics)).toPromise();\n }\n\n async createNewSchematicFromExisting(schematicDocument) {\n const newSchematic: any = { data: { ...schematicDocument.data } };\n newSchematic.status = 'in-progress';\n newSchematic.reference = schematicDocument.reference;\n return this.createSchematicsDocument(newSchematic);\n }\n\n async updateSchematicsDocument(veId, documentId, updateBody) {\n const resp = await this.glowService\n .updateVirtualEntityDocument(veId, documentId, updateBody)\n .toPromise()\n .catch((e) => console.warn('ERROR', e));\n return resp;\n }\n\n async setSchematicsAndUpdateSchematicsDocument(schematicDocument, documentId) {\n if (!this.selectedService) {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n }\n this.saved = true;\n this.setSchematicDocument(schematicDocument);\n this.announceSchematicDocument(schematicDocument);\n await this.updateSchematicsDocument(this.selectedService.veId, documentId, this.getBody(schematicDocument));\n setTimeout(() => {\n this.saved = false;\n }, 1500);\n }\n\n async updateSchematicsDocumentStatus(schematicDocument, documentId, status) {\n if (!this.selectedService) {\n this.selectedService = this.serviceSelectorSvc.getSelectedService();\n }\n this.saved = true;\n await this.glowService.updateVEDocumentStatus(this.selectedService.veId, documentId, status).toPromise();\n schematicDocument.status = status;\n this.setSchematicDocument(schematicDocument);\n this.announceSchematicDocument(schematicDocument);\n setTimeout(() => {\n this.saved = false;\n }, 1500);\n }\n\n getBody(schematicDocument) {\n return { reference: schematicDocument.reference || uuidv4(), status: schematicDocument.status || 'in-progress', documentType: 'heating.element.schematics', contentType: 'json', data: { ...schematicDocument.data } };\n }\n\n updateRoom(schematicDocument, schematicId, room, floor) {\n const index = floor.rooms.map((r) => r.id).indexOf(room.id);\n if (index > -1) {\n room.radiators = room.radiators.map((rad) => {\n const updated = { ...rad };\n updated.id = rad.id + '-' + room.id;\n return updated;\n });\n floor.rooms[index] = { ...room };\n } else {\n let numOfRoomsOfRoomType = floor.rooms.filter((r) => r.type === room.type).length + 1;\n room.id = `${room.type}-${floor.id}-${numOfRoomsOfRoomType}`;\n room.title = this.roomOptions.find((roomType) => roomType.id === room.type).title + ` ${numOfRoomsOfRoomType}`;\n room.radiators = room.radiators.map((rad) => {\n const updated = { ...rad };\n updated.id = rad.id + '-' + room.id;\n return updated;\n });\n floor.rooms.push(room);\n }\n floor.estimatedArea = this.getEstimatedFloorArea(floor);\n schematicDocument.data.totalFloorArea = this.getEstimatedTotalFloorArea(schematicDocument.data);\n schematicDocument.data.totalHeatingPowerOutput = this.getEstimatedTotalHeatingPowerOutput(schematicDocument.data);\n this.updateSchematic(schematicDocument, schematicId, floor);\n }\n\n removeRoom(schematic, schematicId, room, floor) {\n const index = floor.rooms.map((r) => r.id).indexOf(room.id);\n const roomNum = room.title.split(' ').slice(-1)[0];\n floor.rooms.splice(index, 1);\n floor.rooms = floor.rooms.map((r) => {\n const rNum = r.title.split(' ').slice(-1)[0];\n if (rNum > roomNum && r.type == room.type) {\n const updatedRoom = { ...r };\n const splitTitle = room.title.split(' ');\n splitTitle[splitTitle.length - 1] = String(Number(rNum) - 1);\n updatedRoom.title = splitTitle.join(' ');\n updatedRoom.id = splitTitle.join('');\n return updatedRoom;\n } else {\n return r;\n }\n });\n floor.estimatedArea = this.getEstimatedFloorArea(floor);\n schematic.totalFloorArea = this.getEstimatedTotalFloorArea(schematic);\n schematic.totalHeatingPowerOutput = this.getEstimatedTotalHeatingPowerOutput(schematic);\n this.updateSchematic(schematic, schematicId, floor);\n }\n\n addFloor(schematicDocument: any, schematicsId, floorSelection: any) {\n schematicDocument.data.floors.push(floorSelection);\n schematicDocument.data.totalFloorArea = this.getEstimatedTotalFloorArea(schematicDocument.data);\n schematicDocument.data.totalHeatingPowerOutput = this.getEstimatedTotalHeatingPowerOutput(schematicDocument.data);\n this.setSchematicsAndUpdateSchematicsDocument(schematicDocument, schematicsId);\n }\n\n removeFloor(schematicDocument, schematicsId, floorId: string) {\n const indexInSchematics = schematicDocument.data.floors.map((floor) => floor.id).indexOf(floorId);\n if (indexInSchematics > -1) {\n schematicDocument.data.floors.splice(indexInSchematics, 1);\n schematicDocument.data.floors = this.updateFloorNumbersFromIndex(indexInSchematics, [...schematicDocument.data.floors]);\n }\n schematicDocument.data.totalFloorArea = this.getEstimatedTotalFloorArea(schematicDocument.data);\n schematicDocument.data.totalHeatingPowerOutput = this.getEstimatedTotalHeatingPowerOutput(schematicDocument.data);\n this.setSchematicsAndUpdateSchematicsDocument(schematicDocument, schematicsId);\n }\n\n removeRadiator(schematics: any, schematicsId, radiatorId, roomId) {\n const floor = schematics.floors.find((floor) => floor.rooms.find((room) => room.id === roomId));\n const room = floor.rooms.find((room) => room.id === roomId);\n const radiatorIndex = room.radiators.map((radiator) => radiator.id).indexOf(radiatorId);\n room.radiators.splice(radiatorIndex, 1);\n floor.estimatedArea = this.getEstimatedFloorArea(floor);\n schematics.totalFloorArea = this.getEstimatedTotalFloorArea(schematics);\n schematics.totalHeatingPowerOutput = this.getEstimatedTotalHeatingPowerOutput(schematics);\n this.updateSchematic(schematics, schematicsId, floor);\n }\n\n updateFloorNumbersFromIndex(index, floorsArray) {\n return floorsArray.map((floor, i) => {\n if (i >= index) {\n const updatedFloor = { ...floor };\n const splitTitle = updatedFloor.title.split(' ');\n updatedFloor.title = splitTitle[0] + ' ' + (Number(splitTitle.slice(-1)[0]) - 1);\n updatedFloor.id = updatedFloor.title.toLowerCase().split(' ').join('');\n return updatedFloor;\n } else {\n return floor;\n }\n });\n }\n\n getEstimatedFloorArea(floor) {\n return floor.rooms\n .map((room) => {\n if (room.floorArea) {\n return room.floorArea;\n }\n return room.length * room.width;\n })\n .reduce((accumulator, currentValue) => accumulator + currentValue, 0);\n }\n\n getEstimatedTotalFloorArea(schematics) {\n return schematics.floors.map((floor) => floor.estimatedArea).reduce((a, b) => a + b, 0);\n }\n\n getEstimatedTotalHeatingPowerOutput(schematics) {\n if (!schematics.floors || schematics.floors.length < 1) return 0;\n const output = schematics.floors\n .map((floor) => floor.rooms.map((room) => room.radiators.map((rad) => (isNaN(rad.output) ? 0 : Number(rad.output)))))\n .flat(3)\n .reduce((a, b) => a + b, 0);\n return output ? output.toFixed(2) : 0;\n }\n\n updateSchematic(schematicDocument, schematicId, floor) {\n schematicDocument.data.floors = schematicDocument.data.floors.map((f) => {\n if (f.id === floor.id) {\n f = { ...floor };\n }\n return f;\n });\n this.setSchematicsAndUpdateSchematicsDocument(schematicDocument, schematicId);\n }\n\n updateHeatingSystem(schematicDocument, schematicId, heatingSystem) {\n schematicDocument.data.heatingSystem = { ...heatingSystem };\n if (!heatingSystem.units) {\n schematicDocument.data.heatingSystem.units = { DHWCylinderSize: 'l' };\n }\n this.setSchematicsAndUpdateSchematicsDocument(schematicDocument, schematicId);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { environment } from 'src/environments/environment';\ndeclare const MeiliSearch: any;\n\nexport type Page = 'landing' | 'community' | 'faq';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SearchService {\n contentSearchBaseUrl: string = environment.contentSearchBaseUrl;\n\n searchableContentLanding: Array = [\n 'blog',\n 'user-story',\n 'resources-list',\n 'article',\n 'infographic',\n ];\n searchableContentCommunity: Array = ['blog', 'user-story', 'resources-list', 'article', 'infographic'];\n\n client = new MeiliSearch({\n host: this.contentSearchBaseUrl,\n apiKey: environment.contentSearchApiKey,\n });\n\n prodClient = new MeiliSearch({\n host: 'https://meilisearch.glowmarkt.com/',\n apiKey: 'e8cfeefcc7bb1eb44fd7a9aaa8f081694a44260b9e2e6e08c7c92fff77d9be89',\n });\n constructor() {}\n\n async searchAllFAQs(searchTerm: string) {\n const index = this.client.index('faq', {});\n const search = await index.search(searchTerm, { limit: 10 });\n return search;\n }\n\n async searchAllContent(searchTerm: string) {\n let result = [];\n for (let content of this.searchableContentLanding) {\n result = [...result, ...(await this.searchContent(content, searchTerm))];\n }\n return result;\n }\n\n async searchContent(content: string, searchTerm: string) {\n const index = this.client.index(content);\n const search = (await index.search(searchTerm)).hits;\n return search;\n }\n\n async filterAllCommunityContentWithTags(communitySlug: string, searchTerm: string, tagsTitles: string[]) {\n let result = [];\n for (let content of this.searchableContentCommunity) {\n result = [\n ...result,\n ...(await this.filterCommunityContentWithTags(communitySlug, content, searchTerm, tagsTitles)),\n ];\n }\n return result;\n }\n\n async filterAllContentWithTags(page: Page, searchTerm: string, tagsTitles: string[]) {\n const pageSearchableContentMap = {\n landing: this.searchableContentLanding,\n community: this.searchableContentCommunity,\n };\n let result = [];\n for (let content of pageSearchableContentMap[page]) {\n result = [...result, ...(await this.filterContentWithTags(content, searchTerm, tagsTitles))];\n }\n return result;\n }\n\n async filterContentWithTags(content: string, searchTerm: string, tagsTitles: string[]) {\n const index = this.client.index(content);\n const filter = [];\n tagsTitles.forEach((tagTitle) => {\n filter.push(`tags.title=\"${tagTitle}\"`);\n });\n const search = await index.search(searchTerm, {\n // filter: [filter], //OR\n filter: filter, //AND\n matchingStrategy: 'all',\n limit: 100,\n });\n return search.hits;\n }\n\n async filterCommunityContentWithTags(\n communitySlug: string,\n content: string,\n searchTerm: string,\n tagsTitles: string[]\n ) {\n const index = this.client.index(content);\n const filter = [`community.slug=\"${communitySlug}\"`];\n tagsTitles.forEach((tagTitle) => {\n filter.push(`tags.title=\"${tagTitle}\"`);\n });\n const search = await index.search(searchTerm, {\n // filter: [filter], //OR\n filter: filter, //AND\n matchingStrategy: 'all',\n limit: 100,\n });\n return search.hits;\n }\n\n //update search settings for index - to be run once\n async setCommunityAsFilterableAttribute(content, client) {\n const index = client.index(content);\n await index.updateFilterableAttributes(['community.slug']);\n }\n\n async setTagsAsFilterableAttribute(content: string, client) {\n const index = client.index(content);\n await index.updateFilterableAttributes(['tags.title']);\n }\n async updateDistinctAttributes(content: string, client) {\n const index = client.index(content);\n await index.updateDistinctAttribute('id');\n }\n async updateSearchableAttributes(content: string, searchableAttributes: string[], client) {\n const index = client.index(content);\n await index.updateSearchableAttributes(searchableAttributes);\n }\n\n async updateSearchSettingsForCommunityContent(client) {\n this.searchableContentCommunity.forEach((c) => {\n this.setCommunityAsFilterableAttribute(c, client);\n });\n }\n\n async updateDistinctAttributesForSearchableContent(client) {\n this.searchableContentLanding.forEach((c) => {\n this.updateDistinctAttributes(c, client);\n });\n }\n\n async updateSearchableAttributesForSearchableContent(client) {\n this.searchableContentLanding.forEach((c) => {\n this.updateSearchableAttributes(c, ['title', 'summary'], client);\n });\n }\n\n async setTagsAsFilteringForSearchableContent(client) {\n this.searchableContentLanding.forEach((c) => {\n this.setTagsAsFilterableAttribute(c, client);\n });\n }\n\n async updateSearchSettingsForSearchableContent() {\n const client = this.prodClient;\n // const client = this.client;\n await this.setTagsAsFilteringForSearchableContent(client);\n await this.updateSearchableAttributesForSearchableContent(client);\n await this.updateDistinctAttributesForSearchableContent(client);\n await this.updateSearchSettingsForCommunityContent(client);\n // console.log('done');\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { JsonLdService } from './json-ld.service';\nimport { MetaTagsService } from './meta-tags.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SeoService {\n constructor(@Inject(DOCUMENT) private document: Document, private metaTagsService: MetaTagsService, private titleService: Title) {}\n\n configureSEO(title: string, summary: string, url: string,schema?:any) {\n this.metaTagsService.addMetaTags(title, summary, url);\n this.titleService.setTitle(title);\n schema?this.insertSchema(schema):null\n }\n\n resetSEOconfig() {\n this.metaTagsService.removeMetaTags();\n this.titleService.setTitle('Glowmarkt');\n this.removeStructuredData()\n }\n\n\n\tremoveStructuredData(): void {\n\t\tconst els = [];\n\t\t[ 'structured-data', 'structured-data-org' ].forEach(c => {\n\t\t\tels.push(...Array.from(this.document.head.getElementsByClassName(c)));\n\t\t});\n\t\tels.forEach(el => this.document.head.removeChild(el));\n\t}\n\n\tinsertSchema(schema: Record, className = 'structured-data'): void {\n\t\tlet script;\n\t\tlet shouldAppend = false;\n\t\tif (this.document.head.getElementsByClassName(className).length) {\n\t\t\tscript = this.document.head.getElementsByClassName(className)[0];\n\t\t} else {\n\t\t\tscript = this.document.createElement('script');\n\t\t\tshouldAppend = true;\n\t\t}\n\t\tscript.setAttribute('class', className);\n\t\tscript.type = JsonLdService.scriptType;\n\t\tscript.text = JSON.stringify(schema);\n\t\tif (shouldAppend) {\n\t\t\tthis.document.head.appendChild(script);\n\t\t}\n\t}\n\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { GlowService } from './glow.service';\nimport { ProfessionalGlowService } from './professional-glow.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServiceAgentService {\n serviceAgentAnnouncer: EventEmitter = new EventEmitter\n constructor(private professionalGlowService: ProfessionalGlowService) {\n\n }\n\n async getServiceAgent() {\n this.professionalGlowService.getServiceAgent().subscribe( resp => {\n this.announceServiceAgent(resp)\n });\n }\n announceServiceAgent(serviceAgent) {\n this.serviceAgentAnnouncer.emit(serviceAgent)\n }\n}\n","import { Injectable, EventEmitter } from '@angular/core';\nimport { tVeIdNameListing } from './app-config.typings';\n\n@Injectable()\n\nexport class ServiceSelectorSvc {\n\n serviceId: string = 'ServiceSelectorSvc';\n selectedService: tVeIdNameListing\n selectedServiceLaoclStorageKey: string = 'selectedService'\n public serviceSet: EventEmitter = new EventEmitter();\n\n constructor() { };\n\n announceSelectedService(serviceToBeSet: tVeIdNameListing) {\n this.serviceSet.emit(serviceToBeSet)\n }\n\n getSelectedService() {\n this.selectedService = JSON.parse(localStorage.getItem('selectedService'))\n return this.selectedService\n }\n\n setSelectedService(serviceToBeSet: tVeIdNameListing) {\n localStorage.setItem(this.selectedServiceLaoclStorageKey, JSON.stringify(serviceToBeSet))\n this.selectedService = serviceToBeSet\n this.announceSelectedService(this.selectedService)\n return { valid: true }\n }\n};","import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport abstract class StatehandlerProcessorService {\n public abstract createState(url: string): Observable;\n public abstract restoreState(state?: string): void;\n}\n\n@Injectable()\n\nexport class StatehandlerProcessorServiceImpl\n implements StatehandlerProcessorService {\n \n constructor(private location: Location) { }\n\n public createState(url: string): Observable {\n const externalUrl = this.location.prepareExternalUrl(url);\n const urlId = uuidv4();\n sessionStorage.setItem(urlId, externalUrl);\n return of(urlId);\n }\n\n public restoreState(state?: string): void {\n if (state === undefined) {\n return;\n }\n const url = sessionStorage.getItem(state);\n if (url === null) {\n return;\n }\n window.location.href = window.location.origin + url;\n }\n\n}","import { Injectable, Injector, OnDestroy, Type } from '@angular/core';\nimport { GuardsCheckStart, Router, RouterEvent } from '@angular/router';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Observable, Subject, throwError } from 'rxjs';\nimport { filter, map, shareReplay, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { StatehandlerProcessorService } from './statehandler-processor.service';\n\nexport abstract class StatehandlerService {\n public abstract createState(): Observable;\n public abstract initStateHandler(): void;\n}\n\n@Injectable()\nexport class StatehandlerServiceImpl\n implements StatehandlerService, OnDestroy {\n private events?: Observable;\n private unsubscribe$: Subject = new Subject();\n\n constructor(\n oauthService: OAuthService,\n private injector: Injector,\n private processor: StatehandlerProcessorService,\n ) {\n oauthService.events\n .pipe(\n filter(event => event.type === 'token_received'),\n map(() => oauthService.state),\n takeUntil(this.unsubscribe$),\n )\n .subscribe(state => processor.restoreState(state));\n }\n\n public initStateHandler(): void {\n const router = this.injector.get(Router as Type);\n this.events = (router.events as Observable).pipe(\n filter(event => event instanceof GuardsCheckStart),\n map(event => event.url),\n shareReplay(1),\n );\n\n this.events.pipe(takeUntil(this.unsubscribe$)).subscribe();\n }\n\n public createState(): Observable {\n if (this.events === undefined) {\n return throwError('no router events');\n }\n\n return this.events.pipe(\n take(1),\n switchMap(url => this.processor.createState(url)),\n );\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe$.next();\n }\n}\n","import { Injectable } from '@angular/core';\n\n\n@Injectable()\nexport class StatsService {\n // Source https://stackoverflow.com/questions/48719873/how-to-get-median-and-quartiles-percentiles-of-an-array-in-javascript-or-php\n // WE generally expect arrays of resource readings [[sth, value1],[sth, value2]].\n constructor() {\n\n }\n\n calculateQuartile(data, q) {\n data = this.sortArrayNumbersAscending(data);\n const pos = ((data.length) - 1) * q;\n const base = Math.floor(pos);\n const rest = pos - base;\n if ((data[base + 1] !== undefined)) {\n return data[base][1] + rest * (data[base + 1][1] - data[base][1]);\n } else {\n return data[base][1];\n }\n }\n\n sortArrayNumbersAscending(inputarray) {\n return inputarray.sort((a, b) => {\n return a[1] - b[1];\n });\n }\n\n sumArrayElem(t) {\n return t.reduce((a, b) => a + b[1], 0);\n }\n\n calculateArrayAverage(data) {\n return this.sumArrayElem(data) / data.length;\n }\n\n calculateArrayStd(tab) {\n let i, j, total = 0, mean = 0, diffSqredArr = [];\n for (i = 0; i < tab.length; i += 1) {\n total += tab[i][1];\n }\n mean = total / tab.length;\n for (j = 0; j < tab.length; j += 1) {\n diffSqredArr.push(Math.pow((tab[j] - mean), 2));\n }\n return (Math.sqrt(diffSqredArr.reduce(function (firstEl, nextEl) {\n return firstEl + nextEl;\n }) / tab.length));\n }\n}\n\n\n\n","import { Injectable } from '@angular/core';\nimport { OAuthStorage } from 'angular-oauth2-oidc';\n\nconst STORAGE_PREFIX = 'zitadel';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StorageService implements OAuthStorage {\n private storage: Storage = window.localStorage;\n\n constructor() {}\n\n public setItem(key: string, value: TValue): void {\n this.storage.setItem(this.getPrefixedKey(key), JSON.stringify(value));\n }\n\n public getItem(key: string): TResult | null {\n const result = this.storage.getItem(this.getPrefixedKey(key));\n if (result) {\n return JSON.parse(result);\n }\n return null;\n }\n\n public removeItem(key: string): void {\n this.storage.removeItem(this.getPrefixedKey(key));\n }\n\n public getPrefixedKey(key: string): string {\n return `${STORAGE_PREFIX}:${key}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, throwError } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { GlowService } from './glow.service';\n\nexport type ContentType =\n | 'tags'\n | 'blogs'\n | 'user-stories'\n | 'tutorials'\n | 'resources-lists'\n | 'glossary-terms'\n | 'communities'\n | 'articles'\n | 'system-incidents'\n | 'top-glossary-terms'\n | 'featured-contents'\n | 'infographics'\n | 'system-incidents-mail-subscribers'\n | 'system-incident-updates'\n | 'system-incident-affected-areas'\n | 'case-studies'\n | 'audience-categories';\n\ntype RelatedContentTypes =\n | 'blogs'\n | 'resources_lists'\n | 'tags'\n | 'authors'\n | 'articles'\n | 'glossary_terms'\n | 'resources'\n | 'featured_blogs'\n | 'featured_articles'\n | 'featured_tutorials'\n | 'featured_infographics'\n | 'featured_resource_lists'\n | 'top_glossary_term'\n | 'hero_blog'\n | 'hero_article'\n | 'hero_tutorial'\n | 'hero_infographic'\n | 'infographics'\n | 'system_incident_updates'\n | 'system_incident_affected_areas'\n | 'audience_categories';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StrapiService {\n private BookmarkedContentAnnouncer = new Subject();\n bookmarkedContent$ = this.BookmarkedContentAnnouncer.asObservable();\n\n bookmarkedContent = [];\n contentSystemBaseUrl: string = environment.contentSystemBaseUrl;\n\n authMap = {\n GET: environment.contentSystemReadBearer,\n POST: environment.contentSystemPostBearer,\n DELETE: environment.contentSystemDeleteBearer,\n };\n\n populatedPublishedFilter = '';\n\n constructor(private glowService: GlowService) {\n this.populatedPublishedFilter = this.populatePublishedFilter();\n }\n\n getAuthHeader(htmlMethod: 'GET' | 'POST' | 'PUT' | 'DELETE') {\n const authorization = this.authMap[htmlMethod];\n return {\n 'Content-Type': 'application/json',\n authorization,\n };\n }\n\n setBookmarkedContent(bookmarkedContent: any[]) {\n this.bookmarkedContent = bookmarkedContent;\n this.announceBookmarkedContent();\n }\n\n getBookmarkedContent() {\n this.glowService.getProfile('bookmarks').subscribe(\n (bookmarks) => {\n this.setBookmarkedContent(bookmarks.data.data);\n this.announceBookmarkedContent();\n },\n (error) => {}\n );\n }\n announceBookmarkedContent() {\n this.BookmarkedContentAnnouncer.next(this.bookmarkedContent);\n }\n\n // Bookmark a content item\n bookmarkContent(slug: string, contentType: string) {\n // Create a content object with the slug and content type\n const content = { slug, contentType };\n // Add the content to the bookmarked content array\n this.setBookmarkedContent([...this.bookmarkedContent, content]);\n // Create a body for the request to add the profile\n const body = { profileName: 'bookmarks', data: [...this.bookmarkedContent] };\n // Send the request to add the profile\n this.glowService.addProfile(body).subscribe(\n (resp) => resp, // console.log(resp),\n (error) => error // console.log(error)\n );\n }\n unbookmarkContent(slug: string) {\n // remove the content from the bookmarkedContent array\n const updatedArray = this.bookmarkedContent.filter((content) => content.slug !== slug);\n this.setBookmarkedContent(updatedArray);\n\n // update the bookmarks of the user\n const body = { profileName: 'bookmarks', data: [...this.bookmarkedContent] };\n this.glowService.addProfile(body).subscribe((resp) => resp);\n }\n\n isContentBookmarked(slug: string) {\n return this.bookmarkedContent.some((content) => content.slug === slug);\n }\n\n /**\n * Returns a filter string to be used with the populate query parameter.\n * The filter string will include a filter for each related content type\n * that will only include related content that has a publishedAt date.\n * @return {string} The filter string.\n */\n populatePublishedFilter(relatedContentTypes: RelatedContentTypes[] = []) {\n let filter = [];\n relatedContentTypes.forEach((type) => filter.push(`populate[${type}][filters][publishedAt][$notNull]=true&populate[${type}][populate]=*`));\n let result = filter.join('&');\n return result;\n }\n\n /**\n * Fetches all of the content of a given type from the Strapi content system.\n *\n * @param contentType The content type to fetch.\n * @param page The page number to fetch.\n * @returns An array of content.\n */\n async getAllOfContentType(contentType: ContentType, page?: string | number, relatedContentTypes: RelatedContentTypes[] = []) {\n const populatedPublishedFilter = this.populatePublishedFilter(relatedContentTypes);\n const url = page ? `${this.contentSystemBaseUrl}/api/${contentType}?pagination[page]=${page}&&${populatedPublishedFilter}` : `${this.contentSystemBaseUrl}/api/${contentType}?${populatedPublishedFilter}`;\n const content = await this.getDataFromStrapi(url, page && true);\n return content;\n }\n\n getFileFullUrl(fileUrl) {\n return `${this.contentSystemBaseUrl}${fileUrl}`;\n }\n\n /**\n * Get one content item from Strapi content system.\n * @param contentType - The content type.\n * @param id - The content item ID.\n * @returns - The content item.\n */\n async getOneContent(contentType: ContentType, id: string | number, relatedContentTypes: RelatedContentTypes[] = []) {\n const populatedPublishedFilter = this.populatePublishedFilter(relatedContentTypes);\n const url = `${this.contentSystemBaseUrl}/api/${contentType}/${id}?${populatedPublishedFilter}&&populate=displayImage`;\n const content = await this.getDataFromStrapi(url);\n return content;\n }\n\n /**\n * Update a content item of a given type\n * @param {ContentType} contentType - Content type name\n * @param {string | number} id - Content item ID\n * @param {any} data - Content item data\n * @returns {Promise}\n */\n async updateContent(contentType: ContentType, id: string | number, data: any) {\n const url = `${this.contentSystemBaseUrl}/api/${contentType}/${id}`;\n const content = await this.putDataToStrapi(url, data);\n return content;\n }\n\n /**\n * This function is used to get the content from strapi based on the content type and the slug\n * @param contentType is the type of content that you want to get\n * @param slug is the slug of the content that you want to get\n * @returns the content from strapi\n */\n async getContentBySlug(contentType: ContentType, slug: string, relatedContentTypes: RelatedContentTypes[] = []) {\n const populatedPublishedFilter = this.populatePublishedFilter(relatedContentTypes);\n const url = `${this.contentSystemBaseUrl}/api/${contentType}?filters\\[slug\\][$eq]=${slug}&&${populatedPublishedFilter}&&populate=displayImage`;\n const [content] = await this.getDataFromStrapi(url);\n return content;\n }\n\n async getCaseStudyBySlug(slug: string) {\n const url = `${this.contentSystemBaseUrl}/api/case-studies?filters\\[slug\\][$eq]=${slug}&&populate=deep`;\n const [content] = await this.getDataFromStrapi(url);\n return content;\n }\n\n async getAllCaseStudies() {\n const url = `${this.contentSystemBaseUrl}/api/case-studies?populate=deep`;\n const content = await this.getDataFromStrapi(url);\n return content;\n }\n\n async getGlossaryTermsAlphabetically() {\n let terms = [];\n let page = 1;\n let shouldFetchNextPage = true;\n let url = `${this.contentSystemBaseUrl}/api/glossary-terms?pagination[page]=${page}&&sort=term:asc&&populate=*`;\n\n while (shouldFetchNextPage) {\n const nextPageTerms = await this.getDataFromStrapi(url, true);\n if (nextPageTerms.length) {\n terms = [...terms, ...nextPageTerms];\n page += 1;\n url = `${this.contentSystemBaseUrl}/api/glossary-terms?pagination[page]=${page}&&sort=term:asc&&populate=*`;\n } else {\n shouldFetchNextPage = false;\n }\n }\n return terms;\n }\n\n async getGlowmarktAbout() {\n const url = `${this.contentSystemBaseUrl}/api/glowmarkt`;\n const content = await this.getDataFromStrapi(url);\n return content;\n }\n async getPrivacyPolicy() {\n const url = `${this.contentSystemBaseUrl}/api/privacy-policy`;\n const content = await this.getDataFromStrapi(url);\n return content;\n }\n async addUpdatesInstallerSubscriber(data) {\n const url = `${this.contentSystemBaseUrl}/api/updates-installer-subscribers`;\n const response = await this.postDataToStrapi(url, data);\n return response;\n }\n\n async addSystemIncidentsMailSubscriber(data) {\n const url = `${this.contentSystemBaseUrl}/api/system-incidents-mail-subscribers`;\n const response = await this.postDataToStrapi(url, data);\n return response;\n }\n\n async postCaseStudyFeedback(data) {\n const url = `${this.contentSystemBaseUrl}/api/case-study-feedbacks`;\n const response = await this.postDataToStrapi(url, data);\n // console.log(response, 'response');\n return response;\n }\n async deleteSystemIncidentsMailSubscriber(id) {\n const url = `${this.contentSystemBaseUrl}/api/system-incidents-mail-subscribers/${id}`;\n const response = await fetch(url, {\n method: 'DELETE',\n headers: this.getAuthHeader('DELETE'),\n });\n if (response.status !== 200) {\n return throwError(response).toPromise();\n } else {\n const data = await response.json();\n const content = data.data;\n return content;\n }\n }\n\n async getDataFromStrapi(url: string, paginated = false) {\n const response = await fetch(url, {\n method: 'GET',\n headers: this.getAuthHeader('GET'),\n });\n const data = await response.json();\n let content = data.data;\n console.log(data)\n if (!paginated && data.meta.pagination && data.meta.pagination.pageCount > 1) {\n for (let i = 2; i <= data.meta.pagination.pageCount; i++) {\n const nextPageUrl = `${url}&pagination[page]=${i}`;\n const nextPageData = await this.getDataFromStrapi(nextPageUrl, true);\n content = [...content, ...nextPageData];\n }\n }\n return content;\n }\n\n async postDataToStrapi(url: string, bodyData) {\n const raw = await fetch(url, {\n method: 'POST',\n headers: this.getAuthHeader('POST'),\n body: JSON.stringify({ data: bodyData }),\n });\n const response = await raw.json();\n // // console.log(response)\n return response;\n }\n\n async putDataToStrapi(url: string, bodyData) {\n const raw = await fetch(url, {\n method: 'PUT',\n headers: this.getAuthHeader('PUT'),\n body: JSON.stringify({ data: bodyData }),\n });\n const response = await raw.json();\n // // console.log(response)\n return response;\n }\n\n async deleteDataFromStrapi(url: string) {\n const response = await fetch(url, {\n method: 'DELETE',\n headers: this.getAuthHeader('DELETE'),\n });\n if (response.status !== 200) {\n return throwError(response).toPromise();\n } else {\n const data = await response.json();\n const content = data.data;\n return content;\n }\n }\n\n getSmallDisplayImageUrl(content) {\n if (content && content.attributes && content.attributes.displayImage && content.attributes.displayImage.data) {\n if (content.attributes.displayImage.data.attributes.formats.small) {\n return this.getFileFullUrl(content.attributes.displayImage.data.attributes.formats.small.url);\n }\n return this.getFileFullUrl(content.attributes.displayImage.data.attributes.url);\n }\n return '../../../assets/images/soft-orange.jpg';\n }\n\n getThumbnailDisplayImageUrl(content) {\n if (content.attributes.displayImage.data) {\n if (content.attributes.displayImage.data.attributes.formats.thumbnail) {\n return this.getFileFullUrl(content.attributes.displayImage.data.attributes.formats.thumbnail.url);\n }\n return this.getFileFullUrl(content.attributes.displayImage.data.attributes.url);\n }\n return '../../../assets/images/soft-orange.jpg';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { DateFormatService } from './date-format.service';\nimport { tTariffPlan } from '../components/component.typings';\nimport { GlowService } from './glow.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TariffService {\n\n private tariffPermissionAnnouncer = new Subject();\n tariffPermission$ = this.tariffPermissionAnnouncer.asObservable();\n\n\n\n constructor(\n private dateFormatService: DateFormatService,\n private glowService: GlowService\n ) { }\n\n /* example \n { \n \"classifier\": \"electricity.consumption.cost\", \n \"resourceId\": \"5e3c2ead-b96c-43f0-b926-2637a41f3e97\", \n \"rate\": 13.965, \n \"standing\": 25, \n \"hasError\": false, \n \"errorString\": null, \n \"type\": \"tou\", \n \"structure\": [ { \"planDetail\": [ { \"standing\": 25 }, { \"rate\": 13.965, \"tier\": 1 }, { \"tourate\": 5, \"tier\": 2, \"time\": \"00:30-04:30\" } ] } ] }\n */\n processToUStructureIntoTs(tariff: tTariffPlan) {\n\n if (!(tariff && tariff.type === 'tou' && Array.isArray(tariff.structure) && tariff.structure.length >= 1) && tariff.structure[0] && tariff.structure[0].planDetail) {\n console.warn(\"Unexpected input\")\n return null\n }\n\n const planDetail = tariff.structure[0].planDetail;\n const touRates = planDetail.filter(rate => rate.hasOwnProperty(\"tourate\"));\n const nonTouRates = planDetail.filter(rate => rate.hasOwnProperty(\"rate\"));\n if (nonTouRates.length !== 1) {\n console.warn(`Cannot determine default TOU ${JSON.stringify(planDetail)}`)\n }\n const halfHourTimeSeries = [\n \"00:00\", \"00:30\", \"01:00\", \"01:30\", \"02:00\", \"02:30\", \"03:00\", \"03:30\", \"04:00\", \"04:30\", \"05:00\", \"05:30\",\n \"06:00\", \"06:30\", \"07:00\", \"07:30\", \"08:00\", \"08:30\", \"09:00\", \"09:30\", \"10:00\", \"10:30\", \"11:00\", \"11:30\",\n \"12:00\", \"12:30\", \"13:00\", \"13:30\", \"14:00\", \"14:30\", \"15:00\", \"15:30\", \"16:00\", \"16:30\", \"17:00\", \"17:30\",\n \"18:00\", \"18:30\", \"19:00\", \"19:30\", \"20:00\", \"20:30\", \"21:00\", \"21:30\", \"22:00\", \"22:30\", \"23:00\", \"23:30\"\n ]\n const processedToURates = touRates.map(elemToU => {\n const [start, end] = elemToU.time.split(\"-\")\n return { ...elemToU, start, end, tourate: (typeof elemToU.tourate === \"string\") ? Number(elemToU.tourate) : elemToU.tourate }\n })\n // console.log('processedToURates')\n // console.log(processedToURates)\n\n const sortedToURates = processedToURates.sort((a, b) => {\n if (a.start > b.start) return 1;\n if (a.start < b.start) return -1;\n return 0\n })\n const dateToday = this.dateFormatService.getYearMonthDay(new Date())\n const touTs = halfHourTimeSeries.map(hour => ({ hour, datetime: new Date(`${dateToday}T${hour}:00.000Z`).getTime(), rate: (typeof nonTouRates[0].rate === \"string\") ? Number(nonTouRates[0].rate) : nonTouRates[0].rate }))\n sortedToURates.forEach(touRate => {\n let foundStart = touTs.findIndex(elem => elem.hour === touRate.start)\n let foundEnd = touTs.findIndex(elem => elem.hour === touRate.end)\n\n if (foundStart >= 0 && foundEnd >= 0) {\n if (foundEnd < foundStart) {\n for (let i = foundStart; i < touTs.length; i++) {\n touTs[i] = { ...touTs[i], rate: touRate.tourate }\n }\n for (let i = 0; i < foundEnd; i++) {\n touTs[i] = { ...touTs[i], rate: touRate.tourate }\n }\n } else {\n for (let i = foundStart; i < foundEnd; i++) {\n touTs[i] = { ...touTs[i], rate: touRate.tourate }\n }\n }\n\n } else {\n console.warn(`Unable to find start/end ${JSON.stringify(touRate)}`)\n }\n\n })\n return touTs\n }\n\n processToUStructure(tariff: tTariffPlan) {\n\n // if (!(tariff && tariff.type === 'tou' && Array.isArray(tariff.structure) && tariff.structure.length >= 1) && tariff.structure[0] && tariff.structure[0].planDetail) {\n // console.warn(\"Unexpected input\")\n // return null\n // }\n\n // const planDetail = tariff.structure[0].planDetail;\n // const touRates = planDetail.filter(rate => rate.hasOwnProperty(\"tourate\"));\n // const nonTouRates = planDetail.filter(rate => rate.hasOwnProperty(\"rate\"));\n // // const standingCharge = planDetail.filter(rate => rate.hasOwnProperty(\"standing\"));\n\n // if (nonTouRates.length !== 1) {\n // console.warn(`Cannot determine default TOU ${JSON.stringify(planDetail)}`)\n // }\n // const processedToURates = touRates.map(elemToU => {\n // const [start, end] = elemToU.time.split(\"-\")\n // return { ...elemToU, start, end }\n // })\n // const sortedToURates = processedToURates.sort((a, b) => {\n // if (a.start > b.start) return 1;\n // if (a.start < b.start) return -1;\n // return 0\n // })\n\n const ts = this.processToUStructureIntoTs(tariff)\n const touStructure = [] //sortedToURates.map(elem => ({ ...elem, rate: elem.tourate }))\n\n let distinctRate = { ...ts[0], start: ts[0].hour, startIndex: 0, end: null, time: null };\n for (let i = 1; i < ts.length; i++) {\n const elem = ts[i];\n if (ts[i].rate !== distinctRate.rate) {\n distinctRate = { ...distinctRate, end: elem.hour, time: `${distinctRate.start}-${elem.hour}` }\n touStructure.push(distinctRate)\n distinctRate = { ...ts[i], start: ts[i].hour, startIndex: i, end: null, time: null };\n }\n }\n\n if (touStructure.length > 0 && distinctRate.rate === touStructure[0].rate) {\n distinctRate = { ...distinctRate, end: touStructure[0].end, time: `${distinctRate.start}-${touStructure[0].end}` }\n touStructure.shift()\n } else {\n distinctRate = { ...distinctRate, end: \"00:00\", time: `${distinctRate.start}-00:00` }\n }\n\n touStructure.push(distinctRate)\n\n return touStructure\n }\n\n async getTariffPermission(resourceId: string, veId: string) {\n // console.log('getTariffPermission', resourceId, veId)\n\n const permissions = []\n\n const adminPermision = await this.glowService.getVeAccessAdminPermission(veId).toPromise()\n permissions.push({ hasOwnerPermission: adminPermision.valid ? true : false })\n permissions.push({ canSetTariff: adminPermision.valid ? true : false })\n permissions.push({ canGetTariffFromMeter: adminPermision.valid ? true : false })\n\n const viewPermision = await this.glowService.getVeAccessPermission(veId).toPromise()\n permissions.push({ canSeeHistory: viewPermision.valid ? true : false })\n\n this.tariffPermissionAnnouncer.next(permissions)\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from \"@angular/common/http\";\nimport { Subject } from 'rxjs';\n\nimport { ConfigService } from '../services/app-config.service';\nimport { tTermsConditions, tTermsConditionsUser } from './glow.typings';\nimport { ErrorMessageParser } from './error-handler.service';\nimport { GlowService } from './glow.service';\nimport { tHasUserAcceptedTermsConditions } from '../components/component.typings';\n\n@Injectable()\nexport class TermsConditionsService {\n\n errorString: string;\n\n termsConditionsRef: string;\n termsConditions: tTermsConditions;\n\n private TermsConditionsAnnouncer = new Subject();\n private TermsConditionsExistAnnouncer = new Subject();\n\n termsConditions$ = this.TermsConditionsAnnouncer.asObservable();\n termsConditionsExist$ = this.TermsConditionsExistAnnouncer.asObservable();\n\n constructor(\n private configService: ConfigService,\n private errorMessageParser: ErrorMessageParser,\n private glowService: GlowService,\n private http: HttpClient) {\n };\n\n announceTermsConditions() {\n // console.log(\"announceTermsConditions\")\n this.TermsConditionsAnnouncer.next(this.termsConditions);\n }\n\n announceTermsConditionsExit(hasTermsConditions: boolean) {\n this.TermsConditionsExistAnnouncer.next(hasTermsConditions);\n }\n\n findTermsConditions(reference = null): void {\n // console.log(\"findTermsConditions\")\n if (this.glowService.isLoggedIn() === true) {\n // console.log(\"Get Terms and conditions via API\")\n this.getCurrentTermsConditions();\n } else {\n // console.log(\"Get Terms and conditions from assets\")\n this.getTermsConditionsFromAssets();\n }\n\n }\n\n // findCurrentTermsConditions(reference = null): Promise {\n // // console.log(\"findTermsConditions\")\n // if (!reference) {\n // var configuration = this.configService.loadConfig();\n // reference = configuration.termsAndConditions.reference;\n // }\n // if (this.glowService.isLoggedIn() === true) {\n // // console.log(\"Get Terms and conditions via API\")\n // this.getTermsConditions();\n // } else {\n // // console.log(\"Get Terms and conditions from assets\")\n // this.getTermsConditionsFromAssets();\n // }\n\n // }\n\n getCurrentTermsConditions(): void {\n var configuration = this.configService.loadConfig();\n this.termsConditionsRef = configuration.termsAndConditions.reference;\n\n this.glowService\n .getCurrentTermsAndConditions(this.termsConditionsRef)\n .subscribe(termsConditionsList => {\n\n if (termsConditionsList && Array.isArray(termsConditionsList) && termsConditionsList.length >= 1) {\n for (var j = 0; j < termsConditionsList.length; j++) {\n if (termsConditionsList[j].current === true) {\n this.termsConditions = termsConditionsList[j];\n }\n }\n this.announceTermsConditions();\n } else {\n this.getTermsConditionsFromAssets()\n }\n },\n err => {\n // console.log(err)\n this.errorString = this.errorMessageParser.getErrorMessage(err);\n });\n }\n\n getTermsConditionsFromAssets(): void {\n this.http.get(\"assets/content/terms-conditions.json\").subscribe((res: tTermsConditions) => {\n this.termsConditions = res;\n this.announceTermsConditions();\n })\n }\n\n async getCurrentTermsConditionsSync(reference = null): Promise {\n let error;\n if (!reference) {\n const configuration = this.configService.loadConfig();\n reference = configuration.termsAndConditions.reference;\n this.termsConditionsRef = reference\n }\n let currentTermsConditions: tTermsConditions;\n try {\n // With a reference this API should return an array with a single document\n const currentTermsConditionsList: tTermsConditions[] = await this.glowService.getCurrentTermsAndConditions(reference).toPromise()\n if (Array.isArray(currentTermsConditionsList) && currentTermsConditionsList.length === 1) {\n currentTermsConditions = currentTermsConditionsList[0]\n } else {\n error = { isError: true, message: \"ERROR\" }\n console.warn(\"Terms and conditions, unexpected return\")\n console.warn(currentTermsConditionsList)\n }\n } catch (e) {\n error = { isError: true, message: \"ERROR\" }\n console.warn(e)\n }\n\n if (error) {\n return this.getTermsConditionsFromAssetsSync()\n } else {\n return new Promise((resolve, reject) => resolve(currentTermsConditions))\n }\n }\n\n getTermsConditionsFromAssetsSync(): Promise {\n return this.http.get(\"assets/content/terms-conditions.json\").toPromise()\n }\n\n checkUserTermsConditions() {\n var configuration = this.configService.loadConfig();\n this.termsConditionsRef = configuration.termsAndConditions.reference;\n\n this.glowService\n .getCurrentTermsAndConditions(this.termsConditionsRef)\n .subscribe(termsConditionsList => {\n\n if (termsConditionsList && Array.isArray(termsConditionsList) && termsConditionsList.length >= 1) {\n for (var j = 0; j < termsConditionsList.length; j++) {\n if (termsConditionsList[j].current === true) {\n this.termsConditions = termsConditionsList[j];\n }\n }\n }\n this.announceTermsConditions();\n this.getUserTermsConditions();\n }, (err) => {\n // console.log(err)\n this.errorString = this.errorMessageParser.getErrorMessage(err);\n });\n }\n\n getUserTermsConditions() {\n this.glowService\n .getUserTermsAndConditionsByReference(this.termsConditionsRef)\n .subscribe(termsConditionsUserList => {\n var hasTermsConditions = false;\n\n if (termsConditionsUserList && Array.isArray(termsConditionsUserList) && termsConditionsUserList.length > 0) {\n for (let i = 0; i < termsConditionsUserList.length; i++) {\n var tcUserElem = termsConditionsUserList[i]\n if (tcUserElem.current === true) {\n //July 2018 Alex \n //Add functionality that would see whether we neeed to update t&cs. Move local storage saving accordingly\n localStorage.setItem('termsConditionsUser', JSON.stringify(tcUserElem));\n\n if (tcUserElem.tcId == this.termsConditions.tcId) {\n hasTermsConditions = true;\n\n } else {\n //July 2018 Alex\n //Add functionality that would see whether we neeed to update t&cs\n hasTermsConditions = true;\n }\n } else {\n continue;\n }\n }\n }\n this.announceTermsConditions();\n this.announceTermsConditionsExit(hasTermsConditions);\n }, (err) => {\n this.errorString = this.errorMessageParser.getErrorMessage(err);\n });\n }\n\n setUserTermsConditions(userTemrsConditions) {\n localStorage.setItem('termsConditionsUser', JSON.stringify(userTemrsConditions));\n this.glowService\n .sendUserTermsAndConditions(userTemrsConditions)\n .subscribe(tcUserStatus => {\n // console.log(\"setUserTermsConditions success\",tcUserStatus)\n }, (err) => {\n console.warn(err);\n })\n\n }\n\n async checkIfUserHasAcceptedCurrentTermsAndConditions(): Promise {\n let error;\n const configuration = this.configService.loadConfig();\n this.termsConditionsRef = configuration.termsAndConditions.reference;\n let currentTermsConditions: tTermsConditions;\n try {\n // With a reference this API should return an array with a single document\n const currentTermsConditionsList: tTermsConditions[] = await this.glowService.getCurrentTermsAndConditions(this.termsConditionsRef).toPromise()\n if (Array.isArray(currentTermsConditionsList) && currentTermsConditionsList.length === 1) {\n currentTermsConditions = currentTermsConditionsList[0]\n // console.log(\"Current Terms & Conditions \" + currentTermsConditions.tcId)\n } else {\n error = { isError: true, message: \"ERROR\" }\n console.warn(\"Terms and conditions, unxpected return\")\n console.warn(currentTermsConditionsList)\n }\n } catch (e) {\n error = { isError: true, message: \"ERROR\" }\n console.warn(e)\n }\n\n let userTermsConditionsRecords: tTermsConditionsUser[];\n try {\n userTermsConditionsRecords = await this.glowService.getUserTermsAndConditionsByReference(this.termsConditionsRef).toPromise()\n } catch (e) {\n error = { isError: true, message: \"ERROR\" }\n console.warn(e)\n }\n\n return new Promise((resolve, reject) => {\n if (error) {\n reject(error)\n } else {\n let response = { hasUserAcceptedTermsConditions: false, record: null }\n if (Array.isArray(userTermsConditionsRecords)) {\n let currentTermsConditionUser = userTermsConditionsRecords.find((tcu) => tcu.current === true && tcu.tcId === currentTermsConditions.tcId)\n\n if (currentTermsConditionUser && currentTermsConditionUser.tcId === currentTermsConditions.tcId) {\n // console.log(\"User has accepted terms and conditions\")\n response = { hasUserAcceptedTermsConditions: true, record: currentTermsConditionUser }\n } else {\n // console.log(\"User has accepted previous version of terms and conditions\")\n console.warn(currentTermsConditionUser)\n response = { hasUserAcceptedTermsConditions: false, record: currentTermsConditionUser }\n }\n }\n resolve(response)\n }\n })\n }\n}\n\n\n","import { FormControl, ValidatorFn, FormArray } from '@angular/forms';\n// import * as owaspTest from \"owasp-password-strength-test\";\n\nexport class FormValidator {\n // errorMessages = {\n // \"EMAIL_NO_CAPS\": \"Email should not contain Caps\",\n // \"EMAIL_NO_SPACES\": \"Email should not have spaces\",\n // \"EMAIL_NOT_VALID_EMAIL\": \"Not a valid email address\",\n // \"PASSWORD_STRENGTH_CHARACTER_LOWERCASE\": \"The password must contain at least one lowercase letter.\",\n // \"PASSWORD_STRENGTH_CHARACTER_NUMBER\": \"The password must contain at least one number.\",\n // \"PASSWORD_STRENGTH_CHARACTER_SPECIAL\": \"The password must contain at least one special character.\",\n // \"PASSWORD_STRENGTH_CHARACTER_UPPERCASE\": \"The password must contain at least one uppercase letter.\",\n // \"PASSWORD_STRENGTH_MAX_LENGTH\": \"The password must be at most 128 characters long.\",\n // \"PASSWORD_STRENGTH_MAX_SEQUENCE\": \"The password may not contain sequences of three or more repeated characters.\",\n // \"PASSWORD_STRENGTH_MIN_LENGTH\": \"The password must be at least 10 characters long.\",\n // \"PASSWORDS_MISMATCH\": \"The two passwords do not match\",\n // \"USERNAME_NO_CAPS\": \"Username should not contain CAPS\",\n // \"USERNAME_NO_SPACES\": \"Username should not have spaces\",\n // \"USERNAME_NOT_VALID_EMAIL\": \"Username needs to be a valid email address\",\n // };\n static isUsernameValid(usernameControl: FormControl): any {\n // console.log(usernameControl);\n var errorList = {};\n var numberOfErrors = 0;\n if (usernameControl.value != usernameControl.value.toLowerCase()) {\n errorList['USERNAME_NO_CAPS'] = {\n errMsg: 'Username should not contain CAPS.',\n error: true,\n };\n numberOfErrors += 1;\n }\n\n var re = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;\n\n //Source of regular expression http://www.regular-expressions.info/email.html\n if (!re.test(usernameControl.value)) {\n errorList['USERNAME_NOT_VALID_EMAIL'] = {\n errMsg: 'Username needs to be a valid email address.',\n error: true,\n };\n numberOfErrors += 1;\n }\n if (/\\s/.test(usernameControl.value)) {\n errorList['USERNAME_NO_SPACES'] = {\n errMsg: 'Username should not have spaces.',\n error: true,\n };\n numberOfErrors += 1;\n }\n if (numberOfErrors > 0) {\n return errorList;\n }\n return null;\n }\n\n static isEmailValid(emailControl: FormControl): any {\n var errorList = {};\n var numberOfErrors = 0;\n if (emailControl.value && emailControl.value != emailControl.value.toLowerCase()) {\n errorList['EMAIL_NO_CAPS'] = {\n errMsg: 'Email should not contain CAPS.',\n error: true,\n };\n numberOfErrors += 1;\n }\n\n var re =\n /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;\n // // console.log(\"RE: \", re.test(emailControl.value))\n\n //Source of regular expression http://www.regular-expressions.info/email.html\n if (!re.test(emailControl.value)) {\n errorList['EMAIL_NOT_VALID_EMAIL'] = {\n errMsg: 'Not a valid email address.',\n error: true,\n };\n numberOfErrors += 1;\n }\n\n if (/\\s/.test(emailControl.value)) {\n errorList['EMAIL_NO_SPACES'] = {\n errMsg: 'Email should not have spaces.',\n error: true,\n };\n numberOfErrors += 1;\n }\n\n if (numberOfErrors > 0) {\n return errorList;\n }\n return null;\n }\n\n static isPasswordSame(registrationInfo: FormControl) {\n if (registrationInfo) {\n if (registrationInfo.value) {\n if (registrationInfo.root['controls'].password.value === registrationInfo.value) {\n // console.log('passwords match');\n return;\n }\n }\n }\n // console.log('passwords do not match');\n var errorList = {\n PASSWORDS_MISMATCH: {\n errMsg: 'The two passwords do not match.',\n error: true,\n },\n };\n return errorList;\n }\n\n static isNewPasswordSame(formInfo: FormControl) {\n if (formInfo) {\n if (formInfo.value) {\n if (formInfo.root['controls'].newPassword.value === formInfo.value) {\n // console.log('passwords match');\n return;\n }\n }\n }\n // console.log('passwords do not match');\n var errorList = {\n PASSWORDS_MISMATCH: {\n errMsg: 'The two passwords do not match.',\n error: true,\n },\n };\n return errorList;\n }\n static isPasswordStrong(registrationInfo: FormControl) {\n var errorList = {};\n var passwordMinLength = 8;\n var passwordMaxLength = 60;\n\n var numberOfErrors = 0;\n if (registrationInfo.value) {\n var password = registrationInfo.value;\n // console.log('PASSWORD LENGTH' + password.length);\n if (password.length < passwordMinLength) {\n errorList['PASSWORD_STRENGTH_MIN_LENGTH'] = {\n errMsg: 'The password must be at least 8 characters long.',\n error: true,\n };\n numberOfErrors += 1;\n }\n\n if (password.length > passwordMaxLength) {\n errorList['PASSWORD_STRENGTH_MAX_LENGTH'] = {\n errMsg: 'The password must be at most 60 characters long.',\n error: true,\n };\n numberOfErrors += 1;\n }\n if (/(.)\\1{2,}/.test(password)) {\n errorList['PASSWORD_STRENGTH_MAX_SEQUENCE'] = {\n errMsg: 'The password may not contain sequences of three or more repeated characters.',\n error: true,\n };\n numberOfErrors += 1;\n }\n if (!/[a-z]/.test(password)) {\n errorList['PASSWORD_STRENGTH_CHARACTER_LOWERCASE'] = {\n errMsg: 'The password must contain at least one lowercase letter.',\n error: true,\n };\n numberOfErrors += 1;\n }\n if (!/[A-Z]/.test(password)) {\n errorList['PASSWORD_STRENGTH_CHARACTER_UPPERCASE'] = {\n errMsg: 'The password must contain at least one uppercase letter.',\n error: true,\n };\n numberOfErrors += 1;\n }\n if (!/[0-9]/.test(password)) {\n errorList['PASSWORD_STRENGTH_CHARACTER_NUMBER'] = {\n errMsg: 'The password must contain at least one number.',\n error: true,\n };\n numberOfErrors += 1;\n }\n if (!/[#@$?!]/.test(password)) {\n errorList['PASSWORD_STRENGTH_CHARACTER_SPECIAL'] = {\n errMsg: 'The password must contain at least one special character (#@?!$).',\n error: true,\n };\n numberOfErrors += 1;\n }\n\n // console.log('Password Strength: ' + numberOfErrors);\n if (numberOfErrors > 0) {\n return errorList;\n }\n return null;\n }\n }\n // Move to hardware validators.\n static isEUIValid(hardwareDetailsForm: FormControl) {\n const numberLength = 16;\n let errorList = {};\n let input = hardwareDetailsForm.value.replace(/-|\\s+/g, '');\n if (input.length !== numberLength) {\n errorList['MAC_INVALID'] = {\n errMsg: 'Format is not valid.',\n error: true,\n };\n return errorList;\n } else return null;\n }\n\n static isSerialValid(hardwareDetailsForm: FormControl) {\n if (hardwareDetailsForm) {\n if (hardwareDetailsForm.value) {\n if (hardwareDetailsForm.value.length > 6) {\n // this.enterSerial = true;\n return;\n }\n }\n }\n // console.log('Serial Number format is not valid');\n // this.enterSerial = false;\n\n return { message: 'Serial Number format is not valid', InvalidSerialNumber: true };\n }\n\n static isMpanValid(mpanControl: FormControl): any {\n var errorList = {};\n var numberOfErrors = 0;\n if (!mpanControl.value) {\n return;\n }\n const value = mpanControl.value.toString();\n if (value.length != 13) {\n errorList['NOT_VALID_MPAN_LENGTH_13'] = {\n errMsg: 'MPAN must be 13 characters',\n error: true,\n };\n numberOfErrors += 1;\n } else {\n const lastDigit = value.charAt(value.length - 1);\n const checkSumDigits = value.substring(0, 12).split('');\n\n const primeNumbers = [3, 5, 7, 13, 17, 19, 23, 29, 31, 37, 41, 43];\n const checkSumDigitsPrimeNumberProduct = checkSumDigits.reduce((acc, checkSumDigit, ind) => {\n const primeNumber = primeNumbers[ind];\n acc += parseInt(checkSumDigit, 10) * primeNumber;\n return acc;\n }, 0);\n\n const checkSum = (checkSumDigitsPrimeNumberProduct % 11) % 10;\n if (lastDigit != checkSum) {\n errorList['NOT_VALID_MPAN'] = {\n errMsg: 'Invalid MPAN',\n error: true,\n };\n numberOfErrors += 1;\n }\n }\n if (numberOfErrors > 0) {\n return errorList;\n }\n return null;\n }\n\n static minLength(min: number) {\n const validator: ValidatorFn = (control: FormControl) => {\n if (control.value && control.value.length < min) {\n return { minLength: { errMsg: `Minimum length is ${min}` } };\n }\n return null;\n };\n return validator;\n }\n\n static maxLength(max: number) {\n const validator: ValidatorFn = (control: FormControl) => {\n if (control.value && control.value.length > max) {\n return { maxLength: { errMsg: `Maximum length is ${max}` } };\n }\n return null;\n };\n return validator;\n }\n\n static allowedFileTypes(typeRegex: RegExp) {\n return function (control: FormControl) {\n const file = control.value;\n if (file && file.mimetype) {\n if (!typeRegex.test(file.mimetype)) {\n return {\n requiredFileType: { errMsg: `Allowed file types are ${typeRegex}` },\n };\n }\n return null;\n }\n\n return null;\n };\n }\n\n static maxFileSize(maxSize: number) {\n // maxSize in bytes\n return function (control: FormControl) {\n const file = control.value;\n if (file && file.size) {\n if (file.size > maxSize) {\n return {\n maxFileSize: { errMsg: `Maximum file size is ${maxSize/ 1024 / 1024}MB` },\n };\n }\n\n return null;\n }\n return null;\n };\n }\n\n static minSelectedCheckboxes(min = 1) {\n const validator: ValidatorFn = (formArray: FormArray) => {\n const totalSelected = formArray.controls\n // get a list of checkbox values (boolean)\n .map((control) => control.value)\n // total up the number of checked checkboxes\n .reduce((prev, next) => (next ? prev + next : prev), 0);\n\n // if the total is not greater than the minimum, return the error message\n return totalSelected >= min ? null : { required: true };\n };\n\n return validator;\n }\n\n static atLeastOneHasMinLengthOne() {\n return (controlGroup) => {\n let controls = controlGroup.controls;\n if (controls) {\n let theOne = Object.keys(controls).find((key) => controls[key].value.length > 0);\n if (!theOne) {\n return {\n atLeastOneRequired: {\n text: 'At least one should be selected',\n },\n };\n }\n }\n return null;\n };\n }\n\n static isPhoneNumberValid(registrationInfo: FormControl) {\n var errorList = {};\n\n const numberLength = 11;\n\n if (registrationInfo.value.length !== numberLength || !/^\\d+$/.test(registrationInfo.value)) {\n errorList['NOT_VALID_PHONE_NUMBER_LENGTH'] = {\n errMsg: 'Invalid phone number.',\n error: true,\n };\n return errorList;\n }\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { GlowService } from './glow.service';\n\nimport { tUserGroup, tUserOrganization } from './glow.typings';\nimport { tIsUserOranizationAdmin, tIsUserGroupAdmin } from './app-data.typings';\n\n@Injectable()\nexport class UserGroupSelectorService {\n\n private userOrganizations: tUserOrganization[] = [];\n\n private defaultErrorMsgObj = { error: \"An error has occurred\"}\n private UserOrganizationsAnnouncer = new Subject();\n private UserGroupsAnnouncer = new Subject(); \n private UserGroupsOfUserAnnouncer = new Subject(); \n\n\n userOrganizations$ = this.UserOrganizationsAnnouncer.asObservable();\n userGroupsOfUser$ = this.UserGroupsOfUserAnnouncer.asObservable();\n userGroups$ = this.UserGroupsAnnouncer.asObservable();\n\n public getUserOrganizationSet: EventEmitter = new EventEmitter();\n public isUserGroupAdmin: EventEmitter = new EventEmitter();\n public isUserOrganizationAdmin: EventEmitter = new EventEmitter();\n\n constructor( \n private glowService: GlowService) {\n };\n\n private announceUserOrganizations(): void{\n this.UserOrganizationsAnnouncer.next(this.userOrganizations);\n };\n\n private announceUserGroupsOfUser(userGroups): void{\n this.UserGroupsOfUserAnnouncer.next(userGroups);\n };\n\n private announceUserGroups(userGroups): void{\n this.UserGroupsAnnouncer.next(userGroups);\n };\n\n public getUserOrganizations(functionalGroupId=\"\"): void {\n\n this.glowService\n .getUserOrganizationsOfUser(functionalGroupId)\n .subscribe(userOrganizations => {\n this.userOrganizations = userOrganizations;\n // console.log(this.userOrganizations);\n this.announceUserOrganizations();\n\n },\n error => {\n // console.log('User Organizations loading error is : ' + error);\n // this.loadingerror = true;\n // this.loadingerrortext = \"An error has occurred\";\n // this.loading = false;\n }\n );\n };\n\n public checkUserIsUserGroupAdmin(userGroupId: string) : void {\n this.glowService\n .checkIfUserIsUserGroupAdmin(userGroupId)\n .subscribe(isUserGroupAdminRes => {\n\n if (isUserGroupAdminRes.valid){\n let isUserGroupAdmin = {\n isAdmin: true,\n userGroupId: userGroupId\n };\n this.isUserGroupAdmin.emit(isUserGroupAdmin);\n }\n },\n error => {\n // console.log('User Organizations loading error is : ' + error);\n this.announceUserGroups(this.defaultErrorMsgObj);\n });\n };\n\n public getUserGroupsOfOrganization(userOrganizationId: string): void {\n\n this.glowService\n .getUserGroupsOfOrganization(userOrganizationId)\n .subscribe(userGroups => {\n this.announceUserGroups(userGroups);\n },\n error => {\n // console.log('User Organizations loading error is : ' + error);\n this.announceUserGroups(this.defaultErrorMsgObj);\n });\n };\n\n public getUserGroupsOfOrganizationPromise(userOrganizationId: string): Promise {\n\n return this.glowService.getUserGroupsOfOrganization(userOrganizationId).toPromise()\n };\n\n\n public checkUserIsUserOrganizationAdmin(userOrganizationId: string) : void {\n this.glowService\n .checkIfUserIsUserOrganizationAdmin(userOrganizationId)\n .subscribe(isUserOrganizationAdmin => {\n let isUserOrgganizationAdmin = {\n isAdmin: true,\n userOrganizationId: userOrganizationId\n };\n if (isUserOrganizationAdmin.valid){\n this.isUserOrganizationAdmin.emit(isUserOrgganizationAdmin);\n }\n },\n error => {\n // console.log('User Organizations loading error is : ' + error);\n this.announceUserGroups(this.defaultErrorMsgObj);\n });\n }\n\n // private selectUserOrganization(): void {\n // var redirectToOrgSelection = true;\n // if(this.userOrganizations.length==1){\n // // console.log(\"User has a single user organization, selection not required\");\n \n // // if(this.userOrganizations[0].userGroups && this.userOrganizations[0].userGroups.length==1){\n // // }\n // redirectToOrgSelection\n // } \n\n // };\n\n private selectUserOrganizations(): void {\n\n this.glowService\n .getUserOrganizationsOfUser()\n .subscribe(userOrganizations => {\n this.userOrganizations = userOrganizations;\n // console.log(this.userOrganizations);\n // this.announceUserOrganizations();\n },\n error => {\n // console.log('User Organizations loading error is : ' + error);\n // this.loadingerror = true;\n // this.loadingerrortext = \"An error has occurred\";\n // this.loading = false;\n }\n );\n };\n \n /**\n * selectUserOrganizationFromJWT:\n * Find the user groups and check for unique organizations. If there is only one use it\n * else redirect to user organization page.\n * \n * Error Handling: I this function fails for any reason, redirect to user organization page \n * --the user will need to maully select thei r orgainization even if they are just i one\n */\n public selectUserOrganizationFromJWT(): boolean {\n\n var uniqueUserOrganizations = [];\n var redirectToOrgSelection = true;\n var userGroups;\n try{\n userGroups = JSON.parse(localStorage.getItem('userGroups'));\n }\n catch (e){\n // console.log(e);\n }\n if(userGroups && Array.isArray(userGroups)){\n for(var i=0; i {\n\n if(userOrganizations && Array.isArray(userOrganizations)){\n for(var i=0; i {\n // console.log('User Organizations loading error is : ' + error);\n // this.loadingerror = true;\n // this.loadingerrortext = \"An error has occurred\";\n // this.loading = false;\n }\n );\n };\n\n /**\n * Caution must be taken when saving the userGroups that are extracted from this call.\n * This call returns all the user groups of a user org (the user may not be part of all groups)\n */\n public getUserGroupsOfUserOrganizatiion(userOrganizationId: string, functionalGroupId=\"\"){\n\n this.glowService\n .getUserGroupsOfOrganization(userOrganizationId)\n .subscribe(userGroups => {\n\n this.announceUserGroupsOfUser(userGroups);\n },\n error => {\n // console.log('User Organizations loading error is : ' + error);\n // this.loadingerror = true;\n // this.loadingerrortext = \"An error has occurred\";\n // this.loading = false;\n }\n );\n };\n\n public getUserOrganizationFromCache(userOrganizationId: string): tUserOrganization {\n\n return (Array.isArray(this.userOrganizations))? this.userOrganizations.find((userOrg)=> userOrg.userOrganizationId == userOrganizationId) : null\n };\n\n\n};\n","import { Injectable } from '@angular/core';\nimport { Subject, forkJoin } from 'rxjs';\nimport { tVETypeConfiguredInfo, tIndexedVirtualEntity } from './app-config.typings';\nimport { tVE, tVEwithDetailedResources, tVEwithGroupedChildren, tVeAccessPermission, tVEwithGroupedChildrenDetailedResources, tUserOrganization } from './glow.typings';\n\nimport { ConfigService } from './app-config.service';\nimport { GlowService } from './glow.service';;\nimport { tUserOrganizationWithVes } from './app-data.typings';\nimport { VirtualEntityService } from './virtual-entity.service'\n\n@Injectable()\nexport class VirtualEntityGroupService {\n serviceId: string = 'VirtualEntityGroupService';\n groupsTagsObject: any[];\n userOrganizationId: string;\n virtualEntity: tVE;\n selectedVEWithDetailedChildren: tVEwithGroupedChildren;\n userOrganization: tUserOrganization;\n\n private SelectedVEAnnouncer = new Subject();\n private ChildVirtualEntityAnnouncer = new Subject();\n private VirtualEntityDetailedResourcesAnnouncer = new Subject();\n private VEsFoundAnnouncer = new Subject();\n\n selectedVE$ = this.SelectedVEAnnouncer.asObservable();\n veFound$ = this.VEsFoundAnnouncer.asObservable();\n veDetailedResources$ = this.VirtualEntityDetailedResourcesAnnouncer.asObservable();\n childVE$ = this.ChildVirtualEntityAnnouncer.asObservable();\n\n constructor(\n private virtualEntityService: VirtualEntityService,\n private configService: ConfigService) {\n };\n\n async filterGroupVe(userOrganization: tUserOrganization, getFromHttp: boolean = false) {\n // console.log(\"the current get from http \")\n // console.log(getFromHttp)\n // let userOrgByVes = await this.virtualEntityService.getVesByUserOrganization(userOrganization, getFromHttp)\n // if (userOrgByVes && userOrgByVes.virtualEntities) {\n // const groupVeTypes = this.configService.loadVeTypeGroupConfigurations()\n // this.groupsTagsObject = userOrgByVes.virtualEntities.filter((ve) => groupVeTypes.groups.indexOf(ve.veTypeId) > -1)\n // return this.groupsTagsObject\n // } else {\n // // console.log(\"error the list of groups was not found\")\n // return this.groupsTagsObject\n // }\n }\n\n};","import { Injectable } from '@angular/core';\nimport { Subject, Observable, forkJoin } from 'rxjs';\n\nimport { ConfigService } from './app-config.service';\n\nimport { tSupportedVETypeListing } from './app-config.typings';\nimport { GlowService } from './glow.service';\nimport { tVE, tVEwithDetailedResources, tVEwithGroupedChildrenDetailedResources } from './glow.typings';\nimport { ResourceTypeConfigService } from './configuration.service';\nimport { tVeApplicationDetails } from './app-data.typings';\nimport { tResourceTypeMapping } from './configuration.typings';\nimport { CacheService } from './cache.service';\n\n@Injectable()\nexport class VirtualEntityService {\n supportedVETypesList: string[];\n supportedVETypesPriorityList: any;\n\n supportedVETypes: tSupportedVETypeListing[];\n isVeSelected: boolean = false;\n virtualEntity: tVE;\n selectedVeApplicationDetails: tVeApplicationDetails;\n priority: number;\n selectedtVEwithDetailedResources: tVEwithDetailedResources;\n resourceClassifierMapping: tResourceTypeMapping;\n selectedVirtualEntities: tVEwithDetailedResources[];\n sensorVirtualEntities: tVEwithDetailedResources[];\n\n private SelectedVEAnnouncer = new Subject();\n private SelectedVEsAnnouncer = new Subject();\n private SensorVEsAnnouncer = new Subject();\n private VEsFoundAnnouncer = new Subject();\n private virtualEntityErrorAnnouncer = new Subject();\n\n selectedVeApplicationDetails$ = this.SelectedVEAnnouncer.asObservable();\n isVeFound$ = this.VEsFoundAnnouncer.asObservable();\n virtualEntitiesForDashboard$ = this.SelectedVEsAnnouncer.asObservable();\n sensorVirtualEntities$ = this.SensorVEsAnnouncer.asObservable();\n virtualEntityError$ = this.virtualEntityErrorAnnouncer.asObservable();\n\n constructor(\n private glowService: GlowService,\n private storage: CacheService,\n private configService: ConfigService,\n private resourceTypeConfiguration: ResourceTypeConfigService\n ) {\n this.isVeSelected = false;\n this.supportedVETypes = this.configService.loadSupportedVETypes();\n }\n\n findVirtualEntity() {\n this.glowService.getVEs().subscribe(\n (ves) => {\n var virtualEntities = ves;\n // console.log('found list selecting the ves');\n if (virtualEntities && virtualEntities.length > 0) {\n this.selectVirtualEntity(virtualEntities);\n } else {\n // console.log('No virtual entities found');\n this.cleanVirtualEntityCache();\n this.announceVENotFound();\n }\n },\n (error) => {\n // console.log('An error occurred when querying for the VEs');\n console.warn(error);\n }\n );\n }\n\n findVirtualEntities() {\n this.glowService.getVEs().subscribe(\n (virtualEntities) => {\n if (virtualEntities && virtualEntities.length > 0) {\n // // console.log(`found list selecting the ves, ${virtualEntities.length} ${JSON.stringify(virtualEntities)}`)\n this.selectVirtualEntities(virtualEntities);\n } else {\n // console.log('No virtual entities found');\n this.cleanVirtualEntityCache();\n this.announceSelectedVes([]);\n }\n },\n (error) => {\n // console.log('An error occurred when querying for the VEs');\n console.warn(error);\n this.announceError(error);\n }\n );\n }\n\n announceError(error: any) {\n this.virtualEntityErrorAnnouncer.next(error);\n }\n\n announceExistingVE() {\n // console.log('Announce Existing tVE in storage');\n\n this.storage.get('selectedVeApplicationDetails').then((veDB) => {\n if (veDB) {\n this.SelectedVEAnnouncer.next(veDB);\n } else {\n // console.log('No storage tVE found');\n this.VEsFoundAnnouncer.next(false);\n }\n });\n }\n\n announceSelectedVE(selectedVeApplicationDetails: tVeApplicationDetails) {\n // console.log('Announce VE that is selected');\n this.SelectedVEAnnouncer.next(selectedVeApplicationDetails);\n }\n\n announceSelectedVes(selectedVes: tVEwithDetailedResources[]) {\n // console.log('Announce VE list that is selected');\n this.updateVirtualEntityListCache();\n this.SelectedVEsAnnouncer.next(selectedVes);\n }\n\n announceSensorVes(sensorVes: tVEwithDetailedResources[]) {\n // console.log('Announce sensor VE that is selected');\n this.SensorVEsAnnouncer.next(sensorVes);\n }\n\n announceVENotFound() {\n // console.log('Announce VE has not been set or found');\n // some process needs to start potential that triggers potential rechecking\n this.VEsFoundAnnouncer.next(false);\n }\n\n // This function will find all the service ves and add them to the ve list\n selectVirtualEntities(virtualEntities: tVE[]) {\n this.selectedVirtualEntities = [];\n let veListObs: Observable[] = [];\n this.supportedVETypes.forEach((veTypeSupported) => {\n let vesOfType = virtualEntities.filter((ve) => ve.veTypeId == veTypeSupported.veTypeId);\n vesOfType.forEach((veOfType) => {\n veListObs.push(this.glowService.getResourcesOfVE(veOfType.veId));\n });\n });\n\n forkJoin(veListObs).subscribe(\n (veWithDetailedResources) => {\n this.selectedVirtualEntities = veWithDetailedResources;\n this.updateVirtualEntityListCache();\n this.announceSelectedVes(this.selectedVirtualEntities);\n },\n (error) => {\n console.warn('An error occurrred when getting parent virtual entities');\n console.warn(error);\n this.VEsFoundAnnouncer.next(false);\n }\n );\n\n let tempSensorVeListObs: Observable[] = [];\n const allSupportedSensorTypes = ['56779b69-2fa8-4701-a416-c8d4bfad6f49',\"7117e859-b2cd-4c1c-b1da-10e32e9911fe\"]\n\n let tempSensorVes = virtualEntities.filter((ve) => allSupportedSensorTypes.includes(ve.veTypeId));\n tempSensorVes.forEach((ve) => {\n tempSensorVeListObs.push(this.glowService.getResourcesOfVE(ve.veId));\n });\n\n forkJoin(tempSensorVeListObs).subscribe(\n (sensorVeWithDetailedResources) => {\n this.sensorVirtualEntities = sensorVeWithDetailedResources;\n this.announceSensorVes(this.sensorVirtualEntities);\n },\n (error) => {\n console.warn('An error occurrred when getting sensor virtual entities');\n console.warn(error);\n }\n );\n }\n\n selectVirtualEntity(virtualEntities: tVE[]) {\n //add some logic if user has multiple suitable ve's\n //set to false when entering this function!!\n this.priority = 100000;\n this.isVeSelected = false;\n\n this.supportedVETypesList = [];\n this.supportedVETypesPriorityList = {};\n\n for (let j = 0; j < this.supportedVETypes.length; j++) {\n this.supportedVETypesList.push(this.supportedVETypes[j].veTypeId);\n this.supportedVETypesPriorityList[this.supportedVETypes[j].veTypeId] = this.supportedVETypes[j].priority;\n }\n\n for (let i = 0; i < virtualEntities.length; i++) {\n if (this.supportedVETypesList.indexOf(virtualEntities[i].veTypeId) > -1) {\n //if priority of vetype is smaller in value than given priority overwrite seleected option -priority 1 is highest\n if (this.supportedVETypesPriorityList[virtualEntities[i].veTypeId] < this.priority) {\n this.isVeSelected = true;\n this.virtualEntity = virtualEntities[i];\n this.priority = this.supportedVETypesPriorityList[virtualEntities[i].veTypeId];\n // console.log('Found ve with greater priority', this.virtualEntity.veTypeId);\n } else if (this.supportedVETypesPriorityList[virtualEntities[i].veTypeId] == this.priority) {\n // console.log('Found ve with equal priority. checking number of resources ' + this.virtualEntity.veTypeId);\n if (virtualEntities[i].resources.length > this.virtualEntity.resources.length) {\n this.virtualEntity = virtualEntities[i];\n this.priority = this.supportedVETypesPriorityList[virtualEntities[i].veTypeId];\n this.isVeSelected = true;\n }\n } else {\n // console.log('Found ve with lower priority, continuing');\n }\n }\n }\n if (this.isVeSelected == true) {\n // console.log(this.virtualEntity);\n this.glowService.getResourcesOfVE(this.virtualEntity.veId).subscribe(\n (detailedResourcesVE) => {\n this.selectedtVEwithDetailedResources = detailedResourcesVE;\n var veApplicationDetails = this.setVeApplicationDetails(this.selectedtVEwithDetailedResources); // This is done to create the object that demonstartes what datastreams are available to the UI components\n this.storage.set('selectedVeApplicationDetails', veApplicationDetails);\n this.announceSelectedVE(veApplicationDetails);\n },\n (error) => {\n // console.log('An error has occurred when getting the resources of the tVE obj');\n console.warn(error);\n }\n );\n } else {\n // console.log(\"Amongst the users' existing ves, no ve was selected. User may not have appropriate vetype\");\n this.VEsFoundAnnouncer.next(false);\n }\n }\n\n getVeApplicationDetails(): tVeApplicationDetails {\n this.selectedVeApplicationDetails = JSON.parse(localStorage.getItem('selectedVeApplicationDetails'));\n\n if (!this.selectedVeApplicationDetails) {\n this.selectedVeApplicationDetails = this.initialiseVeApplicationDetails();\n }\n return this.selectedVeApplicationDetails;\n }\n\n setVeApplicationDetails(selectedVirtualEntityObj: tVEwithDetailedResources): tVeApplicationDetails {\n //TO DO: Adjust logic for elec to use multiphase electricity\n this.selectedVeApplicationDetails = this.initialiseVeApplicationDetails();\n this.resourceClassifierMapping = this.resourceTypeConfiguration.loadResourceClassiffierMappings();\n\n if (selectedVirtualEntityObj && selectedVirtualEntityObj.hasOwnProperty('resources')) {\n this.selectedVeApplicationDetails.virtualEntity = selectedVirtualEntityObj;\n\n for (let i = 0; i < selectedVirtualEntityObj.resources.length; i++) {\n const resourceInfo = {\n resourceId: selectedVirtualEntityObj.resources[i].resourceId,\n resourceTypeId: selectedVirtualEntityObj.resources[i].resourceTypeId,\n classifier: selectedVirtualEntityObj.resources[i].classifier,\n name: selectedVirtualEntityObj.resources[i].name,\n };\n\n if (this.resourceClassifierMapping.dataStreamType.electricity.indexOf(resourceInfo.classifier) > -1) {\n if (this.resourceClassifierMapping.dimension.energy.indexOf(resourceInfo.classifier) > -1) {\n this.selectedVeApplicationDetails.electricity.energy.availability = true;\n this.selectedVeApplicationDetails.electricity.energy = {\n ...this.selectedVeApplicationDetails.electricity.energy,\n ...resourceInfo,\n };\n // this.selectedVeApplicationDetails.electricity.co2.availability = true\n // this.selectedVeApplicationDetails.electricity.co2 = { ...this.selectedVeApplicationDetails.electricity.energy, ...resourceInfo }\n } else if (this.resourceClassifierMapping.dimension.cost.indexOf(resourceInfo.classifier) > -1) {\n this.selectedVeApplicationDetails.electricity.cost.availability = true;\n this.selectedVeApplicationDetails.electricity.cost = {\n ...this.selectedVeApplicationDetails.electricity.cost,\n ...resourceInfo,\n };\n } else {\n console.warn('Unrecognised dimesion for electricity');\n // console.log(resourceInfo);\n }\n }\n if (this.resourceClassifierMapping.dataStreamType.gas.indexOf(resourceInfo.classifier) > -1) {\n if (this.resourceClassifierMapping.dimension.energy.indexOf(resourceInfo.classifier) > -1) {\n this.selectedVeApplicationDetails.gas.energy.availability = true;\n this.selectedVeApplicationDetails.gas.energy = {\n ...this.selectedVeApplicationDetails.gas.energy,\n ...resourceInfo,\n };\n // this.selectedVeApplicationDetails.gas.co2.availability = true\n // this.selectedVeApplicationDetails.gas.co2 = { ...this.selectedVeApplicationDetails.gas.energy, ...resourceInfo }\n } else if (this.resourceClassifierMapping.dimension.cost.indexOf(resourceInfo.classifier) > -1) {\n this.selectedVeApplicationDetails.gas.cost.availability = true;\n this.selectedVeApplicationDetails.gas.cost = {\n ...this.selectedVeApplicationDetails.gas.cost,\n ...resourceInfo,\n };\n } else {\n console.warn('Unrecognised dimesion for gas');\n // console.log(resourceInfo);\n }\n }\n }\n }\n\n localStorage.setItem('selectedVeApplicationDetails', JSON.stringify(this.selectedVeApplicationDetails));\n return this.selectedVeApplicationDetails;\n }\n\n cleanVirtualEntityCache() {\n this.storage.remove('selectedVeApplicationDetails');\n }\n // app-ve.service.ts\n // selectedVeApplicationDetails -> ve\n initialiseVeApplicationDetails(): tVeApplicationDetails {\n const selectedVeApplicationDetails = {\n electricity: {\n energy: {\n type: 'electicity.energy',\n availability: false,\n resourceId: null,\n resourceTypeId: null,\n classifier: null,\n name: null,\n },\n cost: {\n type: 'electicity.cost',\n availability: false,\n resourceId: null,\n resourceTypeId: null,\n classifier: null,\n name: null,\n },\n // co2: {\n // type: \"electicity.energy\",\n // availability: false,\n // resourceId: null,\n // resourceTypeId: null,\n // classifier: null,\n // name: null\n // }\n },\n gas: {\n energy: {\n type: 'gas.energy',\n availability: false,\n resourceId: null,\n resourceTypeId: null,\n classifier: null,\n name: null,\n },\n cost: {\n type: 'gas.cost',\n availability: false,\n resourceId: null,\n resourceTypeId: null,\n classifier: null,\n name: null,\n },\n // co2: {\n // type: \"electicity.energy\",\n // availability: false,\n // resourceId: null,\n // resourceTypeId: null,\n // classifier: null,\n // name: null\n // }\n },\n virtualEntity: null,\n };\n return selectedVeApplicationDetails;\n }\n\n getCachedChildVirtualEntity(veId: string) {\n var virtualEntityChild = JSON.parse(localStorage.getItem('ve' + veId));\n\n if (virtualEntityChild) {\n return virtualEntityChild;\n } else {\n return;\n }\n }\n\n async getGroupedChildrenVirtualEntityForkJoin(veId: string, type = 'parent'): Promise {\n // console.log('getGroupedChildrenVirtualEntity ' + veId);\n let virtualEntity;\n\n let veObs = [this.glowService.getGroupedChildrenOfVe(veId), this.glowService.getResourcesOfVE(veId)];\n return forkJoin(veObs).toPromise();\n }\n\n // async getVirtualEntity(veId: string, proceedWithHttp = false): Promise {\n // let childVirtualEntity;\n // let error;\n\n // if (proceedWithHttp === false) {\n // childVirtualEntity = this.getCachedChildVirtualEntity(veId)\n // if (childVirtualEntity) {\n // proceedWithHttp = false;\n // } else {\n // proceedWithHttp = true;\n // }\n // }\n\n // if (proceedWithHttp === true) {\n // await this.getGroupedChildrenVirtualEntityForkJoin(veId, 'child').then((data) => {\n // let isValid = true;\n // for (let i = 0; i < data.length; i++) {\n // if (data[i] && data[i].veId) {\n\n // } else {\n // isValid = false\n // }\n // }\n // if (isValid === true) {\n // childVirtualEntity = { ...data[0], ...data[1] };\n // // console.log(childVirtualEntity)\n\n // } else {\n // console.warn(\"Unexpected data returned\")\n // }\n // // console.log(\"COMPLETE FORKJOIN\")\n\n // }, (errorMsg) => {\n // try {\n // error = errorMsg.json();\n // } catch (e) {\n // console.warn(e)\n // error = errorMsg;\n // }\n // })\n // }\n // // console.log('getVirtualEntity returns response')\n // // console.log(childVirtualEntity)\n // return new Promise((resolve, reject) => {\n // if (childVirtualEntity) {\n // resolve(childVirtualEntity)\n\n // } else {\n // childVirtualEntity = {\n // veId: veId,\n // hasError: true,\n // error: error.error\n // }\n // resolve(childVirtualEntity)\n // }\n // });\n // }\n\n updateVirtualEntityListCache() {\n // console.log('updateVirtualEntityListCache');\n this.cleanVirtualEntityCache();\n if (Array.isArray(this.selectedVirtualEntities)) {\n this.selectedVirtualEntities.forEach((virtualEntityFullResources) =>\n this.setVirtualEntityToLocalStorage(virtualEntityFullResources)\n );\n }\n }\n\n getCachedVirtualEntity(veId: string) {\n // console.log('getCachedVirtualEntity veId', veId);\n const virtualEntity = JSON.parse(localStorage.getItem('ve' + veId));\n // console.log('getCachedVirtualEntity virtualEntity', virtualEntity);\n\n if (virtualEntity) {\n return virtualEntity;\n } else {\n return;\n }\n }\n\n async getVirtualEntity(veId: string, proceedWithHttp: boolean = false): Promise {\n // console.log('getVirtualEntity veId', veId);\n let virtualEntity, error;\n if (proceedWithHttp === false) {\n virtualEntity = this.getCachedVirtualEntity(veId);\n }\n\n if (!virtualEntity) {\n try {\n virtualEntity = await this.glowService.getResourcesOfVE(veId).toPromise();\n this.setVirtualEntityToLocalStorage(virtualEntity);\n } catch (e) {\n console.warn(e);\n try {\n error = e.json();\n } catch (e) {\n console.warn(e);\n error = e;\n }\n throw {\n veId: veId,\n hasError: true,\n error: error,\n };\n }\n }\n // // console.log(virtualEntity)\n return virtualEntity;\n }\n\n setVirtualEntityToLocalStorage(virtualEntityFullResources: tVEwithDetailedResources) {\n // // console.log('setVirtualEntityToLocalStorage', virtualEntityFullResources);\n if (virtualEntityFullResources && virtualEntityFullResources.veId) {\n localStorage.setItem(`ve${virtualEntityFullResources.veId}`, JSON.stringify(virtualEntityFullResources));\n }\n }\n\n getVirtualEntityWithFullResources(veId: string) {\n // console.log('getVirtualEntityWithFullResources', veId);\n this.glowService.getResourcesOfVE(veId).subscribe((virtualEntityFullResources) => {\n this.setVirtualEntityToLocalStorage(virtualEntityFullResources);\n // this.announceVirtualEntityWithResources(virtualEntityFullResources)\n });\n }\n\n setSelectedVirtualEntity(virtualEntity: tVEwithDetailedResources) {\n // console.log('setSelectedVirtualEntity', virtualEntity);\n this.selectedtVEwithDetailedResources = virtualEntity;\n }\n}\n","\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ViewCell } from 'ng2-smart-table';\n\n@Component({\n template: `{{renderValue | date: \"dd MMM yyyy HH:mm\"}}`\n})\n\nexport class CustomRenderDateComponent implements ViewCell, OnInit {\n\n renderValue: Date;\n className: string;\n\n @Input() value: any;\n @Input() rowData: any;\n\n day\n\n ngOnInit() {\n this.renderValue = this.value ? new Date(this.value) : null\n\n var today = new Date();\n var priorDate = new Date(new Date().setDate(today.getDate() - 30)).getTime();\n this.className = priorDate > new Date(this.value).getTime() ? 'date-nowrap error-messages' : 'date-nowrap'\n\n }\n}","\nimport { Component, Input, OnInit, EventEmitter, Output } from '@angular/core';\n\n@Component({\n template: `
    \n \n
    \n `})\n\nexport class CustomDownloadButtonComponent implements OnInit {\n\n renderValue: string;\n\n @Input() value;\n @Input() rowData: any;\n @Output() download = new EventEmitter();\n\n constructor() { }\n\n ngOnInit() {\n this.renderValue = this.value;\n }\n\n onDownload() {\n // console.log('onDownload', this.rowData)\n this.download.emit(this.rowData);\n }\n\n}","\nimport { Component, Input, OnInit, EventEmitter, Output } from '@angular/core';\n\n@Component({\n template: `
    \n \n \n \n
    `,\n})\n\nexport class CustomGroupTagButtonsComponent implements OnInit {\n\n renderValue: string;\n\n @Input() value;\n @Input() rowData: any;\n @Output() remove = new EventEmitter();\n @Output() view = new EventEmitter();\n @Output() add = new EventEmitter();\n\n constructor() { }\n\n ngOnInit() {\n this.renderValue = this.value;\n }\n\n onRemove() {\n // console.log('onRemove', this.rowData)\n this.remove.emit(this.rowData);\n }\n\n onView() {\n // console.log('onView', this.rowData)\n this.view.emit(this.rowData);\n }\n\n onAdd() {\n // console.log('onAdd', this.rowData)\n this.add.emit(this.rowData);\n }\n}","\nimport { Component, Input, OnInit } from '@angular/core';\n\nimport { ViewCell } from 'ng2-smart-table';\n\n@Component({\n template: `\n {{renderValue }}\n `,\n})\nexport class CustomRenderNumberOfChildrenComponent implements ViewCell, OnInit {\n\n renderValue: number;\n\n @Input() value: any;\n @Input() rowData: any;\n\n ngOnInit() {\n this.renderValue = this.value && this.value.length\n }\n\n}","\nimport { Component, Input, OnInit } from '@angular/core';\n\nimport { ViewCell } from 'ng2-smart-table';\n\n@Component({\n template: `\n {{renderValue | number:'1.2-2' }}\n `,\n})\nexport class CustomRenderNumberOfDigitsComponent implements ViewCell, OnInit {\n\n renderValue: number;\n\n @Input() value: any;\n @Input() rowData: any;\n\n ngOnInit() {\n this.renderValue = this.value\n }\n\n}","\nimport { Component, Input, OnInit, EventEmitter, Output } from '@angular/core';\n\n@Component({\n template: `
    \n \n \n
    `,\n})\n\nexport class CustomPropertyAttributeButtonsComponent implements OnInit {\n\n renderValue: string;\n\n @Input() value;\n @Input() rowData: any;\n @Output() remove = new EventEmitter();\n @Output() edit = new EventEmitter();\n\n constructor() { }\n\n ngOnInit() {\n this.renderValue = this.value;\n }\n\n onRemove() {\n // console.log('onRemove', this.rowData)\n this.remove.emit(this.rowData);\n }\n\n onEdit() {\n // console.log('onEdit', this.rowData)\n this.edit.emit(this.rowData);\n }\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { ViewCell } from 'ng2-smart-table';\n\n@Component({\n template: `\n \n \n `,\n})\n\nexport class CustomRenderTickboxIconComponent implements ViewCell, OnInit {\n\n renderValue: number;\n\n @Input() value: any;\n @Input() rowData: any;\n\n ngOnInit() {\n this.renderValue = this.value\n }\n}","\nimport { Component, Input, OnInit, EventEmitter, Output } from '@angular/core';\n\n@Component({\n template: ``,\n})\n\nexport class CustomViewPropertyButtonComponent implements OnInit {\n\n renderValue: string;\n\n @Input() value;\n @Input() rowData: any;\n @Output() save = new EventEmitter();\n\n constructor() { }\n\n ngOnInit() {\n this.renderValue = this.value;\n }\n\n onClick() {\n this.save.emit(this.rowData);\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'absolute'\n})\nexport class AbsolutePipe implements PipeTransform {\n transform(value: number): number {\n return Math.abs(value);\n }\n}","import { Pipe } from '@angular/core';\n@Pipe({\n name: 'displaygreaterdate'\n})\nexport class DisplayGreaterDatePipe {\n transform(value) {\n const dates = [\"lastprofile\", \"lread\", \"lasttariff\", \"lastcommscheck\", \"lasttariffcheck\", \"lastcomms\", \"lastprofilecheck\"]\n const dateFields = dates.reduce((acc, dateKey) => {\n if (value[dateKey]) {\n acc.push(value[dateKey])\n }\n return acc\n }, []);\n \n return dateFields.sort()[0];\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n name: 'objToKeys'\n})\nexport class ObjToKeysPipe implements PipeTransform {\n transform(value: any, args?: any): any {\n if (!value) {\n return value;\n }\n return Object.keys(value);\n }\n}","import { NgModule } from '@angular/core'\nimport { ObjToKeysPipe } from './obj-to-key.pipe';\nimport { ReversePipe } from './reverse-array.pipe';\nimport { TypeOfPipe } from './typeof.pipe';\nimport { DisplayGreaterDatePipe } from './date-sort-pipe'\nimport { SanitizeHtmlPipe } from './sanitise-html.pipe';\nimport { RangePipe } from './range-pipe';\nimport { AbsolutePipe } from './absolute-pipe';\nimport { sanitizeUrlPipe } from './sanitise-url.pipe';\n\nconst PIPES = [\n ObjToKeysPipe,\n ReversePipe,\n SanitizeHtmlPipe,\n TypeOfPipe,\n DisplayGreaterDatePipe,\n RangePipe,\n AbsolutePipe,\n sanitizeUrlPipe\n];\n\n@NgModule({\n imports: [],\n declarations: [...PIPES],\n providers: [],\n exports: [...PIPES]\n})\n\nexport class PipesModule { }","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'range'\n})\nexport class RangePipe implements PipeTransform {\n transform(length: number, offset: number = 0): number[] {\n if (!length) {\n return [];\n }\n const array = [];\n for (let n = 0; n < length; ++n) {\n array.push(offset + n);\n }\n return array;\n }\n}","import { Pipe } from '@angular/core';\n\n@Pipe({\n name: 'reverse'\n})\nexport class ReversePipe {\n transform(value) {\n return value.slice().reverse();\n }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'sanitizeHtml'\n})\nexport class SanitizeHtmlPipe implements PipeTransform {\n\n constructor(private _sanitizer:DomSanitizer) {\n }\n\n transform(v:string):SafeHtml {\n return this._sanitizer.bypassSecurityTrustHtml(v);\n }\n}","import { Pipe } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({name: 'sanitizeUrl'})\nexport class sanitizeUrlPipe {\n constructor(private sanitizer:DomSanitizer){}\n\n transform(html) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(html);\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'typeof'\n})\nexport class TypeOfPipe implements PipeTransform {\n\n transform(value: any): any {\n // // console.log(\"Pipe works \",typeof value);\n return typeof value;\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { ClarityModule } from '@clr/angular';\nimport { PipesModule } from './pipes/pipes.module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CustomRenderDateComponent } from './ng2-smart-table/custom-date-editor.component';\nimport { CustomRenderTickboxIconComponent } from './ng2-smart-table/custom-tickbox-icon';\nimport { CustomRenderNumberOfChildrenComponent } from './ng2-smart-table/custom-number-children';\nimport { CustomViewPropertyButtonComponent } from './ng2-smart-table/custom-view-property-button';\nimport { CustomRenderNumberOfDigitsComponent } from './ng2-smart-table/custom-number-digits';\nimport { CustomGroupTagButtonsComponent } from './ng2-smart-table/custom-group-tag-buttons';\nimport { CustomDownloadButtonComponent } from './ng2-smart-table/custom-download-button';\nimport { CustomPropertyAttributeButtonsComponent } from './ng2-smart-table/custom-property-attribute-buttons';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { SidebarContentCardModule } from '../components/sidebar-content-card/sidebar-content-card.module';\nimport { SuccessModalComponent } from '../components/success-modal/success-modal.component';\nimport { SuccessModalModule } from '../components/success-modal/success-modal.module';\n\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\nimport { HtcFullInfoModule } from '../components/htc-full-info/htc-full-info.module';\nimport { SpinnerModule } from '../components/spinner/spinner.module';\nimport { CaseStudySummaryModule } from '../components/case-study/case-study-summary/case-study-summary.module';\n\nimport {NgbPopoverModule} from '@ng-bootstrap/ng-bootstrap';\nimport { FileUploadModule } from '../components/file-upload/file-upload.module';\nconst MODULES = [\n ClarityModule,\n CommonModule,\n FormsModule,\n PipesModule,\n TranslateModule,\n ReactiveFormsModule,\n RouterModule,\n NgSelectModule,\n FormsModule,\n SidebarContentCardModule,\n SuccessModalModule,\n HtcFullInfoModule,\n NgxSkeletonLoaderModule,\n SpinnerModule,\n NgbPopoverModule,\n FileUploadModule\n];\n\nconst SMART_TABLE_COMPONENTS = [\n CustomRenderDateComponent,\n CustomRenderTickboxIconComponent,\n CustomRenderNumberOfChildrenComponent,\n CustomRenderNumberOfDigitsComponent,\n CustomViewPropertyButtonComponent,\n CustomGroupTagButtonsComponent,\n CustomPropertyAttributeButtonsComponent,\n CustomDownloadButtonComponent,\n];\n\n@NgModule({\n imports: [...MODULES],\n declarations: [...SMART_TABLE_COMPONENTS],\n exports: [...MODULES],\n providers: [FormBuilder],\n})\nexport class SharedModule {}\n","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `angular-cli.json`.\n\nexport const environment = {\n production: true,\n baseUrl: 'https://api.glowmarkt.com/api/v0-1/',\n cookieDomain: 'glowmarkt.com',\n rateLimitingHostUrl: 'https://apil.glowmarkt.com/api/v0-1/',\n contentSystemBaseUrl: 'https://strapi.glowmarkt.com',\n contentSystemReadBearer:\n 'Bearer 2d876f172d992953b74082ebcd35a34a53e448368552cad2b4451dc2953e8e17c6194b0ecdaf5f3f33999caab4b5997e8071b984499c11fa22c5c682e172599efcd42532499bae2a1dbd6191d374015005bc6c1b08fbb06131a0c15ad845e94974bfcbb723e4329bcf6f46c34fad92a620f519f06be823a8af4387ac6dddbfb7',\n contentSystemPostBearer:\n 'Bearer ec986b9a717920bc5324b3b5ca36c0e14533144b2242587d387055a818edd4d787bfe17795ecb5bd2cc0cf42608adc650d8423c3cb2d9bc27cb471d096c1e931edba6f327f38c4783e55c0acd213cdd70ab4a177879ef5e374459419ec4fb3ad6c9a8b6043e20555292364a76145d30663e98b4ce496e05bc56d72eb875ac614',\n contentSystemDeleteBearer:\n 'Bearer 6a53dca1577ff538af957d5dd256e6eb6c68176e320d703b93b51ec9c479a457a8e906a48026b07e01d0cea21a878b8d1ffbc9b924d502325ef8813f7b2384cacdc16e12170353d09af1531ee60ef2fb6637a425fcee177e5affbb58949479aca26caec87701bdb06b33a9ed87e3f4d978bc6a695debf094d0e1fce79dd7667c',\n contentSearchBaseUrl: 'https://meilisearch.glowmarkt.com',\n contentSearchApiKey: '4175657805154f4bbd249ece5229eb1e824308de8ee629c992631582c0812586',\n stripePublicKey: 'pk_live_Q4aFriIQFFI0vkz3N2SeSDzJ',\n config: {\n applicationId: 'b0f1b774-a586-4f72-9edd-27ead8aa7a8d',\n content: {\n supportDetails: {\n reference: 'Bright_support_details_v1',\n },\n faqs: {\n reference: 'GlowProFaqWeb',\n },\n languageContent: {\n reference: 'GlowmarktLanguageContent',\n defaultLanguageCode: 'en-GB',\n version: '1.0.0',\n },\n },\n termsAndConditions: {\n reference: 'GlowmarktWebTermsConditions',\n version: '1.0.0',\n },\n functionalGroups: {\n // auth: \"962167bd-b1b9-4300-99d2-9f7ba067c73e\",\n // estates: \"c80ffc08-f1d7-43ab-98c2-b70c17768217\",\n // finance: \"415dd8e2-a215-4134-97f9-3c4a10d21d09\",\n // repairs: \"0ede7ec5-b40d-4918-a511-01334001df5d\",\n // sustainability: \"57e925f5-b405-4d03-b43c-8f65823280a4\",\n // support: \"a4c39708-87f4-47e4-a094-44edcc439fc4\"\n },\n },\n charts: {\n colour: {\n energy: ['#E77C2B', '#154E72', '#9F9F9F', '#CC4528', '#8bbc21', '#FFBD33', '#33FF71'],\n temperature: ['#FF5733', '#e7da2b', '#ffbd33'],\n },\n enrollmentAnalysis: {\n pending: '#FFB847',\n enrolled: '#24b795',\n issues: '#E32B4D',\n },\n },\n veTypeGroupConfig: {\n singleSite: [\n 'ba4c37f3-aa21-464e-b9da-8995074b2c10',\n '741a9e86-431f-4833-8983-9d412b92f873',\n 'e5b81686-3dfd-4737-a799-7900c65f48d0',\n '2440ddfe-098e-4934-b75a-6cfe9b98d430',\n '9319234a-0182-4a27-9034-b5f167421835',\n '7ffead48-2df8-42be-849d-dcff35c6311d',\n ],\n groups: ['f8ea110a-a012-4d84-a835-7dfbb26e97f6'],\n groupOfGroups: ['0665eee0-08bd-4915-b50d-39878f560317'],\n },\n veTypeConfigDictionary: {\n '7ffead48-2df8-42be-849d-dcff35c6311d': {\n name: 'Properties',\n reference: 'properties',\n },\n 'f8ea110a-a012-4d84-a835-7dfbb26e97f6': {\n name: 'Groups',\n reference: 'groups',\n },\n },\n zitadel: {\n clientId: '225750021423851812@glowmarkt',\n issuer: 'https://auth.glowmarkt.com',\n redirectUri: 'https://glowmarkt.com/auth/callback',\n postLogoutRedirectUri: 'https://glowmarkt.com/signedout',\n requireHttps: true,\n allowedUrls: ['https://auth.glowmarkt.com/admin/v1', 'https://auth.glowmarkt.com/management/v1', 'https://auth.glowmarkt.com/auth/v1/', 'https://auth.glowmarkt.com'],\n },\n};\n","import { Injector, enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nexport let appInjector: Injector;\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .then((componentRef) => {\n appInjector = componentRef.injector;\n })\n .catch((err) => console.error(err));\n","import { environment } from './environments/environment';\n\nexport class Utils {\n static async promiseHandler(promise: Promise): Promise {\n try {\n const data = await promise;\n return [null, data];\n } catch (error) {\n return [error, null];\n }\n }\n\n static setNumbersInObject(obj: any) {\n for (let key in obj) {\n if (obj[key] instanceof Blob) continue;\n if (typeof obj[key] === 'object') {\n this.setNumbersInObject(obj[key]);\n } else if (typeof obj[key] === 'string' && !isNaN(Number(obj[key]))) {\n obj[key] = +obj[key];\n }\n }\n return obj;\n }\n\n static async toFormData(obj: any) {\n console.log(obj)\n const formData = new FormData();\n for (let key in obj) {\n \n formData.append(String(key), obj[key]);\n }\n\n \n return formData;\n }\n\n static formDataFromFiles(fileList: FileList): FormData {\n const formData = new FormData();\n for (let i = 0; i < fileList.length; i++) {\n const file = fileList[i] as any;\n formData.append(`file${i}`, file);\n formData.append(`${i}`, JSON.stringify({ description: file.description, width: file.width, height: file.height }));\n }\n return formData;\n }\n\n static async formDataFromImgFile(imageFile: File, description: string) {\n if (!imageFile || !imageFile.name) return;\n const fr = new FileReader();\n const dataUrl = await new Promise((resolve) => {\n fr.onload = () => resolve(fr.result as string);\n fr.readAsDataURL(imageFile);\n });\n\n const img = new Image();\n await new Promise((resolve) => {\n img.onload = () => resolve();\n img.src = dataUrl;\n });\n\n const imageFormValue = {\n file: imageFile,\n width: img.width,\n height: img.height,\n description,\n };\n\n return Utils.toFormData(imageFormValue);\n }\n\n static getImageOrientation(imageInfo: { width: number; height: number }) {\n return imageInfo.width > imageInfo.height ? 'landscape' : 'portrait';\n }\n\n static getFileDimensions({ file, url }: { file?: File; url?: string }): Promise<{ width: any; height: any }> {\n if (!file && !url) return Promise.reject('No file or url provided');\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.width, height: img.height });\n };\n img.onerror = reject;\n img.src = file ? URL.createObjectURL(file) : url;\n });\n }\n\n static getBlobImageSource(blob) {\n return new Promise((resolve, reject) => {\n if (!blob) {\n reject(new Error('Invalid Blob'));\n }\n console.log(blob)\n const fr = new FileReader();\n\n fr.onload = function () {\n resolve(fr.result);\n };\n\n fr.onerror = function () {\n reject(new Error('Error reading Blob'));\n };\n\n fr.readAsDataURL(blob);\n });\n }\n\n static extractUKPostcodeFirstPart(inputString) {\n // Define a regular expression pattern for UK postcodes\n const postcodePattern = /([A-Za-z]{1,2}\\d{1,2})(\\d[A-Za-z]{2})?/i;\n\n // Search for the postcode pattern in the input string\n const matches = inputString.match(postcodePattern);\n // If a match is found, return the first part; otherwise, return null\n if (matches && matches.length > 1) {\n return matches[1];\n } else {\n return null;\n }\n }\n\n static pluralContentType(singularContentType) {\n const mapping = {\n blog: 'blogs',\n article: 'articles',\n 'resources-list': 'resources-lists',\n tutorial: 'tutorials',\n infographic: 'infographics',\n };\n return mapping[singularContentType];\n }\n\n static getTimeToRead(longString: string) {\n const wordsPerMinute = 200;\n return Math.round(longString.split(' ').length / wordsPerMinute);\n }\n\n static splitTextOnNewLines(text: string) {\n return text.split(/\\r\\n|\\n/);\n }\n\n static formatZDate(stringZDate: string) {\n return new Date(stringZDate).toDateString().split(' ').slice(1).join(' ');\n }\n\n static formatDateToDdMmYyyy(date) {\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are zero-based\n const year = date.getFullYear();\n\n return `${day}/${month}/${year}`;\n }\n\n static getApiServerAddress() {\n return environment.contentSystemBaseUrl;\n }\n\n static removeHTMLFromString(string: string = '') {\n const regex = /(<([^>]+)>)/gi;\n return string.replace(regex, '');\n }\n\n static fromatSearchContent(content) {\n // console.log(\"Formatting\",content)\n let formatted = { ...content };\n const idFragments = formatted.id.split('-');\n const contentType = this.pluralContentType(idFragments.slice(0, -1).join('-'));\n for (let key in formatted) {\n let value = formatted[`${key}`];\n if (value && value.constructor === Array) {\n const formattedArray = value.map((obj) => {\n return { attributes: obj };\n });\n formatted[`${key}`] = { data: formattedArray };\n } else if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\n formatted[`${key}`] = { data: { id: value['id'], attributes: value } };\n }\n }\n formatted = {\n id: idFragments[idFragments.length - 1],\n attributes: formatted,\n contentType: contentType,\n };\n // console.log(formatted);\n return formatted;\n }\n\n static waitForElemById(id): Promise {\n return new Promise((resolve) => {\n if (document.getElementById(id) as HTMLInputElement) {\n return resolve(document.getElementById(id) as HTMLInputElement);\n }\n\n const observer = new MutationObserver((mutations) => {\n if (document.getElementById(id) as HTMLInputElement) {\n resolve(document.getElementById(id) as HTMLInputElement);\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n console.log('waitforelemebtby iud')\n }\n\n static getReadableDateFromIso(isoString) {\n var d = new Date(isoString);\n return d.toLocaleDateString('en-GB');\n }\n static getDateIn30Days() {\n var date = new Date();\n return new Date(date.setDate(date.getDate() + 30)).toISOString();\n }\n\n static getNumberToDecimalPlace(number, decimalPlace = 1) {\n if (!number) return 0;\n return Math.round(number * Math.pow(10, decimalPlace)) / Math.pow(10, decimalPlace);\n }\n}\n"],"sourceRoot":"webpack:///"}