{"version":3,"file":"main.js","mappings":"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","sources":["./apps/forsyning-web/src/app/app.component.ts","./apps/forsyning-web/src/app/app.component.html","./apps/forsyning-web/src/app/app.module.ts","./apps/forsyning-web/src/environments/environment.ts","./apps/forsyning-web/src/main.ts","./libs/e-forsyning/common/src/lib/adresse/adresse.formatter.ts","./libs/e-forsyning/common/src/lib/adresse/adresse.mapper.ts","./libs/e-forsyning/common/src/lib/adresse/index.ts","./libs/e-forsyning/common/src/lib/adresse/model/adresse.model.ts","./libs/e-forsyning/common/src/lib/app-shell/app-shell-scroll.service.ts","./libs/e-forsyning/common/src/lib/app-shell/app-shell.component.ts","./libs/e-forsyning/common/src/lib/app-shell/app-shell.component.html","./libs/e-forsyning/common/src/lib/app-shell/app-shell.module.ts","./libs/e-forsyning/common/src/lib/app-shell/index.ts","./libs/e-forsyning/common/src/lib/auth/auth.guard.ts","./libs/e-forsyning/common/src/lib/auth/authentication-result.model.ts","./libs/e-forsyning/common/src/lib/auth/authentication.service.ts","./libs/e-forsyning/common/src/lib/auth/husk-mig-credentials.model.ts","./libs/e-forsyning/common/src/lib/auth/husk-mig-credentials.service.ts","./libs/e-forsyning/common/src/lib/auth/index.ts","./libs/e-forsyning/common/src/lib/auth/installation.guard.ts","./libs/e-forsyning/common/src/lib/auth/login.service.ts","./libs/e-forsyning/common/src/lib/auth/menuBegraensning.guard.ts","./libs/e-forsyning/common/src/lib/auth/sequential.guards.ts","./libs/e-forsyning/common/src/lib/bruger/aktuel-bruger.observer.ts","./libs/e-forsyning/common/src/lib/bruger/aktuel-bruger.service.ts","./libs/e-forsyning/common/src/lib/bruger/bruger.repository.ts","./libs/e-forsyning/common/src/lib/bruger/index.ts","./libs/e-forsyning/common/src/lib/bruger/model/bruger.model.ts","./libs/e-forsyning/common/src/lib/bruger/model/ebruger-info.dto.ts","./libs/e-forsyning/common/src/lib/bruger/model/rolle.model.ts","./libs/e-forsyning/common/src/lib/bruger/rolle.service.ts","./libs/e-forsyning/common/src/lib/bruger/valgt-forbruger.observer.ts","./libs/e-forsyning/common/src/lib/credentials/appserver-bruger-credentials-repository.service.ts","./libs/e-forsyning/common/src/lib/credentials/appserver-credentials-repository-base.service.ts","./libs/e-forsyning/common/src/lib/credentials/appserver-credentials-repository.interface.ts","./libs/e-forsyning/common/src/lib/credentials/appserver-credentials-repository.service.ts","./libs/e-forsyning/common/src/lib/credentials/appserver-credentials.model.ts","./libs/e-forsyning/common/src/lib/credentials/appserver-credentials.util.ts","./libs/e-forsyning/common/src/lib/credentials/appserver-ekstern-forsyning-credentials.repository.ts","./libs/e-forsyning/common/src/lib/credentials/appserver-installation-credentials-repository.service.ts","./libs/e-forsyning/common/src/lib/credentials/appserver-unauthenticated-credentials.model.ts","./libs/e-forsyning/common/src/lib/credentials/index.ts","./libs/e-forsyning/common/src/lib/driftsstatus/driftsstatus.service.ts","./libs/e-forsyning/common/src/lib/driftsstatus/index.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-popup/e-boks-popup-content/e-boks-popup-content.component.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-popup/e-boks-popup-content/e-boks-popup-content.component.html","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-popup/e-boks-popup-ref.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-popup/e-boks-popup.service.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-popup/e-boks-popup.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding.module.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/e-boks-tilmelding.component.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/e-boks-tilmelding.component.html","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/steps/step-adresse-kode/step-adresse-kode.component.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/steps/step-adresse-kode/step-adresse-kode.component.html","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/steps/step-eksisterende-tilmeldinger/step-eksisterende-tilmeldinger.component.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/steps/step-eksisterende-tilmeldinger/step-eksisterende-tilmeldinger.component.html","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/steps/step-identitet/step-identitet.component.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/steps/step-identitet/step-identitet.component.html","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/steps/step-samtykke/step-samtykke.component.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/e-boks-tilmelding/steps/step-samtykke/step-samtykke.component.html","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/model/e-boks-tilmelding.model.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/model/validerer-adresse-kode-result.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/shared/e-boks-adressekode.form-builder.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/shared/e-boks-tilmelding.form-builder.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/shared/e-boks-tilmelding.mapper.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/shared/e-boks-tilmelding.repository.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/shared/e-boks-tilmelding.service.ts","./libs/e-forsyning/common/src/lib/e-boks/e-boks-tilmelding/shared/e-boks-util.ts","./libs/e-forsyning/common/src/lib/e-boks/index.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/eforsyning-menu.service.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/eforsyning-sidenav-menu/eforsyning-sidenav-menu.component.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/eforsyning-sidenav-menu/eforsyning-sidenav-menu.component.html","./libs/e-forsyning/common/src/lib/eforsyning-menu/eforsyning-sidenav-menu/eforsyning-sidenav-menu.module.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/forsyningweb-sidenav-menu/forsyningweb-sidenav-menu.component.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/forsyningweb-sidenav-menu/forsyningweb-sidenav-menu.component.html","./libs/e-forsyning/common/src/lib/eforsyning-menu/forsyningweb-sidenav-menu/forsyningweb-sidenav-menu.module.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/index.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/observers/eforsyning-menu-for-sidebar.observer.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/observers/eforsyning-menuer.observer.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/observers/forsyning-web-menu-for-sidebar.observer.ts","./libs/e-forsyning/common/src/lib/eforsyning-menu/observers/umbraco-menu.observer.ts","./libs/e-forsyning/common/src/lib/ejendomsfaktor/ejendomsfaktor.form-builder.ts","./libs/e-forsyning/common/src/lib/ejendomsfaktor/ejendomsfaktor.module.ts","./libs/e-forsyning/common/src/lib/ejendomsfaktor/ejendomsfaktor/ejendomsfaktor.component.ts","./libs/e-forsyning/common/src/lib/ejendomsfaktor/ejendomsfaktor/ejendomsfaktor.component.html","./libs/e-forsyning/common/src/lib/error/eforsyning-error-handler.ts","./libs/e-forsyning/common/src/lib/error/index.ts","./libs/e-forsyning/common/src/lib/forbruger-oplysninger/aktuel-forbruger-oplysninger.observer.ts","./libs/e-forsyning/common/src/lib/forbruger-oplysninger/aktuel-forbruger-oplysninger.service.ts","./libs/e-forsyning/common/src/lib/forbruger-oplysninger/forbruger-oplysninger.repository.ts","./libs/e-forsyning/common/src/lib/forbruger-oplysninger/forbruger-oplysninger.service.ts","./libs/e-forsyning/common/src/lib/forbruger-oplysninger/index.ts","./libs/e-forsyning/common/src/lib/forbruger-oplysninger/model/forbruger-oplysninger.model.ts","./libs/e-forsyning/common/src/lib/forbruger-tilknytning/aktuel-brugers-forbruger-tilknytninger.observer.ts","./libs/e-forsyning/common/src/lib/forbruger-tilknytning/forbruger-tilknytning.repository.ts","./libs/e-forsyning/common/src/lib/forbruger-tilknytning/forbruger-tilknytning.service.ts","./libs/e-forsyning/common/src/lib/forbruger-tilknytning/index.ts","./libs/e-forsyning/common/src/lib/forbruger-tilknytning/model/forbruger-tilknytning.model.ts","./libs/e-forsyning/common/src/lib/forbruger-tilknytning/model/index.ts","./libs/e-forsyning/common/src/lib/forbruger/forbruger.repository.ts","./libs/e-forsyning/common/src/lib/forsyning-indstillinger/aktuel-forsyning-indstillinger.observer.ts","./libs/e-forsyning/common/src/lib/forsyning-indstillinger/forsyning-indstillinger.repository.ts","./libs/e-forsyning/common/src/lib/forsyning-indstillinger/forsyning-indstillinger.service.ts","./libs/e-forsyning/common/src/lib/forsyning-indstillinger/index.ts","./libs/e-forsyning/common/src/lib/forsyning-indstillinger/model/forsyning-indstillinger.model.ts","./libs/e-forsyning/common/src/lib/forsyning-paa-adresse/forsyning-paa-adresse.component.ts","./libs/e-forsyning/common/src/lib/forsyning-paa-adresse/forsyning-paa-adresse.component.html","./libs/e-forsyning/common/src/lib/forsyning-paa-adresse/forsyning-paa-adresse.module.ts","./libs/e-forsyning/common/src/lib/forsyning-paa-adresse/index.ts","./libs/e-forsyning/common/src/lib/forsyning-paa-adresse/model/forsyning-paa-adresse.model.ts","./libs/e-forsyning/common/src/lib/forsyning-paa-adresse/services/forsyning-paa-adresse.repository.ts","./libs/e-forsyning/common/src/lib/forsyning-paa-adresse/services/forsyning-paa-adresse.sandbox.ts","./libs/e-forsyning/common/src/lib/http/appserver-http-client-factory.service.ts","./libs/e-forsyning/common/src/lib/http/appserver-http-client.service.ts","./libs/e-forsyning/common/src/lib/http/bruger-http-client.service.ts","./libs/e-forsyning/common/src/lib/http/eforsyning-http.interceptor.ts","./libs/e-forsyning/common/src/lib/http/ekstern-forsyning-http-client.service.ts","./libs/e-forsyning/common/src/lib/http/index.ts","./libs/e-forsyning/common/src/lib/http/installation-http-client.service.ts","./libs/e-forsyning/common/src/lib/http/umbraco-http-client.service.ts","./libs/e-forsyning/common/src/lib/installation/aktuel-brugers-installationer.observer.ts","./libs/e-forsyning/common/src/lib/installation/aktuel-brugers-installationer.service.ts","./libs/e-forsyning/common/src/lib/installation/aktuel-installation-key.observer.ts","./libs/e-forsyning/common/src/lib/installation/aktuel-installation.observer.ts","./libs/e-forsyning/common/src/lib/installation/index.ts","./libs/e-forsyning/common/src/lib/installation/installation-liste/installation-liste.component.ts","./libs/e-forsyning/common/src/lib/installation/installation-liste/installation-liste.component.html","./libs/e-forsyning/common/src/lib/installation/installation-liste/installation-liste.module.ts","./libs/e-forsyning/common/src/lib/installation/installation.service.ts","./libs/e-forsyning/common/src/lib/installation/model/installation-key.model.ts","./libs/e-forsyning/common/src/lib/installation/model/installation.model.ts","./libs/e-forsyning/common/src/lib/installation/model/installationsoplysninger.model.ts","./libs/e-forsyning/common/src/lib/installation/vaelg-installation.service.ts","./libs/e-forsyning/common/src/lib/log/index.ts","./libs/e-forsyning/common/src/lib/log/log.model.ts","./libs/e-forsyning/common/src/lib/log/log.service.ts","./libs/e-forsyning/common/src/lib/mail/dff-mail.model.ts","./libs/e-forsyning/common/src/lib/mail/eforsyning-mail-builder.service.ts","./libs/e-forsyning/common/src/lib/mail/eforsyning-mail-sender.service.ts","./libs/e-forsyning/common/src/lib/mail/index.ts","./libs/e-forsyning/common/src/lib/mail/mail-helper.ts","./libs/e-forsyning/common/src/lib/router/index.ts","./libs/e-forsyning/common/src/lib/router/redirect.service.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/components/step-ejendsomfaktorer/step-ejendomsfaktorer.component.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/components/step-ejendsomfaktorer/step-ejendomsfaktorer.component.html","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/components/step-oplysninger/step-oplysninger.component.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/components/step-oplysninger/step-oplysninger.component.html","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/index.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/services/tilslutningsanmodning-mail.service.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/services/tilslutningsanmodning.form-builder.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/services/tilslutningsanmodning.mapper.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/services/tilslutningsanmodning.repository.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/services/tilslutningsanmodning.sandbox.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/tilslutningsanmodning.component.ts","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/tilslutningsanmodning.component.html","./libs/e-forsyning/common/src/lib/tilslutningsanmodning/tilslutningsanmodning.module.ts","./libs/e-forsyning/common/src/lib/umbraco-indstillinger/index.ts","./libs/e-forsyning/common/src/lib/umbraco-indstillinger/init-umbraco-indstillinger.ts","./libs/e-forsyning/common/src/lib/umbraco-indstillinger/model/e-forsyning-indstilling.model.ts","./libs/e-forsyning/common/src/lib/umbraco-indstillinger/model/forsyning-web-indstilling.model.ts","./libs/e-forsyning/common/src/lib/umbraco-indstillinger/model/umbraco-indstillinger.model.ts","./libs/e-forsyning/common/src/lib/umbraco-indstillinger/test/umbraco-indstillinger.factory.ts","./libs/e-forsyning/common/src/lib/umbraco-indstillinger/umbraco-indstillinger.observer.ts","./libs/e-forsyning/common/src/lib/umbraco-indstillinger/umbraco-indstillinger.repository.ts","./libs/e-forsyning/common/src/lib/util/eforsyning-url.service.ts","./libs/e-forsyning/common/src/lib/util/index.ts","./libs/e-forsyning/common/src/lib/util/observer-base.service.ts","./libs/e-forsyning/common/src/lib/util/observer-based-service.service.ts","./libs/e-forsyning/common/src/lib/util/rolle-body-class.service.ts","./libs/e-forsyning/common/src/lib/util/route-body-class.service.ts","./libs/e-forsyning/web-components/src/index.ts","./libs/e-forsyning/web-components/src/lib/dffedb-cookie-consent-overlay/dffedb-cookie-consent-overlay.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-cookie-consent-overlay/dffedb-cookie-consent-overlay.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-cookie-consent-overlay/dffedb-cookie-consent-overlay.module.ts","./libs/e-forsyning/web-components/src/lib/dffedb-cookie-consent-overlay/dffedb-cookie-consent-overlay.sandbox.ts","./libs/e-forsyning/web-components/src/lib/dffedb-cookie-consent/dffedb-cookie-consent.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-cookie-consent/dffedb-cookie-consent.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-cookie-consent/dffedb-cookie-consent.module.ts","./libs/e-forsyning/web-components/src/lib/dffedb-cookie-consent/dffedb-cookie-consent.sandbox.ts","./libs/e-forsyning/web-components/src/lib/dffedb-driftsstatus-knap/dffedb-driftsstatus-knap.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-driftsstatus-knap/dffedb-driftsstatus-knap.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-driftsstatus-knap/dffedb-driftsstatus-knap.module.ts","./libs/e-forsyning/web-components/src/lib/dffedb-e-boks-tilmeld/dffedb-e-boks-tilmeld.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-e-boks-tilmeld/dffedb-e-boks-tilmeld.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-e-boks-tilmeld/dffedb-e-boks-tilmeld.module.ts","./libs/e-forsyning/web-components/src/lib/dffedb-e-boks-tilmeld/dffedb-e-boks-tilmeld.service.ts","./libs/e-forsyning/web-components/src/lib/dffedb-fancybox/dffedb-fancybox.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-fancybox/dffedb-fancybox.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-fancybox/dffedb-fancybox.module.ts","./libs/e-forsyning/web-components/src/lib/dffedb-fancybox/dffedb-fancybox.sandbox.ts","./libs/e-forsyning/web-components/src/lib/dffedb-forsyning-paa-adresse/dffedb-forsyning-paa-adresse.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-forsyning-paa-adresse/dffedb-forsyning-paa-adresse.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-forsyning-paa-adresse/dffedb-forsyning-paa-adresse.module.ts","./libs/e-forsyning/web-components/src/lib/dffedb-iframe/dffedb-iframe.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-iframe/dffedb-iframe.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-iframe/dffedb-iframe.module.ts","./libs/e-forsyning/web-components/src/lib/dffedb-iframe/dffedb-iframe.sandbox.ts","./libs/e-forsyning/web-components/src/lib/dffedb-info-popup/dffedb-info-popup.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-info-popup/dffedb-info-popup.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-info-popup/dffedb-info-popup.module.ts","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/dffedb-prisberegner.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/dffedb-prisberegner.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/dffedb-prisberegner.module.ts","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/dffedb-prisberegner.sandbox.ts","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/model/prisberegner-varmekilder.model.ts","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/prisberegner-specifikation/prisberegner-specifikation.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/prisberegner-specifikation/prisberegner-specifikation.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/services/prisberegner-konfiguration.mapper.ts","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/services/prisberegner-view-model.mapper.ts","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/services/prisberegner.repository.ts","./libs/e-forsyning/web-components/src/lib/dffedb-prisberegner/services/prisberegner.service.ts","./libs/e-forsyning/web-components/src/lib/dffedb-tilslutningsanmodning/dffedb-tilslutningsanmodning.component.ts","./libs/e-forsyning/web-components/src/lib/dffedb-tilslutningsanmodning/dffedb-tilslutningsanmodning.component.html","./libs/e-forsyning/web-components/src/lib/dffedb-tilslutningsanmodning/dffedb-tilslutningsanmodning.module.ts","./libs/e-forsyning/web-components/src/lib/e-forsyning-logind-knap/e-forsyning-logind-knap.component.ts","./libs/e-forsyning/web-components/src/lib/e-forsyning-logind-knap/e-forsyning-logind-knap.component.html","./libs/e-forsyning/web-components/src/lib/e-forsyning-logind-knap/e-forsyning-logind-knap.module.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-cookie-list/dff-cookie-consent-cookie-list.component.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-cookie-list/dff-cookie-consent-cookie-list.component.html","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-cookie-list/dff-cookie-consent-cookie-list.module.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-dialog/dff-cookie-consent-dialog.component.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-dialog/dff-cookie-consent-dialog.component.html","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-dialog/dff-cookie-consent-dialog.module.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-dialog/dff-cookie-consent-dialog.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-dialog/index.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-overlay/dff-cookie-consent-overlay.component.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-overlay/dff-cookie-consent-overlay.component.html","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-overlay/dff-cookie-consent-overlay.module.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent-overlay/index.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent/dff-cookie-consent.model.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent/dff-cookie-consent.service.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-cookie-consent/index.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-dropdown-button/dff-dropdown-button.component.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-dropdown-button/dff-dropdown-button.component.html","./libs/e-forsyning/web-components/src/lib/shared/dff-dropdown-button/dff-dropdown-button.module.ts","./libs/e-forsyning/web-components/src/lib/shared/dff-dropdown-button/index.ts","./libs/e-forsyning/web-components/src/lib/shared/web-component-initializer.service.ts","./libs/e-forsyning/web-components/src/lib/util/util.ts","./libs/shared/forms/src/index.ts","./libs/shared/forms/src/lib/controls-of.ts","./libs/shared/forms/src/lib/dff-error-state-matcher.ts","./libs/shared/forms/src/lib/dff-form-control/dff-form-control.component.ts","./libs/shared/forms/src/lib/dff-form-control/dff-form-control.component.html","./libs/shared/forms/src/lib/dff-form-control/dff-form-control.module.ts","./libs/shared/forms/src/lib/dff-form-control/dff-form-control.ts","./libs/shared/forms/src/lib/dff-oprindelig-aktuel-vaerdi/dff-oprindelig-aktuel-vaerdi-form-group.ts","./libs/shared/forms/src/lib/dff-reactive-form-control-value-mapper.ts","./libs/shared/forms/src/lib/typed-forms.ts","./libs/shared/forms/src/lib/util.ts","./libs/shared/forms/src/lib/validators/dff-validators.ts","./libs/shared/forms/src/lib/validators/index.ts","./libs/shared/forms/src/lib/validators/validators.cprNummer.ts","./libs/shared/forms/src/lib/validators/validators.cvrNummer.ts","./libs/shared/forms/src/lib/validators/validators.date.ts","./libs/shared/forms/src/lib/validators/validators.decimals.ts","./libs/shared/forms/src/lib/validators/validators.email.ts","./libs/shared/forms/src/lib/validators/validators.emails.ts","./libs/shared/forms/src/lib/validators/validators.must-match.ts","./libs/shared/forms/src/lib/validators/validators.pNummer.ts","./libs/shared/forms/src/lib/validators/validators.telefonnummer.ts","./libs/shared/forms/src/lib/validators/validators.telefonnumre.ts","./libs/shared/router/src/index.ts","./libs/shared/router/src/lib/dff-current-route/dff-current-route.ts","./libs/shared/router/src/lib/dff-redirect-service/dff-redirect-service.ts","./libs/shared/router/src/lib/dff-route-changing/dff-route-changing.observer.ts","./libs/shared/router/src/lib/dff-route-params/dff-route-params.ts","./libs/shared/router/src/lib/previous-route-service/previous-route.service.ts","./libs/shared/rxjs/src/index.ts","./libs/shared/rxjs/src/lib/brug-pagineret-ressource.ts","./libs/shared/rxjs/src/lib/dff-observer-state.model.ts","./libs/shared/rxjs/src/lib/execute-with-progress.ts","./libs/shared/rxjs/src/lib/processing-subject.ts","./libs/shared/rxjs/src/lib/rethrow-dff-error.operator.ts","./libs/shared/rxjs/src/lib/subsink.ts","./libs/shared/ui/src/index.ts","./libs/shared/ui/src/lib/accordion-status-indicator/accordion-status-indicator.component.ts","./libs/shared/ui/src/lib/accordion-status-indicator/accordion-status-indicator.component.html","./libs/shared/ui/src/lib/accordion-status-indicator/accordion-status-indicator.module.ts","./libs/shared/ui/src/lib/accordion-status-indicator/index.ts","./libs/shared/ui/src/lib/dff-button/dff-button-panel/dff-button-panel.component.ts","./libs/shared/ui/src/lib/dff-button/dff-button-panel/dff-button-panel.component.html","./libs/shared/ui/src/lib/dff-button/dff-button.module.ts","./libs/shared/ui/src/lib/dff-button/dff-spinner-button/dff-spinner-button.component.ts","./libs/shared/ui/src/lib/dff-button/dff-spinner-button/dff-spinner-button.component.html","./libs/shared/ui/src/lib/dff-button/index.ts","./libs/shared/ui/src/lib/dff-date-adapter/dff-date-adapter.ts","./libs/shared/ui/src/lib/dff-date-adapter/dff-date.module.ts","./libs/shared/ui/src/lib/dff-date-adapter/index.ts","./libs/shared/ui/src/lib/dff-date-field/dff-date-field.component.ts","./libs/shared/ui/src/lib/dff-date-field/dff-date-field.component.html","./libs/shared/ui/src/lib/dff-date-field/dff-date-field.module.ts","./libs/shared/ui/src/lib/dff-date-field/dff-fate-field.service.ts","./libs/shared/ui/src/lib/dff-date-field/index.ts","./libs/shared/ui/src/lib/dff-email-field/dff-email-field.component.ts","./libs/shared/ui/src/lib/dff-email-field/dff-email-field.component.html","./libs/shared/ui/src/lib/dff-email-field/dff-email-field.module.ts","./libs/shared/ui/src/lib/dff-email-field/index.ts","./libs/shared/ui/src/lib/dff-error-panel/dff-error-panel.component.ts","./libs/shared/ui/src/lib/dff-error-panel/dff-error-panel.component.html","./libs/shared/ui/src/lib/dff-error-panel/dff-error-panel.module.ts","./libs/shared/ui/src/lib/dff-error-panel/index.ts","./libs/shared/ui/src/lib/dff-info-dialog/dff-info-dialog.component.ts","./libs/shared/ui/src/lib/dff-info-dialog/dff-info-dialog.component.html","./libs/shared/ui/src/lib/dff-info-dialog/dff-info-dialog.module.ts","./libs/shared/ui/src/lib/dff-info-dialog/dff-info-dialog.ts","./libs/shared/ui/src/lib/dff-info-dialog/index.ts","./libs/shared/ui/src/lib/dff-info-popup/dff-info-popup.component.ts","./libs/shared/ui/src/lib/dff-info-popup/dff-info-popup.component.html","./libs/shared/ui/src/lib/dff-info-popup/dff-info-popup.module.ts","./libs/shared/ui/src/lib/dff-info-popup/index.ts","./libs/shared/ui/src/lib/dff-info/dff-info.component.ts","./libs/shared/ui/src/lib/dff-info/dff-info.component.html","./libs/shared/ui/src/lib/dff-info/dff-info.module.ts","./libs/shared/ui/src/lib/dff-info/index.ts","./libs/shared/ui/src/lib/dff-kvittering/dff-kvittering.component.ts","./libs/shared/ui/src/lib/dff-kvittering/dff-kvittering.component.html","./libs/shared/ui/src/lib/dff-kvittering/dff-kvittering.module.ts","./libs/shared/ui/src/lib/dff-kvittering/dff-mail-kvittering.util.ts","./libs/shared/ui/src/lib/dff-kvittering/index.ts","./libs/shared/ui/src/lib/dff-mat-slider-wrapper/dff-mat-slider-wrapper.component.ts","./libs/shared/ui/src/lib/dff-mat-slider-wrapper/dff-mat-slider-wrapper.component.html","./libs/shared/ui/src/lib/dff-mat-slider-wrapper/dff-mat-slider-wrapper.module.ts","./libs/shared/ui/src/lib/dff-mat-slider-wrapper/index.ts","./libs/shared/ui/src/lib/dff-side/dff-side-tekst.component.ts","./libs/shared/ui/src/lib/dff-side/dff-side-titel.component.ts","./libs/shared/ui/src/lib/dff-side/dff-side.component.ts","./libs/shared/ui/src/lib/dff-side/dff-side.module.ts","./libs/shared/ui/src/lib/dff-side/index.ts","./libs/shared/ui/src/lib/dff-side/model/dff-side-tekst.model.ts","./libs/shared/ui/src/lib/dff-side/model/dff-side-titel.model.ts","./libs/shared/ui/src/lib/dff-simpel-dialog/dff-simpel-dialog.component.ts","./libs/shared/ui/src/lib/dff-simpel-dialog/dff-simpel-dialog.component.html","./libs/shared/ui/src/lib/dff-simpel-dialog/dff-simpel-dialog.module.ts","./libs/shared/ui/src/lib/dff-simpel-dialog/dff-simpel-dialog.ts","./libs/shared/ui/src/lib/dff-simpel-dialog/index.ts","./libs/shared/ui/src/lib/dff-upload-progress-overlay/dff-upload-progress-overlay.component.ts","./libs/shared/ui/src/lib/dff-upload-progress-overlay/dff-upload-progress-overlay.component.html","./libs/shared/ui/src/lib/dff-upload-progress-overlay/dff-upload-progress-overlay.module.ts","./libs/shared/ui/src/lib/dff-upload-progress-overlay/index.ts","./libs/shared/ui/src/lib/empty-page-badge/empty-page-badge.component.ts","./libs/shared/ui/src/lib/empty-page-badge/empty-page-badge.component.html","./libs/shared/ui/src/lib/empty-page-badge/empty-page-badge.module.ts","./libs/shared/ui/src/lib/empty-page-badge/index.ts","./libs/shared/ui/src/lib/error/error.component.ts","./libs/shared/ui/src/lib/error/error.component.html","./libs/shared/ui/src/lib/error/error.module.ts","./libs/shared/ui/src/lib/error/index.ts","./libs/shared/ui/src/lib/image-upload-button/image-upload-button.component.ts","./libs/shared/ui/src/lib/image-upload-button/image-upload-button.module.ts","./libs/shared/ui/src/lib/image-upload-button/index.ts","./libs/shared/ui/src/lib/menu/dff-sidenav-menu/dff-sidenav-menu.component.ts","./libs/shared/ui/src/lib/menu/dff-sidenav-menu/dff-sidenav-menu.component.html","./libs/shared/ui/src/lib/menu/index.ts","./libs/shared/ui/src/lib/menu/menu-item.util.ts","./libs/shared/ui/src/lib/menu/menu.module.ts","./libs/shared/ui/src/lib/menu/model/menu-item.model.ts","./libs/shared/ui/src/lib/page-error/index.ts","./libs/shared/ui/src/lib/page-error/page-error.component.ts","./libs/shared/ui/src/lib/page-error/page-error.component.html","./libs/shared/ui/src/lib/page-error/page-error.module.ts","./libs/shared/ui/src/lib/panel/index.ts","./libs/shared/ui/src/lib/panel/panel.component.ts","./libs/shared/ui/src/lib/panel/panel.component.html","./libs/shared/ui/src/lib/panel/panel.module.ts","./libs/shared/ui/src/lib/pipes/index.ts","./libs/shared/ui/src/lib/pipes/trust-html.module.ts","./libs/shared/ui/src/lib/pipes/trust-html.pipe.ts","./libs/shared/ui/src/lib/reveal-on-focus/index.ts","./libs/shared/ui/src/lib/reveal-on-focus/reveal-on-focus.directive.ts","./libs/shared/ui/src/lib/reveal-on-focus/reveal-on-focus.module.ts","./libs/shared/ui/src/lib/spinner/index.ts","./libs/shared/ui/src/lib/spinner/spinner.component.ts","./libs/shared/ui/src/lib/spinner/spinner.module.ts","./libs/shared/ui/src/lib/toast/index.ts","./libs/shared/ui/src/lib/toast/toast.service.ts","./libs/shared/ui/src/lib/util/canvas-zoom.service.ts","./libs/shared/ui/src/lib/util/dom-util.ts","./libs/shared/ui/src/lib/util/image-file.util.ts","./libs/shared/ui/src/lib/util/index.ts","./libs/shared/ui/src/lib/util/scroll-into-view.util.ts","./libs/shared/util/src/index.ts","./libs/shared/util/src/lib/body-class.service.ts","./libs/shared/util/src/lib/correlation-id/correlation-id.service.ts","./libs/shared/util/src/lib/correlation-id/index.ts","./libs/shared/util/src/lib/custom-elements/define-custom-elements.ts","./libs/shared/util/src/lib/custom-elements/index.ts","./libs/shared/util/src/lib/date-util.ts","./libs/shared/util/src/lib/db-mapper.ts","./libs/shared/util/src/lib/device/device.service.ts","./libs/shared/util/src/lib/device/index.ts","./libs/shared/util/src/lib/dff-grouped-content/dff-grouped-content.model.ts","./libs/shared/util/src/lib/dff-grouped-content/index.ts","./libs/shared/util/src/lib/dff-oprindelig-aktuel-vaerdi.ts","./libs/shared/util/src/lib/entitet-status.ts","./libs/shared/util/src/lib/environment/environment.token.ts","./libs/shared/util/src/lib/environment/index.ts","./libs/shared/util/src/lib/error/dff-error.ts","./libs/shared/util/src/lib/error/dff-stack-trace.ts","./libs/shared/util/src/lib/error/error-util.ts","./libs/shared/util/src/lib/error/index.ts","./libs/shared/util/src/lib/key-value-pair.ts","./libs/shared/util/src/lib/logger/index.ts","./libs/shared/util/src/lib/logger/logentries-environment.model.ts","./libs/shared/util/src/lib/logger/logentries-logger.service.ts","./libs/shared/util/src/lib/logger/logger.interface.ts","./libs/shared/util/src/lib/logger/logger.token.ts","./libs/shared/util/src/lib/number-util.ts","./libs/shared/util/src/lib/pattern.ts","./libs/shared/util/src/lib/session-id/index.ts","./libs/shared/util/src/lib/session-id/session-id.service.ts","./libs/shared/util/src/lib/storage/cookie-storage.ts","./libs/shared/util/src/lib/storage/index.ts","./libs/shared/util/src/lib/storage/local-storage.ts","./libs/shared/util/src/lib/storage/observable-storage-base.ts","./libs/shared/util/src/lib/storage/session-storage.ts","./libs/shared/util/src/lib/string-util.ts","./libs/shared/util/src/lib/svg-icon-registry.service.ts","./libs/shared/util/src/lib/unik-id/index.ts","./libs/shared/util/src/lib/unik-id/unik-id.util.ts","./libs/shared/util/src/lib/unsubscribe/subsink.ts","./libs/shared/util/src/lib/unsubscribe/unsubscribe-on-destroy.ts","./libs/shared/util/src/lib/url-util.ts","./libs/shared/util/src/lib/version-util.ts"],"sourcesContent":["import { DOCUMENT } from \"@angular/common\";\r\nimport { AfterViewInit, Component, ElementRef, Inject, ViewChild } from \"@angular/core\";\r\n\r\nimport { AppShellComponent } from \"@e-forsyning/common/app-shell\";\r\n\r\n@Component({\r\n selector: \"app-root\",\r\n templateUrl: \"./app.component.html\"\r\n})\r\nexport class AppComponent implements AfterViewInit {\r\n @ViewChild(AppShellComponent, { read: ElementRef }) public appShell: ElementRef;\r\n @ViewChild(\"content\", { read: ElementRef }) public contentContainer: ElementRef;\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document) {}\r\n\r\n public ngAfterViewInit(): void {\r\n this.flytContentTilAppShell();\r\n }\r\n\r\n private flytContentTilAppShell(): void {\r\n // Hent content, som er renderet via ASP.NET/C#, og flyt den ind i ,\r\n // så vi kan benytte Material Design Sidenav til mobil menu.\r\n const content = this.document.querySelector(\"#content\");\r\n if (content) {\r\n this.contentContainer.nativeElement.appendChild(content);\r\n }\r\n }\r\n}\r\n","\r\n
\r\n
\r\n","import { registerLocaleData } from \"@angular/common\";\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from \"@angular/common/http\";\r\nimport localeDa from \"@angular/common/locales/da\";\r\nimport { APP_INITIALIZER, ErrorHandler, Injector, LOCALE_ID, NgModule } from \"@angular/core\";\r\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\n\r\nimport { CookieService } from \"ngx-cookie-service\";\r\n\r\nimport { DffRedirectService } from \"@dffedb/router\";\r\nimport { ENV, LogentriesLoggerService, LOGGER } from \"@dffedb/util\";\r\nimport { AppShellModule } from \"@e-forsyning/common/app-shell\";\r\nimport { EforsyningErrorHandler } from \"@e-forsyning/common/error\";\r\nimport { EforsyningHttpInterceptor } from \"@e-forsyning/common/http\";\r\nimport { initUmbracoIndstillinger } from \"@e-forsyning/common/umbraco-indstillinger\";\r\nimport {\r\n DffedbCookieConsentModule,\r\n DffedbCookieConsentOverlayModule,\r\n DffedbDriftsstatusKnapModule,\r\n DffedbEBoksTilmeldModule,\r\n DffedbFancyboxModule,\r\n DffedbForsyningPaaAdresseModule,\r\n DffedbIframeModule,\r\n DffedbInfoPopupModule,\r\n DffedbPrisberegnerModule,\r\n DffedbTilslutningsanmodningModule,\r\n EForsyningLogindKnapModule\r\n} from \"@e-forsyning/web-components\";\r\n\r\nimport { environment } from \"../environments/environment\";\r\nimport { AppComponent } from \"./app.component\";\r\n\r\nregisterLocaleData(localeDa);\r\n\r\n@NgModule({\r\n imports: [\r\n BrowserAnimationsModule,\r\n BrowserModule,\r\n HttpClientModule,\r\n MatSnackBarModule,\r\n AppShellModule,\r\n EForsyningLogindKnapModule,\r\n DffedbCookieConsentModule,\r\n DffedbCookieConsentOverlayModule,\r\n DffedbDriftsstatusKnapModule,\r\n DffedbEBoksTilmeldModule,\r\n DffedbFancyboxModule,\r\n DffedbIframeModule,\r\n DffedbInfoPopupModule,\r\n DffedbPrisberegnerModule,\r\n DffedbTilslutningsanmodningModule,\r\n DffedbForsyningPaaAdresseModule // Registrerer WebComponent \r\n ],\r\n declarations: [AppComponent],\r\n providers: [\r\n // CookieService skal 'provides' for at undgå NullInjectorError i produktionsbuild.\r\n CookieService,\r\n {\r\n provide: LOCALE_ID,\r\n useValue: \"da\"\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: EforsyningHttpInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: ENV,\r\n useValue: environment\r\n },\r\n {\r\n provide: LOGGER,\r\n useClass: LogentriesLoggerService\r\n },\r\n {\r\n provide: ErrorHandler,\r\n useClass: EforsyningErrorHandler\r\n },\r\n {\r\n provide: DffRedirectService,\r\n useValue: null // Bruges af menuen til at tjekke om vi kan Angular-route eller skal bruge location.href\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: appInit,\r\n deps: [Injector],\r\n multi: true\r\n }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {}\r\n\r\nexport function appInit(injector: Injector): () => void {\r\n return () => {\r\n initUmbracoIndstillinger(injector, (window as any).initUmbracoIndstillinger);\r\n };\r\n}\r\n","import { LogentriesEnvironment } from \"@dffedb/util\";\r\nimport { EforsyningEnvironment } from \"@e-forsyning/common/environment\";\r\n\r\nexport const environment: EforsyningEnvironment & LogentriesEnvironment = {\r\n logentries: {\r\n application: \"Forsyning|WEB\",\r\n token: \"6f65d82b-e060-4648-82a3-06481aca2c38\"\r\n },\r\n production: false\r\n};\r\n","import { enableProdMode } from \"@angular/core\";\r\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\r\n\r\nimport { AppModule } from \"./app/app.module\";\r\nimport { environment } from \"./environments/environment\";\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Adresse } from \"./model/adresse.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AdresseFormatter {\r\n public formatter(adresse: Partial): string {\r\n if (!adresse) {\r\n return \"\";\r\n }\r\n\r\n const husnr = adresse.husnr === 0 ? \"\" : \"\" + adresse.husnr;\r\n const vej = `${adresse.vejnavn} ${husnr} ${adresse.litra} ${adresse.litra2}`.trim();\r\n\r\n const postnr = adresse.postnr === \"0\" ? \"\" : adresse.postnr;\r\n const postnrBy = `${postnr} ${adresse.bynavn}`.trim();\r\n\r\n const result = (\r\n adresse.adresselinie1 +\r\n \"
\" +\r\n adresse.adresselinie2 +\r\n \"
\" +\r\n adresse.adresselinie3 +\r\n \"
\" +\r\n adresse.adresselinie4 +\r\n \"
\" +\r\n vej +\r\n \"
\" +\r\n postnrBy\r\n ).replace(/
(
)+/g, \"
\");\r\n\r\n return result;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { dbToInt, dbToString } from \"@dffedb/util\";\r\n\r\nimport { Adresse } from \"./model/adresse.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AdresseMapper {\r\n public dtoToAdresse(data: any): any {\r\n const result: Adresse = {\r\n adresselinie1: dbToString(data.adresselinie1),\r\n adresselinie2: dbToString(data.adresselinie2),\r\n adresselinie3: dbToString(data.adresselinie3),\r\n adresselinie4: dbToString(data.adresselinie4),\r\n adressenr: dbToInt(data.adressenr),\r\n bynavn: dbToString(data.bynavn),\r\n husnr: dbToInt(data.husnr),\r\n litra: dbToString(data.litra),\r\n litra2: dbToString(data.litra2),\r\n postnr: dbToString(data.postnr),\r\n vejnavn: dbToString(data.vejnavn),\r\n vejnr: dbToInt(data.vejnr)\r\n };\r\n return result;\r\n }\r\n}\r\n","export * from \"./model/adresse.model\";\r\nexport * from \"./adresse.formatter\";\r\nexport * from \"./adresse.mapper\";\r\n","export interface Adresse {\r\n adresselinie1: string;\r\n adresselinie2: string;\r\n adresselinie3: string;\r\n adresselinie4: string;\r\n adressenr: number;\r\n bynavn: string;\r\n husnr: number;\r\n litra: string;\r\n litra2: string;\r\n postnr: string;\r\n vejnavn: string;\r\n vejnr: number;\r\n}\r\n","import { DOCUMENT } from \"@angular/common\";\r\nimport { Inject, Injectable, NgZone } from \"@angular/core\";\r\nimport { MatSidenavContent } from \"@angular/material/sidenav\";\r\n\r\nimport { fromEvent, Observable, Subject, Subscription } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nexport interface AppShellScrollEvent {\r\n scrollTop: number;\r\n clientHeight: number;\r\n scrollBottom: number;\r\n scrollHeight: number;\r\n}\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AppShellScrollService {\r\n private subscription: Subscription;\r\n private readonly subject = new Subject();\r\n\r\n constructor(@Inject(DOCUMENT) private readonly document: Document, private readonly zone: NgZone) {\r\n this.init(null);\r\n }\r\n\r\n public select(): Observable {\r\n return this.subject.asObservable();\r\n }\r\n\r\n public init(matSidenavContent: MatSidenavContent): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = null;\r\n }\r\n if (matSidenavContent) {\r\n this.subscription = matSidenavContent\r\n .elementScrolled()\r\n .pipe(\r\n map(() => matSidenavContent.getElementRef().nativeElement),\r\n map(element => ({\r\n scrollTop: element.scrollTop,\r\n clientHeight: element.clientHeight,\r\n scrollBottom: element.clientHeight + element.scrollTop,\r\n scrollHeight: element.scrollHeight\r\n }))\r\n )\r\n .subscribe(e => this.zone.run(() => this.subject.next(e)));\r\n } else {\r\n this.subscription = fromEvent(this.document, \"scroll\")\r\n .pipe(\r\n map(() => ({\r\n scrollTop: window.scrollY,\r\n clientHeight: window.innerHeight,\r\n scrollBottom: window.innerHeight + window.scrollY,\r\n scrollHeight: this.document.documentElement.scrollHeight\r\n }))\r\n )\r\n .subscribe(e => this.subject.next(e));\r\n }\r\n }\r\n}\r\n","import { BreakpointObserver } from \"@angular/cdk/layout\";\r\nimport { DOCUMENT } from \"@angular/common\";\r\nimport { AfterViewInit, Component, ElementRef, Inject, QueryList, ViewChild, ViewChildren } from \"@angular/core\";\r\nimport { MatSidenavContent } from \"@angular/material/sidenav\";\r\n\r\nimport { combineLatest, Observable, Subscription, timer } from \"rxjs\";\r\nimport { distinctUntilChanged, map } from \"rxjs/operators\";\r\n\r\nimport { AktuelBrugerObserver } from \"../bruger\";\r\nimport { UmbracoIndstillinger, UmbracoIndstillingerObserver } from \"../umbraco-indstillinger\";\r\nimport { AppShellScrollService } from \"./app-shell-scroll.service\";\r\nimport { AppShellSettings } from \"./app-shell-settings.model\";\r\n\r\n@Component({\r\n selector: \"app-shell\",\r\n templateUrl: \"./app-shell.component.html\",\r\n styleUrls: [\"./app-shell.component.scss\"]\r\n})\r\nexport class AppShellComponent implements AfterViewInit {\r\n public settings$: Observable;\r\n public indstillinger$: Observable;\r\n public navbarMobileHeight$ = new Observable();\r\n public eforsyningIcon$ = this.aktuelBrugerObserver.valueChanges.pipe(map((b) => (b && \"lock-open\") || \"lock\"));\r\n public scrollSubscription: Subscription;\r\n\r\n public scrollPositionTop = true;\r\n\r\n @ViewChild(MatSidenavContent)\r\n public set setMatSidenavContent(value: MatSidenavContent) {\r\n this.scrollService.init(value);\r\n\r\n if (this.scrollSubscription) {\r\n this.scrollSubscription.unsubscribe();\r\n }\r\n if (!value) return;\r\n this.scrollSubscription = value.elementScrolled().subscribe(() => {\r\n const isAtTop = value.measureScrollOffset(\"top\") < 120;\r\n this.scrollPositionTop = isAtTop;\r\n });\r\n }\r\n\r\n @ViewChild(\"navbarMobile\")\r\n public navbarMobile: ElementRef;\r\n\r\n constructor(\r\n breakpointObserver: BreakpointObserver,\r\n @Inject(DOCUMENT) private document: Document,\r\n indstillingerObserver: UmbracoIndstillingerObserver,\r\n private readonly aktuelBrugerObserver: AktuelBrugerObserver,\r\n private readonly scrollService: AppShellScrollService\r\n ) {\r\n this.indstillinger$ = indstillingerObserver.valueChanges;\r\n const breakpointChange$ = breakpointObserver.observe([\"(min-width: 768px)\"]);\r\n this.settings$ = combineLatest([this.indstillinger$, breakpointChange$]).pipe(\r\n map(([indstillinger, state]) => ({\r\n isDesktop: state.matches,\r\n isMobile: !state.matches,\r\n visDriftsstatus: indstillinger.visDriftsstatus,\r\n driftsstatusForstyrrelserTekst: indstillinger.driftsstatusForstyrrelserTekst,\r\n driftsstatusIngenForstyrrelserTekst: indstillinger.driftsstatusIngenForstyrrelserTekst\r\n }))\r\n );\r\n }\r\n\r\n public toggleAriaExpanded(id: HTMLElement, menuType: string) {\r\n id.attributes.getNamedItem(\"aria-expanded\").value = id.attributes.getNamedItem(\"aria-expanded\").value === \"true\" ? \"false\" : \"true\";\r\n id.attributes.getNamedItem(\"aria-label\").value = id.attributes.getNamedItem(\"aria-expanded\").value === \"true\" ? \"Luk \" + menuType : \"Åben \" + menuType;\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n // Ville gerne sætte højden i html til [style.top.px]=\"navbarMobile.offsetHeight\"\r\n // Det giver imidlertid fejlen: ExpressionChangedAfterItHasBeenCheckedError\r\n this.navbarMobileHeight$ = timer(0, 100).pipe(\r\n map(() => this.navbarMobile.nativeElement.offsetHeight),\r\n distinctUntilChanged()\r\n );\r\n }\r\n}\r\n","@if (settings$ | async; as settings) {\r\n @if (indstillinger$ | async; as indstillinger) {\r\n \r\n \r\n @if (settings.isDesktop) {\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n }\r\n \r\n @if (settings.isMobile) {\r\n \r\n
\r\n \r\n @if (indstillinger.eforsyninger?.length) {\r\n \r\n \r\n @if ((eforsyningIcon$ | async) === \"lock-open\") {\r\n E|Forsyning\r\n }\r\n \r\n }\r\n \r\n @if (indstillinger.logoUrl) {\r\n \r\n }\r\n @if (!indstillinger.logoUrl) {\r\n {{ indstillinger.firmaNavn }}\r\n }\r\n \r\n @if (indstillinger?.forsyningWeb.nodeId) {\r\n \r\n \r\n Forsyning|Web\r\n \r\n }\r\n
\r\n \r\n \r\n \r\n @if (settings.visDriftsstatus) {\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatSidenavModule } from \"@angular/material/sidenav\";\r\n\r\nimport {\r\n mdiAccountCircleOutline,\r\n mdiBellAlertOutline,\r\n mdiCash100,\r\n mdiChartBar,\r\n mdiCheckCircleOutline,\r\n mdiClipboardTextOutline,\r\n mdiCounter,\r\n mdiDomain,\r\n mdiFileDocumentEditOutline,\r\n mdiFileDocumentOutline,\r\n mdiLockOpenVariantOutline,\r\n mdiLockOutline,\r\n mdiLogin,\r\n mdiLogout,\r\n mdiMenu,\r\n mdiMessageTextOutline,\r\n mdiPhoneOutline,\r\n mdiScaleBalance,\r\n mdiTrainCar\r\n} from \"@mdi/js\";\r\n\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\nimport { DffedbDriftsstatusKnapModule } from \"@e-forsyning/web-components\";\r\n\r\nimport { EforsyningSidenavMenuModule, ForsyningwebSidenavMenuModule } from \"../eforsyning-menu\";\r\nimport { AppShellComponent } from \"./app-shell.component\";\r\n\r\nconst menuIconForsyningWeb =\r\n \"M40 5.16667H6.3912V0L40 0V5.16667ZM40 18.0833H21.6812V12.9167H40V18.0833ZM40 31H21.6812V25.8333H40V31ZM0 0L0 31H18.6712V15.7701L11.7427 20.1629L11.6335 15.6343L4.67436 20.286L4.31177 0.0657728\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatIconModule, MatSidenavModule, EforsyningSidenavMenuModule, ForsyningwebSidenavMenuModule, DffedbDriftsstatusKnapModule],\r\n declarations: [AppShellComponent],\r\n exports: [AppShellComponent]\r\n})\r\nexport class AppShellModule {\r\n constructor(svgIconRegistry: SvgIconRegistry) {\r\n // Ikoner findes på: https://materialdesignicons.com/\r\n\r\n svgIconRegistry.registerIcon(mdiMenu, \"menu\");\r\n\r\n svgIconRegistry.registerIcon(mdiCheckCircleOutline, \"fakturagodkendelse\", \"check-circle-outline\", \"menu-fakturagodkendelse\");\r\n svgIconRegistry.registerIcon(mdiClipboardTextOutline, \"opgaver\", \"menu-opgaver\");\r\n svgIconRegistry.registerIcon(mdiAccountCircleOutline, \"mine-oplysninger\", \"forbruger\", \"menu-forbruger\", \"menu-mineoplysninger\");\r\n svgIconRegistry.registerIcon(mdiCash100, \"beregnet-varmeregnskab\", \"menu-calculatedvarmeregnskab\");\r\n svgIconRegistry.registerIcon(mdiLogout, \"menu-logout\");\r\n svgIconRegistry.registerIcon(mdiLogin, \"menu-login\");\r\n svgIconRegistry.registerIcon(mdiDomain, \"installationer\", \"menu-installationer\");\r\n svgIconRegistry.registerIcon(mdiFileDocumentEditOutline, \"noter\", \"menu-noter\");\r\n svgIconRegistry.registerIcon(mdiPhoneOutline, \"kontakt\", \"menu-kontakt\");\r\n svgIconRegistry.registerIcon(mdiChartBar, \"mit-forbrug\", \"menu-mitforbrug\");\r\n svgIconRegistry.registerIcon(mdiFileDocumentOutline, \"mine-dokumenter\", \"menu-minedokumenter\");\r\n svgIconRegistry.registerIcon(mdiBellAlertOutline, \"forbrugsoverblik\", \"menu-beskeder\");\r\n svgIconRegistry.registerIcon(mdiMessageTextOutline, \"sms-service\", \"menu-smsservice\");\r\n svgIconRegistry.registerIcon(mdiTrainCar, \"meld-flytning\", \"menu-meldflytning\");\r\n svgIconRegistry.registerIcon(mdiScaleBalance, \"sammenlign-forbrug\", \"menu-sammenlignforbrug\");\r\n svgIconRegistry.registerIcon(mdiCounter, \"indtast-aflaesninger\", \"menu-indtastaflaesninger\");\r\n svgIconRegistry.registerIcon2(menuIconForsyningWeb, 40, 31, \"menu-forsyning-web\");\r\n }\r\n}\r\n","export * from \"./app-shell-scroll.service\";\r\nexport * from \"./app-shell.component\";\r\nexport * from \"./app-shell.module\";\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from \"@angular/router\";\r\n\r\nimport { combineLatest, Observable, of } from \"rxjs\";\r\nimport { catchError, first, map, mapTo, switchMap } from \"rxjs/operators\";\r\n\r\nimport { getErrorMessage } from \"@dffedb/util\";\r\n\r\nimport { AuthenticationService } from \"../auth/authentication.service\";\r\nimport { BrugerRepository } from \"../bruger/bruger.repository\";\r\nimport { AppserverInstallationCredentialsRepository } from \"../credentials\";\r\nimport { UmbracoIndstillingerObserver } from \"../umbraco-indstillinger\";\r\nimport { LoginService } from \"./login.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AuthGuard implements CanActivate {\r\n constructor(\r\n private readonly router: Router,\r\n private readonly brugerRepository: BrugerRepository,\r\n private readonly loginService: LoginService,\r\n private readonly installationCredentialsObserver: AppserverInstallationCredentialsRepository,\r\n private readonly umbracoIndstillingerObserver: UmbracoIndstillingerObserver,\r\n private readonly authenticationService: AuthenticationService\r\n ) {}\r\n\r\n public canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n if (this.authenticationService.isAuthenticationTimeout()) {\r\n //console.log(\"timeout i AuthGuard:\");\r\n this.authenticationService.resetAuthenticationTimeout();\r\n return this.erAktuelleEforsyningAuthenticated().pipe(\r\n first(),\r\n //switchMap((minpara) =>(of(this.authenticationService.isAuthenticationTimeout()) )),\r\n switchMap((erAktuelleEforsyningAuthenticated) =>\r\n erAktuelleEforsyningAuthenticated ? this.erBrugerLoggetInd() : of(false)\r\n ),\r\n switchMap((authenticated) => (authenticated ? of(authenticated) : this.loginMedGemteCredentials())),\r\n map((authenticated) => authenticated || this.router.parseUrl(`login${state.url}`))\r\n );\r\n } else {\r\n //console.log(\"Ingen timeout kør bare:\");\r\n return of(true);\r\n }\r\n }\r\n\r\n /**\r\n * Undersøger om den aktuelle E|Forsyning er den samme, som vi har gemt credentials for.\r\n * Hvis vi har flere E|Forsyninger på samme domæne, vil de kunne se hinandens credentials, da de gemmes én gang pr. domæne.\r\n */\r\n private erAktuelleEforsyningAuthenticated(): Observable {\r\n const authenticatedEforsyningNodeId$ = this.installationCredentialsObserver.valueChanges.pipe(map((c) => c.forsyningNodeId));\r\n const aktuelEforsyningNodeId$ = this.umbracoIndstillingerObserver.valueChanges.pipe(map((i) => i.aktuelEforsyningNodeId));\r\n return combineLatest([authenticatedEforsyningNodeId$, aktuelEforsyningNodeId$]).pipe(\r\n map(([authenticatedEforsyningNodeId, aktuelEforsyningNodeId]) => authenticatedEforsyningNodeId === aktuelEforsyningNodeId)\r\n );\r\n }\r\n\r\n /**\r\n * Undersøger om vi har valide credentials for den aktuelle bruger.\r\n * Hvis der er gået noget tid uden aktivitet, kan credentials være timet ud.\r\n */\r\n private erBrugerLoggetInd(): Observable {\r\n // Vi bruger repository direkte for at kalde undgå cache, da vi ønsker at tjekke om serveren stadig kender os.\r\n return this.brugerRepository.hentAktuelleBruger().pipe(\r\n mapTo(true),\r\n catchError((error) => {\r\n console.warn(\"canActivate: \" + getErrorMessage(error));\r\n return of(false);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Logger ind med de credentials man har gemt via \"Husk mig\"-checkboks i loginskærmbilledet.\r\n */\r\n private loginMedGemteCredentials(): Observable {\r\n return this.loginService.loginMedGemteCredentials().pipe(\r\n map((result) => result.success),\r\n catchError(() => of(false))\r\n );\r\n }\r\n}\r\n","export class AuthenticationResult {\r\n constructor(public readonly success: boolean, public readonly cryptId: string) {}\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport MD5 from \"md5-es\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { AuthenticationResult } from \"./authentication-result.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AuthenticationService {\r\n private authTimer: number;\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n public authenticate(brugernavn: string, hashedKodeord: string, forsyningId: string): Observable {\r\n return this.hentAppServerUrl(forsyningId).pipe(\r\n switchMap((appServerUrl) =>\r\n this.getSecurityToken(appServerUrl, brugernavn).pipe(\r\n map((token) => this.createCryptId(hashedKodeord, token)),\r\n map((cryptId) => ({ cryptId, url: this.getAuthenticationUrl(brugernavn, cryptId) })),\r\n switchMap((result: { cryptId: string; url: string }) =>\r\n this.httpAuthenticate(appServerUrl + result.url, result.cryptId)\r\n ),\r\n map((result: { success: boolean; cryptId: string }) => {\r\n this.resetAuthenticationTimeout();\r\n return new AuthenticationResult(result.success, result.success ? result.cryptId : \"\");\r\n })\r\n )\r\n )\r\n );\r\n }\r\n\r\n public isAuthenticationTimeout(): boolean {\r\n if (!this.authTimer) {\r\n return true;\r\n }\r\n const timeout = Date.now() > this.authTimer;\r\n if (!timeout) {\r\n this.resetAuthenticationTimeout();\r\n }\r\n //console.log(\"isAuthenticationTimeout:\", this.authTimer);\r\n return this.authTimer < Date.now();\r\n }\r\n\r\n public resetAuthenticationTimeout(): void {\r\n //auth timeout er 3 timer\r\n this.authTimer = Date.now() + 10800000;\r\n //console.log(\"ny auth timer sat til:\", this.authTimer);\r\n }\r\n public reAuthenticate(): Observable {\r\n return null; //authenticate(credentials: LoginData);\r\n }\r\n\r\n private getSecurityToken(appServerUrl: string, brugernavn: string): Observable {\r\n if (!brugernavn) {\r\n return of(\"\");\r\n }\r\n\r\n const url = this.getSecurityTokenUrl(brugernavn);\r\n return this.http.get(appServerUrl + url).pipe(map((result: any) => result.Token));\r\n }\r\n\r\n private getSecurityTokenUrl(brugernavn: string): string {\r\n const userType = brugernavn.indexOf(\"@\") > -1 ? \"euser\" : isNaN(parseInt(brugernavn, 10)) ? \"user\" : \"consumer\";\r\n return `system/getsecuritytoken/project/app/${userType}/${brugernavn}`;\r\n }\r\n\r\n private createCryptId(hashedPassword: string, token: string): string {\r\n if (!token) {\r\n return \"\";\r\n }\r\n return MD5.hash(hashedPassword + token);\r\n }\r\n\r\n private getAuthenticationUrl(brugernavn: string, cryptId: string): string {\r\n const userType = brugernavn.indexOf(\"@\") > -1 ? \"euser\" : isNaN(parseInt(brugernavn, 10)) ? \"user\" : \"consumer\";\r\n return `system/login/project/app/${userType}/${brugernavn}/installation/1/id/${cryptId}`;\r\n }\r\n\r\n private hentAppServerUrl(forsyningId: string): Observable {\r\n const url = `/umbraco/dff/dffapi/GetVaerkSettings?forsyningid=${forsyningId}`;\r\n return this.http.get(url).pipe(map((r: any) => r.AppServerUri));\r\n }\r\n\r\n private httpAuthenticate(url: string, cryptId: string): Observable {\r\n if (!cryptId) {\r\n return of({ success: false, cryptId: \"\" });\r\n }\r\n\r\n return this.http.get(url).pipe(map((authResult: any) => ({ cryptId, success: !!authResult.Result })));\r\n }\r\n}\r\n","export interface HuskMigCredentials {\r\n brugernavn: string;\r\n kodeord: string;\r\n huskMig: boolean;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { LocalStorage } from \"@dffedb/util\";\r\n\r\nimport { HuskMigCredentials } from \"./husk-mig-credentials.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class HuskMigCredentialsService {\r\n constructor(private readonly localStorage: LocalStorage) {}\r\n\r\n public clear(): void {\r\n this.localStorage.removeItem(\"userCredentials\");\r\n }\r\n\r\n public hent(): HuskMigCredentials {\r\n const userCredentials = this.localStorage.getItem(\"userCredentials\");\r\n const value = (userCredentials && JSON.parse(atob(userCredentials))) || {\r\n username: \"\",\r\n password: \"\",\r\n rememberMe: false\r\n };\r\n const result: HuskMigCredentials = {\r\n brugernavn: value.username,\r\n kodeord: value.password,\r\n huskMig: value.rememberMe\r\n };\r\n return result;\r\n }\r\n\r\n public gem(credentials: HuskMigCredentials): void {\r\n const value = {\r\n username: credentials.brugernavn,\r\n password: credentials.kodeord,\r\n rememberMe: credentials.huskMig\r\n };\r\n this.localStorage.setItem(\"userCredentials\", btoa(JSON.stringify(value)));\r\n }\r\n}\r\n","export * from \"./auth.guard\";\r\nexport * from \"./authentication-result.model\";\r\nexport * from \"./authentication.service\";\r\nexport * from \"./husk-mig-credentials.model\";\r\nexport * from \"./husk-mig-credentials.service\";\r\nexport * from \"./installation.guard\";\r\nexport * from \"./login.service\";\r\nexport * from \"./menuBegraensning.guard\";\r\nexport * from \"./sequential.guards\";\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from \"@angular/router\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { isNumeric } from \"@dffedb/util\";\r\n\r\nimport { AktuelInstallationKeyObserver } from \"../installation\";\r\n\r\n/**\r\n * InstallationGuard tjekker om der er valgt en installation. I modsat fald sendes man videre til installationslisten.\r\n */\r\n@Injectable({ providedIn: \"root\" })\r\nexport class InstallationGuard implements CanActivate {\r\n constructor(private readonly router: Router, private readonly aktuelInstallationKeyObserver: AktuelInstallationKeyObserver) {}\r\n\r\n public canActivate(_: ActivatedRouteSnapshot, routerStateSnapShot: RouterStateSnapshot): Observable {\r\n // TODO AJH: Dette er et hack, som gør det muligt at se et dokument uden der er valgt en installation.\r\n // Hvis klikker på et link i f.eks. BI (man er logget ind i EForsyning), så guarden ikke sende brugeren til dokumenetet,\r\n // men videre til installationslisten fordi den aktuel installation ikke er valgt endnu. Hvis brugeren først skal logge\r\n // ind så er der ikke et problem, fordi denne proces automatisk vælger den første installation.\r\n const spilts = routerStateSnapShot.url.split(\"/\");\r\n if (routerStateSnapShot.url.includes(\"/mine-dokumenter/\") && spilts[2] && isNumeric(spilts[2])) {\r\n return of(true);\r\n } else {\r\n return this.aktuelInstallationKeyObserver.valueChanges.pipe(map((key) => !!key || this.router.parseUrl(\"install-picker\")));\r\n }\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport MD5 from \"md5-es\";\r\nimport { Observable, of, throwError } from \"rxjs\";\r\nimport { catchError, map, switchMap, tap } from \"rxjs/operators\";\r\n\r\nimport { LocalStorage, SessionStorage } from \"@dffedb/util\";\r\nimport { DffError } from \"@dffedb/util\";\r\nimport { AppserverBrugerCredentialsRepository, AppserverInstallationCredentialsRepository } from \"@e-forsyning/common/credentials\";\r\nimport { Installation, InstallationService } from \"@e-forsyning/common/installation\";\r\nimport { UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { AuthenticationResult } from \"./authentication-result.model\";\r\nimport { AuthenticationService } from \"./authentication.service\";\r\nimport { HuskMigCredentialsService } from \"./husk-mig-credentials.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class LoginService {\r\n private readonly indstillinger$ = this.indstillinger.valueChanges.pipe(map((u) => u.aktuelEforsyning));\r\n\r\n constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly brugerCredentials: AppserverBrugerCredentialsRepository,\r\n private readonly http: HttpClient,\r\n private readonly installationCredentials: AppserverInstallationCredentialsRepository,\r\n private readonly installationService: InstallationService,\r\n private readonly huskMigCredentialsService: HuskMigCredentialsService,\r\n private readonly indstillinger: UmbracoIndstillingerObserver,\r\n private readonly sessionStorage: SessionStorage,\r\n private readonly localStorage: LocalStorage\r\n ) {}\r\n\r\n public loginMedGemteCredentials(): Observable {\r\n const userCredentials = this.localStorage.getItem(\"userCredentials\");\r\n const credentials = (userCredentials && JSON.parse(atob(userCredentials))) as { username: string; password: string };\r\n return credentials\r\n ? this.login(credentials.username, credentials.password, true)\r\n : throwError(\"Kan ikke udføre autologin uden gemte credentials\");\r\n }\r\n\r\n public login(brugernavn: string, kodeord: string, huskMig: boolean): Observable {\r\n brugernavn = this.fixCasing((brugernavn || \"\").toString());\r\n kodeord = (kodeord || \"\").toString();\r\n const hashedKodeord = this.hashKodeord(brugernavn, kodeord);\r\n return this.authenticate(brugernavn, hashedKodeord).pipe(\r\n switchMap((result) => {\r\n if (!result.success) {\r\n return of(result);\r\n }\r\n return this.gemCredentials(result.cryptId).pipe(\r\n tap(() => this.gemHuskMigCredentials(brugernavn, hashedKodeord, huskMig)),\r\n switchMap(() => this.gemBruger(result.cryptId)),\r\n switchMap(() => this.gemAktuelInstallation()),\r\n map(() => result)\r\n );\r\n }),\r\n catchError((error: any) => throwError(this.createError(error)))\r\n );\r\n }\r\n\r\n public logout(): void {\r\n this.sessionStorage.removeItem(\"currentUser\");\r\n this.sessionStorage.removeItem(\"user\");\r\n // this.sessionStorage.removeItem(\"vaerksData\");\r\n this.sessionStorage.removeItem(\"credentials\");\r\n this.sessionStorage.removeItem(\"installationer\");\r\n }\r\n\r\n public erLoggetInd(forsyningNodeId?: number): boolean {\r\n const isAuthenticated = !!this.installationCredentials.hent().cryptId;\r\n const currentForsyningNodeId = this.installationCredentials.hent().forsyningNodeId;\r\n\r\n if (!isAuthenticated) {\r\n return false;\r\n }\r\n\r\n if (!currentForsyningNodeId) {\r\n return false;\r\n }\r\n\r\n if (!forsyningNodeId) {\r\n // Vi spørger om man er logget ind på en hvilken som helst eForsyning.\r\n return true;\r\n }\r\n\r\n return forsyningNodeId === currentForsyningNodeId;\r\n }\r\n\r\n public tilknytEmail(forbrugernr: string, kode: string, email: string, kodeord: string): Observable {\r\n email = this.fixCasing(email);\r\n const hashedPinkode = this.hashKodeord(forbrugernr, kode);\r\n const hashedPassword = this.hashKodeord(email, kodeord);\r\n return this.indstillinger$.pipe(\r\n switchMap((indstillinger) => {\r\n const url = indstillinger.appServerUrl + \"api/tilknytemail\";\r\n return this.http\r\n .post(url, { forbrugernr, hashedPinkode, email, hashedPassword }, { responseType: \"text\" })\r\n .pipe(map(() => null));\r\n })\r\n );\r\n }\r\n\r\n public glemtKodeord(email: string): Observable {\r\n email = this.fixCasing(email);\r\n return this.indstillinger$.pipe(\r\n switchMap((indstillinger) => {\r\n const url = indstillinger.appServerUrl + \"api/glemtpwd\";\r\n const vaerkurl = indstillinger.siteUrl + \"#/\";\r\n return this.http.post(url, { email, vaerkurl }, { responseType: \"text\" }).pipe(map(() => null));\r\n })\r\n );\r\n }\r\n\r\n public resetPwd(kodeord: string, secGUID: string): Observable {\r\n const saltedPwd = MD5.hash(kodeord);\r\n\r\n return this.indstillinger$.pipe(\r\n switchMap((indstillinger) => {\r\n const url = indstillinger.appServerUrl + \"api/resetpwd/\";\r\n return this.http.post(url, { saltedPwd, secGUID }, { responseType: \"text\" }).pipe(map(() => null));\r\n })\r\n );\r\n }\r\n\r\n private fixCasing(brugernavn: string): string {\r\n brugernavn = brugernavn || \"\";\r\n const erEmail = brugernavn.indexOf(\"@\") > -1;\r\n return erEmail ? brugernavn.toLowerCase() : brugernavn.toUpperCase();\r\n }\r\n\r\n private authenticate(brugernavn: string, hashedKodeord: string): Observable {\r\n return this.indstillinger$.pipe(\r\n switchMap((indstillinger) => this.authenticationService.authenticate(brugernavn, hashedKodeord, indstillinger.forsyningId))\r\n );\r\n }\r\n\r\n private gemCredentials(cryptId: string): Observable {\r\n const brugerCredentials = this.brugerCredentials.hent();\r\n const installationCredentials = this.installationCredentials.hent();\r\n brugerCredentials.cryptId = cryptId;\r\n return this.indstillinger$.pipe(\r\n tap((indstillinger) => {\r\n brugerCredentials.forsyningId = indstillinger.forsyningId;\r\n brugerCredentials.forsyningNodeId = indstillinger.nodeId;\r\n this.brugerCredentials.gem(brugerCredentials);\r\n // I tilfælde af re-login fordi cryptId er udløbet, ønsker vi at beholde den valgte installation.\r\n // Dette kan dog kun ske, hvis vi ikke arbejder på tværs af forsyninger.\r\n const newInstallationCredentials =\r\n installationCredentials.forsyningNodeId === brugerCredentials.forsyningNodeId\r\n ? { ...installationCredentials, ...brugerCredentials }\r\n : brugerCredentials;\r\n this.installationCredentials.gem(newInstallationCredentials);\r\n this.installationCredentials.gem(\r\n installationCredentials.forsyningNodeId === brugerCredentials.forsyningNodeId\r\n ? { ...installationCredentials, ...brugerCredentials }\r\n : brugerCredentials\r\n );\r\n }),\r\n map(() => null)\r\n );\r\n }\r\n\r\n private gemAktuelInstallation(): Observable {\r\n return this.hentFoersteInstallation().pipe(\r\n tap((installation) => this.gemInstallation(installation)),\r\n map(() => null)\r\n );\r\n }\r\n\r\n private gemInstallation(installation: Installation): void {\r\n const credentials = this.installationCredentials.hent();\r\n credentials.ejendomNr = installation && installation.ejendomNr;\r\n credentials.aktivNr = installation && installation.aktivNr;\r\n credentials.installationNr = installation && installation.installationNr;\r\n this.installationCredentials.gem(credentials);\r\n }\r\n\r\n private hentFoersteInstallation(): Observable {\r\n return this.hentInstallationer().pipe(map((installationer) => installationer[0]));\r\n }\r\n\r\n private hentInstallationer(): Observable {\r\n return this.installationService\r\n .hentEgneInstallationer()\r\n .pipe(\r\n switchMap((installationer) =>\r\n installationer && installationer.length !== 0\r\n ? of(installationer)\r\n : this.installationService.hentEgneOgTilknyttedeInterneInstallationer().pipe(map((r) => r.items))\r\n )\r\n );\r\n }\r\n\r\n private gemBruger(cryptId: string): Observable {\r\n return this.hentBruger(cryptId).pipe(\r\n // TODO: Fjernes når vi engang har flyttet alt over på Angular 8+ og ikke gemmer bruger i sessionStorage\r\n tap((bruger: any) => this.sessionStorage.setItem(\"user\", JSON.stringify(bruger)))\r\n );\r\n }\r\n\r\n private hentBruger(cryptId: string): Observable {\r\n // TODO: Flyt til BrugerService?\r\n return this.indstillinger$.pipe(\r\n switchMap((indstillinger) => {\r\n const url = `${indstillinger.appServerUrl}api/getebrugerinfo/id/${cryptId}`;\r\n return this.http.get(url).pipe(\r\n map((result: any) => {\r\n const b = result || {};\r\n b.adresse = b.vej + \" \" + b.husnr + \" \" + b.litra + \" \" + b.litra2;\r\n b.postnrby = b.postnr + \" \" + b.bynavn;\r\n b.erForbruger = () => b.rolle === 1;\r\n return b;\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n private hashKodeord(brugernavn: string, kodeord: string): string {\r\n const huskMigCredentials = this.huskMigCredentialsService.hent();\r\n return huskMigCredentials.brugernavn === brugernavn && huskMigCredentials.kodeord === kodeord ? kodeord : MD5.hash(kodeord);\r\n }\r\n\r\n private gemHuskMigCredentials(brugernavn: string, hashedKodeord: string, huskMig: boolean): void {\r\n this.huskMigCredentialsService.clear();\r\n if (huskMig) {\r\n this.huskMigCredentialsService.gem({ brugernavn, kodeord: hashedKodeord, huskMig });\r\n }\r\n }\r\n\r\n private createError(error: any): DffError {\r\n return new DffError(\"Der er opstået en fejl i forbindelse med login\", { innerError: error });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from \"@angular/router\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { MenuItem } from \"@dffedb/ui\";\r\n\r\nimport { AktuelBrugerObserver, Bruger } from \"../bruger\";\r\nimport { UmbracoMenuObserver } from \"../eforsyning-menu/observers/umbraco-menu.observer\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class MenuBegraensningGuard implements CanActivate {\r\n constructor(\r\n private readonly aktuelBrugerObserver: AktuelBrugerObserver,\r\n private readonly umbracoMenuObserver: UmbracoMenuObserver\r\n ) {}\r\n\r\n public canActivate(route: ActivatedRouteSnapshot, _: RouterStateSnapshot): Observable {\r\n // Denne guard tjekker om der er sat begrænsning for menupunktet.\r\n // I FOF kan man angive, at kun nogle menupunkter skal være tilgængelige for f.eks. en VVS'er eller et bestyrelsesmedlem.\r\n // Er der angivet 'ingen adgang', sørger guarden for, at man ikke kan tilgå menpunktet.\r\n const bruger$ = this.aktuelBrugerObserver.valueChanges;\r\n const rootMenuItem$ = this.umbracoMenuObserver.valueChanges.pipe(map((m) => m.eforsyninger));\r\n const result$ = combineLatest([bruger$, rootMenuItem$]).pipe(\r\n map(([bruger, rootMenuItem]) => ({ bruger, menuItem: this.findMenupunkt(rootMenuItem, route) })),\r\n map(({ bruger, menuItem }) => this.harBrugerAdgangTilMenupunkt(bruger, menuItem))\r\n );\r\n return result$;\r\n }\r\n\r\n private findMenupunkt(menuItem: MenuItem, route: ActivatedRouteSnapshot): MenuItem {\r\n if (menuItem?.href?.endsWith(\"/#/\" + route.url.toString() + \"/\")) {\r\n return menuItem;\r\n }\r\n for (const child of menuItem.children ?? []) {\r\n const result = this.findMenupunkt(child, route);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private harBrugerAdgangTilMenupunkt(bruger: Bruger, menuItem: MenuItem): boolean {\r\n if (!bruger) {\r\n return false;\r\n }\r\n if (!menuItem) {\r\n // Hvis menupunktet ikke findes, eller er sat til \"Vis ikke i Umbraco\" så er der ingen adgang.\r\n return false;\r\n }\r\n if (!menuItem.adgangsstyret) {\r\n return true;\r\n }\r\n return (bruger.menupunkter ?? []).includes(menuItem.name);\r\n }\r\n}\r\n","import { Injectable, Injector, Type } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, RedirectCommand, RouterStateSnapshot, UrlTree } from \"@angular/router\";\r\n\r\nimport { from, isObservable, Observable, of } from \"rxjs\";\r\nimport { switchMap } from \"rxjs/operators\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class SequentialGuards implements CanActivate {\r\n private route: ActivatedRouteSnapshot;\r\n private state: RouterStateSnapshot;\r\n\r\n constructor(private readonly injector: Injector) {}\r\n\r\n public canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ):\r\n | boolean\r\n | UrlTree\r\n | RedirectCommand\r\n | Observable\r\n | Promise {\r\n this.route = route;\r\n this.state = state;\r\n\r\n if (!this.route?.data?.sequentialGuards?.length) {\r\n return Promise.resolve(true);\r\n }\r\n const sequentialGuards = this.route.data.sequentialGuards.map(\r\n (g: Type) => this.injector.get(g) as CanActivate\r\n ) as CanActivate[];\r\n\r\n return this.executeGuardsSequentially(sequentialGuards);\r\n }\r\n\r\n private executeGuardsSequentially(guards: CanActivate[]): Observable {\r\n return guards.reduce(\r\n (prev, curr) => prev.pipe(switchMap((p) => (p === true ? this.toObservable(curr.canActivate(this.route, this.state)) : of(p)))),\r\n of(true as boolean | UrlTree | RedirectCommand)\r\n );\r\n }\r\n\r\n private toObservable(\r\n value:\r\n | boolean\r\n | UrlTree\r\n | RedirectCommand\r\n | Observable\r\n | Promise\r\n ): Observable {\r\n return isObservable(value) ? value : from(Promise.resolve(value));\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { of } from \"rxjs\";\r\n\r\nimport { AppserverBrugerCredentialsRepository, AppserverCredentials } from \"@e-forsyning/common/credentials\";\r\n\r\nimport { LogService } from \"../log\";\r\nimport { ObserverBase } from \"../util/observer-base.service\";\r\nimport { BrugerRepository } from \"./bruger.repository\";\r\nimport { Bruger } from \"./model/bruger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelBrugerObserver extends ObserverBase {\r\n constructor(logService: LogService, brugerCredentials: AppserverBrugerCredentialsRepository, repository: BrugerRepository) {\r\n super(\r\n logService,\r\n brugerCredentials.valueChanges,\r\n (credentials) => (credentials && credentials.cryptId && repository.hentAktuelleBruger()) || of(null)\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { ObserverBasedService } from \"../util/observer-based-service.service\";\r\nimport { AktuelBrugerObserver } from \"./aktuel-bruger.observer\";\r\nimport { Bruger } from \"./model/bruger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelBrugerService extends ObserverBasedService {\r\n constructor(observer: AktuelBrugerObserver) {\r\n super(observer);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { AppserverHttpClient, BrugerHttpClient, InstallationHttpClient, ParametreForAktuelleInstallation } from \"../http\";\r\nimport { Bruger } from \"./model/bruger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class BrugerRepository {\r\n constructor(private readonly brugerHttp: BrugerHttpClient, private readonly installationHttp: InstallationHttpClient) {}\r\n\r\n public hentAktuelleBruger(): Observable {\r\n return this.hentBruger(this.brugerHttp);\r\n }\r\n\r\n public hentBrugerForAktuelleInstallation(): Observable {\r\n return this.hentBruger(this.installationHttp);\r\n }\r\n\r\n public hentBruger(http: AppserverHttpClient): Observable {\r\n return http.get(\"api/getebrugerinfo\", ParametreForAktuelleInstallation.true).pipe(map((bruger: any) => this.map(bruger)));\r\n }\r\n\r\n private map(value: any): Bruger {\r\n return {\r\n id: value.id,\r\n navn: value.navn,\r\n rolle: value.rolle,\r\n email: value.email,\r\n huskelisteId: this.mapHuskelisteId(value.huskelisteId),\r\n menupunkter: value.menupunkter || [],\r\n adresse: {\r\n adresselinie1: \"\",\r\n adresselinie2: \"\",\r\n adresselinie3: \"\",\r\n adresselinie4: \"\",\r\n adressenr: -1,\r\n bynavn: value.bynavn,\r\n husnr: (value.husnr && +value.husnr) || null,\r\n litra: value.litra,\r\n litra2: value.litra2,\r\n postnr: value.postnr,\r\n vejnavn: value.vej,\r\n vejnr: -1\r\n }\r\n };\r\n }\r\n\r\n private mapHuskelisteId(value: number): number {\r\n // Fix til problem med at FOF returnerer -1 i huskelisteId.\r\n // Det betyder at forbrugere ikke kan se deres egen installation.\r\n return value === -1 ? null : value;\r\n }\r\n}\r\n","export * from \"./aktuel-bruger.observer\";\r\nexport * from \"./aktuel-bruger.service\";\r\nexport * from \"./bruger.repository\";\r\nexport * from \"./model/bruger.model\";\r\nexport * from \"./model/ebruger-info.dto\";\r\nexport * from \"./model/rolle.model\";\r\nexport * from \"./rolle.service\";\r\nexport * from \"./valgt-forbruger.observer\";\r\n","import { Adresse } from \"@e-forsyning/common/adresse\";\r\n\r\nimport { Rolle } from \"./rolle.model\";\r\n\r\nexport interface Bruger {\r\n id: number;\r\n navn: string;\r\n rolle: Rolle;\r\n adresse: Adresse;\r\n email: string;\r\n huskelisteId?: number; // Hvis udfyldt, har brugeren kun adgang til installationer på huskelisten\r\n menupunkter: string[]; // Indeholder liste over menupunkter, brugeren har adgang til\r\n}\r\n","export interface EBrugerInfo {\r\n id: number;\r\n navn: string;\r\n navn2: string;\r\n vejl: string;\r\n husnr: string;\r\n litra: string;\r\n litra2: string;\r\n postnr: string;\r\n bynavn: string;\r\n email: string;\r\n tlf: string;\r\n rolle: number;\r\n indflyttet: string;\r\n notifikationmail: string;\r\n notifikationmobil: string;\r\n notifikationtype: string;\r\n ejendomnr: number;\r\n frekvens: number;\r\n overvaagningstypeforbrug: string;\r\n vaerdiforbrug: number;\r\n overvaagningstypeinstallation: string;\r\n vaerdiinstallation: number;\r\n}\r\n","export enum Rolle {\r\n LoggetUd = 0,\r\n Forbruger = 1,\r\n Ejendomsadministrator = 2,\r\n FofBruger = 9\r\n}\r\n\r\nexport class Roller {\r\n public static readonly LoggetInd: Rolle[] = [Rolle.Forbruger, Rolle.Ejendomsadministrator, Rolle.FofBruger];\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nexport namespace Rolle {\r\n export function erLoggetUd(rolle: Rolle): boolean {\r\n return !erLoggetInd(rolle);\r\n }\r\n\r\n export function erLoggetInd(rolle: Rolle): boolean {\r\n return erForbruger(rolle) || erFofBruger(rolle) || erEjendomsadministrator(rolle);\r\n }\r\n\r\n export function erForbruger(rolle: Rolle): boolean {\r\n return rolle === Rolle.Forbruger;\r\n }\r\n\r\n export function erFofBruger(rolle: Rolle): boolean {\r\n return rolle === Rolle.FofBruger;\r\n }\r\n\r\n export function erEjendomsadministrator(rolle: Rolle): boolean {\r\n return rolle === Rolle.Ejendomsadministrator;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Rolle } from \"./model/rolle.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class RolleService {\r\n public erForbruger(bruger: any): boolean {\r\n return this.harRolle(bruger, Rolle.Forbruger);\r\n }\r\n\r\n public erFofBruger(bruger: any): boolean {\r\n return this.harRolle(bruger, Rolle.FofBruger);\r\n }\r\n\r\n public erEjendomsadministrator(bruger: any): boolean {\r\n return this.harRolle(bruger, Rolle.Ejendomsadministrator);\r\n }\r\n\r\n private harRolle(bruger: any, rolle: Rolle): boolean {\r\n const brugerRolle = bruger && typeof bruger === \"object\" ? bruger.rolle : bruger;\r\n return brugerRolle === rolle;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { AppserverInstallationCredentialsRepository } from \"@e-forsyning/common/credentials\";\r\n\r\nimport { BrugerRepository } from \"./bruger.repository\";\r\nimport { Bruger } from \"./model/bruger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ValgtForbrugerObserver {\r\n private _valueChanges: Observable;\r\n\r\n constructor(credentials: AppserverInstallationCredentialsRepository, repository: BrugerRepository) {\r\n this._valueChanges = credentials.valueChanges.pipe(\r\n switchMap((c) => (c && c.cryptId && repository.hentBrugerForAktuelleInstallation()) || of(null)),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public get valueChanges(): Observable {\r\n return this._valueChanges;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { AppserverCredentialsRepositoryBase } from \"./appserver-credentials-repository-base.service\";\r\nimport { AppserverCredentialsRepository } from \"./appserver-credentials-repository.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AppserverBrugerCredentialsRepository extends AppserverCredentialsRepositoryBase {\r\n constructor(repository: AppserverCredentialsRepository) {\r\n super(repository, \"bruger\");\r\n }\r\n}\r\n","import { Observable } from \"rxjs\";\r\n\r\nimport { IAppserverCredentialsRepository } from \"./appserver-credentials-repository.interface\";\r\nimport { AppserverCredentialsRepository } from \"./appserver-credentials-repository.service\";\r\nimport { AppserverCredentials } from \"./appserver-credentials.model\";\r\n\r\nexport class AppserverCredentialsRepositoryBase implements IAppserverCredentialsRepository {\r\n private readonly _valueChanges: Observable;\r\n\r\n constructor(private readonly repository: AppserverCredentialsRepository, private readonly nodeIdKey: string) {\r\n this._valueChanges = this.repository.valueChanges(this.nodeIdKey);\r\n }\r\n\r\n public get valueChanges(): Observable {\r\n return this._valueChanges;\r\n }\r\n\r\n public hent(): AppserverCredentials {\r\n return this.repository.hent(this.nodeIdKey);\r\n }\r\n\r\n public gem(credentials: AppserverCredentials): void {\r\n return this.repository.gem(this.nodeIdKey, credentials);\r\n }\r\n}\r\n","import { AppserverCredentials } from \"./appserver-credentials.model\";\r\n\r\nexport interface IAppserverCredentialsRepository {\r\n hent(): AppserverCredentials;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { distinctUntilChanged, map, shareReplay } from \"rxjs/operators\";\r\n\r\nimport { SessionStorage } from \"@dffedb/util\";\r\n\r\nimport { AppserverCredentials } from \"./appserver-credentials.model\";\r\n\r\ninterface CredentialsMap {\r\n [key: string]: AppserverCredentials;\r\n}\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AppserverCredentialsRepository {\r\n private _valueChanges = new Map>();\r\n\r\n constructor(private readonly sessionStorage: SessionStorage) {}\r\n\r\n public hentAlle(): CredentialsMap {\r\n const result: CredentialsMap = {};\r\n const allCredentials = JSON.parse(this.sessionStorage.getItem(\"credentials\") || null) || {};\r\n const keys = Object.keys(allCredentials);\r\n for (const key of keys) {\r\n const credentials = allCredentials[key];\r\n if (credentials.cryptId) {\r\n // Kun indgange med 'cryptId' indeholder egentlige credentials. Andre indgange er lookup-keys.\r\n result[key] = credentials;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public valueChanges(key: string): Observable {\r\n if (!this._valueChanges.has(key)) {\r\n const result = this.sessionStorage.select(\"credentials\").pipe(\r\n map((credentials) => this.internalHent(credentials, key)),\r\n distinctUntilChanged((x, y) => JSON.stringify(x) === JSON.stringify(y)),\r\n shareReplay(1)\r\n );\r\n this._valueChanges.set(key, result);\r\n }\r\n return this._valueChanges.get(key);\r\n }\r\n\r\n public hent(key: string): AppserverCredentials {\r\n return this.internalHent(this.sessionStorage.getItem(\"credentials\"), key);\r\n }\r\n\r\n public gem(key: string, value: AppserverCredentials): void {\r\n const allCredentials = JSON.parse(this.sessionStorage.getItem(\"credentials\") || null) || {};\r\n const nodeId = this.genererNodeId(value);\r\n allCredentials[key] = nodeId;\r\n allCredentials[nodeId] = value;\r\n this.sessionStorage.setItem(\"credentials\", JSON.stringify(allCredentials));\r\n }\r\n\r\n private genererNodeId(value: AppserverCredentials): string {\r\n return value.ejendomNr ? value.forsyningNodeId + \"-\" + value.ejendomNr : value.forsyningNodeId + \"\";\r\n }\r\n\r\n private internalHent(rawCredentials: string, key: string): AppserverCredentials {\r\n const allCredentials = JSON.parse(rawCredentials || null) || {};\r\n const nodeId = allCredentials[key];\r\n const credentials = allCredentials[nodeId] || {};\r\n return credentials;\r\n }\r\n}\r\n","export interface AppserverCredentials {\r\n forsyningNodeId: number;\r\n forsyningId: string;\r\n cryptId: string;\r\n ejendomNr?: number;\r\n aktivNr?: number;\r\n installationNr?: number;\r\n}\r\n","import { AppserverCredentials } from \"./appserver-credentials.model\";\r\n\r\nexport function serialiserAppserverCredentials(credentials: AppserverCredentials): string {\r\n return encodeURIComponent(btoa(JSON.stringify(credentials)));\r\n}\r\n\r\nexport function deserialiserAppserverCredentials(value: string): AppserverCredentials {\r\n return JSON.parse(atob(decodeURIComponent(value)));\r\n}\r\n\r\nexport function opretTomAppserverCredentials(): AppserverCredentials {\r\n return { forsyningNodeId: 0, forsyningId: \"\", cryptId: \"\" };\r\n}\r\n","import { IAppserverCredentialsRepository } from \"./appserver-credentials-repository.interface\";\r\nimport { AppserverCredentials } from \"./appserver-credentials.model\";\r\n\r\nexport class AppserverEksternForsyningCredentialsRepository implements IAppserverCredentialsRepository {\r\n constructor(private readonly credentials: AppserverCredentials) {}\r\n\r\n public hent(): AppserverCredentials {\r\n return this.credentials;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { AppserverCredentialsRepositoryBase } from \"./appserver-credentials-repository-base.service\";\r\nimport { AppserverCredentialsRepository } from \"./appserver-credentials-repository.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AppserverInstallationCredentialsRepository extends AppserverCredentialsRepositoryBase {\r\n constructor(repository: AppserverCredentialsRepository) {\r\n super(repository, \"installation\");\r\n }\r\n}\r\n","export interface AppserverUnauthenticatedCredentials {\r\n forsyningId: string;\r\n brugerNavn: string;\r\n kodeordKrypteret: string;\r\n}\r\n","export * from \"./appserver-bruger-credentials-repository.service\";\r\nexport * from \"./appserver-credentials-repository.interface\";\r\nexport * from \"./appserver-credentials-repository.service\";\r\nexport * from \"./appserver-credentials.model\";\r\nexport * from \"./appserver-credentials.util\";\r\nexport * from \"./appserver-ekstern-forsyning-credentials.repository\";\r\nexport * from \"./appserver-installation-credentials-repository.service\";\r\nexport * from \"./appserver-unauthenticated-credentials.model\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { UmbracoHttpClient } from \"../http/umbraco-http-client.service\";\r\nimport { UmbracoIndstillingerObserver } from \"../umbraco-indstillinger\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DriftsstatusService {\r\n constructor(\r\n private readonly umbracoHttpClient: UmbracoHttpClient,\r\n private readonly indstillingerObserver: UmbracoIndstillingerObserver\r\n ) {}\r\n\r\n public erDerAktuelleDriftsforstyrrelser(): Observable {\r\n return this.indstillingerObserver.valueChanges.pipe(\r\n map(i => i.forsyningWeb && i.forsyningWeb.nodeId),\r\n switchMap(nodeId => (nodeId && this.umbracoHttpClient.get(`ErDerAktuelleDriftsforstyrrelser?nodeId=${nodeId}`)) || of(false))\r\n );\r\n }\r\n}\r\n","export * from \"./driftsstatus.service\";\r\n","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { EBoksPopupCloseArgs, EBoksPopupRef } from \"../e-boks-popup-ref\";\r\n\r\n@Component({\r\n selector: \"e-boks-popup-content\",\r\n templateUrl: \"./e-boks-popup-content.component.html\",\r\n styleUrls: [\"./e-boks-popup-content.component.scss\"]\r\n})\r\nexport class EBoksPopupContentComponent {\r\n public firmaNavn$: Observable;\r\n public step = 1;\r\n public minHeight = 0;\r\n\r\n @ViewChild(\"step1\")\r\n public step1: ElementRef;\r\n\r\n constructor(private readonly popupRef: EBoksPopupRef, private readonly indstillinger: UmbracoIndstillingerObserver) {\r\n this.firmaNavn$ = this.indstillinger.valueChanges.pipe(map((i) => i.aktuelEforsyning.firmaInfo.firmaNavn));\r\n }\r\n\r\n public onNext(): void {\r\n if (this.step === 1) {\r\n // Vi vil gerne have step2 til at starte med samme højde som step1 for at undgå 'hoppe-effekt'.\r\n this.minHeight = this.step1.nativeElement.offsetHeight;\r\n }\r\n this.step++;\r\n }\r\n\r\n public onLukOgSpoergMigIkkeIgen(): void {\r\n this.onLuk({ spoergMigIkkeIgen: true });\r\n }\r\n\r\n public onLuk(args: EBoksPopupCloseArgs = { spoergMigIkkeIgen: false }): void {\r\n this.popupRef.close(args);\r\n }\r\n}\r\n","@if (step === 1) {\r\n
\r\n
\r\n \"E-boks\r\n

Vidste du, at du kan modtage post fra {{ firmaNavn$ | async }} direkte i din e-Boks?

\r\n

Tilmeld dig med det samme ved at klikke nedenfor.

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n}\r\n@if (step === 2) {\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n}\r\n","import { OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { EventEmitter } from \"@angular/core\";\r\n\r\nexport interface EBoksPopupCloseArgs {\r\n spoergMigIkkeIgen: boolean;\r\n}\r\n\r\nexport class EBoksPopupRef {\r\n public closed = new EventEmitter();\r\n constructor(private overlayRef: OverlayRef) {}\r\n\r\n public close(args: EBoksPopupCloseArgs): void {\r\n this.overlayRef.dispose();\r\n this.closed.emit(args);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable, of } from \"rxjs\";\r\nimport { first, map, mapTo, shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { DffCurrentRoute } from \"@dffedb/router\";\r\nimport { LocalStorage, SessionStorage } from \"@dffedb/util\";\r\nimport { LoginService } from \"@e-forsyning/common/auth\";\r\nimport { Rolle } from \"@e-forsyning/common/bruger\";\r\nimport { AktuelBrugerObserver } from \"@e-forsyning/common/bruger\";\r\n\r\nimport { EBoksTilmeldingRepository } from \"../shared/e-boks-tilmelding.repository\";\r\nimport { EBoksPopup } from \"./e-boks-popup\";\r\nimport { EBoksPopupRef } from \"./e-boks-popup-ref\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EBoksPopupService {\r\n private readonly erForbruger$: Observable;\r\n private readonly erAlleredeTilmeldtEBoks$: Observable;\r\n private readonly erEBoksKampagneAktiveret$: Observable;\r\n\r\n constructor(\r\n private readonly popup: EBoksPopup,\r\n private readonly loginService: LoginService,\r\n private readonly sessionStorage: SessionStorage,\r\n private readonly localStorage: LocalStorage,\r\n private readonly aktuelBrugerObserver: AktuelBrugerObserver,\r\n private readonly eboksRepository: EBoksTilmeldingRepository,\r\n private readonly currentRoute: DffCurrentRoute\r\n ) {\r\n this.erForbruger$ = this.erForbruger();\r\n this.erAlleredeTilmeldtEBoks$ = this.erAlleredeTilmeldtEBoks();\r\n this.erEBoksKampagneAktiveret$ = this.erEBoksKampagneAktiveret();\r\n }\r\n\r\n public get popupSkalAldrigVisesIgen(): boolean {\r\n return this.localStorage.getItem(\"e-boks-popup-vis-aldrig-igen\") === \"true\";\r\n }\r\n public set popupSkalAldrigVisesIgen(value: boolean) {\r\n this.localStorage.setItem(\"e-boks-popup-vis-aldrig-igen\", value.toString());\r\n }\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n public get popupSkalIkkeVisesIgenIDenneSession(): boolean {\r\n return this.sessionStorage.getItem(\"e-boks-popup-vis-ikke-igen-i-denne-session\") === \"true\";\r\n }\r\n\r\n public set popupSkalIkkeVisesIgenIDenneSession(value: boolean) {\r\n this.sessionStorage.setItem(\"e-boks-popup-vis-ikke-igen-i-denne-session\", value.toString());\r\n }\r\n\r\n public async aabnHvisIkkeAlleredeTilmeldt(): Promise {\r\n if (await this.skalPopupVises()) {\r\n return this.open().closed.pipe(first(), mapTo(null)).toPromise();\r\n } else {\r\n return Promise.resolve();\r\n }\r\n }\r\n\r\n public async skalPopupVises(): Promise {\r\n if (!this.erEBoksAktiveret()) {\r\n return Promise.resolve(false);\r\n }\r\n if (this.visIkkePopupPaaAktuelleSide()) {\r\n return Promise.resolve(false);\r\n }\r\n if (!this.loginService.erLoggetInd()) {\r\n return Promise.resolve(false);\r\n }\r\n if (this.popupSkalIkkeVisesIgenIDenneSession || this.popupSkalAldrigVisesIgen) {\r\n return Promise.resolve(false);\r\n }\r\n const [erForbruger, erAlleredeTilmeldtEBoks, erEBoksKampagneAktiveret] = await combineLatest([\r\n this.erForbruger$.pipe(first()),\r\n this.erAlleredeTilmeldtEBoks$.pipe(first()),\r\n this.erEBoksKampagneAktiveret$.pipe(first())\r\n ]).toPromise();\r\n\r\n return Promise.resolve(erForbruger && !erAlleredeTilmeldtEBoks && erEBoksKampagneAktiveret);\r\n }\r\n\r\n private open(): EBoksPopupRef {\r\n const result = this.popup.open();\r\n result.closed.pipe(first()).subscribe((args) => {\r\n this.popupSkalIkkeVisesIgenIDenneSession = true;\r\n this.popupSkalAldrigVisesIgen = args.spoergMigIkkeIgen;\r\n });\r\n return result;\r\n }\r\n\r\n private erEBoksAktiveret(): Observable {\r\n return this.eboksRepository.hentIndstillinger().pipe(\r\n map((result) => result.visEBoksSektion),\r\n shareReplay(1)\r\n );\r\n }\r\n private erEBoksKampagneAktiveret(): Observable {\r\n return this.eboksRepository.hentIndstillinger().pipe(\r\n map((result) => result.visEBoksKampagne),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n private erForbruger(): Observable {\r\n return this.aktuelBrugerObserver.valueChanges.pipe(map((bruger) => bruger && bruger.rolle === Rolle.Forbruger));\r\n }\r\n\r\n private erAlleredeTilmeldtEBoks(): any {\r\n return this.aktuelBrugerObserver.valueChanges.pipe(\r\n switchMap((bruger) => (bruger && Rolle.erForbruger(bruger.rolle) && this.eboksRepository.hentTilmeldinger()) || of(null)),\r\n map((tilmeldinger) => tilmeldinger && tilmeldinger.length !== 0),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n private visIkkePopupPaaAktuelleSide(): boolean {\r\n const ignoredRoutes = [/^\\/login$/, /^\\/login\\//, /^\\/silent-login\\//];\r\n return ignoredRoutes.some((r) => r.test(this.currentRoute.value.path));\r\n }\r\n}\r\n","import { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { ComponentPortal } from \"@angular/cdk/portal\";\r\nimport { Injectable, Injector } from \"@angular/core\";\r\n\r\nimport { EBoksPopupContentComponent } from \"./e-boks-popup-content/e-boks-popup-content.component\";\r\nimport { EBoksPopupRef } from \"./e-boks-popup-ref\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EBoksPopup {\r\n public popupRef: EBoksPopupRef;\r\n constructor(private readonly injector: Injector, private readonly overlay: Overlay) {}\r\n\r\n public open(): EBoksPopupRef {\r\n if (this.popupRef) {\r\n return this.popupRef;\r\n }\r\n const overlayRef = this.overlay.create({\r\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\r\n hasBackdrop: true,\r\n backdropClass: \"e-boks-popup-backdrop\",\r\n scrollStrategy: this.overlay.scrollStrategies.block()\r\n });\r\n this.popupRef = new EBoksPopupRef(overlayRef);\r\n this.popupRef.closed.subscribe(() => {\r\n this.popupRef = null;\r\n });\r\n this.attachContainer(overlayRef, this.popupRef);\r\n\r\n return this.popupRef;\r\n }\r\n\r\n private attachContainer(overlayRef: OverlayRef, popupRef: EBoksPopupRef): EBoksPopupContentComponent {\r\n const injector = this.createInjector(popupRef);\r\n const containerPortal = new ComponentPortal(EBoksPopupContentComponent, null, injector);\r\n const containerRef = overlayRef.attach(containerPortal);\r\n return containerRef.instance;\r\n }\r\n\r\n private createInjector(popupRef: EBoksPopupRef): Injector {\r\n return Injector.create({\r\n parent: this.injector,\r\n providers: [\r\n {\r\n provide: EBoksPopupRef,\r\n useValue: popupRef\r\n }\r\n ]\r\n });\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { MatStepperModule } from \"@angular/material/stepper\";\r\nimport { MatTabsModule } from \"@angular/material/tabs\";\r\n\r\nimport { mdiCheckCircleOutline, mdiClose, mdiPencil } from \"@mdi/js\";\r\nimport { NgxMaskDirective, NgxMaskPipe, provideEnvironmentNgxMask } from \"ngx-mask\";\r\n\r\nimport { DffButtonModule, DffInfoDialogModule, DffSimpelDialogModule, RevealOnFocusModule } from \"@dffedb/ui\";\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { EBoksPopupContentComponent } from \"./e-boks-popup/e-boks-popup-content/e-boks-popup-content.component\";\r\nimport { EBoksTilmeldingComponent } from \"./e-boks-tilmelding/e-boks-tilmelding.component\";\r\nimport { StepAdresseKodeComponent } from \"./e-boks-tilmelding/steps/step-adresse-kode/step-adresse-kode.component\";\r\n// eslint-disable-next-line max-len\r\nimport { StepEksisterendeTilmeldingerComponent } from \"./e-boks-tilmelding/steps/step-eksisterende-tilmeldinger/step-eksisterende-tilmeldinger.component\";\r\nimport { StepIdentitetComponent } from \"./e-boks-tilmelding/steps/step-identitet/step-identitet.component\";\r\nimport { StepSamtykkeComponent } from \"./e-boks-tilmelding/steps/step-samtykke/step-samtykke.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatCheckboxModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatStepperModule,\r\n MatProgressSpinnerModule,\r\n MatTabsModule,\r\n DffSimpelDialogModule,\r\n DffButtonModule,\r\n RevealOnFocusModule,\r\n DffInfoDialogModule,\r\n NgxMaskDirective,\r\n NgxMaskPipe\r\n ],\r\n declarations: [\r\n EBoksTilmeldingComponent,\r\n StepAdresseKodeComponent,\r\n StepEksisterendeTilmeldingerComponent,\r\n StepIdentitetComponent,\r\n StepSamtykkeComponent,\r\n EBoksPopupContentComponent\r\n ],\r\n exports: [\r\n EBoksTilmeldingComponent,\r\n StepAdresseKodeComponent,\r\n StepEksisterendeTilmeldingerComponent,\r\n StepIdentitetComponent,\r\n StepSamtykkeComponent\r\n ],\r\n providers: [provideEnvironmentNgxMask()]\r\n})\r\nexport class EBoksTilmeldingModule {\r\n constructor(iconRegistry: SvgIconRegistry) {\r\n iconRegistry.registerIcon(mdiClose, \"e-boks-dialog-close-icon\");\r\n iconRegistry.registerIcon(mdiCheckCircleOutline, \"e-boks-success-icon\");\r\n iconRegistry.registerIcon(mdiPencil, \"e-boks-stepper-icon\");\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { MatStepper } from \"@angular/material/stepper\";\r\n\r\nimport { combineLatest, Observable, Subject, timer } from \"rxjs\";\r\nimport { debounceTime, delay, filter, first, map, startWith, takeUntil } from \"rxjs/operators\";\r\nimport scrollIntoView from \"scroll-into-view-if-needed\";\r\n\r\nimport { ControlsOf } from \"@dffedb/forms\";\r\nimport { DffInfoDialog } from \"@dffedb/ui\";\r\nimport { EforsyningIndstilling } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { EBoksTilmelding } from \"../model/e-boks-tilmelding.model\";\r\nimport {\r\n EBoksTilmeldingFormBuilder,\r\n EBoksTilmeldingIdentitetModel,\r\n EBoksTilmeldingModel,\r\n EBoksTilmeldingSamtykkeModel\r\n} from \"../shared/e-boks-tilmelding.form-builder\";\r\nimport { EBoksTilmeldingService } from \"../shared/e-boks-tilmelding.service\";\r\nimport { opretSamtykkeTekst, opretTomEBoksTilmelding, valueChanges } from \"../shared/e-boks-util\";\r\n\r\n@Component({\r\n selector: \"e-boks-tilmelding\",\r\n templateUrl: \"./e-boks-tilmelding.component.html\",\r\n styleUrls: [\"./e-boks-tilmelding.component.scss\"]\r\n})\r\nexport class EBoksTilmeldingComponent implements OnInit, OnDestroy, OnChanges {\r\n @Input()\r\n public afkraevAdressekode = false;\r\n\r\n @Input()\r\n public disabled = false;\r\n\r\n @Output()\r\n public tilmeldt = new EventEmitter();\r\n\r\n @ViewChild(\"stepper\")\r\n public stepper: MatStepper;\r\n\r\n @ViewChild(\"top\")\r\n public top: ElementRef;\r\n\r\n @ViewChild(\"bottom\")\r\n public bottom: ElementRef;\r\n\r\n @ViewChild(\"AdresseKodeNextButton\", { read: ElementRef })\r\n public adresseKodeNextButton: ElementRef;\r\n\r\n public formGroup: FormGroup>;\r\n public samtykkeTekst$: Observable;\r\n public valueChanges$: Observable;\r\n public initialiserer$ = this.service.initialiserer$.pipe(\r\n delay(200),\r\n startWith({ processing: true }),\r\n map((i) => i.processing)\r\n );\r\n public tilmeldinger$ = this.service.tilmeldinger$;\r\n public eforsyningIndstilling$ = this.service.eforsyningIndstilling$;\r\n public validererAdresseKode$ = this.service.validererAdresseKode$;\r\n public tilmelder$ = this.service.tilmelder$;\r\n public afmelder$ = this.service.afmelder$;\r\n\r\n private destroy$ = new Subject();\r\n\r\n constructor(private readonly service: EBoksTilmeldingService, private readonly dialog: DffInfoDialog) {}\r\n\r\n public get identitetFormGroup(): FormGroup> {\r\n return this.formGroup.get(\"identitet\") as FormGroup>;\r\n }\r\n\r\n public get samtykkeFormGroup(): FormGroup> {\r\n return this.formGroup.get(\"samtykke\") as FormGroup>;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.formGroup = EBoksTilmeldingFormBuilder.eBoksTilmeldingToFormGroup(opretTomEBoksTilmelding(), this.disabled);\r\n const tilmeldt$ = this.tilmelder$.pipe(filter((t) => t.justProcessed));\r\n const samtykkeTekstAccepteret$ = this.formGroup\r\n .get(\"samtykke.samtykkeTekstAccepteret\")\r\n .valueChanges.pipe(filter((accepteret: boolean) => accepteret));\r\n tilmeldt$.pipe(takeUntil(this.destroy$)).subscribe(() => this.tilmeldUdfoert());\r\n this.samtykkeTekst$ = combineLatest([this.eforsyningIndstilling$, valueChanges(this.formGroup)]).pipe(\r\n map(([e]) => this.genererSamtykkeTekst(e))\r\n );\r\n\r\n // Når man har indtastet adressekode, trykket søg og fundet en adresse, skifter vi fokus til 'Næste'-knappen\r\n this.validererAdresseKode$\r\n .pipe(\r\n filter((r) => r.processed),\r\n debounceTime(0),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(() => this.adresseKodeNextButton.nativeElement.focus());\r\n\r\n // Når man har checket af i 'Accepter samtykke' scroller vi ned til 'Udfør'-knappen\r\n samtykkeTekstAccepteret$.pipe(takeUntil(this.destroy$)).subscribe(() => this.scrollIntoView(this.bottom, \"end\"));\r\n\r\n if (!this.afkraevAdressekode) {\r\n this.service.hentTilmeldinger();\r\n }\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (this.formGroup && changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\r\n EBoksTilmeldingFormBuilder.updateDisabled(this.formGroup, changes.disabled.currentValue);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n public onAdresseKodeChange(adresseKode: string): void {\r\n this.service.validerAdresseKode(adresseKode);\r\n }\r\n\r\n public onAfmeld(tilmelding: EBoksTilmelding): void {\r\n this.service.afmeld(tilmelding);\r\n }\r\n\r\n public onTilmeld(): void {\r\n this.samtykkeTekst$.pipe(first()).subscribe((samtykkeTekst) => {\r\n this.service.tilmeld(EBoksTilmeldingFormBuilder.formGroupToEBoksTilmelding(this.formGroup, samtykkeTekst));\r\n });\r\n }\r\n\r\n public async tilmeldUdfoert(): Promise {\r\n this.scrollIntoView(this.top, \"start\");\r\n timer(200)\r\n .pipe(first(), takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.stepper.selectedIndex = 0;\r\n this.afkraevAdressekode = false;\r\n this.formGroup.reset({ identitet: { type: 0 } });\r\n });\r\n await this.dialog.success(\"\", \"Tak for din tilmelding til digital post\").toPromise();\r\n this.tilmeldt.emit();\r\n }\r\n\r\n private genererSamtykkeTekst(eforsyningIndstilling: EforsyningIndstilling): string {\r\n const firmaNavn =\r\n (eforsyningIndstilling && eforsyningIndstilling.firmaInfo && eforsyningIndstilling.firmaInfo.firmaNavn) || \"{NAVN}\";\r\n const telefon =\r\n (eforsyningIndstilling && eforsyningIndstilling.firmaInfo && eforsyningIndstilling.firmaInfo.telefon) || \"{TELEFON}\";\r\n const erPrivatperson = this.formGroup.get(\"identitet.type\").value === 0;\r\n const cprNummer = erPrivatperson ? this.formGroup.get(\"identitet.person.cprNummer\").value : \"\";\r\n const cvrNummer = erPrivatperson ? \"\" : this.formGroup.get(\"identitet.virksomhed.cvrNummer\").value;\r\n const pNummer = erPrivatperson ? \"\" : this.formGroup.get(\"identitet.virksomhed.pNummer\").value;\r\n return opretSamtykkeTekst({ firmaNavn, telefon, cprNummer, cvrNummer, pNummer });\r\n }\r\n\r\n private scrollIntoView(element: ElementRef, block: \"start\" | \"end\"): void {\r\n scrollIntoView(element.nativeElement, {\r\n behavior: \"smooth\",\r\n block,\r\n inline: \"nearest\",\r\n scrollMode: \"if-needed\"\r\n });\r\n }\r\n}\r\n","
\r\n@if (!(initialiserer$ | async)) {\r\n \r\n \r\n \r\n \r\n @if (afkraevAdressekode && (validererAdresseKode$ | async); as adresseKodeStatus) {\r\n \r\n Indtast din to-delte kode\r\n
\r\n \r\n
\r\n \r\n Næste\r\n \r\n
\r\n \r\n \r\n }\r\n @if ((tilmeldinger$ | async).length) {\r\n \r\n Eksisterende tilmeldinger\r\n
\r\n \r\n
\r\n \r\n Tilmeld flere\r\n \r\n
\r\n
\r\n
\r\n }\r\n \r\n {{ stepIdentitet.title }}\r\n
\r\n \r\n
\r\n \r\n Næste\r\n \r\n
\r\n \r\n
\r\n \r\n Afgiv dit samtykke\r\n @if (tilmelder$ | async; as tilmelder) {\r\n
\r\n \r\n @if (tilmelder.error) {\r\n
{{ tilmelder.error }}
\r\n }\r\n
\r\n Godkend\r\n
\r\n \r\n }\r\n
\r\n
\r\n } @else {\r\n \r\n }\r\n
\r\n\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\n\r\nimport { Subject } from \"rxjs\";\r\nimport { distinctUntilChanged, map, takeUntil } from \"rxjs/operators\";\r\n\r\nimport { Processing } from \"@dffedb/rxjs\";\r\n\r\nimport { Adresse, AdresseFormatter } from \"../../../../../adresse\";\r\nimport { ValidererAdresseKodeResult } from \"../../../model/validerer-adresse-kode-result\";\r\nimport { EBoksAdressekodeControls, EBoksAdressekodeFormBuilder } from \"../../../shared/e-boks-adressekode.form-builder\";\r\n\r\n@Component({\r\n selector: \"step-adresse-kode\",\r\n templateUrl: \"./step-adresse-kode.component.html\",\r\n styleUrls: [\"./step-adresse-kode.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class StepAdresseKodeComponent implements OnInit, OnDestroy, OnChanges {\r\n @Input()\r\n public disabled = false;\r\n\r\n @Input()\r\n public adresseKodeStatus: Processing;\r\n\r\n @Output()\r\n public adresseKodeChange = new EventEmitter();\r\n\r\n public formGroup: FormGroup;\r\n\r\n private destroy$ = new Subject();\r\n\r\n constructor(private readonly adresseFormatter: AdresseFormatter) {}\r\n\r\n public ngOnInit(): void {\r\n this.formGroup = EBoksAdressekodeFormBuilder.opretAdressekodeFormGroup(this.disabled);\r\n this.formGroup\r\n .get(\"kode\")\r\n .valueChanges.pipe(\r\n takeUntil(this.destroy$),\r\n map((v: string) => v),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(() => this.adresseKodeChange.emit(\"\"));\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (this.formGroup && changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\r\n EBoksAdressekodeFormBuilder.updateDisabled(this.formGroup, changes.disabled.currentValue);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n public onSoeg(value: any): void {\r\n this.adresseKodeChange.emit(this.formGroup.get(\"kode\").value);\r\n }\r\n\r\n public formatterAdresse(adresse: Partial): string {\r\n return this.adresseFormatter.formatter(adresse);\r\n }\r\n}\r\n","
\r\n
\r\n \r\n Kode\r\n \r\n \r\n \r\n Find mig\r\n \r\n @if (adresseKodeStatus.value) {\r\n
\r\n Adresse:\r\n
\r\n
\r\n }\r\n @if (adresseKodeStatus.error) {\r\n
Du har indtastet en ugyldig kode
\r\n }\r\n @if (adresseKodeStatus.processing) {\r\n \r\n }\r\n
\r\n
\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \"@angular/core\";\r\n\r\nimport { from } from \"rxjs\";\r\n\r\nimport { Processing } from \"@dffedb/rxjs\";\r\nimport { DffSimpelDialog } from \"@dffedb/ui\";\r\n\r\nimport { EBoksTilmelding } from \"../../../model/e-boks-tilmelding.model\";\r\nimport { formatterCprNummer, formatterCvrNummer, formatterPNummer } from \"../../../shared/e-boks-util\";\r\n\r\n@Component({\r\n selector: \"step-eksisterende-tilmeldinger\",\r\n templateUrl: \"./step-eksisterende-tilmeldinger.component.html\",\r\n styleUrls: [\"./step-eksisterende-tilmeldinger.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class StepEksisterendeTilmeldingerComponent {\r\n @Input()\r\n public tilmeldinger: EBoksTilmelding[];\r\n\r\n @Output()\r\n public afmeld = new EventEmitter();\r\n\r\n @Input()\r\n public afmeldStatus: Processing;\r\n\r\n @Input()\r\n public disabled = false;\r\n\r\n constructor(private readonly dialog: DffSimpelDialog) {}\r\n\r\n public onAfmeld(event: Event, tilmelding: EBoksTilmelding): void {\r\n event.stopPropagation();\r\n from(this.dialog.openJaNej(\"Afmeld e-Boks\", \"Ønsker du at afmelde post via e-Boks?\")).subscribe((result) => {\r\n if (result) {\r\n this.afmeld.emit(tilmelding);\r\n }\r\n });\r\n }\r\n\r\n public formatterCprNummer(tilmelding: EBoksTilmelding): string {\r\n return formatterCprNummer(tilmelding.cprNummer);\r\n }\r\n\r\n public formatterCvrNummer(tilmelding: EBoksTilmelding): string {\r\n return formatterCvrNummer(tilmelding.cvrNummer);\r\n }\r\n\r\n public formatterPNummer(tilmelding: EBoksTilmelding): string {\r\n return formatterPNummer(tilmelding.pNummer);\r\n }\r\n}\r\n","
\r\n \r\n @for (tilmelding of tilmeldinger; track tilmelding; let i = $index) {\r\n \r\n \r\n \r\n @if (tilmelding.cprNummer) {\r\n
CPR-nummer{{ formatterCprNummer(tilmelding) }}
\r\n }\r\n @if (tilmelding.cvrNummer) {\r\n
CVR-nummer{{ formatterCvrNummer(tilmelding) }}
\r\n }\r\n @if (tilmelding.pNummer) {\r\n
P-nummer{{ formatterPNummer(tilmelding) }}
\r\n }\r\n
\r\n
\r\n \r\n @if (afmeldStatus.processing && afmeldStatus.value?.id === tilmelding.id) {\r\n \r\n }\r\n SLET\r\n \r\n
\r\n
\r\n
\r\n
\r\n }\r\n
\r\n @if (afmeldStatus.error) {\r\n
\r\n {{ afmeldStatus.error }}\r\n
\r\n }\r\n
\r\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\n\r\nimport { ControlsOf } from \"@dffedb/forms\";\r\n\r\nimport { EBoksTilmeldingIdentitetModel } from \"../../../shared/e-boks-tilmelding.form-builder\";\r\n\r\n@Component({\r\n selector: \"step-identitet\",\r\n templateUrl: \"./step-identitet.component.html\",\r\n styleUrls: [\"./step-identitet.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class StepIdentitetComponent {\r\n @Input()\r\n public formGroup: FormGroup>;\r\n\r\n @Input()\r\n public revealOnFocus: any;\r\n\r\n public get tabDisabled(): boolean {\r\n return this.formGroup.get(\"type\").disabled;\r\n }\r\n\r\n public get title(): string {\r\n return this.selectedIndex === 0 ? \"Indtast dit CPR-nummer\" : \"Indtast CVR- og eventuelt P-nummer\";\r\n }\r\n\r\n private get selectedIndex(): number {\r\n return this.formGroup.get(\"type\").value;\r\n }\r\n\r\n public onSelectedTabChange(tabIndex: number): void {\r\n this.formGroup.get(\"type\").setValue(tabIndex);\r\n }\r\n\r\n public skalGentagCprNummerFejlVises(): boolean {\r\n if (this.formGroup.get(\"person.cprNummer\").invalid) {\r\n return false;\r\n }\r\n const value = this.formGroup.get(\"person.cprNummerGentag\").value;\r\n const errors = this.formGroup.get(\"person.cprNummerGentag\").errors;\r\n return value && value.length === 10 && errors && !!errors.mustMatch;\r\n }\r\n}\r\n","\r\n \r\n \r\n CPR-nummer\r\n \r\n \r\n
\r\n \r\n Gentag CPR-nummer\r\n \r\n \r\n @if (skalGentagCprNummerFejlVises()) {\r\n Du har indtastet to forskellige CPR-numre\r\n }\r\n
\r\n
\r\n \r\n
\r\n \r\n CVR-nummer\r\n \r\n DK \r\n \r\n
\r\n
\r\n \r\n P-nummer\r\n \r\n \r\n
\r\n
\r\n \r\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\n\r\nimport { ControlsOf } from \"@dffedb/forms\";\r\n\r\nimport { EBoksTilmeldingSamtykkeModel } from \"../../../shared/e-boks-tilmelding.form-builder\";\r\n\r\n@Component({\r\n selector: \"step-samtykke\",\r\n templateUrl: \"./step-samtykke.component.html\",\r\n styleUrls: [\"./step-samtykke.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class StepSamtykkeComponent {\r\n @Input()\r\n public formGroup: FormGroup>;\r\n\r\n @Input()\r\n public samtykkeTekst: string;\r\n}\r\n","
\r\n Jeg giver mit samtykke til følgende vilkår:\r\n
\r\n
\r\n","export class EBoksTilmelding {\r\n public id: number;\r\n public cprNummer: string;\r\n public cvrNummer: string;\r\n public pNummer: string;\r\n public samtykkeTekst: string;\r\n}\r\n","import { Adresse } from \"@e-forsyning/common/adresse\";\r\n\r\nexport class ValidererAdresseKodeResult {\r\n public adresse: Partial;\r\n public adresseKode: string;\r\n}\r\n","import { AbstractControl, FormControl, FormGroup, Validators } from \"@angular/forms\";\r\n\r\nimport { ControlsOf } from \"@dffedb/forms\";\r\n\r\nexport interface EBoksAdressekodeModel {\r\n kode: string;\r\n valid: boolean;\r\n}\r\n\r\nexport type EBoksAdressekodeControls = ControlsOf;\r\n\r\nexport class EBoksAdressekodeFormBuilder {\r\n public static opretAdressekodeFormGroup(disabled: boolean): FormGroup {\r\n const result = new FormGroup({\r\n kode: new FormControl(\r\n // kode består af 6 cifret checksum + 6-9 cifret adresseNr\r\n null,\r\n [Validators.required, Validators.minLength(12), Validators.maxLength(15)]\r\n ),\r\n valid: new FormControl(false, [Validators.requiredTrue])\r\n });\r\n this.updateDisabled(result, disabled);\r\n return result;\r\n }\r\n\r\n public static updateDisabled(formGroup: FormGroup, disabled: boolean): void {\r\n this.setDisabled(formGroup.get(\"kode\"), disabled);\r\n }\r\n\r\n private static setDisabled(control: AbstractControl, disabled: boolean): void {\r\n if (disabled) {\r\n control.disable();\r\n } else {\r\n control.enable();\r\n }\r\n }\r\n}\r\n","import { AbstractControl, FormControl, FormGroup, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\nimport { ControlsOf, cprNummerValidator, cvrNummerValidator, mustMatchValidator, pNummerValidator } from \"@dffedb/forms\";\r\n\r\nimport { EBoksTilmelding } from \"../model/e-boks-tilmelding.model\";\r\n\r\nexport interface EBoksTilmeldingIdentitetModel {\r\n type: number;\r\n person: {\r\n cprNummer: string;\r\n cprNummerGentag: string;\r\n };\r\n virksomhed: {\r\n cvrNummer: string;\r\n pNummer: string;\r\n };\r\n}\r\n\r\nexport interface EBoksTilmeldingSamtykkeModel {\r\n samtykkeTekstAccepteret: boolean;\r\n}\r\n\r\nexport interface EBoksTilmeldingModel {\r\n id: number;\r\n identitet: EBoksTilmeldingIdentitetModel;\r\n samtykke: EBoksTilmeldingSamtykkeModel;\r\n}\r\n\r\nexport class EBoksTilmeldingFormBuilder {\r\n public static eBoksTilmeldingToFormGroup(tilmelding: EBoksTilmelding, disabled: boolean): FormGroup> {\r\n const result = new FormGroup>({\r\n id: new FormControl(tilmelding.id),\r\n identitet: new FormGroup({\r\n type: new FormControl(this.beregnIdentitetType(tilmelding)),\r\n person: new FormGroup({\r\n cprNummer: new FormControl(tilmelding.cprNummer),\r\n cprNummerGentag: new FormControl(\"\")\r\n }),\r\n virksomhed: new FormGroup({\r\n cvrNummer: new FormControl(tilmelding.cvrNummer),\r\n pNummer: new FormControl(tilmelding.pNummer)\r\n })\r\n }),\r\n samtykke: new FormGroup({\r\n samtykkeTekstAccepteret: new FormControl(false, [Validators.requiredTrue])\r\n })\r\n });\r\n\r\n this.updateDisabled(result, disabled);\r\n this.updateStatus(result);\r\n result.valueChanges.subscribe(() => this.updateStatus(result));\r\n\r\n return result;\r\n }\r\n\r\n public static updateDisabled(formGroup: FormGroup>, disabled: boolean): void {\r\n const id = formGroup.get(\"id\").value;\r\n this.setDisabled(formGroup.get(\"identitet.type\"), disabled);\r\n this.setDisabled(formGroup.get(\"identitet.person.cprNummer\"), !!id || disabled);\r\n this.setDisabled(formGroup.get(\"identitet.person.cprNummerGentag\"), !!id || disabled);\r\n this.setDisabled(formGroup.get(\"identitet.virksomhed.cvrNummer\"), !!id || disabled);\r\n this.setDisabled(formGroup.get(\"identitet.virksomhed.pNummer\"), !!id || disabled);\r\n this.setDisabled(formGroup.get(\"samtykke.samtykkeTekstAccepteret\"), disabled);\r\n }\r\n\r\n public static formGroupToEBoksTilmelding(\r\n formGroup: FormGroup>,\r\n samtykkeTekst: string\r\n ): EBoksTilmelding {\r\n const type = +formGroup.get(\"identitet.type\").value;\r\n const result: EBoksTilmelding = {\r\n id: +formGroup.get(\"id\").value,\r\n cprNummer: type === 0 ? formGroup.get(\"identitet.person.cprNummer\").value : null,\r\n cvrNummer: type === 1 ? formGroup.get(\"identitet.virksomhed.cvrNummer\").value : null,\r\n pNummer: type === 1 ? formGroup.get(\"identitet.virksomhed.pNummer\").value : null,\r\n samtykkeTekst\r\n };\r\n return result;\r\n }\r\n\r\n private static setDisabled(control: AbstractControl, disabled: boolean): void {\r\n if (disabled) {\r\n control.disable();\r\n } else {\r\n control.enable();\r\n }\r\n }\r\n\r\n private static beregnIdentitetType(tilmelding: EBoksTilmelding): number {\r\n return tilmelding.cvrNummer ? 1 : 0;\r\n }\r\n\r\n private static updateStatus(formGroup: FormGroup>): void {\r\n const cprNummerValidators = [Validators.required, Validators.minLength(10), Validators.maxLength(10), cprNummerValidator()];\r\n const cprNummerGentagValidators = [mustMatchValidator(\"cprNummer\")];\r\n const cvrNummerValidators = [Validators.required, Validators.minLength(8), Validators.maxLength(8), cvrNummerValidator()];\r\n const pNummerValidators = [Validators.minLength(10), Validators.maxLength(10), pNummerValidator()];\r\n const identitetType = formGroup.get(\"identitet.type\").value;\r\n const erPrivatPerson = identitetType === 0;\r\n this.setValidators(formGroup.get(\"identitet.person.cprNummer\"), erPrivatPerson ? cprNummerValidators : []);\r\n this.setValidators(formGroup.get(\"identitet.person.cprNummerGentag\"), erPrivatPerson ? cprNummerGentagValidators : []);\r\n this.setValidators(formGroup.get(\"identitet.virksomhed.cvrNummer\"), erPrivatPerson ? [] : cvrNummerValidators);\r\n this.setValidators(formGroup.get(\"identitet.virksomhed.pNummer\"), erPrivatPerson ? [] : pNummerValidators);\r\n }\r\n\r\n private static setValidators(control: AbstractControl, validators: ValidatorFn[]): void {\r\n control.setValidators(validators);\r\n control.updateValueAndValidity({ emitEvent: false });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { dbToInt, dbToString, intToDb, stringToDb } from \"@dffedb/util\";\r\nimport { Adresse, AdresseMapper } from \"@e-forsyning/common/adresse\";\r\n\r\nimport { EBoksTilmelding } from \"../model/e-boks-tilmelding.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EBoksTilmeldingMapper {\r\n constructor(private readonly adresseMapper: AdresseMapper) {}\r\n\r\n public dtoToEBoksTilmeldinger(data: any): EBoksTilmelding[] {\r\n data = data || [];\r\n const result = data.map((d: any) => this.dtoToEBoksTilmelding(d));\r\n return result;\r\n }\r\n\r\n public dtoToEBoksTilmelding(data: any): EBoksTilmelding {\r\n data = data || {};\r\n const result: EBoksTilmelding = {\r\n id: dbToInt(data.id),\r\n cprNummer: dbToString(data.cprNummer),\r\n cvrNummer: dbToString(data.cvrNummer),\r\n pNummer: dbToString(data.pNummer),\r\n samtykkeTekst: dbToString(data.samtykkeTekst)\r\n };\r\n return result;\r\n }\r\n\r\n public dtoToAdresse(data: any): Adresse {\r\n return this.adresseMapper.dtoToAdresse(data);\r\n }\r\n\r\n public eboksTilmeldingToDto(tilmelding: EBoksTilmelding): any {\r\n // Fjern linjeskift, da de ikke spiller så godt sammen med JSON\r\n const samtykkeTekst = (tilmelding.samtykkeTekst || \"\").replace(/\\n+/g, \"\");\r\n const result = {\r\n id: intToDb(tilmelding.id),\r\n cprNummer: stringToDb(tilmelding.cprNummer),\r\n cvrNummer: stringToDb(tilmelding.cvrNummer),\r\n pNummer: stringToDb(tilmelding.pNummer),\r\n samtykkeTekst: stringToDb(samtykkeTekst)\r\n };\r\n return result;\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable, of, throwError } from \"rxjs\";\r\nimport { catchError, map, mapTo, shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { Adresse } from \"@e-forsyning/common/adresse\";\r\nimport { InstallationHttpClient, ParametreForAktuelleInstallation, UmbracoHttpClient } from \"@e-forsyning/common/http\";\r\nimport { EforsyningIndstilling, UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { EBoksIndstillinger } from \"../model/e-boks-indstillinger.model\";\r\nimport { EBoksTilmelding } from \"../model/e-boks-tilmelding.model\";\r\nimport { EBoksTilmeldingMapper } from \"./e-boks-tilmelding.mapper\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EBoksTilmeldingRepository {\r\n private eforsyningIndstillingCache = new Map>();\r\n\r\n constructor(\r\n private readonly httpClient: HttpClient,\r\n private readonly umbracoHttpClient: UmbracoHttpClient,\r\n private readonly appServerHttpClient: InstallationHttpClient,\r\n private readonly indstillinger: UmbracoIndstillingerObserver,\r\n private readonly mapper: EBoksTilmeldingMapper\r\n ) {}\r\n\r\n public hentTilmeldinger(): Observable {\r\n return this.appServerHttpClient\r\n .get(\"api/hentEBoksTilmeldinger\", ParametreForAktuelleInstallation.true)\r\n .pipe(map((data) => this.mapper.dtoToEBoksTilmeldinger(data)));\r\n }\r\n\r\n public opretTilmelding(tilmelding: EBoksTilmelding): Observable {\r\n return this.appServerHttpClient\r\n .post(\"api/opretEBoksTilmelding\", this.mapper.eboksTilmeldingToDto(tilmelding), ParametreForAktuelleInstallation.true)\r\n .pipe(mapTo(tilmelding));\r\n }\r\n\r\n public fjernTilmelding(tilmelding: EBoksTilmelding): Observable {\r\n return this.appServerHttpClient\r\n .post(\"api/sletEBoksTilmelding\", this.mapper.eboksTilmeldingToDto(tilmelding), ParametreForAktuelleInstallation.true)\r\n .pipe(mapTo(null));\r\n }\r\n\r\n public hentTilmeldingerMedAdresseKode(adresseKode: string): Observable {\r\n return this.hentUrl(`HentEBoksTilmeldingerMedAdressekode`, adresseKode).pipe(\r\n switchMap((url) => this.httpClient.get(url)),\r\n map((data) => this.mapper.dtoToEBoksTilmeldinger(data))\r\n );\r\n }\r\n\r\n public opretTilmeldingMedAdresseKode(adresseKode: string, tilmelding: EBoksTilmelding): Observable {\r\n return this.hentUrl(`OpretEBoksTilmeldingMedAdressekode`, adresseKode).pipe(\r\n switchMap((url) => this.httpClient.post(url, this.mapper.eboksTilmeldingToDto(tilmelding))),\r\n mapTo(null)\r\n );\r\n }\r\n\r\n public fjernTilmeldingMedAdresseKode(adresseKode: string, tilmelding: EBoksTilmelding): Observable {\r\n return this.hentUrl(`SletEBoksTilmeldingMedAdressekode`, adresseKode).pipe(\r\n switchMap((url) => this.httpClient.post(url, this.mapper.eboksTilmeldingToDto(tilmelding))),\r\n mapTo(null)\r\n );\r\n }\r\n\r\n public hentAdresseMedAdresseKode(adresseKode: string): Observable {\r\n return this.hentUrl(`HentAdresseMedAdressekode`, adresseKode).pipe(\r\n switchMap((url) => this.httpClient.get(url)),\r\n map((data) => this.mapper.dtoToAdresse(data))\r\n );\r\n }\r\n\r\n public hentEforsyningIndstillingMedAdresseKode(adresseKode: string): Observable {\r\n if (this.eforsyningIndstillingCache.has(adresseKode)) {\r\n return this.eforsyningIndstillingCache.get(adresseKode);\r\n }\r\n const result$ = this.indstillinger.valueChanges.pipe(\r\n switchMap((indstillinger) => {\r\n if (!indstillinger.eforsyninger.length) {\r\n return throwError(new Error(\"Indstillinger mangler angivelse af E|Forsyninger\"));\r\n }\r\n return combineLatest(\r\n indstillinger.eforsyninger.map((e) =>\r\n this.httpClient.get(`${e.appServerUrl}api/hentAdresseMedAdressekode/adressekode/${adresseKode}`).pipe(\r\n mapTo(e),\r\n catchError(() => of(null as EforsyningIndstilling))\r\n )\r\n )\r\n );\r\n }),\r\n shareReplay(),\r\n map((e) => e.find((ee) => !!ee)),\r\n switchMap((e) => (e ? of(e) : throwError(new Error(`Kan ikke finde forsyning tilhørende adressekoden ${adresseKode}`))))\r\n );\r\n this.eforsyningIndstillingCache.set(adresseKode, result$);\r\n return result$;\r\n }\r\n\r\n public hentIndstillinger(): Observable {\r\n return this.umbracoHttpClient.hentSideData(\"mine-oplysninger\").pipe(\r\n map((value) => ({\r\n visEBoksKampagne: value.visEBoksKampagne === \"True\",\r\n visEBoksSektion: value.visEBoksSektion === \"True\"\r\n })),\r\n shareReplay()\r\n );\r\n }\r\n\r\n private hentUrl(relativeUrl: string, adresseKode: string): Observable {\r\n return this.hentAppServerUrl(adresseKode).pipe(map((url) => `${url}${relativeUrl}/adressekode/${adresseKode}`));\r\n }\r\n\r\n private hentAppServerUrl(adresseKode: string): Observable {\r\n return this.hentEforsyningIndstillingMedAdresseKode(adresseKode).pipe(map((e) => `${e.appServerUrl}api/`));\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { BehaviorSubject, combineLatest, Observable } from \"rxjs\";\r\nimport { filter, first, map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { ProcessingSubject } from \"@dffedb/rxjs\";\r\nimport { EforsyningIndstilling, UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { EBoksIndstillinger } from \"../model/e-boks-indstillinger.model\";\r\nimport { EBoksTilmelding } from \"../model/e-boks-tilmelding.model\";\r\nimport { ValidererAdresseKodeResult } from \"../model/validerer-adresse-kode-result\";\r\nimport { EBoksTilmeldingRepository } from \"./e-boks-tilmelding.repository\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EBoksTilmeldingService {\r\n private tilmeldingerSubject = new BehaviorSubject([]);\r\n private eforsyningIndstillingSubject = new BehaviorSubject(null);\r\n private tilmelderSubject = new ProcessingSubject();\r\n private initialisererSubject = new ProcessingSubject();\r\n private afmelderSubject = new ProcessingSubject();\r\n private validererAdresseKodeSubject = new ProcessingSubject();\r\n\r\n public tilmeldinger$ = this.tilmeldingerSubject.asObservable();\r\n public eforsyningIndstilling$ = this.eforsyningIndstillingSubject.asObservable();\r\n public tilmelder$ = this.tilmelderSubject.asObservable();\r\n public initialiserer$ = this.initialisererSubject.asObservable();\r\n public afmelder$ = this.afmelderSubject.asObservable();\r\n public validererAdresseKode$ = this.validererAdresseKodeSubject.asObservable();\r\n\r\n constructor(private readonly repository: EBoksTilmeldingRepository, private readonly indstillinger: UmbracoIndstillingerObserver) {\r\n this.initialiserEforsyningIndstilling();\r\n }\r\n\r\n public hentTilmeldinger(): void {\r\n this.initialisererSubject.processing(null);\r\n const tilmeldinger$ = this.internalHentTilmeldinger();\r\n tilmeldinger$.pipe(first()).subscribe(\r\n (tilmeldinger) => {\r\n this.initialisererSubject.processed(null);\r\n this.tilmeldingerSubject.next(tilmeldinger);\r\n },\r\n (error) => {\r\n this.initialisererSubject.errored(error);\r\n console.error(error);\r\n }\r\n );\r\n }\r\n\r\n public tilmeld(tilmelding: EBoksTilmelding): void {\r\n this.afmelderSubject.idle(null); // Fjern eventuelle fejlbeskeder opstået ved afmelding\r\n this.tilmelderSubject.processing(tilmelding);\r\n const result = this.internalTilmeld(tilmelding).pipe(\r\n first(),\r\n switchMap(() => this.internalHentTilmeldinger())\r\n );\r\n result.subscribe(\r\n (tilmeldinger) => {\r\n this.tilmeldingerSubject.next(tilmeldinger);\r\n this.tilmelderSubject.processed(tilmelding);\r\n },\r\n (error) => this.tilmelderSubject.errored(error)\r\n );\r\n }\r\n\r\n public afmeld(tilmelding: EBoksTilmelding): void {\r\n this.afmelderSubject.processing(tilmelding);\r\n const result = this.internalAfmeld(tilmelding).pipe(\r\n first(),\r\n switchMap(() => this.internalHentTilmeldinger())\r\n );\r\n result.subscribe(\r\n (tilmeldinger) => {\r\n this.tilmeldingerSubject.next(tilmeldinger);\r\n this.afmelderSubject.processed(tilmelding);\r\n },\r\n (error) => this.afmelderSubject.errored(error)\r\n );\r\n }\r\n\r\n public validerAdresseKode(adresseKode: string): void {\r\n this.tilmeldingerSubject.next([]);\r\n if (adresseKode.length < 12) {\r\n this.validererAdresseKodeSubject.idle(null);\r\n return;\r\n }\r\n this.validererAdresseKodeSubject.processing({ adresseKode, adresse: null });\r\n combineLatest([\r\n this.repository.hentTilmeldingerMedAdresseKode(adresseKode),\r\n this.repository.hentAdresseMedAdresseKode(adresseKode),\r\n this.repository.hentEforsyningIndstillingMedAdresseKode(adresseKode)\r\n ])\r\n .pipe(first())\r\n .subscribe(\r\n ([tilmeldinger, adresse, eforsyningIndstilling]) => {\r\n this.tilmeldingerSubject.next(tilmeldinger);\r\n this.eforsyningIndstillingSubject.next(eforsyningIndstilling);\r\n this.validererAdresseKodeSubject.processed({ adresseKode, adresse });\r\n },\r\n (error) => this.validererAdresseKodeSubject.errored(error)\r\n );\r\n }\r\n\r\n public hentIndstillinger(): Observable {\r\n return this.repository.hentIndstillinger();\r\n }\r\n\r\n private internalHentTilmeldinger(): Observable {\r\n return this.hentAdresseKode().pipe(\r\n switchMap((adresseKode) =>\r\n adresseKode ? this.repository.hentTilmeldingerMedAdresseKode(adresseKode) : this.repository.hentTilmeldinger()\r\n )\r\n );\r\n }\r\n\r\n private internalTilmeld(tilmelding: EBoksTilmelding): Observable {\r\n return this.hentAdresseKode().pipe(\r\n switchMap((adresseKode) =>\r\n adresseKode\r\n ? this.repository.opretTilmeldingMedAdresseKode(adresseKode, tilmelding)\r\n : this.repository.opretTilmelding(tilmelding)\r\n )\r\n );\r\n }\r\n\r\n private internalAfmeld(tilmelding: EBoksTilmelding): Observable {\r\n return this.hentAdresseKode().pipe(\r\n switchMap((adresseKode) =>\r\n adresseKode\r\n ? this.repository.fjernTilmeldingMedAdresseKode(adresseKode, tilmelding)\r\n : this.repository.fjernTilmelding(tilmelding)\r\n )\r\n );\r\n }\r\n\r\n private hentAdresseKode(): Observable {\r\n return this.validererAdresseKodeSubject.asObservable().pipe(map((value) => (value.value && value.value.adresseKode) || \"\"));\r\n }\r\n\r\n private initialiserEforsyningIndstilling(): void {\r\n // Hvis man kører fra E|Forsyning, kender vi allerede EforsyningIndstilling og kan sætte dem med det samme.\r\n this.indstillinger.valueChanges\r\n .pipe(filter((i) => i && !!i.aktuelEforsyning))\r\n .pipe(first())\r\n .subscribe((i) => this.eforsyningIndstillingSubject.next(i.aktuelEforsyning));\r\n }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\nimport { filter, takeUntil } from \"rxjs/operators\";\r\n\r\nimport { EBoksTilmelding } from \"../model/e-boks-tilmelding.model\";\r\n\r\nexport function maskCprNummer(value: string): string {\r\n return (value && value.slice(0, 4) + \"******\") || \"\";\r\n}\r\n\r\nexport function formatterCprNummer(value: string): string {\r\n return (value && value.replace(/(.{6})(.{4})/, \"$1-$2\")) || \"\";\r\n}\r\n\r\nexport function formatterCvrNummer(value: string): string {\r\n return (value && `DK ${value}`) || \"\";\r\n}\r\n\r\nexport function formatterCprEllerCvrNummer(value: string): string {\r\n value = value || \"\";\r\n return value.length === 10 ? formatterCprNummer(value) : formatterCvrNummer(value);\r\n}\r\n\r\nexport function formatterPNummer(value: string): string {\r\n return value;\r\n}\r\n\r\nexport function opretTomEBoksTilmelding(): EBoksTilmelding {\r\n const tilmelding: EBoksTilmelding = {\r\n id: null,\r\n cprNummer: null,\r\n cvrNummer: null,\r\n pNummer: null,\r\n samtykkeTekst: null\r\n };\r\n return tilmelding;\r\n}\r\n\r\nexport interface SamtykkeTekstData {\r\n firmaNavn: string;\r\n telefon: string;\r\n cprNummer: string;\r\n cvrNummer: string;\r\n pNummer: string;\r\n}\r\n\r\nexport function opretSamtykkeTekst(data: SamtykkeTekstData): string {\r\n const cprNummer = (data.cprNummer && `CPR-nummer: ${formatterCprNummer(maskCprNummer(data.cprNummer))}`) || \"\";\r\n const cvrNummer = (data.cvrNummer && `CVR-nummer: ${formatterCvrNummer(data.cvrNummer)}`) || \"\";\r\n const pNummer = (data.pNummer && `P-nummer: ${data.pNummer}`) || \"\";\r\n const samtykker = `${cprNummer}\\r\\n${cvrNummer}\\r\\n${pNummer}`.trim().replace(\"\\r\\n\", \"
\");\r\n const samtykkeTekstSkabelon = `\r\n

\r\n [FIRMANAVN] må bruge mit CPR- eller CVR-nummer til at sende mig breve i e-Boks,\r\n som jeg ellers ville modtage med brevomdeling.\r\n

\r\n

\r\n [SAMTYKKER]\r\n

\r\n

\r\n Betingelser:
\r\n Du har altid mulighed for at trække dit samtykke tilbage. Det kan du gøre ved at kontakte [FIRMANAVN] på telefon [TELEFON].\r\n

\r\n

\r\n [FIRMANAVN] bruger ikke dit CPR- eller CVR-nummer til markedsføring, og vi videregiver det ikke til andre.\r\n Alle medarbejdere ved [FIRMANAVN] er underlagt tavshedspligt. Se vores privatlivspolitik på vores hjemmeside.\r\n

\r\n

\r\n Du bekræfter, at dette samtykke er afgivet frivilligt, og at du er bekendt med dine rettigheder i forbindelse\r\n med afgivelse af samtykkeerklæringen: Samtykke skal, for at være gyldigt, være afgivet ud fra følgende kriterier:\r\n

\r\n
    \r\n
  • Samtykket skal være frivilligt, specifikt, informeret og utvetydigt
  • \r\n
  • Samtykket kan til enhver tid trækkes tilbage
  • \r\n
`;\r\n return samtykkeTekstSkabelon\r\n .replace(/\\[firmanavn\\]/gi, data.firmaNavn)\r\n .replace(/\\[telefon\\]/gi, data.telefon)\r\n .replace(/\\[samtykker\\]/gi, samtykker);\r\n}\r\n\r\n// Returnerer en observable, som reagerer ligesom formGroup.valueChanges\r\n// Fordelen frem for formGroup.valueChanges er, at observe() returnerer en observable, som husker sin sidste værdi.\r\nexport function valueChanges(control: AbstractControl): Observable {\r\n return toBehaviorObservable(control.valueChanges, control.value);\r\n}\r\n\r\n// toBehaviorObservable() bruges til at konvertere en Observable om til en ny Observable, som husker seneste submition.\r\n// Findes der mon nogle operatorer, som kan gøre dette?\r\nexport function toBehaviorObservable(observable: Observable, initialValue: T = null): Observable {\r\n const result = new BehaviorSubject(initialValue);\r\n observable.pipe(takeUntil(result.pipe(filter(() => result.closed)))).subscribe(\r\n (value) => result.next(value),\r\n (error) => result.error(error)\r\n );\r\n return result.asObservable();\r\n}\r\n","export * from \"./e-boks-tilmelding/e-boks-tilmelding.module\";\r\nexport * from \"./e-boks-tilmelding/e-boks-popup/e-boks-popup.service\";\r\nexport * from \"./e-boks-tilmelding/shared/e-boks-tilmelding.form-builder\";\r\nexport * from \"./e-boks-tilmelding/shared/e-boks-tilmelding.repository\";\r\nexport * from \"./e-boks-tilmelding/shared/e-boks-tilmelding.service\";\r\nexport * from \"./e-boks-tilmelding/model/e-boks-tilmelding.model\";\r\nexport * from \"./e-boks-tilmelding/model/validerer-adresse-kode-result\";\r\nexport * from \"./e-boks-tilmelding/e-boks-tilmelding/e-boks-tilmelding.component\";\r\nexport * from \"./e-boks-tilmelding/e-boks-tilmelding/steps/step-adresse-kode/step-adresse-kode.component\";\r\nexport * from \"./e-boks-tilmelding/e-boks-tilmelding/steps/step-eksisterende-tilmeldinger/step-eksisterende-tilmeldinger.component\";\r\nexport * from \"./e-boks-tilmelding/shared/e-boks-util\";\r\n","import { DOCUMENT } from \"@angular/common\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EforsyningMenuService {\r\n constructor(@Inject(DOCUMENT) private readonly document: Document) {}\r\n\r\n public init(): void {\r\n this.initialiserAutoLukVedMenuklik();\r\n }\r\n\r\n private initialiserAutoLukVedMenuklik(): void {\r\n const links = Array.from(this.document.querySelectorAll(\".nav-desktop .nav-item.leaf-node > a\"));\r\n links.forEach(link =>\r\n link.addEventListener(\"click\", () => {\r\n const parent = link.closest(\"li.level-0\");\r\n if (parent) {\r\n const divs = Array.from(parent.children).filter(e => e.matches(\"div\"));\r\n divs.forEach(div => div.parentElement.removeChild(div));\r\n setTimeout(() => {\r\n divs.forEach(div => parent.appendChild(div));\r\n }, 200);\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, Renderer2, ViewChild } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { AktuelBrugerObserver } from \"@e-forsyning/common/bruger\";\r\nimport { AktuelInstallationObserver } from \"@e-forsyning/common/installation\";\r\nimport { AktuelBrugersInstallationerObserver } from \"@e-forsyning/common/installation\";\r\n\r\nimport { EforsyningMenuForSidebarObserver } from \"../observers/eforsyning-menu-for-sidebar.observer\";\r\nimport { EforsyningSidenavMenuViewModel } from \"./eforsyning-sidenav-menu.view-model\";\r\n\r\n@Component({\r\n selector: \"eforsyning-sidenav-menu\",\r\n templateUrl: \"./eforsyning-sidenav-menu.component.html\",\r\n styleUrls: [\"./eforsyning-sidenav-menu.component.scss\"]\r\n})\r\nexport class EforsyningSidenavMenuComponent implements OnInit {\r\n public vm$: Observable;\r\n\r\n @Output()\r\n public itemClick = new EventEmitter();\r\n\r\n @Input()\r\n public visLoggetUdMenu = false;\r\n\r\n constructor(\r\n private readonly eforsyningSidebarMenuObserver: EforsyningMenuForSidebarObserver,\r\n private readonly aktuelBrugerObserver: AktuelBrugerObserver,\r\n private readonly aktuelBrugersInstallationerObserver: AktuelBrugersInstallationerObserver,\r\n private readonly aktuelInstallationObserver: AktuelInstallationObserver,\r\n private menu: ElementRef\r\n ) { }\r\n\r\n @ViewChild(\"dropdown\") public dropdown: ElementRef;\r\n @ViewChild(\"DffSidenavMenu\") DffSidenavMenu: ElementRef;\r\n\r\n @HostListener(\"keydown.arrowdown\", [\"$event\"]) onArrowDown(event: KeyboardEvent) {\r\n event.preventDefault();\r\n const focusableElementsNodeList = this.menu.nativeElement.querySelectorAll(\"button, [href], [tabindex]:not([tabindex='-1']\");\r\n const focusableElementsArray = Array.from(focusableElementsNodeList);\r\n const focusedElement = document.activeElement;\r\n const currentIndex = focusableElementsArray.indexOf(focusedElement);\r\n const nextIndex = (currentIndex + 1) % focusableElementsArray.length;\r\n const nextElement = focusableElementsArray[nextIndex] as HTMLElement;\r\n if (nextElement !== null) {\r\n nextElement.focus();\r\n }\r\n }\r\n\r\n @HostListener(\"keydown.arrowup\", [\"$event\"]) onArrowUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n const focusableElementsNodeList = this.menu.nativeElement.querySelectorAll(\"button, [href], [tabindex]:not([tabindex='-1']\");\r\n const focusableElementsArray = Array.from(focusableElementsNodeList);\r\n const focusedElement = document.activeElement;\r\n const currentIndex = focusableElementsArray.indexOf(focusedElement);\r\n const nextIndex = (currentIndex - 1) % focusableElementsArray.length;\r\n const prevElement = focusableElementsArray[nextIndex] as HTMLElement;\r\n\r\n if (currentIndex === 0) {\r\n const lastElement = focusableElementsArray[focusableElementsArray.length - 1] as HTMLElement;\r\n lastElement.focus();\r\n } else if (prevElement !== null) {\r\n prevElement.focus();\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n const menuItems$ = this.eforsyningSidebarMenuObserver.valueChanges;\r\n const aktuelBruger$ = this.aktuelBrugerObserver.valueChanges;\r\n const installationer$ = this.aktuelBrugersInstallationerObserver.valueChanges;\r\n const aktuelInstallation$ = this.aktuelInstallationObserver.valueChanges;\r\n this.vm$ = combineLatest([menuItems$, aktuelBruger$, installationer$, aktuelInstallation$]).pipe(\r\n map(([menuItems, aktuelBruger, installationer, aktuelInstallation]) => {\r\n const visMenu = !!aktuelBruger || this.visLoggetUdMenu;\r\n return {\r\n menuItems: visMenu ? menuItems : [],\r\n aktuelInstallation,\r\n visInstallationMenuItem: !!aktuelBruger,\r\n vaelgInstallationHref: installationer.length > 1 ? \"#/install-picker\" : \"\"\r\n };\r\n })\r\n );\r\n }\r\n}\r\n","@if (vm$ | async; as vm) {\r\n \r\n @if (vm.visInstallationMenuItem) {\r\n @if (vm.vaelgInstallationHref) {\r\n
  • \r\n \r\n @if (vm.aktuelInstallation?.adresse) {\r\n
    {{ vm.aktuelInstallation.adresse }}
    \r\n }\r\n @if (vm.aktuelInstallation?.maalerNr) {\r\n Måler: {{ vm.aktuelInstallation.maalerNr }}\r\n }\r\n @if (!vm.aktuelInstallation?.maalerNr) {\r\n Status: Passiv\r\n }\r\n @if (vm.vaelgInstallationHref) {\r\n SKIFT...\r\n }\r\n
    \r\n
  • \r\n } @else {\r\n
  • \r\n
    \r\n @if (vm.aktuelInstallation?.adresse) {\r\n {{ vm.aktuelInstallation.adresse }}\r\n }\r\n @if (vm.aktuelInstallation?.maalerNr) {\r\n Måler: {{ vm.aktuelInstallation.maalerNr }}\r\n }\r\n @if (!vm.aktuelInstallation?.maalerNr) {\r\n Status: Passiv\r\n }\r\n @if (vm.vaelgInstallationHref) {\r\n SKIFT...\r\n }\r\n
    \r\n
  • \r\n }\r\n }\r\n
    \r\n} @else {\r\n
    \r\n \r\n
    \r\n}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\n\r\nimport { MenuModule } from \"@dffedb/ui\";\r\n\r\nimport { EforsyningSidenavMenuComponent } from \"./eforsyning-sidenav-menu.component\";\r\n\r\n@NgModule({\r\n declarations: [EforsyningSidenavMenuComponent],\r\n imports: [CommonModule, MatFormFieldModule, MatSelectModule, MatProgressSpinnerModule, MenuModule],\r\n exports: [EforsyningSidenavMenuComponent]\r\n})\r\nexport class EforsyningSidenavMenuModule {}\r\n","import { Component, ElementRef, EventEmitter, HostListener, OnInit, Output } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { MenuItem } from \"@dffedb/ui\";\r\n\r\nimport { ForsyningWebMenuForSidebarObserver } from \"../observers/forsyning-web-menu-for-sidebar.observer\";\r\n\r\n@Component({\r\n selector: \"forsyningweb-sidenav-menu\",\r\n templateUrl: \"./forsyningweb-sidenav-menu.component.html\",\r\n styleUrls: [\"./forsyningweb-sidenav-menu.component.scss\"]\r\n})\r\nexport class ForsyningwebSidenavMenuComponent implements OnInit {\r\n public menuItems$: Observable;\r\n\r\n @Output()\r\n public itemClick = new EventEmitter();\r\n\r\n constructor(private readonly menuObserver: ForsyningWebMenuForSidebarObserver, private menu: ElementRef) {}\r\n\r\n @HostListener(\"keydown.tab\", [\"$event\"])\r\n onTab(event: KeyboardEvent) {\r\n const focusableElements = this.menu.nativeElement.querySelectorAll('button, [href], [tabindex]:not([tabindex=\"-1\"])');\r\n const firstElement = focusableElements[0];\r\n const lastElement = focusableElements[focusableElements.length - 1];\r\n if (document.activeElement === lastElement && !event.shiftKey) {\r\n console.log(focusableElements, lastElement);\r\n event.preventDefault();\r\n this.itemClick.emit();\r\n }\r\n if (document.activeElement === firstElement && event.shiftKey) {\r\n event.preventDefault();\r\n this.itemClick.emit();\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.menuItems$ = this.menuObserver.valueChanges;\r\n }\r\n}\r\n","\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nimport { mdiMagnify } from \"@mdi/js\";\r\n\r\nimport { MenuModule } from \"@dffedb/ui\";\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { ForsyningwebSidenavMenuComponent } from \"./forsyningweb-sidenav-menu.component\";\r\n\r\n@NgModule({\r\n declarations: [ForsyningwebSidenavMenuComponent],\r\n imports: [CommonModule, MenuModule],\r\n exports: [ForsyningwebSidenavMenuComponent]\r\n})\r\nexport class ForsyningwebSidenavMenuModule {\r\n constructor(svgIconRegistry: SvgIconRegistry) {\r\n // Ikoner findes på: https://materialdesignicons.com/\r\n svgIconRegistry.registerIcon(mdiMagnify, \"menu-search\");\r\n }\r\n}\r\n","export * from \"./observers/eforsyning-menuer.observer\";\r\nexport * from \"./eforsyning-menu.service\";\r\nexport * from \"./eforsyning-sidenav-menu/eforsyning-sidenav-menu.component\";\r\nexport * from \"./eforsyning-sidenav-menu/eforsyning-sidenav-menu.module\";\r\nexport * from \"./forsyningweb-sidenav-menu/forsyningweb-sidenav-menu.component\";\r\nexport * from \"./forsyningweb-sidenav-menu/forsyningweb-sidenav-menu.module\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { distinctUntilChanged, map, shareReplay } from \"rxjs/operators\";\r\n\r\nimport { MenuItem } from \"@dffedb/ui\";\r\nimport { AktuelBrugerObserver, Bruger, Rolle } from \"@e-forsyning/common/bruger\";\r\nimport { AppserverInstallationCredentialsRepository } from \"@e-forsyning/common/credentials\";\r\n\r\nimport { EforsyningMenuerObserver } from \"./eforsyning-menuer.observer\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EforsyningMenuForSidebarObserver {\r\n private readonly _valueChanges: Observable;\r\n\r\n constructor(\r\n private readonly eforsyningMenuerObserver: EforsyningMenuerObserver,\r\n private readonly installationCredentialsRepository: AppserverInstallationCredentialsRepository,\r\n private readonly aktuelBrugerObserver: AktuelBrugerObserver\r\n ) {\r\n const eforsyningNodeId$ = this.installationCredentialsRepository.valueChanges.pipe(\r\n map((c) => (c && c.forsyningNodeId) || 0),\r\n distinctUntilChanged()\r\n );\r\n const bruger$ = this.aktuelBrugerObserver.valueChanges;\r\n const menu$ = this.eforsyningMenuerObserver.valueChanges;\r\n this._valueChanges = combineLatest([menu$, eforsyningNodeId$, bruger$]).pipe(\r\n map(([menu, eforsyningNodeId, bruger]) => this.bygMenu(menu, eforsyningNodeId, bruger)),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public get valueChanges(): Observable {\r\n return this._valueChanges;\r\n }\r\n\r\n private bygMenu(menu: MenuItem, eforsyningNodeId: number, bruger: Bruger): MenuItem[] {\r\n return eforsyningNodeId && bruger ? this.bygLoggetIndMenu(menu, eforsyningNodeId, bruger) : this.bygLoggetUdMenu(menu);\r\n }\r\n\r\n private bygLoggetUdMenu(menu: MenuItem): MenuItem[] {\r\n return menu.children.length === 1\r\n ? [{ title: \"Log ind\", href: menu.children[0].href, adgangsstyret: false }]\r\n : menu.children.map((c) => ({ title: c.title, href: c.href, adgangsstyret: c.adgangsstyret }));\r\n }\r\n\r\n private bygLoggetIndMenu(menu: MenuItem, eforsyningNodeId: number, bruger: Bruger): MenuItem[] {\r\n const eforsyningMenu = menu.children.find((i) => i.id === eforsyningNodeId);\r\n const fofMenuItems = this.genererFofMenuItems(eforsyningMenu, bruger);\r\n const forbrugerMenuItems = this.genererForbrugerMenuItems(eforsyningMenu, bruger);\r\n const loginOgLogoutMenuItems = this.genererLoginOgLogoutMenuItems(eforsyningMenu);\r\n return [...fofMenuItems, ...forbrugerMenuItems, ...loginOgLogoutMenuItems];\r\n }\r\n\r\n private genererFofMenuItems(eforsyning: MenuItem, bruger: Bruger): MenuItem[] {\r\n const children = this.findFofMenuItems(eforsyning);\r\n return bruger && Rolle.erFofBruger(bruger.rolle) ? children : [];\r\n }\r\n\r\n private genererForbrugerMenuItems(eforsyning: MenuItem, bruger: Bruger): MenuItem[] {\r\n const children = this.fjernLoginOgLogoutMenuItems(this.findForbrugerMenuItems(eforsyning));\r\n return bruger && Rolle.erFofBruger(bruger.rolle) && !!children.length ? [this.genererForbrugerUndermenu(children)] : children;\r\n }\r\n\r\n private genererForbrugerUndermenu(children: MenuItem[]): MenuItem {\r\n return {\r\n title: \"Forbruger\",\r\n icon: \"menu-forbruger\",\r\n adgangsstyret: false,\r\n children\r\n };\r\n }\r\n\r\n private genererLoginOgLogoutMenuItems(eforsyning: MenuItem): MenuItem[] {\r\n return this.findLoginOgLogoutMenuItems(this.findForbrugerMenuItems(eforsyning));\r\n }\r\n\r\n private findFofMenuItems(eforsyning: MenuItem): MenuItem[] {\r\n const item = eforsyning && eforsyning.children.find((c) => c.name === \"eforsyning-fof-bruger\");\r\n return (item && item.children) || [];\r\n }\r\n\r\n private findForbrugerMenuItems(eforsyning: MenuItem): MenuItem[] {\r\n const item = eforsyning && eforsyning.children.find((c) => c.name === \"eforsyning-forbruger\");\r\n return (item && item.children) || [];\r\n }\r\n\r\n private fjernLoginOgLogoutMenuItems(menuItems: MenuItem[]): MenuItem[] {\r\n const loginOgLogout = this.findLoginOgLogoutMenuItems(menuItems);\r\n return menuItems.filter((i) => !loginOgLogout.includes(i));\r\n }\r\n\r\n private findLoginOgLogoutMenuItems(menuItems: MenuItem[]): MenuItem[] {\r\n return menuItems.filter((i) => i.icon === \"menu-login\" || i.icon === \"menu-logout\");\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, merge, Observable } from \"rxjs\";\r\nimport { distinctUntilChanged, map, shareReplay } from \"rxjs/operators\";\r\n\r\nimport { MenuItem } from \"@dffedb/ui\";\r\nimport { AktuelBrugerObserver, Bruger, Rolle } from \"@e-forsyning/common/bruger\";\r\nimport { AppserverInstallationCredentialsRepository } from \"@e-forsyning/common/credentials\";\r\n\r\nimport { UmbracoMenuObserver } from \"./umbraco-menu.observer\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EforsyningMenuerObserver {\r\n private readonly _valueChanges: Observable;\r\n\r\n constructor(\r\n private readonly umbracoMenuObserver: UmbracoMenuObserver,\r\n private readonly aktuelBrugerObserver: AktuelBrugerObserver,\r\n private readonly credentialsObservable: AppserverInstallationCredentialsRepository\r\n ) {\r\n const eforsyningerMenu$ = this.umbracoMenuObserver.valueChanges.pipe(map((menu) => menu.eforsyninger));\r\n const aktuelBruger$ = this.aktuelBrugerObserver.valueChanges;\r\n const aktuelForsyningNodeId$ = this.credentialsObservable.valueChanges.pipe(\r\n map((c) => c.forsyningNodeId),\r\n distinctUntilChanged()\r\n );\r\n\r\n // initialMenu$ indeholder menpunktets navn, som vises indtil vi har fået loadet dat.\r\n // Uden denne kan man opleve at menpunket kortvarigt forsvinder.\r\n const initialMenu$ = combineLatest([eforsyningerMenu$, aktuelForsyningNodeId$]).pipe(\r\n map(([eforsyningerMenu, aktuelForsyningNodeId]) => ({ title: eforsyningerMenu.title, aktuelForsyningNodeId })),\r\n map(({ title, aktuelForsyningNodeId }) => this.genererDummyMenu(title, aktuelForsyningNodeId))\r\n );\r\n\r\n // realMenu$ indeholder den faktiske menu filtreret på brugerens rolle.\r\n const realMenu$ = combineLatest([eforsyningerMenu$, aktuelBruger$, aktuelForsyningNodeId$]).pipe(\r\n map(([eforsyningerMenu, aktuelBruger, aktuelForsyningNodeId]) =>\r\n this.genererMenu(eforsyningerMenu, aktuelBruger, aktuelForsyningNodeId)\r\n )\r\n );\r\n this._valueChanges = merge(initialMenu$, realMenu$).pipe(shareReplay(1));\r\n }\r\n\r\n public get valueChanges(): Observable {\r\n return this._valueChanges;\r\n }\r\n\r\n private genererDummyMenu(title: string, aktuelForsyningNodeId: number): MenuItem {\r\n return {\r\n title,\r\n adgangsstyret: false,\r\n children: [\r\n {\r\n id: aktuelForsyningNodeId,\r\n adgangsstyret: false,\r\n children: []\r\n }\r\n ]\r\n };\r\n }\r\n\r\n private genererMenu(eforsyningerMenu: MenuItem, aktuelBruger: Bruger, aktuelForsyningNodeId: number): MenuItem {\r\n const eforsyningerMenuChildren = eforsyningerMenu.children.map((eforsyningMenu) => {\r\n const erAktuelleEforsyning = eforsyningMenu.id === aktuelForsyningNodeId;\r\n const rolle = (erAktuelleEforsyning && aktuelBruger && aktuelBruger.rolle) || Rolle.LoggetUd;\r\n const menupunkterMedAdgang = (aktuelBruger && aktuelBruger.menupunkter) || [];\r\n let children = eforsyningMenu.children;\r\n children = this.filterByRole(children, rolle);\r\n children = this.filterByMenupunkterMedAdgang(children, menupunkterMedAdgang);\r\n return { ...eforsyningMenu, children };\r\n });\r\n return { ...eforsyningerMenu, children: eforsyningerMenuChildren };\r\n }\r\n\r\n private filterByRole(menuItems: MenuItem[], rolle: Rolle): MenuItem[] {\r\n return menuItems\r\n .filter((i) => (i.roles || []).includes(rolle))\r\n .map((i) => ({ ...i, children: this.filterByRole(i.children || [], rolle) }));\r\n }\r\n\r\n private filterByMenupunkterMedAdgang(menuItems: MenuItem[], menupunkterMedAdgang: string[]): MenuItem[] {\r\n return menuItems\r\n .filter((i) => !i.adgangsstyret || menupunkterMedAdgang.includes(i.name))\r\n .map((i) => ({ ...i, children: this.filterByMenupunkterMedAdgang(i.children || [], menupunkterMedAdgang) }));\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { MenuItem } from \"@dffedb/ui\";\r\n\r\nimport { UmbracoMenuObserver } from \"./umbraco-menu.observer\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForsyningWebMenuForSidebarObserver {\r\n private readonly _valueChanges: Observable;\r\n\r\n constructor(umbracoMenuObserver: UmbracoMenuObserver) {\r\n this._valueChanges = umbracoMenuObserver.valueChanges.pipe(\r\n map((menu) => menu.forsyningWeb),\r\n map((menu) => this.moveSearchMenuToTop(menu))\r\n );\r\n }\r\n\r\n public get valueChanges(): Observable {\r\n return this._valueChanges;\r\n }\r\n\r\n private moveSearchMenuToTop(menu: MenuItem[]): MenuItem[] {\r\n const searchMenuItem = menu.find((i) => i.icon === \"menu-search\");\r\n const rest = menu.filter((i) => i !== searchMenuItem);\r\n return searchMenuItem ? [searchMenuItem, ...rest] : menu;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, ReplaySubject } from \"rxjs\";\r\n\r\nimport { UmbracoMenu } from \"../model/umbraco-menu.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class UmbracoMenuObserver {\r\n private valueSubject = new ReplaySubject(1);\r\n\r\n public get valueChanges(): Observable {\r\n return this.valueSubject.asObservable();\r\n }\r\n\r\n public next(value: UmbracoMenu): void {\r\n this.valueSubject.next(value);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\nimport { IFormArray, IFormBuilder, IFormGroup } from \"@dffedb/forms\";\r\nimport {\r\n DffFormControl,\r\n DffFormControlDropdownListOptions,\r\n DffFormControlType,\r\n DffOprindeligAktuelVaerdiFormGroup,\r\n DffValidators,\r\n DffReactiveFormControlValueMapper as Map\r\n} from \"@dffedb/forms\";\r\nimport { dbToFloatString, DffOprindeligAktuelVaerdi, EntitetStatus, floatToDb } from \"@dffedb/util\";\r\n\r\nimport { EjendomsfaktorDefinition } from \"./model/ejendomsfaktor-definition.model\";\r\nimport { Ejendomsfaktor } from \"./model/ejendomsfaktor.model\";\r\nimport { EjendomsfaktorerData } from \"./model/ejendomsfaktorer-data.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EjendomsfaktorFormBuilder {\r\n private readonly fb: IFormBuilder;\r\n\r\n constructor(fb: UntypedFormBuilder) {\r\n this.fb = fb;\r\n }\r\n\r\n public ejendomsfaktorerDataToFormGroup(\r\n ejendomsfaktorerData: EjendomsfaktorerData,\r\n ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[]\r\n ): IFormGroup {\r\n const result = this.fb.group({\r\n ejendomsfaktorer: this.ejendomsfaktorerToFormArray(ejendomsfaktorerData.ejendomsfaktorer, ejendomsfaktorDefinitioner)\r\n });\r\n return result;\r\n }\r\n\r\n public ejendomsfaktorerToFormArray(\r\n ejendomsfaktorer: Ejendomsfaktor[],\r\n ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[]\r\n ): IFormArray {\r\n const result = ejendomsfaktorer.map((ejendomsfaktor) => this.ejendomsfaktorToFormGroup(ejendomsfaktor, ejendomsfaktorDefinitioner));\r\n return this.fb.array(result);\r\n }\r\n\r\n public ejendomsfaktorToFormGroup(\r\n ejendomsfaktor: Ejendomsfaktor,\r\n ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[]\r\n ): IFormGroup {\r\n const ejendomsfaktorDefinition = ejendomsfaktorDefinitioner.find((definition) => definition.id === ejendomsfaktor.definitionId);\r\n const result = this.fb.group({\r\n definitionId: [ejendomsfaktor.definitionId],\r\n id: [ejendomsfaktor.id],\r\n status: [ejendomsfaktor.status],\r\n vaerdi: this.ejendomsfaktorVaerdiToFormGroup(ejendomsfaktor, ejendomsfaktorDefinition)\r\n });\r\n return result;\r\n }\r\n\r\n public ejendomsfaktorVaerdiToFormGroup(\r\n ejendomsfaktor: Ejendomsfaktor,\r\n ejendomsfaktorDefinition: EjendomsfaktorDefinition\r\n ): IFormGroup> {\r\n const vaerdi = this.dbToVaerdi(ejendomsfaktor.vaerdi, ejendomsfaktorDefinition);\r\n const validators = this.getValidators(ejendomsfaktorDefinition);\r\n const result = new DffOprindeligAktuelVaerdiFormGroup(\r\n vaerdi,\r\n {\r\n controlType: this.getFormControlType(ejendomsfaktorDefinition),\r\n dropdownListOptions: this.getOptions(ejendomsfaktorDefinition),\r\n placeholder: ejendomsfaktorDefinition && ejendomsfaktorDefinition.navn,\r\n suffix: ejendomsfaktorDefinition && ejendomsfaktorDefinition.enhed,\r\n disabled: ejendomsfaktorDefinition && ejendomsfaktorDefinition.readonly\r\n },\r\n validators\r\n ) as unknown as IFormGroup>;\r\n return result;\r\n }\r\n\r\n public getValidators(ejendomsfaktorDefinition: EjendomsfaktorDefinition): ValidatorFn[] {\r\n if (ejendomsfaktorDefinition.datatype !== 10) {\r\n return [];\r\n }\r\n\r\n const validators: ValidatorFn[] = [];\r\n\r\n if (ejendomsfaktorDefinition.decimaler >= 0) {\r\n validators.push(DffValidators.decimals(ejendomsfaktorDefinition.decimaler));\r\n }\r\n\r\n if (ejendomsfaktorDefinition.minVaerdi !== null && ejendomsfaktorDefinition.minVaerdi !== undefined) {\r\n validators.push(Validators.min(ejendomsfaktorDefinition.minVaerdi));\r\n }\r\n\r\n if (ejendomsfaktorDefinition.maxVaerdi !== null && ejendomsfaktorDefinition.maxVaerdi !== undefined) {\r\n validators.push(Validators.max(ejendomsfaktorDefinition.maxVaerdi));\r\n }\r\n\r\n return validators;\r\n }\r\n\r\n public dbToVaerdi(\r\n vaerdi: DffOprindeligAktuelVaerdi,\r\n ejendomsfaktorDefinition: EjendomsfaktorDefinition\r\n ): DffOprindeligAktuelVaerdi {\r\n const erTal = ejendomsfaktorDefinition.datatype === 10;\r\n return erTal\r\n ? { aktuel: dbToFloatString(vaerdi.aktuel), oprindelig: dbToFloatString(vaerdi.oprindelig) }\r\n : { aktuel: vaerdi.aktuel, oprindelig: vaerdi.oprindelig };\r\n }\r\n\r\n public getFormControlType(ejendomsfaktorDefinition: EjendomsfaktorDefinition): DffFormControlType {\r\n if (ejendomsfaktorDefinition && ejendomsfaktorDefinition.valgmuligheder.length) {\r\n return DffFormControlType.DropdownList;\r\n }\r\n\r\n if (ejendomsfaktorDefinition && ejendomsfaktorDefinition.datatype === 10) {\r\n return DffFormControlType.NumberInput;\r\n }\r\n\r\n return DffFormControlType.TextInput;\r\n }\r\n\r\n public getOptions(definition: EjendomsfaktorDefinition): DffFormControlDropdownListOptions {\r\n const valgmuligheder = (definition && definition.valgmuligheder) || [];\r\n return valgmuligheder.map((v) => ({ key: v.id, value: v.navn }));\r\n }\r\n\r\n public formGroupToEjendomsfaktorerData(formGroup: UntypedFormGroup): EjendomsfaktorerData {\r\n const result: EjendomsfaktorerData = {\r\n ejendomsfaktorer: this.formArrayToEjendomsfaktorer(formGroup.controls[\"ejendomsfaktorer\"] as UntypedFormArray)\r\n };\r\n return result;\r\n }\r\n\r\n public formArrayToEjendomsfaktorer(formArray: UntypedFormArray): Ejendomsfaktor[] {\r\n const result: Ejendomsfaktor[] = formArray.controls.map((c) => this.formGroupToEjendomsfaktor(c as UntypedFormGroup));\r\n return result;\r\n }\r\n\r\n public formGroupToEjendomsfaktor(formGroup: UntypedFormGroup): Ejendomsfaktor {\r\n const result: Ejendomsfaktor = {\r\n definitionId: Map.toInteger(formGroup.controls[\"definitionId\"]),\r\n id: Map.toInteger(formGroup.controls[\"id\"]),\r\n status: Map.toInteger(formGroup.controls[\"status\"]) as EntitetStatus,\r\n vaerdi: this.vaerdiToDb(formGroup.controls[\"vaerdi\"] as DffOprindeligAktuelVaerdiFormGroup)\r\n };\r\n return result;\r\n }\r\n\r\n public vaerdiToDb(formGroup: DffOprindeligAktuelVaerdiFormGroup): DffOprindeligAktuelVaerdi {\r\n const oprindelig = formGroup.get(\"oprindelig\") as UntypedFormControl;\r\n const aktuel = formGroup.get(\"aktuel\") as DffFormControl;\r\n const erTal = aktuel.controlType === DffFormControlType.NumberInput;\r\n return erTal\r\n ? { aktuel: floatToDb(aktuel.value), oprindelig: floatToDb(oprindelig.value) }\r\n : { aktuel: aktuel.value, oprindelig: oprindelig.value };\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\n\r\nimport { DffFormControlModule } from \"@dffedb/forms\";\r\nimport { AccordionStatusIndicatorModule } from \"@dffedb/ui\";\r\n\r\nimport { EjendomsfaktorComponent } from \"./ejendomsfaktor/ejendomsfaktor.component\";\r\n\r\n@NgModule({\r\n imports: [AccordionStatusIndicatorModule, CommonModule, DffFormControlModule, FormsModule, MatExpansionModule, ReactiveFormsModule],\r\n exports: [EjendomsfaktorComponent],\r\n declarations: [EjendomsfaktorComponent],\r\n providers: []\r\n})\r\nexport class EjendomsfaktorModule {}\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\nimport { IFormControl } from \"@rxweb/types\";\r\n\r\nimport { DffFormControl, IFormGroup } from \"@dffedb/forms\";\r\n\r\nimport { EjendomsfaktorDefinition } from \"../model/ejendomsfaktor-definition.model\";\r\nimport { Ejendomsfaktor } from \"../model/ejendomsfaktor.model\";\r\n\r\n@Component({\r\n selector: \"ejendomsfaktor\",\r\n templateUrl: \"./ejendomsfaktor.component.html\"\r\n})\r\nexport class EjendomsfaktorComponent {\r\n @Input() public formGroup: IFormGroup;\r\n @Input() public ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[];\r\n\r\n public asDffFormControl(control: IFormControl): DffFormControl {\r\n return control as DffFormControl; // TODO: Flyt til IFormControl?\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n","import { ErrorHandler, Injectable, Injector } from \"@angular/core\";\r\n\r\nimport { LogService } from \"../log/log.service\";\r\n\r\n@Injectable()\r\nexport class EforsyningErrorHandler implements ErrorHandler {\r\n constructor(private injector: Injector) {}\r\n\r\n public handleError(error: any): void {\r\n const logService = this.injector.get(LogService);\r\n logService.logError(error);\r\n throw error;\r\n }\r\n}\r\n","export * from \"./eforsyning-error-handler\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { of } from \"rxjs\";\r\n\r\nimport { InstallationKey } from \"../installation\";\r\nimport { AktuelInstallationKeyObserver } from \"../installation/aktuel-installation-key.observer\";\r\nimport { LogService } from \"../log/log.service\";\r\nimport { ObserverBase } from \"../util/observer-base.service\";\r\nimport { ForbrugerOplysningerService } from \"./forbruger-oplysninger.service\";\r\nimport { ForbrugerOplysninger } from \"./model/forbruger-oplysninger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelForbrugerOplysningerObserver extends ObserverBase {\r\n constructor(\r\n logService: LogService,\r\n aktuelInstallationKeyObserver: AktuelInstallationKeyObserver,\r\n repository: ForbrugerOplysningerService\r\n ) {\r\n super(\r\n logService,\r\n aktuelInstallationKeyObserver.valueChanges,\r\n key => (key && key.ejendomNr && repository.hentForbrugerOplysningerForAktuelleInstallation()) || of(null)\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { ObserverBasedService } from \"../util\";\r\nimport { AktuelForbrugerOplysningerObserver } from \"./aktuel-forbruger-oplysninger.observer\";\r\nimport { ForbrugerOplysninger } from \"./model/forbruger-oplysninger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelForbrugerOplysningerService extends ObserverBasedService {\r\n constructor(observer: AktuelForbrugerOplysningerObserver) {\r\n super(observer);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { dbToDate, dbToInt } from \"@dffedb/util\";\r\n\r\nimport { AppserverHttpClient, BrugerHttpClient, InstallationHttpClient } from \"../http\";\r\nimport { ForbrugerOplysningerDto } from \"./model/forbruger-oplysninger.dto\";\r\nimport { ForbrugerOplysninger } from \"./model/forbruger-oplysninger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForbrugerOplysningerRepository {\r\n constructor(private readonly brugerHttp: BrugerHttpClient, private readonly installationHttp: InstallationHttpClient) {}\r\n\r\n public hentForbrugerOplysningerForAktuelleInstallation(): Observable {\r\n return this.hentForbrugerOplysninger(this.installationHttp, this.installationHttp.credentials.ejendomNr);\r\n }\r\n\r\n public hentForbrugerOplysningerForBruger(ejendomNr?: number): Observable {\r\n return this.hentForbrugerOplysninger(this.brugerHttp, ejendomNr);\r\n }\r\n\r\n public hentForbrugerOplysninger(httpClient: AppserverHttpClient, ejendomNr?: number): Observable {\r\n const url = ejendomNr ? `api/getebrugerinfo?unr=${ejendomNr}` : \"api/getebrugerinfo\";\r\n return httpClient.get(url).pipe(map((dto) => this.map(dto)));\r\n }\r\n\r\n private map(f: ForbrugerOplysningerDto): ForbrugerOplysninger {\r\n return {\r\n ejendomNr: dbToInt(f.ejendomnr),\r\n navn: f.navn,\r\n adresse: `${f.vej} ${f.husnr} ${f.litra} ${f.litra2}`.trim(),\r\n postnr: f.postnr,\r\n by: f.bynavn,\r\n indflyttet: dbToDate(f.indflyttet)\r\n };\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { AppserverHttpClient } from \"../http\";\r\nimport { ForbrugerOplysningerRepository } from \"./forbruger-oplysninger.repository\";\r\nimport { ForbrugerOplysninger } from \"./model/forbruger-oplysninger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForbrugerOplysningerService {\r\n constructor(private readonly forbrugerOplysningerRepository: ForbrugerOplysningerRepository) {}\r\n\r\n public hentForbrugerOplysningerForAktuelleInstallation(): Observable {\r\n return this.forbrugerOplysningerRepository.hentForbrugerOplysningerForAktuelleInstallation();\r\n }\r\n\r\n public hentForbrugerOplysningerForBruger(ejendomNr?: number): Observable {\r\n return this.forbrugerOplysningerRepository.hentForbrugerOplysningerForBruger(ejendomNr);\r\n }\r\n\r\n public hentForbrugerOplysninger(httpClient: AppserverHttpClient, ejendomNr?: number): Observable {\r\n return this.forbrugerOplysningerRepository.hentForbrugerOplysninger(httpClient, ejendomNr);\r\n }\r\n}\r\n","export * from \"./aktuel-forbruger-oplysninger.observer\";\r\nexport * from \"./aktuel-forbruger-oplysninger.service\";\r\nexport * from \"./model/forbruger-oplysninger.model\";\r\nexport * from \"./forbruger-oplysninger.repository\";\r\nexport * from \"./forbruger-oplysninger.service\";\r\n","export interface ForbrugerOplysninger {\r\n ejendomNr: number;\r\n navn: string;\r\n adresse: string;\r\n postnr: string;\r\n by: string;\r\n // postnrby: string;\r\n indflyttet: Date;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { BehaviorSubject, combineLatest, Observable } from \"rxjs\";\r\nimport { map, shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { AktuelBrugerObserver } from \"../bruger/aktuel-bruger.observer\";\r\nimport { BrugerHttpClient } from \"../http/bruger-http-client.service\";\r\nimport { ForbrugerTilknytningRepository } from \"./forbruger-tilknytning.repository\";\r\nimport { ForbrugerTilknytning } from \"./model/forbruger-tilknytning.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelBrugersForbrugerTilknytningerObserver {\r\n private readonly triggerChangedSubject = new BehaviorSubject(null);\r\n public readonly valueChanges: Observable;\r\n\r\n constructor(\r\n brugerHttpClient: BrugerHttpClient,\r\n aktuelBrugerObserver: AktuelBrugerObserver,\r\n forbrugerTilknytningRepository: ForbrugerTilknytningRepository\r\n ) {\r\n this.valueChanges = combineLatest([aktuelBrugerObserver.valueChanges, this.triggerChangedSubject]).pipe(\r\n map(([aktuelBruger]) => (aktuelBruger && aktuelBruger.id) || null),\r\n switchMap(brugerId => forbrugerTilknytningRepository.hentTilknytninger(brugerId, brugerHttpClient)),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public triggerChanged(): void {\r\n this.triggerChangedSubject.next(null);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport MD5 from \"md5-es\";\r\nimport { combineLatest, Observable, of, throwError } from \"rxjs\";\r\nimport { catchError, first, map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { ValgtForbrugerObserver } from \"../bruger\";\r\nimport { AppserverBrugerCredentialsRepository, AppserverCredentials, AppserverUnauthenticatedCredentials, opretTomAppserverCredentials } from \"../credentials\";\r\nimport { ForbrugerOplysningerRepository } from \"../forbruger-oplysninger\";\r\nimport { ForbrugerRepository } from \"../forbruger/forbruger.repository\";\r\nimport { ForsyningIndstillinger, ForsyningIndstillingerService } from \"../forsyning-indstillinger\";\r\nimport { AppserverHttpClient, BrugerHttpClient, EksternForsyningHttpClient, InstallationHttpClient, ParametreForAktuelleInstallation } from \"../http\";\r\nimport { UmbracoIndstillingerObserver } from \"../umbraco-indstillinger\";\r\nimport { ForbrugerTilknytning } from \"./model/forbruger-tilknytning.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForbrugerTilknytningRepository {\r\n constructor(\r\n private readonly brugerHttpClient: BrugerHttpClient,\r\n private readonly installationHttpClient: InstallationHttpClient,\r\n private readonly eksternHttpClient: EksternForsyningHttpClient,\r\n private readonly forbrugerOplysningerRepository: ForbrugerOplysningerRepository,\r\n private readonly brugerCredentialsRepository: AppserverBrugerCredentialsRepository,\r\n private readonly forsyningIndstillingerService: ForsyningIndstillingerService,\r\n private readonly valgtForbrugerObserver: ValgtForbrugerObserver,\r\n private readonly umbracoIndstillingerObserver: UmbracoIndstillingerObserver,\r\n private readonly forbrugerRepository: ForbrugerRepository\r\n ) {}\r\n\r\n public async opretTilknytning(forsyningId: string, brugernavn: string, kodeord: string): Promise {\r\n const appServerHttpClient = await this.eksternHttpClient.authenticate(brugernavn, MD5.hash(kodeord), forsyningId).pipe(first()).toPromise();\r\n\r\n const forbrugerHvisInstallationSkalAdministreres = await this.forbrugerRepository.hentForbruger(appServerHttpClient).pipe(first()).toPromise();\r\n\r\n const valgtForbruger = await this.valgtForbrugerObserver.valueChanges.pipe(first()).toPromise();\r\n\r\n return this.erInternForsyning(forsyningId)\r\n ? this.opretInternTilknytning(valgtForbruger.id, brugernavn, kodeord)\r\n : this.opretEksternTilknytning(valgtForbruger.id, forbrugerHvisInstallationSkalAdministreres.mailAdresse, forsyningId, brugernavn, kodeord);\r\n }\r\n\r\n public async sletTilknytning(tilknytningId: any): Promise {\r\n const url = \"api/SletTilknytning\";\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const params = { RelationId: tilknytningId };\r\n await this.installationHttpClient.postWithStringResult(url, params).pipe(first()).toPromise();\r\n }\r\n\r\n public hentTilknytninger(brugerId: number, httpClient: AppserverHttpClient): Observable {\r\n if (brugerId === null) {\r\n return of([]);\r\n }\r\n const forsyningId$ = this.umbracoIndstillingerObserver.valueChanges.pipe(map((i) => i.aktuelEforsyning && i.aktuelEforsyning.forsyningId));\r\n return forsyningId$.pipe(\r\n switchMap((forsyningId) => {\r\n const url = \"api/henttilknytninger\";\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const params = { EBrugerId: brugerId };\r\n return httpClient.post(url, params, ParametreForAktuelleInstallation.false).pipe(\r\n map((d) => this.dtoToTilknytninger(d, forsyningId)),\r\n switchMap((d) => this.tilfoejAuthenticationData(d)),\r\n switchMap((d) => this.tilfoejForsyningIndstillinger(d)),\r\n switchMap((d) => this.tilfoejForbruger(d))\r\n );\r\n })\r\n );\r\n }\r\n\r\n private async opretInternTilknytning(ebrugerId: number, brugernavn: string, kodeord: string): Promise {\r\n const url = \"api/tilknytejendom\";\r\n const params = {\r\n eBrugerId: ebrugerId,\r\n email: this.isNumber(brugernavn) ? \"\" : brugernavn,\r\n tilknytEjdNr: this.isNumber(brugernavn) ? brugernavn : -1,\r\n pwd: MD5.hash(kodeord)\r\n };\r\n await this.installationHttpClient.postWithStringResult(url, params).pipe(first()).toPromise();\r\n }\r\n\r\n private async opretEksternTilknytning(ebrugerId: number, notificerEmail: string, forsyningId: string, brugernavn: string, kodeord: string): Promise {\r\n const url = \"api/TilfoejEksternTilknytning\";\r\n const params = {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n EBrugerId: ebrugerId,\r\n ForsyningId: forsyningId,\r\n EBrugerNavn: brugernavn,\r\n EBrugerKodeordKrypteret: MD5.hash(kodeord),\r\n NotificerEmail: notificerEmail\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n };\r\n await this.installationHttpClient.postWithStringResult(url, params).pipe(first()).toPromise();\r\n }\r\n\r\n private erInternForsyning(forsyningId: string): boolean {\r\n return !forsyningId || forsyningId.toUpperCase() === (this.installationHttpClient.credentials.forsyningId || \"\").toUpperCase();\r\n }\r\n\r\n private isNumber(value: any): boolean {\r\n return new RegExp(\"^[0-9]+$\").test(value);\r\n }\r\n\r\n private dtoToTilknytninger(data: any, forsyningId: string): ForbrugerTilknytning[] {\r\n const interne = data.InterneTilknytninger.map((t) => this.dtoToTilknytning(t, forsyningId, true));\r\n const eksterne = data.EksterneTilknytninger.map((t) => this.dtoToTilknytning(t, forsyningId, false));\r\n return [...interne, ...eksterne];\r\n }\r\n\r\n private dtoToTilknytning(data: any, forsyningId: string, erInternTilknytning: boolean): ForbrugerTilknytning {\r\n const brugerForsyningId = this.brugerCredentialsRepository.hent().forsyningId;\r\n const erAktuelleSite = !data.ForsyningId || data.ForsyningId === brugerForsyningId;\r\n return {\r\n tilknytningId: data.RelationId,\r\n ejendomNr: data.EjendomNr,\r\n forbrugerNavn: data.Navn,\r\n forbrugerAdresse: data.Adresse,\r\n erAktuelleSite,\r\n erInternTilknytning,\r\n erEksternTilknytning: !erInternTilknytning,\r\n credentials: {\r\n forsyningId: data.ForsyningId || forsyningId,\r\n brugerNavn: data.EBrugerNavn,\r\n kodeordKrypteret: data.EBrugerKodeordKrypteret\r\n },\r\n forsyningIndstillinger: {\r\n forsyningId: data.ForsyningId || forsyningId,\r\n forsyningNodeId: null,\r\n appServerUrl: null,\r\n eforsyningUrl: null,\r\n forsyningNavn: null,\r\n sideId: null\r\n }\r\n };\r\n }\r\n\r\n private tilfoejAuthenticationData(tilknytninger: ForbrugerTilknytning[]): Observable {\r\n if (!tilknytninger.length) {\r\n return of([]);\r\n }\r\n\r\n return combineLatest(tilknytninger.map((t) => this.hentCredentials(t.credentials).pipe(map((credentials) => ({ ...t, credentials })))));\r\n }\r\n\r\n private hentCredentials(auth: AppserverUnauthenticatedCredentials): Observable {\r\n if (auth.brugerNavn && auth.kodeordKrypteret && auth.forsyningId) {\r\n return this.eksternHttpClient.authenticate(auth.brugerNavn, auth.kodeordKrypteret, auth.forsyningId).pipe(\r\n map((api) => api.credentials),\r\n catchError(() =>\r\n // TODO: Log info/warning om at vi ikke kan authenticate. Der er måske ikke adgang til serveren.\r\n of(opretTomAppserverCredentials())\r\n )\r\n );\r\n }\r\n\r\n const brugerCredentials = this.brugerHttpClient.credentials;\r\n if (auth.forsyningId === brugerCredentials.forsyningId) {\r\n return of(brugerCredentials);\r\n }\r\n\r\n const installationCredentials = this.installationHttpClient.credentials;\r\n if (auth.forsyningId === installationCredentials.forsyningId) {\r\n return of(installationCredentials);\r\n }\r\n\r\n return throwError(\"Kan ikke oprette authentication data\");\r\n }\r\n\r\n private tilfoejForsyningIndstillinger(tilknytninger: ForbrugerTilknytning[]): Observable {\r\n if (!tilknytninger.length) {\r\n return of(new Array());\r\n }\r\n\r\n return combineLatest(tilknytninger.map((t) => this.hentForsyningIndstillinger(t.forsyningIndstillinger.forsyningId).pipe(map((forsyningIndstillinger) => ({ ...t, forsyningIndstillinger })))));\r\n }\r\n\r\n private hentForsyningIndstillinger(forsyningId: string): Observable {\r\n return this.forsyningIndstillingerService.hentForsyningIndstillinger(forsyningId);\r\n }\r\n\r\n private tilfoejForbruger(tilknytninger: ForbrugerTilknytning[]): Observable {\r\n if (!tilknytninger.length) {\r\n return of(new Array());\r\n }\r\n\r\n return combineLatest(tilknytninger.map((tilknytning) => this.hentForbruger(tilknytning).pipe(map((forbruger) => ({ ...tilknytning, ...forbruger })))));\r\n }\r\n\r\n private hentForbruger(tilknytning: ForbrugerTilknytning): Observable> {\r\n if (tilknytning.forbrugerNavn) {\r\n return of(tilknytning);\r\n }\r\n\r\n // Vi har ikke kunnet authenticate. Så vi har ikke noget sted at hente fra.\r\n if (!tilknytning.credentials.cryptId) {\r\n return of(tilknytning);\r\n }\r\n\r\n return this.eksternHttpClient.authenticate(tilknytning.credentials).pipe(\r\n switchMap((api) => this.forbrugerOplysningerRepository.hentForbrugerOplysninger(api)),\r\n map((forbruger) => ({\r\n ejendomNr: forbruger.ejendomNr,\r\n forbrugerNavn: forbruger.navn,\r\n forbrugerAdresse: forbruger.adresse\r\n })),\r\n catchError(() =>\r\n // TODO: Log info/warning om at vi ikke kan hente data. Der er måske ikke adgang til serveren.\r\n of({ ejendomNr: 0, forbrugerNavn: \"\", forbrugerAdresse: \"\" })\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { ValgtForbrugerObserver } from \"../bruger\";\r\nimport { InstallationHttpClient } from \"../http\";\r\nimport { AktuelBrugersForbrugerTilknytningerObserver } from \"./aktuel-brugers-forbruger-tilknytninger.observer\";\r\nimport { ForbrugerTilknytningRepository } from \"./forbruger-tilknytning.repository\";\r\nimport { ForbrugerTilknytning } from \"./model/forbruger-tilknytning.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForbrugerTilknytningService {\r\n constructor(\r\n private readonly installationHttpClient: InstallationHttpClient,\r\n private readonly valgtForbrugerObserver: ValgtForbrugerObserver,\r\n private readonly forbrugerTilknytningRepository: ForbrugerTilknytningRepository,\r\n private readonly aktuelBrugersForbrugerTilknytningerObserver: AktuelBrugersForbrugerTilknytningerObserver\r\n ) {}\r\n\r\n public hentTilknytningerForAktuelBruger(): Observable {\r\n return this.aktuelBrugersForbrugerTilknytningerObserver.valueChanges;\r\n }\r\n\r\n public hentTilknytningerForValgtForbruger(): Observable {\r\n const brugerId$ = this.valgtForbrugerObserver.valueChanges.pipe(map(b => (b && b.id) || null));\r\n return brugerId$.pipe(\r\n switchMap(brugerId => this.forbrugerTilknytningRepository.hentTilknytninger(brugerId, this.installationHttpClient))\r\n );\r\n }\r\n\r\n public async opretTilknytning(forsyningId: string, brugernavn: string, kodeord: string): Promise {\r\n await this.forbrugerTilknytningRepository.opretTilknytning(forsyningId, brugernavn, kodeord);\r\n this.aktuelBrugersForbrugerTilknytningerObserver.triggerChanged();\r\n }\r\n\r\n public async sletTilknytning(tilknytningId: number): Promise {\r\n await this.forbrugerTilknytningRepository.sletTilknytning(tilknytningId);\r\n this.aktuelBrugersForbrugerTilknytningerObserver.triggerChanged();\r\n }\r\n}\r\n","export * from \"./aktuel-brugers-forbruger-tilknytninger.observer\";\r\nexport * from \"./forbruger-tilknytning.repository\";\r\nexport * from \"./forbruger-tilknytning.service\";\r\nexport * from \"./model\";\r\n","import { AppserverCredentials } from \"../../credentials\";\r\nimport { ForsyningIndstillinger } from \"../../forsyning-indstillinger\";\r\n\r\nexport interface ForbrugerTilknytning {\r\n tilknytningId: string;\r\n ejendomNr: number;\r\n forbrugerNavn: string;\r\n forbrugerAdresse: string;\r\n erAktuelleSite: boolean;\r\n erInternTilknytning: boolean;\r\n erEksternTilknytning: boolean;\r\n credentials: T;\r\n forsyningIndstillinger: ForsyningIndstillinger;\r\n}\r\n","export * from \"./forbruger-tilknytning.model\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { AppserverHttpClient } from \"../http\";\r\nimport { Forbruger } from \"./model/forbruger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForbrugerRepository {\r\n constructor() {}\r\n\r\n public hentForbruger(httpClient: AppserverHttpClient): Observable {\r\n const url = \"api/getebrugerinfo\";\r\n return httpClient.get(url).pipe(\r\n map((f: any) => ({\r\n id: f.id,\r\n navn: f.navn,\r\n mailAdresse: f.email\r\n }))\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { UmbracoIndstillingerObserver } from \"../umbraco-indstillinger/umbraco-indstillinger.observer\";\r\nimport { ForsyningIndstillingerRepository } from \"./forsyning-indstillinger.repository\";\r\nimport { ForsyningIndstillinger } from \"./model/forsyning-indstillinger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelForsyningIndstillingerObserver {\r\n private readonly _valueChanges: Observable;\r\n\r\n constructor(\r\n private readonly indstillinger: UmbracoIndstillingerObserver,\r\n private readonly repository: ForsyningIndstillingerRepository\r\n ) {\r\n this._valueChanges = this.indstillinger.valueChanges.pipe(\r\n switchMap(\r\n i => (i && i.aktuelEforsyning && this.repository.hentForsyningIndstillinger(i.aktuelEforsyning.forsyningId)) || of(null)\r\n ),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public get valueChanges(): Observable {\r\n return this._valueChanges;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { UmbracoHttpClient } from \"../http\";\r\nimport { ForsyningIndstillinger } from \"./model/forsyning-indstillinger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForsyningIndstillingerRepository {\r\n constructor(private readonly http: UmbracoHttpClient) {}\r\n\r\n public hentForsyningIndstillinger(forsyningId: string): Observable {\r\n const url = `GetVaerkSettings?forsyningid=${forsyningId}`;\r\n return this.http.get(url).pipe(\r\n map((data: any) => ({\r\n forsyningNodeId: data.EForsyningId,\r\n forsyningId: data.ForsyningId,\r\n forsyningNavn: data.ForsyningsNavn,\r\n eforsyningUrl: data.EforsyningUri,\r\n appServerUrl: data.AppServerUri,\r\n sideId: data.Id\r\n }))\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of, throwError } from \"rxjs\";\r\nimport { catchError, switchMap } from \"rxjs/operators\";\r\n\r\nimport { DffError } from \"@dffedb/util\";\r\n\r\nimport { AktuelForsyningIndstillingerObserver } from \"./aktuel-forsyning-indstillinger.observer\";\r\nimport { ForsyningIndstillingerRepository } from \"./forsyning-indstillinger.repository\";\r\nimport { ForsyningIndstillinger } from \"./model/forsyning-indstillinger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForsyningIndstillingerService {\r\n constructor(\r\n private readonly aktuelForsyningIndstillingerObserver: AktuelForsyningIndstillingerObserver,\r\n private readonly forsyningIndstillingerRepository: ForsyningIndstillingerRepository\r\n ) {}\r\n\r\n public hentForsyningIndstillinger(forsyningId: string): Observable {\r\n // Vi kigger først i cachen (indstillinger for den aktuelle E|Forsyning)\r\n // Er der tale om en anden E|Forsyning, laver vi opslag i databasen.\r\n return this.aktuelForsyningIndstillingerObserver.valueChanges.pipe(\r\n switchMap((aktuelForsyningIndstillinger) =>\r\n this.erSammeForsyningId(aktuelForsyningIndstillinger && aktuelForsyningIndstillinger.forsyningId, forsyningId)\r\n ? of(aktuelForsyningIndstillinger)\r\n : forsyningId\r\n ? this.forsyningIndstillingerRepository.hentForsyningIndstillinger(forsyningId)\r\n : of(null)\r\n ),\r\n catchError((e) => throwError(new DffError(\"Fejl ved hent af forsyningsindstillinger.\", { innerError: e })))\r\n );\r\n }\r\n\r\n private erSammeForsyningId(id1: string, id2: string): boolean {\r\n return (id1 || \"\").toUpperCase() === (id2 || \"\").toUpperCase();\r\n }\r\n}\r\n","export * from \"./aktuel-forsyning-indstillinger.observer\";\r\nexport * from \"./forsyning-indstillinger.repository\";\r\nexport * from \"./forsyning-indstillinger.service\";\r\nexport * from \"./model/forsyning-indstillinger.model\";\r\n","export interface ForsyningIndstillinger {\r\n forsyningNodeId: number;\r\n forsyningId: string;\r\n forsyningNavn: string;\r\n eforsyningUrl: string;\r\n appServerUrl: string;\r\n sideId: string;\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\r\n\r\nimport { Observable, of, Subject } from \"rxjs\";\r\nimport { debounceTime, shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { UnsubscribeOnDestroy } from \"@dffedb/util\";\r\n\r\nimport { AdresseSearch, ForsyningPaaAdresseResult } from \"./model/forsyning-paa-adresse.model\";\r\nimport { ForsyningPaaAdresseViewModel } from \"./model/forsyning-paa-adresse.view-model\";\r\nimport { ForsyningPaaAdresseSandbox } from \"./services/forsyning-paa-adresse.sandbox\";\r\n\r\n@Component({\r\n selector: \"forsyning-paa-adresse\",\r\n templateUrl: \"./forsyning-paa-adresse.component.html\",\r\n styleUrls: [\"./forsyning-paa-adresse.component.scss\"],\r\n providers: [ForsyningPaaAdresseSandbox] // Sandbox indeholder state og der oprettes derfor en instans pr. Component\r\n})\r\nexport class ForsyningPaaAdresseComponent extends UnsubscribeOnDestroy implements OnInit {\r\n @Input() public nodeId: number;\r\n @Output() public lookup = new EventEmitter();\r\n\r\n public adresser$: Observable = of([]);\r\n private aktuelAdresseSubject: Subject = new Subject();\r\n public result$: Observable;\r\n public vm$: Observable;\r\n\r\n public formGroup = new UntypedFormGroup({\r\n searchValue: new UntypedFormControl(\"\", [])\r\n });\r\n\r\n constructor(private readonly sandbox: ForsyningPaaAdresseSandbox) {\r\n super();\r\n this.adresser$ = this.formGroup.get(\"searchValue\").valueChanges.pipe(\r\n debounceTime(200),\r\n switchMap((value) => (value.length >= 2 ? this.sandbox.findAdresser(value) : of([])))\r\n );\r\n this.result$ = this.aktuelAdresseSubject.pipe(\r\n switchMap((adresse) => this.sandbox.checkOmDerLeveresPaaAdressen(adresse)),\r\n shareReplay(1)\r\n );\r\n this.subs.add(this.result$.subscribe((result) => this.lookup.emit(result)));\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.vm$ = this.sandbox.selectViewModel(+this.nodeId);\r\n this.addCustomStylesheet();\r\n }\r\n\r\n public displayFn(value: AdresseSearch): string {\r\n return value.tekst;\r\n }\r\n\r\n public onSearchValueChange(value: AdresseSearch): void {\r\n this.aktuelAdresseSubject.next(value);\r\n }\r\n\r\n public addCustomStylesheet(): void {\r\n if (!this.vm$) return;\r\n this.vm$.subscribe((vm) => {\r\n if (vm.konfiguration.cssLeveresFjernvarme && vm.konfiguration.cssLeveresFjernvarme !== \"\") {\r\n const style = document.createElement(\"style\");\r\n style.innerHTML = vm.konfiguration.cssLeveresFjernvarme;\r\n document?.head.appendChild(style);\r\n }\r\n });\r\n }\r\n}\r\n","@if (vm$ | async; as vm) {\r\n
    \r\n \r\n Søg på adresse\r\n \r\n \r\n \r\n @for (adresse of adresser$ | async; track adresse) {\r\n \r\n {{ adresse.tekst }}\r\n \r\n }\r\n \r\n @if (result$ | async; as result) {\r\n
    \r\n @switch (result.status) {\r\n @case (-1) {\r\n
    Henter data...
    \r\n }\r\n @case (0) {\r\n
    \r\n }\r\n @case (1) {\r\n
    \r\n }\r\n @case (2) {\r\n
    \r\n }\r\n @default {\r\n
    \r\n }\r\n }\r\n
    \r\n }\r\n \r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\n\r\nimport { ForsyningPaaAdresseComponent } from \"./forsyning-paa-adresse.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule\r\n ],\r\n exports: [ForsyningPaaAdresseComponent],\r\n declarations: [ForsyningPaaAdresseComponent],\r\n //entryComponents: [ForsyningPaaAdresseComponent],\r\n providers: []\r\n})\r\nexport class ForsyningPaaAdresseModule {\r\n constructor(injector: Injector) {}\r\n}\r\n","export * from \"./forsyning-paa-adresse.component\";\r\nexport * from \"./forsyning-paa-adresse.module\";\r\nexport * from \"./model/forsyning-paa-adresse.model\";\r\nexport * from \"./services/forsyning-paa-adresse.repository\";\r\n","export interface ForsyningPaaAdresseSvarmulighederKonfiguration {\r\n ja: string;\r\n nej: string;\r\n snart: string;\r\n}\r\n\r\nexport interface ForsyningPaaAdresseAfgraensningKonfiguration {\r\n postNr: string[];\r\n}\r\n\r\nexport interface ForsyningPaaAdresseKonfiguration {\r\n eforsyningNodeId: number;\r\n svarmuligheder: ForsyningPaaAdresseSvarmulighederKonfiguration;\r\n afgraensning: ForsyningPaaAdresseAfgraensningKonfiguration;\r\n cssLeveresFjernvarme: string;\r\n}\r\n\r\nexport enum ForsyningPaaAdresseLeveringStatus {\r\n Arbejder = -1,\r\n LevererIkke = 0,\r\n Leverer = 1,\r\n LevererIFremtiden = 2\r\n}\r\n\r\nexport interface ForsyningPaaAdresseResult {\r\n status: ForsyningPaaAdresseLeveringStatus;\r\n statusTekst: string;\r\n ejendomNr: number;\r\n tekst: string;\r\n}\r\n\r\nexport interface Adresse {\r\n kommunenr: number;\r\n vejnr: number;\r\n husnr: number;\r\n husnrBogstav: string;\r\n etage: string;\r\n doer: string;\r\n postnr: string;\r\n}\r\n\r\nexport interface AdresseSearch {\r\n tekst: string;\r\n adresse: Adresse;\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable, of } from \"rxjs\";\r\nimport { delay, map, shareReplay, startWith, switchMap } from \"rxjs/operators\";\r\n\r\nimport { UmbracoHttpClient } from \"@e-forsyning/common/http\";\r\nimport { UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { AdresseSearchDto, CheckOmDerLeveresPaaAdressenResultDto, ForsyningPaaAdresseKonfigurationDto } from \"../model/forsyning-paa-adresse.dto\";\r\nimport { AdresseSearch, ForsyningPaaAdresseKonfiguration, ForsyningPaaAdresseLeveringStatus, ForsyningPaaAdresseResult } from \"../model/forsyning-paa-adresse.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForsyningPaaAdresseRepository {\r\n constructor(\r\n private readonly indstillinger: UmbracoIndstillingerObserver,\r\n private readonly httpClient: HttpClient,\r\n private readonly umbracoHttpClient: UmbracoHttpClient\r\n ) {}\r\n\r\n public selectKonfiguration(nodeId: number): Observable {\r\n return this.umbracoHttpClient.hentSideDataForId(nodeId).pipe(\r\n map((dto) => ({\r\n eforsyningNodeId: +dto.eforsyningNodeId,\r\n svarmuligheder: {\r\n ja: dto.svarmulighedJa,\r\n nej: dto.svarmulighedNej,\r\n snart: dto.svarmulighedPlanlagt\r\n },\r\n afgraensning: {\r\n postNr: (dto.afgraensningPostNr?.split(\"\\n\") ?? []).filter((p) => !!p)\r\n },\r\n cssLeveresFjernvarme: dto.cssLeveresFjernvarme\r\n }))\r\n );\r\n }\r\n\r\n public findAdresser(value: string, postNr: string[]): Observable {\r\n const result = postNr?.length\r\n ? combineLatest(postNr.map((pnr) => this.httpClient.get(`https://dawa.aws.dk/adresser/autocomplete?q=${value}&postnr=${pnr}`))).pipe(\r\n map((r) => ([] as AdresseSearchDto[]).concat(...r))\r\n )\r\n : this.httpClient.get(`https://dawa.aws.dk/adresser/autocomplete?q=${value}`);\r\n\r\n return result.pipe(\r\n map((r) => r.map((v) => this.mapAdresse(v))),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public checkOmDerLeveresPaaAdressen(eforsyningNodeId: number, adresse: AdresseSearch): Observable {\r\n //console.log(\"Tjekker om der leveres på adressen\", eforsyningNodeId, adresse);\r\n return this.indstillinger.valueChanges.pipe(\r\n map((i) => i.eforsyninger.find((e) => e.nodeId === eforsyningNodeId)),\r\n switchMap((e) => this.httpCheckOmDerLeveresPaaAdressen(e.appServerUrl, adresse)),\r\n delay(1000),\r\n startWith({ ejendomNr: 0, status: ForsyningPaaAdresseLeveringStatus.Arbejder, statusTekst: null, tekst: null }),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n private httpCheckOmDerLeveresPaaAdressen(appServerUrl: string, adresse: AdresseSearch): Observable {\r\n if (!adresse?.adresse) {\r\n return of(null);\r\n }\r\n const etage = adresse.adresse.etage || \"\"; // API kan ikke håndtere 'null'\r\n const doer = adresse.adresse.doer || \"\"; // API kan ikke håndtere 'null'\r\n const url = `${appServerUrl}api/LeveresFjernvarmePaaAdresse?kommunenr=${adresse.adresse.kommunenr}&vejnr=${adresse.adresse.vejnr}&husnr=${adresse.adresse.husnr}&husnrBogstav=${adresse.adresse.husnrBogstav}&etage=${etage}&doer=${doer}`;\r\n return this.httpClient.get(url).pipe(map((result) => this.mapForsyningPaaAdresseResult(result, adresse.tekst)));\r\n }\r\n\r\n private mapForsyningPaaAdresseResult(dto: CheckOmDerLeveresPaaAdressenResultDto, adresseTekst: string): ForsyningPaaAdresseResult {\r\n return {\r\n ejendomNr: +(dto.ejendomNr ?? 1),\r\n status: +dto.status as ForsyningPaaAdresseLeveringStatus,\r\n statusTekst: +dto.status === ForsyningPaaAdresseLeveringStatus.LevererIFremtiden ? dto.tekst : null,\r\n tekst: adresseTekst\r\n };\r\n }\r\n\r\n private mapAdresse(dto: AdresseSearchDto): AdresseSearch {\r\n const husnrMatch = dto.adresse.husnr.match(/([0-9]+)(.*)/);\r\n const husnr = husnrMatch ? +husnrMatch[1] : null;\r\n const husnrBogstav = husnrMatch ? husnrMatch[2] : null;\r\n return {\r\n tekst: dto.tekst,\r\n adresse: {\r\n kommunenr: +dto.adresse.kommunekode,\r\n vejnr: +dto.adresse.vejkode,\r\n husnr,\r\n husnrBogstav,\r\n etage: dto.adresse.etage,\r\n doer: dto.adresse.dør,\r\n postnr: dto.adresse.postnr\r\n }\r\n };\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, ReplaySubject } from \"rxjs\";\r\nimport { catchError, first, map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { ToastService } from \"@dffedb/ui\";\r\nimport { LogLevel, LogService } from \"@e-forsyning/common/log\";\r\n\r\nimport { AdresseSearch, ForsyningPaaAdresseResult } from \"../model/forsyning-paa-adresse.model\";\r\nimport { ForsyningPaaAdresseViewModel } from \"../model/forsyning-paa-adresse.view-model\";\r\nimport { ForsyningPaaAdresseRepository } from \"./forsyning-paa-adresse.repository\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ForsyningPaaAdresseSandbox {\r\n private viewModelSubject = new ReplaySubject(1);\r\n\r\n constructor(private readonly repository: ForsyningPaaAdresseRepository, private readonly log: LogService, private readonly toast: ToastService) {}\r\n\r\n public selectViewModel(nodeId: number): Observable {\r\n this.repository\r\n .selectKonfiguration(nodeId)\r\n .pipe(first())\r\n .subscribe((konfiguration) => {\r\n this.viewModelSubject.next({ konfiguration });\r\n });\r\n return this.viewModelSubject.asObservable();\r\n }\r\n\r\n public findAdresser(value: string): Observable {\r\n return this.viewModelSubject.pipe(\r\n map((vm) => vm.konfiguration.afgraensning.postNr),\r\n switchMap((postNr) => this.repository.findAdresser(value, postNr)),\r\n catchError((err) => {\r\n this.log.logError(\"DAWA ser ud til at være nede\", LogLevel.Warning);\r\n this.toast.visFejl(\"Adressesøgning fungerer ikke i øjeblikket - prøv igen senere.\");\r\n console.warn(\"DAWA ser ud til at være nede\", err);\r\n return [];\r\n })\r\n );\r\n }\r\n\r\n public checkOmDerLeveresPaaAdressen(adresse: AdresseSearch): Observable {\r\n return this.viewModelSubject.pipe(\r\n switchMap((vm) => this.repository.checkOmDerLeveresPaaAdressen(vm.konfiguration.eforsyningNodeId, adresse)),\r\n map((result) => this.sanitize(result))\r\n );\r\n }\r\n\r\n private sanitize(result: ForsyningPaaAdresseResult): ForsyningPaaAdresseResult {\r\n // FOF returnerer en tom paragraph i stedet for tom tekst.\r\n // Det skal vi lige have rettet op på, så vi får taget fallback-teksten fra Umbraco\r\n const statusTekst = result.statusTekst === \"

    \" ? null : result.statusTekst;\r\n return { ...result, statusTekst };\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { AuthenticationService } from \"../auth/authentication.service\";\r\nimport { IAppserverCredentialsRepository } from \"../credentials\";\r\nimport { AppserverHttpClient } from \"./appserver-http-client.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AppserverHttpClientFactory {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n public create(\r\n credentialsRepository: IAppserverCredentialsRepository,\r\n authenticationService: AuthenticationService\r\n ): AppserverHttpClient {\r\n authenticationService.isAuthenticationTimeout();\r\n return new AppserverHttpClient(this.http, credentialsRepository, authenticationService);\r\n }\r\n}\r\n","import { HttpClient, HttpEvent, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map, shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { trim, trimRight } from \"@dffedb/util\";\r\n\r\nimport { AuthenticationService } from \"../auth/authentication.service\";\r\nimport { AppserverCredentials, IAppserverCredentialsRepository } from \"../credentials\";\r\n\r\nexport enum ParametreForAktuelleInstallation {\r\n true,\r\n false,\r\n udenInstallationsNr\r\n}\r\n\r\nexport class AppserverHttpClient {\r\n private getAppServerUrlCache = new Map>();\r\n constructor(\r\n private readonly http: HttpClient,\r\n private readonly credentialsRepository: IAppserverCredentialsRepository,\r\n\r\n private readonly authenticationService: AuthenticationService\r\n ) {}\r\n\r\n public get appServerUrl(): Observable {\r\n const result = this.getAppServerUrlCache.get(this.getVaerkSettingsUrl());\r\n return result;\r\n }\r\n\r\n public get credentials(): AppserverCredentials {\r\n return this.credentialsRepository.hent();\r\n }\r\n\r\n public get(\r\n relativeUrl: string,\r\n inkluderParametreForAktuelleInstallation: ParametreForAktuelleInstallation = ParametreForAktuelleInstallation.false,\r\n inkluderCryptId: boolean = true\r\n ): Observable {\r\n //if (this.authenticationService.isAuthenticationTimeout()) {\r\n // console.log(\"Get: tid til at logg ind igen :\");\r\n //}\r\n return this.getUrl(relativeUrl, inkluderParametreForAktuelleInstallation, inkluderCryptId).pipe(\r\n switchMap((absoluteUrl: string) => this.http.get(absoluteUrl))\r\n );\r\n }\r\n\r\n public getWithStringResult(\r\n relativeUrl: string,\r\n inkluderParametreForAktuelleInstallation: ParametreForAktuelleInstallation = ParametreForAktuelleInstallation.false\r\n ): Observable {\r\n return this.getUrl(relativeUrl, inkluderParametreForAktuelleInstallation).pipe(\r\n switchMap((absoluteUrl: string) => this.http.get(absoluteUrl, { responseType: \"text\" }))\r\n );\r\n }\r\n\r\n public post(\r\n relativeUrl: string,\r\n body: any,\r\n inkluderParametreForAktuelleInstallation: ParametreForAktuelleInstallation,\r\n options?: DffHttpOptions<\"body\">\r\n ): Observable;\r\n\r\n public post(\r\n relativeUrl: string,\r\n body: any,\r\n inkluderParametreForAktuelleInstallation: ParametreForAktuelleInstallation,\r\n options?: DffHttpOptions<\"events\">\r\n ): Observable>;\r\n\r\n public post(\r\n relativeUrl: string,\r\n body: any,\r\n inkluderParametreForAktuelleInstallation: ParametreForAktuelleInstallation,\r\n options?: DffHttpOptions<\"events\"> | DffHttpOptions<\"body\"> | DffHttpOptions<\"response\">\r\n ): Observable {\r\n return this.getUrl(relativeUrl, inkluderParametreForAktuelleInstallation).pipe(\r\n switchMap((absoluteUrl: string) =>\r\n options && options.observe === \"events\"\r\n ? this.http.post(absoluteUrl, body, { ...options, observe: \"events\" })\r\n : options && options.observe === \"response\"\r\n ? this.http.post(absoluteUrl, body, { ...options, observe: \"response\" })\r\n : this.http.post(absoluteUrl, body, { ...options, observe: \"body\" })\r\n )\r\n );\r\n }\r\n\r\n public postWithStringResult(\r\n relativeUrl: string,\r\n body: any,\r\n inkluderParametreForAktuelleInstallation: ParametreForAktuelleInstallation = ParametreForAktuelleInstallation.false\r\n ): Observable {\r\n return this.getUrl(relativeUrl, inkluderParametreForAktuelleInstallation).pipe(\r\n switchMap((absoluteUrl: string) => this.http.post(absoluteUrl, body, { responseType: \"text\" }))\r\n );\r\n }\r\n\r\n public getUrl(\r\n relativeUrl: string,\r\n inkluderParametreForAktuelleInstallation: ParametreForAktuelleInstallation = ParametreForAktuelleInstallation.false,\r\n inkluderCryptId: boolean = true\r\n ): Observable {\r\n return this.getAppServerUrl().pipe(\r\n map((appServerUrl) => {\r\n const parameters = this.getParameterString(inkluderParametreForAktuelleInstallation, inkluderCryptId);\r\n return this.formatUrl(appServerUrl, relativeUrl, parameters);\r\n })\r\n );\r\n }\r\n\r\n public getAppServerUrl(): Observable {\r\n const url = this.getVaerkSettingsUrl();\r\n let result = this.getAppServerUrlCache.get(url);\r\n\r\n if (!result) {\r\n result = this.http.get(url).pipe(\r\n map((r: any) => r.AppServerUri as string),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n this.getAppServerUrlCache.set(url, result);\r\n return result;\r\n }\r\n\r\n private formatUrl(appServerUrl: string, relativeUrl: string, parameters: string): string {\r\n const absoluteUrl = trimRight(appServerUrl, \"/\") + \"/\" + trim(relativeUrl, \"/\");\r\n const querySeparator = absoluteUrl.includes(\"?\") ? \"&\" : \"?\";\r\n return absoluteUrl + querySeparator + parameters;\r\n }\r\n\r\n private getParameterString(\r\n inkluderParametreForAktuelleInstallation: ParametreForAktuelleInstallation,\r\n inkluderCryptId: boolean\r\n ): string {\r\n const parameters = Array.from(this.getParameters(inkluderParametreForAktuelleInstallation, inkluderCryptId)).join(\"&\");\r\n return parameters || \"\";\r\n }\r\n\r\n private *getParameters(\r\n inkluderParametreForAktuelleInstallation: ParametreForAktuelleInstallation,\r\n inkluderCryptId: boolean\r\n ): IterableIterator {\r\n const { ejendomNr, aktivNr, installationNr, cryptId } = this.credentialsRepository.hent();\r\n //inkluderParametreForAktuelleInstallation = inkluderParametreForAktuelleInstallation && !!ejendomNr;\r\n if (!ejendomNr) {\r\n //false ved 0,null eller undfined\r\n inkluderParametreForAktuelleInstallation = ParametreForAktuelleInstallation.false;\r\n }\r\n if (inkluderCryptId) {\r\n yield `id=${cryptId}`;\r\n }\r\n if (inkluderParametreForAktuelleInstallation !== ParametreForAktuelleInstallation.false) {\r\n yield `unr=${ejendomNr}`;\r\n yield `anr=${aktivNr}`;\r\n if (inkluderParametreForAktuelleInstallation === ParametreForAktuelleInstallation.udenInstallationsNr) {\r\n yield `inr=${0}`;\r\n } else {\r\n yield `inr=${installationNr}`;\r\n }\r\n }\r\n }\r\n\r\n private getVaerkSettingsUrl(): string {\r\n const credentials = this.credentialsRepository.hent();\r\n return `/umbraco/dff/dffapi/GetVaerkSettings?forsyningid=${credentials.forsyningId}`;\r\n }\r\n}\r\n\r\nexport type DffObserve = \"body\" | \"events\" | \"response\";\r\n\r\nexport interface DffHttpOptions {\r\n headers?:\r\n | HttpHeaders\r\n | {\r\n [header: string]: string | string[];\r\n };\r\n observe?: TObserve;\r\n params?:\r\n | HttpParams\r\n | {\r\n [param: string]: string | string[];\r\n };\r\n reportProgress?: boolean;\r\n responseType?: \"json\";\r\n withCredentials?: boolean;\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { AuthenticationService } from \"../auth\";\r\nimport { AppserverBrugerCredentialsRepository } from \"../credentials\";\r\nimport { AppserverHttpClient } from \"./appserver-http-client.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class BrugerHttpClient extends AppserverHttpClient {\r\n constructor(\r\n http: HttpClient,\r\n credentialsRepository: AppserverBrugerCredentialsRepository,\r\n authenticationService: AuthenticationService\r\n ) {\r\n // authenticationService.isAuthenticationTimeout();\r\n super(http, credentialsRepository, authenticationService);\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport { catchError, tap } from \"rxjs/operators\";\r\n\r\nimport { CorrelationIdService, DffError, SessionIdService } from \"@dffedb/util\";\r\n\r\nimport { LogService } from \"../log/log.service\";\r\n\r\n@Injectable()\r\nexport class EforsyningHttpInterceptor implements HttpInterceptor {\r\n constructor(\r\n private readonly sessionIdService: SessionIdService,\r\n private readonly correlationIdService: CorrelationIdService,\r\n private readonly logService: LogService\r\n ) {}\r\n\r\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n const startTime = new Date();\r\n const sessionId = this.sessionIdService.hentId();\r\n const correlationId = this.correlationIdService.genererId();\r\n\r\n request = request.clone({\r\n setHeaders: {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n \"X-Session-ID\": sessionId,\r\n \"X-Correlation-ID\": correlationId\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n }\r\n });\r\n\r\n this.safe(() => this.logStart(correlationId, request));\r\n return next.handle(request).pipe(\r\n tap((response) => {\r\n this.safe(() => this.logEnd(correlationId, startTime, request, response));\r\n }),\r\n catchError((error) => {\r\n this.safe(() => this.logError(correlationId, startTime, request, error));\r\n return throwError(new DffError(error.message, { innerError: error, correlationId }));\r\n })\r\n );\r\n }\r\n\r\n private safe(fn: () => void): void {\r\n try {\r\n fn();\r\n } catch (error) {\r\n console.error(\"DffHttpInterceptor:\", error);\r\n }\r\n }\r\n\r\n private logStart(correlationId: string, request: HttpRequest): void {\r\n this.logService.logHttpStart(correlationId, request);\r\n }\r\n\r\n private logEnd(correlationId: string, startTime: Date, request: HttpRequest, response: HttpEvent): void {\r\n if (response instanceof HttpResponse) {\r\n const duration = new Date().getTime() - startTime.getTime();\r\n this.logService.logHttpEnd(correlationId, duration, request, response);\r\n }\r\n }\r\n\r\n private logError(correlationId: string, startTime: Date, request: HttpRequest, error: any): void {\r\n const duration = new Date().getTime() - startTime.getTime();\r\n this.logService.logHttpError(correlationId, duration, request, error);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { AuthenticationResult } from \"../auth/authentication-result.model\";\r\nimport { AuthenticationService } from \"../auth/authentication.service\";\r\nimport { AppserverCredentials, AppserverEksternForsyningCredentialsRepository } from \"../credentials\";\r\nimport { AppserverHttpClientFactory } from \"./appserver-http-client-factory.service\";\r\nimport { AppserverHttpClient } from \"./appserver-http-client.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EksternForsyningHttpClient {\r\n constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly appserverHttpClientFactory: AppserverHttpClientFactory\r\n ) {}\r\n\r\n public authenticate(credentials: AppserverCredentials): Observable;\r\n public authenticate(brugernavn: string, hashedKodeord: string, forsyningId: string): Observable;\r\n\r\n public authenticate(\r\n brugernavnOrCredentials: string | AppserverCredentials,\r\n hashedKodeord?: string,\r\n forsyningId?: string\r\n ): Observable {\r\n return typeof brugernavnOrCredentials === \"object\"\r\n ? this.authenticateWithCredentials(brugernavnOrCredentials)\r\n : this.authenticateWithUsername(brugernavnOrCredentials, hashedKodeord, forsyningId);\r\n }\r\n\r\n private authenticateWithCredentials(credentials: AppserverCredentials): Observable {\r\n const credentialsRepository = new AppserverEksternForsyningCredentialsRepository(credentials);\r\n return of(this.appserverHttpClientFactory.create(credentialsRepository, this.authenticationService));\r\n }\r\n\r\n private authenticateWithUsername(brugernavn: string, hashedKodeord: string, forsyningId: string): Observable {\r\n return this.authenticationService.authenticate(brugernavn, hashedKodeord, forsyningId).pipe(\r\n map((authenticationResult: AuthenticationResult) => {\r\n // TODO: Vi skal på en eller anden måde håndtere login-fejl. Skal der kastes en exception,\r\n // returneres null, eller returneres et objekt med success-property?\r\n // if (!authenticationResult.success)\r\n // return throwError(\"Ugyldig brugernavn eller kodeord\");\r\n\r\n const credentials: AppserverCredentials = {\r\n forsyningNodeId: null, // TODO, NIM: Bruges denne til noget?\r\n forsyningId,\r\n cryptId: authenticationResult.cryptId\r\n };\r\n const credentialsRepository = new AppserverEksternForsyningCredentialsRepository(credentials);\r\n return this.appserverHttpClientFactory.create(credentialsRepository, this.authenticationService);\r\n })\r\n );\r\n }\r\n}\r\n","export * from \"./appserver-http-client-factory.service\";\r\nexport * from \"./appserver-http-client.service\";\r\nexport * from \"./bruger-http-client.service\";\r\nexport * from \"./eforsyning-http.interceptor\";\r\nexport * from \"./ekstern-forsyning-http-client.service\";\r\nexport * from \"./installation-http-client.service\";\r\nexport * from \"./umbraco-http-client.service\";\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { AuthenticationService } from \"../auth/authentication.service\";\r\nimport { AppserverInstallationCredentialsRepository } from \"../credentials\";\r\nimport { AppserverHttpClient } from \"./appserver-http-client.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class InstallationHttpClient extends AppserverHttpClient {\r\n constructor(\r\n http: HttpClient,\r\n credentialsRepository: AppserverInstallationCredentialsRepository,\r\n authenticationService: AuthenticationService\r\n ) {\r\n super(http, credentialsRepository, authenticationService);\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport { catchError, first, map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { DffError, trim, trimRight } from \"@dffedb/util\";\r\n\r\nimport { UmbracoIndstillingerObserver } from \"../umbraco-indstillinger/umbraco-indstillinger.observer\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class UmbracoHttpClient {\r\n private baseUrl = \"\";\r\n\r\n constructor(private readonly http: HttpClient, private readonly indstillinger: UmbracoIndstillingerObserver) {}\r\n\r\n public setBaseUrl(value: string): void {\r\n this.baseUrl = trimRight(value || \"\", \"/\");\r\n }\r\n\r\n public get(route: string): Observable {\r\n const absoluteUrl = this.getAbsoluteUrl(`/umbraco/dff/dffapi/${route}`);\r\n return this.http.get(absoluteUrl);\r\n }\r\n\r\n public hentSideDataForId(nodeId: number): Observable {\r\n const absoluteUrl = this.getAbsoluteUrl(`/${nodeId}`);\r\n return this.http.get(absoluteUrl).pipe(\r\n map((data: any) => this.arrayToObject((data && data.vaerksdata) || []) as T),\r\n catchError((error) => throwError(new DffError(`Fejl ved kald til hentSideDataForId('${nodeId}')`, { innerError: error })))\r\n );\r\n }\r\n\r\n public hentSideData(side: string): Observable {\r\n side = trim(side, \"/\");\r\n return this.indstillinger.valueChanges.pipe(\r\n first(),\r\n map((indstillinger) => indstillinger.aktuelEforsyning.siteUrl + side),\r\n map((url) => this.customTrim(url, \"?alttemplate=json\")), // I tilfælde af at side=\"\" (henter E|Forsyning-indstillinger)\r\n switchMap((absoluteUrl) => this.http.get(absoluteUrl)),\r\n map((data: any) => this.arrayToObject((data && data.vaerksdata) || []) as T),\r\n catchError((error) => throwError(new DffError(`Fejl ved kald til hentSideData('${side}')`, { innerError: error })))\r\n );\r\n }\r\n\r\n public hent(sektion: string, umbracoId: string): Observable {\r\n sektion = sektion.replace(\"/\", \"\");\r\n const indeholderQueryString = sektion.indexOf(\"?\") !== -1;\r\n const queryStringChar = indeholderQueryString ? \"&\" : \"?\";\r\n const relativeUrl = `/umbraco/dff/dffapi/${sektion}${queryStringChar}id=${umbracoId}`;\r\n const absoluteUrl = this.getAbsoluteUrl(relativeUrl);\r\n return this.http.get(absoluteUrl);\r\n }\r\n\r\n public post(relativeUrl: string, body: any): Observable {\r\n const absoluteUrl = this.getAbsoluteUrl(relativeUrl);\r\n return this.http.post(absoluteUrl, body);\r\n }\r\n\r\n public postWithStringResult(relativeUrl: string, body: any): Observable {\r\n const absoluteUrl = this.getAbsoluteUrl(relativeUrl);\r\n return this.http.post(absoluteUrl, body, { responseType: \"text\" });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private arrayToObject(data: { Alias: string; Value: string }[]): T {\r\n const result = data.reduce((acc, item) => ({ ...acc, [item.Alias]: item.Value }), {});\r\n return result as T;\r\n }\r\n\r\n private getAbsoluteUrl(relativeUrl: string): string {\r\n // baseUrl vil som regel være blank, da javascipt-koden oftest kører på samme site hvor Umbraco er installeret.\r\n // Den har imidlertid en værdi, når der er tale om Web Components, da de skal kunne køre på en ekstern side.\r\n const separator = this.baseUrl.endsWith(\"/\") || relativeUrl.startsWith(\"/\") ? \"\" : \"/\";\r\n return `${this.baseUrl}${separator}${relativeUrl}`;\r\n }\r\n\r\n private customTrim(str: string, suffix: string) {\r\n if (str.endsWith(suffix)) {\r\n return str.slice(0, -suffix.length);\r\n } else {\r\n return str;\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport { map, mapTo } from \"rxjs/operators\";\r\n\r\nimport { AppserverBrugerCredentialsRepository } from \"../credentials\";\r\nimport { AktuelBrugersForbrugerTilknytningerObserver } from \"../forbruger-tilknytning\";\r\nimport { LogService } from \"../log/log.service\";\r\nimport { ObserverBase } from \"../util/observer-base.service\";\r\nimport { InstallationService } from \"./installation.service\";\r\nimport { Installation } from \"./model/installation.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelBrugersInstallationerObserver extends ObserverBase {\r\n constructor(\r\n logService: LogService,\r\n aktuelBrugersForbrugerTilknytningerObserver: AktuelBrugersForbrugerTilknytningerObserver,\r\n brugerCredentials: AppserverBrugerCredentialsRepository,\r\n installationService: InstallationService\r\n ) {\r\n super(\r\n logService,\r\n combineLatest([brugerCredentials.valueChanges, aktuelBrugersForbrugerTilknytningerObserver.valueChanges]).pipe(mapTo(null)),\r\n () => installationService.hentInstallationer().pipe(map(r => r.items)),\r\n () => of([])\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { ObserverBasedService } from \"../util\";\r\nimport { AktuelBrugersInstallationerObserver } from \"./aktuel-brugers-installationer.observer\";\r\nimport { Installation } from \"./model/installation.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelBrugersInstallationerService extends ObserverBasedService {\r\n constructor(observer: AktuelBrugersInstallationerObserver) {\r\n super(observer);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map, shareReplay } from \"rxjs/operators\";\r\n\r\nimport { AppserverInstallationCredentialsRepository } from \"@e-forsyning/common/credentials\";\r\n\r\nimport { AppserverCredentials } from \"../credentials/appserver-credentials.model\";\r\nimport { InstallationKey } from \"./model/installation-key.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelInstallationKeyObserver {\r\n private value$: Observable;\r\n\r\n constructor(installationCredentials: AppserverInstallationCredentialsRepository) {\r\n this.value$ = installationCredentials.valueChanges.pipe(\r\n map((c) => (c && c.ejendomNr && this.map(c)) || null),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public get valueChanges(): Observable {\r\n return this.value$;\r\n }\r\n\r\n private map(credentials: AppserverCredentials): InstallationKey {\r\n const { ejendomNr, installationNr, aktivNr } = credentials;\r\n return { ejendomNr, installationNr, aktivNr };\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { distinctUntilChanged, map, shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { AktuelInstallationKeyObserver } from \"./aktuel-installation-key.observer\";\r\nimport { InstallationService } from \"./installation.service\";\r\nimport { InstallationKey } from \"./model/installation-key.model\";\r\nimport { Installation } from \"./model/installation.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AktuelInstallationObserver {\r\n private value$: Observable;\r\n\r\n constructor(aktuelInstallationKeyObserver: AktuelInstallationKeyObserver, private readonly installationService: InstallationService) {\r\n this.value$ = aktuelInstallationKeyObserver.valueChanges.pipe(\r\n switchMap((key) => this.hentInstallationer(key).pipe(map((installationer) => ({ key, installationer })))),\r\n map(({ key, installationer }) => this.findInstallation(key, installationer)),\r\n distinctUntilChanged(),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n private hentInstallationer(key: InstallationKey): Observable {\r\n return (key && this.installationService.hentInstallationerForEjendom(key.ejendomNr)) || of([]);\r\n }\r\n\r\n private findInstallation(key: InstallationKey, installationer: Installation[]): Installation {\r\n return (key && installationer && installationer.find((i) => i.installationNr === key.installationNr)) || null;\r\n }\r\n\r\n public get valueChanges(): Observable {\r\n return this.value$;\r\n }\r\n}\r\n","export * from \"./aktuel-installation-key.observer\";\r\nexport * from \"./aktuel-installation.observer\";\r\nexport * from \"./installation-liste/installation-liste.module\";\r\nexport * from \"./installation.service\";\r\nexport * from \"./model/installation-key.model\";\r\nexport * from \"./model/installation.model\";\r\nexport * from \"./model/installationsoplysninger.model\";\r\nexport * from \"./vaelg-installation.service\";\r\nexport * from \"./aktuel-brugers-installationer.observer\";\r\nexport * from \"./aktuel-brugers-installationer.service\";\r\nexport * from \"./aktuel-installation-key.observer\";\r\n","import { BreakpointObserver } from \"@angular/cdk/layout\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { AktuelBrugerObserver, Rolle } from \"@e-forsyning/common/bruger\";\r\nimport { AktuelForsyningIndstillingerObserver } from \"@e-forsyning/common/forsyning-indstillinger\";\r\n\r\nimport { AktuelInstallationKeyObserver } from \"../aktuel-installation-key.observer\";\r\nimport { Installation } from \"../model/installation.model\";\r\n\r\nconst visteKolonnerForbruger: string[] = [\"adresse\", \"maalerOgForsyning\", \"forbruger\"];\r\nconst visteKolonnerForbrugerXs: string[] = [\"adresse\", \"maalerOgForsyning\"];\r\nconst visteKolonnerIkkeForbruger: string[] = [\"adresse\", \"maalerOgType\", \"forbruger\"];\r\nconst visteKolonnerIkkeForbrugerXs: string[] = [\"adresse\", \"maalerOgType\"];\r\nconst visteKolonner = [\r\n [visteKolonnerIkkeForbruger, visteKolonnerIkkeForbrugerXs],\r\n [visteKolonnerForbruger, visteKolonnerForbrugerXs]\r\n];\r\n\r\n@Component({\r\n selector: \"installation-liste\",\r\n styleUrls: [\"./installation-liste.component.scss\"],\r\n templateUrl: \"./installation-liste.component.html\",\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class InstallationListeComponent implements OnInit {\r\n private readonly erForbruger$ = this.aktuelBrugerObserver.valueChanges.pipe(map((bruger) => Rolle.erForbruger(bruger.rolle)));\r\n private readonly erLilleSkaerm$ = this.breakpointObserver.observe(\"(min-width: 480px)\").pipe(map((x) => !x.matches));\r\n public visteKolonner$: Observable;\r\n\r\n @Input()\r\n public installationer: Installation[];\r\n\r\n @Output()\r\n public select = new EventEmitter();\r\n\r\n constructor(\r\n private readonly breakpointObserver: BreakpointObserver,\r\n private readonly aktuelBrugerObserver: AktuelBrugerObserver,\r\n private readonly aktuelInstallationKeyObserver: AktuelInstallationKeyObserver,\r\n private readonly aktuelForsyningIndstillingObserver: AktuelForsyningIndstillingerObserver\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.visteKolonner$ = combineLatest([this.erForbruger$, this.erLilleSkaerm$]).pipe(\r\n map(([erForbruger, erLilleSkaerm]) => visteKolonner[+erForbruger][+erLilleSkaerm])\r\n );\r\n }\r\n\r\n public erAktuelleInstallation$(installation: Installation): Observable {\r\n const aktuelInstallation$ = combineLatest([\r\n this.aktuelForsyningIndstillingObserver.valueChanges,\r\n this.aktuelInstallationKeyObserver.valueChanges\r\n ]).pipe(map(([forsyning, i]) => ({ ...i, forsyningId: forsyning.forsyningId })));\r\n return aktuelInstallation$.pipe(\r\n map(\r\n (i) =>\r\n i.forsyningId === installation.forsyningIndstillinger.forsyningId &&\r\n i.ejendomNr === installation.ejendomNr &&\r\n i.aktivNr === installation.aktivNr &&\r\n i.installationNr === installation.installationNr\r\n )\r\n );\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
    Adresse\r\n
    {{ installation.adresse }}
    \r\n {{ installation.postNrBy }}\r\n
    Måler\r\n
    {{ installation.maalerNr }}
    \r\n {{ installation.maalerTypeTekst }}\r\n
    Måler\r\n
    {{ installation.maalerNr }}
    \r\n {{ installation.forsyningIndstillinger?.forsyningNavn }}\r\n
    Forbruger\r\n
    {{ installation.ejendomNr }}
    \r\n
    \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\n\r\nimport { InstallationListeComponent } from \"./installation-liste.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatTableModule],\r\n declarations: [InstallationListeComponent],\r\n exports: [InstallationListeComponent]\r\n})\r\nexport class InstallationListeModule {}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable, of } from \"rxjs\";\r\nimport { catchError, first, map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { dbToInt, dbToString } from \"@dffedb/util\";\r\n\r\nimport { BrugerRepository, Rolle } from \"../bruger\";\r\nimport { AktuelBrugerService } from \"../bruger/aktuel-bruger.service\";\r\nimport { AppserverCredentials } from \"../credentials\";\r\nimport { ForbrugerTilknytning, ForbrugerTilknytningService } from \"../forbruger-tilknytning\";\r\nimport { ForsyningIndstillinger, ForsyningIndstillingerService } from \"../forsyning-indstillinger\";\r\nimport { BrugerHttpClient, EksternForsyningHttpClient, ParametreForAktuelleInstallation } from \"../http\";\r\nimport { Installation } from \"./model/installation.model\";\r\n\r\nexport interface InstallationAfgraensning {\r\n skip?: number;\r\n take?: number;\r\n huskelisteId?: number;\r\n soegetekst?: string;\r\n ejendomNr?: number;\r\n}\r\n\r\nconst defaultInstallationAfgraensning: InstallationAfgraensning = {\r\n skip: 0,\r\n take: 10,\r\n huskelisteId: null,\r\n soegetekst: \"\"\r\n};\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class InstallationService {\r\n constructor(\r\n private readonly brugerHttp: BrugerHttpClient,\r\n private readonly eksternHttp: EksternForsyningHttpClient,\r\n private readonly brugerRepository: BrugerRepository,\r\n private readonly aktuelBrugerService: AktuelBrugerService,\r\n private readonly forbrugerTilknytningService: ForbrugerTilknytningService,\r\n private readonly forsyningIndstillingerService: ForsyningIndstillingerService\r\n ) {}\r\n\r\n public hentInstallationerForEjendom(ejendomNr: number): Observable {\r\n return this.hentInterneInstallationer({ ejendomNr }, true).pipe(map((r) => r.items));\r\n }\r\n\r\n public hentEgneInstallationer(parametre: InstallationAfgraensning = defaultInstallationAfgraensning): Observable {\r\n return this.hentInterneInstallationer(parametre, false).pipe(map((r) => r.items));\r\n }\r\n\r\n public hentEgneOgTilknyttedeInterneInstallationer(\r\n parametre: InstallationAfgraensning = defaultInstallationAfgraensning\r\n ): Observable {\r\n return this.hentInterneInstallationer(parametre, true);\r\n }\r\n\r\n public hentInstallationer(\r\n parametre: InstallationAfgraensning = defaultInstallationAfgraensning\r\n ): Observable {\r\n const interneInstallationer$ = this.hentEgneOgTilknyttedeInterneInstallationer(parametre);\r\n const eksterneInstallationer$ = this.hentEksterneInstallationer();\r\n return combineLatest([interneInstallationer$, eksterneInstallationer$]).pipe(\r\n map(([interne, eksterne]) => ({\r\n eof: interne.eof,\r\n items: [...interne.items, ...eksterne]\r\n }))\r\n );\r\n }\r\n\r\n public hentEksterneInstallationer(): Observable {\r\n const result = this.forbrugerTilknytningService.hentTilknytningerForAktuelBruger().pipe(\r\n map((tilknytninger) => tilknytninger.filter((t) => t.erEksternTilknytning)),\r\n switchMap((tilknytninger) => {\r\n const empty = new Array();\r\n const installationer = tilknytninger.map((t) => this.hentEksterneInstallationerForTilknytning(t));\r\n return installationer.length ? combineLatest(installationer) : of(empty);\r\n }),\r\n map((installationer) => Array().concat(...installationer))\r\n );\r\n return result;\r\n }\r\n\r\n private hentEksterneInstallationerForTilknytning(tilknytning: ForbrugerTilknytning): Observable {\r\n return this.eksternHttp.authenticate(tilknytning.credentials).pipe(\r\n switchMap((http) =>\r\n this.brugerRepository.hentBruger(http).pipe(\r\n map((bruger) => ({\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n Soegetekst: \"\",\r\n Skip: 0,\r\n Take: 9999,\r\n EBrugerId: bruger.id,\r\n MedtagTilknyttede: false\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n })),\r\n switchMap((params) => http.post(\"api/FindInstallationer\", params, ParametreForAktuelleInstallation.false)),\r\n map((installationer: any) =>\r\n installationer.Installationer.map((i: any) =>\r\n this.mapInstallation(i, tilknytning.forsyningIndstillinger, tilknytning.credentials)\r\n )\r\n )\r\n )\r\n ),\r\n catchError(() =>\r\n // Den eksterne bruger kan have ændret kodeord, hvilket vil medføre fejl.\r\n // Det skal ikke trække resten ned. I stedet returnerer vi en tom liste\r\n of([])\r\n )\r\n );\r\n }\r\n\r\n private hentInterneInstallationer(\r\n parametre: InstallationAfgraensning,\r\n medtagTilknyttede: boolean\r\n ): Observable {\r\n const credentials = this.brugerHttp.credentials;\r\n const forsyningIndstillinger$ = this.forsyningIndstillingerService.hentForsyningIndstillinger(credentials.forsyningId);\r\n const bruger$ = this.aktuelBrugerService.select();\r\n return combineLatest([forsyningIndstillinger$, bruger$]).pipe(\r\n switchMap(([forsyningIndstillinger, bruger]) => {\r\n if (!bruger) {\r\n return of({\r\n eof: true,\r\n items: []\r\n });\r\n }\r\n const erForbruger = Rolle.erForbruger(bruger.rolle);\r\n // Forbruger: Hent alle installationer da vi ikke benytter paging og kan have eksterne tilknytninger.\r\n // Medarbejdere: Hent 10 (default) ad gangen.\r\n const take = erForbruger ? 9999 : parametre.take || defaultInstallationAfgraensning.take;\r\n const params = {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n Soegetekst: parametre.soegetekst || defaultInstallationAfgraensning.soegetekst,\r\n Skip: parametre.skip || defaultInstallationAfgraensning.skip,\r\n Take: take + 1, // Vi henter en ekstra installation for at kunne bestemme 'eof'.\r\n EBrugerId: bruger.id,\r\n Huskeliste: bruger.huskelisteId || parametre.huskelisteId,\r\n MedtagTilknyttede: medtagTilknyttede,\r\n EjendomNr: parametre.ejendomNr\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n };\r\n return this.brugerHttp.post(\"api/FindInstallationer\", params, ParametreForAktuelleInstallation.false).pipe(\r\n map((result) => result.Installationer as any[]),\r\n map((installationer) => installationer.map((i) => this.mapInstallation(i, forsyningIndstillinger, credentials))),\r\n map((installationer) => ({\r\n eof: installationer.length <= take,\r\n items: installationer.splice(0, take) // Eventuel ekstra installation til eof-beregning fjernes den fra resultatet\r\n }))\r\n );\r\n }),\r\n first()\r\n );\r\n }\r\n\r\n private mapInstallation(data: any, forsyningIndstillinger: ForsyningIndstillinger, credentials: AppserverCredentials): Installation {\r\n return {\r\n adresse: dbToString(data.Adresse),\r\n postNrBy: dbToString(data.PostNr) + \" \" + dbToString(data.By),\r\n aktivNr: dbToInt(data.AktivNr),\r\n ejendomNr: dbToInt(data.EjendomNr),\r\n installationNr: dbToInt(data.InstallationNr),\r\n maalerNr: dbToString(data[\"MålerNr\"]),\r\n maalerTypeTekst: dbToString(data[\"Målertype\"]),\r\n forsyningIndstillinger,\r\n credentials\r\n };\r\n }\r\n}\r\n\r\nexport interface HentInstallationerResultat {\r\n items: Installation[];\r\n eof: boolean;\r\n}\r\n","export interface InstallationKey {\r\n ejendomNr: number;\r\n aktivNr: number;\r\n installationNr: number;\r\n}\r\n","import { AppserverCredentials } from \"../../credentials\";\r\nimport { ForsyningIndstillinger } from \"../../forsyning-indstillinger\";\r\n\r\nexport interface Installation {\r\n adresse: string;\r\n postNrBy: string;\r\n aktivNr: number;\r\n ejendomNr: number;\r\n installationNr: number;\r\n maalerNr: string;\r\n maalerTypeTekst: string;\r\n forsyningIndstillinger: ForsyningIndstillinger;\r\n credentials: AppserverCredentials;\r\n}\r\n","import { Rolle } from \"@e-forsyning/common/bruger\";\r\n\r\nexport interface IInstallationsoplysninger {\r\n navn: string;\r\n vejnavn: string;\r\n husnr: string;\r\n litra: string;\r\n postnr: string;\r\n bynavn: string;\r\n telefonnr: string;\r\n beboeremail: string;\r\n ejendomnr: string;\r\n navn2: string;\r\n litra2: string;\r\n id: number;\r\n rolle: Rolle;\r\n mail: string;\r\n ejerNavn: string;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { first } from \"rxjs/operators\";\r\n\r\nimport { PreviousRouteService } from \"@dffedb/router\";\r\n\r\nimport { AppserverInstallationCredentialsRepository } from \"../credentials\";\r\nimport { AktuelForsyningIndstillingerObserver } from \"../forsyning-indstillinger\";\r\nimport { BrugerHttpClient, EksternForsyningHttpClient } from \"../http\";\r\nimport { RedirectService } from \"../router\";\r\nimport { serialiserAppserverCredentials } from \"./../credentials/appserver-credentials.util\";\r\nimport { AktuelBrugersInstallationerService } from \"./aktuel-brugers-installationer.service\";\r\nimport { Installation } from \"./model/installation.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class VaelgInstallationService {\r\n constructor(\r\n private readonly brugerHttp: BrugerHttpClient,\r\n private readonly eksternHttp: EksternForsyningHttpClient,\r\n private readonly indstillinger: AktuelForsyningIndstillingerObserver,\r\n private readonly installationCredentials: AppserverInstallationCredentialsRepository,\r\n private readonly redirectService: RedirectService,\r\n private readonly previousRouteService: PreviousRouteService,\r\n private readonly aktuelBrugersInstallationerService: AktuelBrugersInstallationerService\r\n ) {}\r\n\r\n public async vaelgFoeresteInstallation(redirect: boolean = true): Promise {\r\n const installationer = await this.aktuelBrugersInstallationerService.select().pipe(first()).toPromise();\r\n if (installationer.length) {\r\n await this.vaelgInstallation(installationer[0], redirect);\r\n }\r\n }\r\n\r\n public async vaelgInstallation(installation: Installation, redirect: boolean = true): Promise {\r\n const indstillinger = await this.indstillinger.valueChanges.pipe(first()).toPromise();\r\n\r\n const erIntern = installation.forsyningIndstillinger.forsyningNodeId === indstillinger.forsyningNodeId;\r\n if (erIntern) {\r\n this.vaelgInternInstallation(installation, redirect);\r\n } else {\r\n this.vaelgEksternInstallation(installation);\r\n }\r\n }\r\n\r\n private vaelgInternInstallation(installation: Installation, redirect: boolean): void {\r\n const credentials = this.installationCredentials.hent();\r\n credentials.forsyningNodeId = installation.credentials.forsyningNodeId;\r\n credentials.forsyningId = installation.credentials.forsyningId;\r\n credentials.cryptId = installation.credentials.cryptId;\r\n credentials.ejendomNr = installation.ejendomNr;\r\n credentials.aktivNr = installation.aktivNr;\r\n credentials.installationNr = installation.installationNr;\r\n this.installationCredentials.gem(credentials);\r\n if (redirect) {\r\n this.redirectService.redirect(this.getRedirectRoute(this.previousRouteService.value));\r\n }\r\n }\r\n\r\n private vaelgEksternInstallation(installation: Installation): void {\r\n const eforsyningUrl = installation.forsyningIndstillinger.eforsyningUrl;\r\n this.eksternHttp.authenticate(installation.credentials).subscribe((http) => {\r\n const { ejendomNr, installationNr, aktivNr } = installation;\r\n const cryptId = http.credentials.cryptId;\r\n const origin = serialiserAppserverCredentials(this.brugerHttp.credentials);\r\n // eslint-disable-next-line max-len\r\n const url = `${eforsyningUrl}#/silent-login/unr/${ejendomNr}/inr/${installationNr}/anr/${aktivNr}/id/${cryptId}/origin/${origin}`;\r\n window.location.href = url;\r\n });\r\n }\r\n\r\n private getRedirectRoute(route: string): string {\r\n const empty = /^$/;\r\n const slash = /^\\/$/;\r\n const logout = /^\\/logout$/;\r\n const login = /^\\/login$/;\r\n const loginRedirect = /^\\/login\\//;\r\n const installationer = /^install-picker$/;\r\n const deeplink = /^\\/deeplink\\//;\r\n const notFound = /^\\/404$/;\r\n const ignoredRoutes = [empty, slash, logout, login, loginRedirect, installationer, deeplink, notFound];\r\n\r\n const ignoreRoute = ignoredRoutes.some((r) => r.test(route));\r\n return ignoreRoute ? \"/mit-forbrug\" : route;\r\n }\r\n}\r\n","export * from \"./log.model\";\r\nexport * from \"./log.service\";\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\nexport enum LogLevel {\r\n Information = \"Info\",\r\n Warning = \"Warning\",\r\n Error = \"Error\",\r\n Critical = \"Critical\"\r\n}\r\n\r\nexport interface LogFelter {\r\n Besked: string;\r\n Detaljer: string;\r\n Duration: number;\r\n ForsyningId: string;\r\n ForsyningNodeId: number;\r\n HttpStatus: number;\r\n HttpVerb: string;\r\n Id: string;\r\n LogLevel: LogLevel;\r\n Origin: string;\r\n RequestUrl: string;\r\n UserAgent: string;\r\n UTC: string;\r\n Version: string;\r\n}\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { HttpErrorResponse, HttpRequest, HttpResponse } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\n\r\nimport {\r\n CorrelationIdService,\r\n formatDate,\r\n getCorrelationId,\r\n getErrorDetails,\r\n getErrorMessage,\r\n getUtcDate,\r\n Logger,\r\n LOGGER,\r\n SessionIdService\r\n} from \"@dffedb/util\";\r\n\r\nimport { UmbracoIndstillingerObserver } from \"../umbraco-indstillinger/umbraco-indstillinger.observer\";\r\nimport { LogFelter, LogLevel } from \"./log.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class LogService {\r\n private sessionId: string;\r\n private forsyningId: string;\r\n private forsyningNodeId: number;\r\n\r\n constructor(\r\n sessionIdService: SessionIdService,\r\n umbracoIndstillingerObserver: UmbracoIndstillingerObserver,\r\n private readonly correlationIdService: CorrelationIdService,\r\n @Inject(LOGGER) private readonly logger: Logger\r\n ) {\r\n this.sessionId = sessionIdService.hentId();\r\n umbracoIndstillingerObserver.valueChanges.subscribe((indstillinger) => {\r\n this.forsyningId = indstillinger.aktuelEforsyning && indstillinger.aktuelEforsyning.forsyningId;\r\n this.forsyningNodeId = indstillinger.aktuelEforsyningNodeId;\r\n });\r\n }\r\n\r\n public logHttpStart(correlationId: string, request: HttpRequest): void {\r\n this.log({\r\n ...this.getIdFields(correlationId),\r\n ...this.getHttpRequestFields(request),\r\n Besked: \"START\"\r\n });\r\n }\r\n\r\n public logHttpEnd(correlationId: string, duration: number, request: HttpRequest, response: HttpResponse): void {\r\n this.log({\r\n ...this.getIdFields(correlationId),\r\n ...this.getDurationFields(duration),\r\n ...this.getHttpRequestFields(request),\r\n ...this.getHttpResponseFields(response),\r\n Besked: \"END\"\r\n });\r\n }\r\n\r\n public logHttpError(correlationId: string, duration: number, request: HttpRequest, error: HttpErrorResponse): void {\r\n const logLevel = error.status >= 500 ? LogLevel.Error : LogLevel.Warning;\r\n this.log({\r\n ...this.getIdFields(correlationId),\r\n ...this.getDurationFields(duration),\r\n ...this.getHttpRequestFields(request),\r\n ...this.getHttpErrorResponseFields(error),\r\n LogLevel: logLevel,\r\n UserAgent: window.navigator.userAgent\r\n });\r\n }\r\n\r\n public async logError(error: any, logLevel: LogLevel = LogLevel.Error): Promise {\r\n this.log({\r\n Besked: getErrorMessage(error),\r\n Detaljer: await getErrorDetails(error),\r\n LogLevel: logLevel,\r\n UserAgent: window.navigator.userAgent,\r\n ...this.getIdFields(getCorrelationId(error))\r\n });\r\n }\r\n\r\n public log(log: Partial): void {\r\n log = this.sortFields(this.addDefaultFields(log));\r\n this.logger.log(log);\r\n }\r\n\r\n private getIdFields(correlationId: string): Partial {\r\n return {\r\n Id: `${this.sessionId}-${correlationId}`\r\n };\r\n }\r\n\r\n private getDurationFields(duration: number): Partial {\r\n return {\r\n Duration: duration\r\n };\r\n }\r\n\r\n private getHttpRequestFields(request: HttpRequest): Partial {\r\n return {\r\n HttpVerb: request.method,\r\n RequestUrl: request.urlWithParams\r\n };\r\n }\r\n\r\n private getHttpResponseFields(response: HttpResponse): Partial {\r\n return {\r\n HttpStatus: response.status\r\n };\r\n }\r\n\r\n private getHttpErrorResponseFields(response: HttpErrorResponse): Partial {\r\n return {\r\n Besked: response.message,\r\n HttpStatus: response.status\r\n };\r\n }\r\n\r\n private addDefaultFields(log: Partial): Partial {\r\n const defaultFields = {\r\n Id: `${this.sessionId}-${this.correlationIdService.genererId()}`,\r\n LogLevel: LogLevel.Information,\r\n UTC: this.getUtc(),\r\n ForsyningId: this.forsyningId,\r\n ForsyningNodeId: this.forsyningNodeId,\r\n Origin: window.location.href\r\n };\r\n return { ...defaultFields, ...log };\r\n }\r\n\r\n private sortFields(log: Partial): Partial {\r\n return {\r\n UTC: log.UTC,\r\n Id: log.Id,\r\n LogLevel: log.LogLevel,\r\n Besked: log.Besked,\r\n HttpVerb: log.HttpVerb,\r\n RequestUrl: log.RequestUrl,\r\n ...log,\r\n Detaljer: log.Detaljer\r\n };\r\n }\r\n\r\n private getUtc(): string {\r\n const date = getUtcDate();\r\n return formatDate(date, \"DD MMM YYYY HH:mm:ss.SSS\");\r\n }\r\n}\r\n","export interface DffMailInternal {\r\n sideId: string;\r\n to: string;\r\n model: string;\r\n}\r\n\r\nexport interface DffMail {\r\n to: string;\r\n cc?: string;\r\n bcc?: string;\r\n subject: string;\r\n body: string;\r\n}\r\n\r\nexport interface DffMailFirmaoplysninger {\r\n firmaNavn: string;\r\n logoUrl: string;\r\n signatur: string;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { UmbracoIndstillingerObserver } from \"../umbraco-indstillinger\";\r\nimport { MailHelper } from \"./mail-helper\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EforsyningMailBuilderService {\r\n constructor(private readonly indstillinger: UmbracoIndstillingerObserver) {}\r\n\r\n public genererAsync(titel: string, ...body: string[]): Observable {\r\n return this.indstillinger.valueChanges.pipe(map((i) => this.generer(...body)));\r\n }\r\n\r\n public generer(...body: string[]): string {\r\n return this.genererMailBody(\r\n //titel,\r\n //this.genererLogo(firmaOplysninger.logoUrl, firmaOplysninger.firmaNavn),\r\n //firmaOplysninger,\r\n ...body\r\n );\r\n }\r\n\r\n private genererLogo(logoUrl: string, fallbackFirmaNavn: string): string {\r\n return (logoUrl && MailHelper.image(`${logoUrl}?height=100&width=600&mode=max&upscale=false`)) || MailHelper.h1(fallbackFirmaNavn);\r\n }\r\n\r\n private genererMailBody(...body: string[]): string {\r\n const html = `\r\n ${body.join(\" \")}\r\n `;\r\n return html;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { first, map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { UmbracoHttpClient } from \"../http\";\r\nimport { DffMailInternal } from \"./dff-mail.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EforsyningMailSenderService {\r\n constructor(private readonly umbracoHttp: UmbracoHttpClient) {}\r\n\r\n /* public sendMail(mail: DffMail | Observable): Promise {\r\n const mail$ = mail instanceof Observable ? mail : of(mail);\r\n return mail$\r\n .pipe(\r\n first(),\r\n switchMap((m) =>\r\n !m.to\r\n ? of(null)\r\n : this.umbracoHttp.post(\"/umbraco/dff/dffapi/SendMail\", {\r\n to: m.to,\r\n cc: m.cc,\r\n bcc: m.bcc,\r\n subject: m.subject,\r\n body: m.body,\r\n isHtml: true\r\n })\r\n ),\r\n map(() => null)\r\n )\r\n .toPromise();\r\n }*/\r\n\r\n public sendForsyningsanmodningMail(mail: DffMailInternal | Observable): Promise {\r\n const mail$ = mail instanceof Observable ? mail : of(mail);\r\n return mail$\r\n .pipe(\r\n first(),\r\n switchMap((m) =>\r\n !m.to\r\n ? of(null)\r\n : this.umbracoHttp.post(\"/umbraco/dff/dffapi/SendForsyningsanmodningMail\", {\r\n sideId: m.sideId,\r\n to: m.to,\r\n model: m.model\r\n })\r\n ),\r\n map(() => null)\r\n )\r\n .toPromise();\r\n }\r\n\r\n public sendMitforbrugDatafejlMail(mail: DffMailInternal | Observable): Promise {\r\n const mail$ = mail instanceof Observable ? mail : of(mail);\r\n return mail$\r\n .pipe(\r\n first(),\r\n switchMap((m) =>\r\n !m.to\r\n ? of(null)\r\n : this.umbracoHttp.post(\"/umbraco/dff/dffapi/SendMitforbrugDatafejlMail\", {\r\n sideId: m.sideId,\r\n to: m.to,\r\n model: m.model\r\n })\r\n ),\r\n map(() => null)\r\n )\r\n .toPromise();\r\n }\r\n\r\n public sendMailFraUmbraco(api: string, mail: DffMailInternal | Observable): Promise {\r\n const mail$ = mail instanceof Observable ? mail : of(mail);\r\n return mail$\r\n .pipe(\r\n first(),\r\n switchMap((m) =>\r\n !m.to\r\n ? of(null)\r\n : this.umbracoHttp.post(\"/umbraco/dff/dffapi/\" + api, {\r\n sideId: m.sideId,\r\n to: m.to,\r\n model: m.model\r\n })\r\n ),\r\n map(() => null)\r\n )\r\n .toPromise();\r\n }\r\n}\r\n","export * from \"./dff-mail.model\";\r\nexport * from \"./eforsyning-mail-builder.service\";\r\nexport * from \"./eforsyning-mail-sender.service\";\r\nexport * from \"./mail-helper\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { genererKvitteringMailHtml } from \"@dffedb/ui\";\r\nimport { DffGroupedContent } from \"@dffedb/util\";\r\n\r\nimport { DffMailFirmaoplysninger } from \"./dff-mail.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class MailHelper {\r\n private static css = \"color:#444;\";\r\n\r\n public static center(content: string): string {\r\n return `\r\n \r\n \r\n \r\n \r\n
    \r\n ${content}\r\n
    `;\r\n }\r\n\r\n public static image(url: string): string {\r\n return ``;\r\n }\r\n\r\n public static table(...rows: string[]): string {\r\n return this.div(`\r\n ${rows.join(\"\")}
    `);\r\n }\r\n\r\n public static tableRow(key: string, value: string, tdCss: string = \"\"): string {\r\n const colon = !key ? \" \" : \":\";\r\n return value === null\r\n ? `\r\n ${key}\r\n `\r\n : `\r\n ${key}${colon}\r\n ${value}\r\n `;\r\n }\r\n\r\n public static hr(width: number = 600): string {\r\n return `\r\n \r\n \r\n \r\n
    `;\r\n }\r\n\r\n public static div(value: string): string {\r\n return `
    ${value}
    `;\r\n }\r\n\r\n public static h1(text: string): string {\r\n return `

    ${text}

    `;\r\n }\r\n\r\n public static space(marginTop: number = 0): string {\r\n return `
     
    `;\r\n }\r\n\r\n public static venligHilsen(firmaOplysninger: DffMailFirmaoplysninger): string {\r\n return firmaOplysninger.signatur || this.div(\"Venlig hilsen\") + this.div(firmaOplysninger.firmaNavn);\r\n }\r\n\r\n public static kvitteringPanel(kvittering: DffGroupedContent): string {\r\n return genererKvitteringMailHtml(kvittering);\r\n }\r\n}\r\n","export * from \"./redirect.service\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { first } from \"rxjs/operators\";\r\n\r\nimport { DffCurrentRoute, DffRedirectService } from \"@dffedb/router\";\r\n\r\nimport { UmbracoIndstillingerObserver } from \"../umbraco-indstillinger\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class RedirectService {\r\n constructor(\r\n private readonly redirectService: DffRedirectService,\r\n private readonly currentRoute: DffCurrentRoute,\r\n private readonly indstillinger: UmbracoIndstillingerObserver\r\n ) {}\r\n\r\n public redirectTilDefault(): void {\r\n this.redirectService.redirect(\"/\");\r\n }\r\n\r\n public redirectTilLogin(redirectTilAktuelleRouteEfterLogin: boolean = false): void {\r\n const redirectUrl = redirectTilAktuelleRouteEfterLogin ? this.currentRoute.value.path : \"\";\r\n this.redirectService.redirect(`/login${redirectUrl}`);\r\n }\r\n\r\n public redirectTilFlyttekvittering(parameter: any): void {\r\n this.redirectService.redirect(\"/meld-flytning/kvittering\", { data: btoa(JSON.stringify(parameter)) });\r\n }\r\n\r\n public redirectTilInstallationer(): void {\r\n this.redirectService.redirect(\"/install-picker\");\r\n }\r\n\r\n public redirectTilMitForbrug(): void {\r\n this.redirectService.redirect(\"/mit-forbrug\");\r\n }\r\n\r\n public redirectTilMineDokumenter(): void {\r\n this.redirectService.redirect(\"/mine-dokumenter\");\r\n }\r\n\r\n public redirect(path: string, params?: any): void {\r\n this.redirectService.redirect(path, params);\r\n }\r\n\r\n public redirectTilVaerksListe(): void {\r\n this.indstillinger.valueChanges\r\n .pipe(first()) // Auto-unsubscribe\r\n .subscribe((indstillinger) => {\r\n location.href = indstillinger.vaerkslisteUrl;\r\n });\r\n }\r\n}\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { ErrorStateMatcher } from \"@angular/material/core\";\r\n\r\nimport { DffErrorStateMatcher, IFormArray } from \"@dffedb/forms\";\r\nimport { EjendomsfaktorDefinition } from \"@e-forsyning/common/ejendomsfaktor/model/ejendomsfaktor-definition.model\";\r\nimport { Ejendomsfaktor } from \"@e-forsyning/common/ejendomsfaktor/model/ejendomsfaktor.model\";\r\n\r\n@Component({\r\n selector: \"tilslutningsanmodning-step-ejendomsfaktorer\",\r\n templateUrl: \"./step-ejendomsfaktorer.component.html\",\r\n styleUrls: [\"./step-ejendomsfaktorer.component.scss\"],\r\n providers: [{ provide: ErrorStateMatcher, useClass: DffErrorStateMatcher }]\r\n})\r\nexport class TilslutningsanmodningStepEjendomsfaktorerComponent {\r\n @Input() public ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[];\r\n @Input() public formArray: IFormArray;\r\n}\r\n","
    \r\n
    \r\n @for (formGroup of formArray.groups(); track formGroup) {\r\n \r\n }\r\n
    \r\n
    \r\n","import { Component, Input, ViewChild } from \"@angular/core\";\r\nimport { NgForm, UntypedFormControl } from \"@angular/forms\";\r\nimport { ErrorStateMatcher } from \"@angular/material/core\";\r\n\r\nimport { DffErrorStateMatcher, IFormGroup } from \"@dffedb/forms\";\r\nimport { DffSimpelDialog } from \"@dffedb/ui\";\r\n\r\nimport { TilslutningsanmodningKonfiguration, TilslutningsanmodningOplysningerModel } from \"../../model/tilslutningsanmodning.model\";\r\nimport { TilslutningsanmodningFormBuilder } from \"../../services/tilslutningsanmodning.form-builder\";\r\n\r\n@Component({\r\n selector: \"tilslutningsanmodning-step-oplysninger\",\r\n templateUrl: \"./step-oplysninger.component.html\",\r\n styleUrls: [\"./step-oplysninger.component.scss\"],\r\n providers: [{ provide: ErrorStateMatcher, useClass: DffErrorStateMatcher }]\r\n})\r\nexport class TilslutningsanmodningStepOplysningerComponent {\r\n @ViewChild(\"form\") public form: NgForm;\r\n @Input() public formGroup: IFormGroup;\r\n @Input() public konfiguration: TilslutningsanmodningKonfiguration;\r\n @Input() public adresse2: string;\r\n\r\n constructor(\r\n private readonly formBuilder: TilslutningsanmodningFormBuilder,\r\n private readonly errorStateMatcher: ErrorStateMatcher,\r\n private readonly dialog: DffSimpelDialog\r\n ) {}\r\n\r\n public get valid(): boolean {\r\n return this.formGroup?.valid || false;\r\n }\r\n\r\n public valider(): boolean {\r\n this.formGroup.markAllAsTouched();\r\n return this.formGroup.valid;\r\n }\r\n\r\n public isErrorState(formControlName: keyof TilslutningsanmodningOplysningerModel): boolean {\r\n return this.errorStateMatcher.isErrorState(this.formGroup.get(formControlName) as UntypedFormControl, this.form);\r\n }\r\n\r\n public isRequired(formControlName: keyof TilslutningsanmodningOplysningerModel): boolean {\r\n return this.formBuilder.isRequired(this.formGroup, formControlName);\r\n }\r\n\r\n public isDirty(formControlName: keyof TilslutningsanmodningOplysningerModel): boolean {\r\n return this.formGroup.get(formControlName).dirty;\r\n }\r\n public onLaesSamtykkeClick(event: MouseEvent, samtykkeTekst: string): void {\r\n event.preventDefault();\r\n this.dialog.openOk(\"Samtykke\", this.formBuilder.opretSamtykkeTekst(this.formGroup, this.konfiguration));\r\n }\r\n}\r\n","
    \r\n @if (false) {\r\n
    \r\n      {{ formGroup.getRawValue() | json }}\r\n    
    \r\n }\r\n
    \r\n Privat\r\n \r\n \r\n Erhverv\r\n
    \r\n\r\n
    \r\n @if (!formGroup.control('erVirksomhed').value) {\r\n \r\n For- og efternavn\r\n \r\n @if (formGroup.get('navn').errors?.required) {\r\n Indtast dit fulde navn \r\n }\r\n @if (formGroup.get('navn').errors?.maxlength) {\r\n Navn må indeholde 30 tegn \r\n }\r\n \r\n }\r\n @if (formGroup.control('erVirksomhed').value) {\r\n \r\n Firmanavn\r\n \r\n @if (formGroup.get('navn').errors?.required) {\r\n Indtast virksomhedens navn \r\n }\r\n @if (formGroup.get('navn').errors?.maxlength) {\r\n Firmanavn må indeholde 30 tegn \r\n }\r\n \r\n }\r\n @if (formGroup.control('erVirksomhed').value) {\r\n \r\n Kontaktperson\r\n \r\n @if (formGroup.get('ekstraPersonNavn').errors?.required) {\r\n Indtast kontaktpersonens fulde navn\r\n \r\n }\r\n @if (formGroup.get('ekstraPersonNavn').errors?.maxlength) {\r\n Kontaktperson må indeholde 30 tegn\r\n \r\n }\r\n \r\n }\r\n\r\n {{adresse2}}\r\n\r\n \r\n Telefon\r\n \r\n @if (formGroup.get('telefon').hasError('required')) {\r\n Indtast telefonnummer \r\n }\r\n @if (formGroup.get('telefon').hasError('pattern')) {\r\n Indtast gyldigt telefonnummer \r\n }\r\n \r\n \r\n E-mail\r\n \r\n @if (formGroup.get('email').hasError('required')) {\r\n Indtast e-mail \r\n }\r\n @if (formGroup.get('email').hasError('email')) {\r\n Indtast gyldig e-mail \r\n }\r\n \r\n \r\n Gentag e-mail\r\n \r\n @if (formGroup.get('emailGentag').hasError('required')) {\r\n Indtast e-mail \r\n }\r\n @if (formGroup.get('emailGentag').hasError('email')) {\r\n Indtast gyldig e-mail \r\n }\r\n @if (formGroup.get('emailGentag').hasError('mustMatch') && !formGroup.get('emailGentag').hasError('email')) {\r\n \r\n De to e-mails stemmer ikke overens\r\n \r\n }\r\n \r\n @if (konfiguration.steps.personligeOplysninger.visBemaerkning) {\r\n \r\n Bemærkning\r\n \r\n \r\n }\r\n\r\n @if (konfiguration.visEBoksTilmelding) {\r\n
    \r\n @if (!formGroup.control('erVirksomhed').value) {\r\n Jeg ønsker at modtage post via\r\n e-Boks\r\n @if (formGroup.control('oenskerEboks').value) {\r\n
    \r\n \r\n CPR-nummer\r\n \r\n @if (formGroup.get('cprNummer').invalid) {\r\n Indtast dit CPR-nummer \r\n }\r\n \r\n \r\n Gentag CPR-nummer\r\n \r\n @if (formGroup.get('cprNummerGentag').hasError('required')) {\r\n Indtast dit CPR-nummer\r\n \r\n }\r\n @if (formGroup.get('cprNummerGentag').hasError('mustMatch') && !formGroup.get('cprNummerGentag').hasError('required')) {\r\n \r\n De to CPR-numre stemmer ikke overens \r\n }\r\n \r\n
    \r\n Jeg accepterer betingelserne (læs\r\n betingelserne)\r\n
    \r\n @if (isErrorState('samtykkeTekstAccepteret')) {\r\n \r\n Vi har brug for samtykke for at kunne sende via e-Boks\r\n \r\n }\r\n
    \r\n }\r\n }\r\n @if (formGroup.control('erVirksomhed').value) {\r\n Vi ønsker at modtage post via\r\n e-Boks\r\n @if (formGroup.control('oenskerEboks').value) {\r\n
    \r\n \r\n CVR-nummer\r\n \r\n @if (formGroup.get('cvrNummer').invalid) {\r\n Indtast virksomhedens CVR-nummer\r\n \r\n }\r\n \r\n \r\n P-nummer\r\n \r\n @if (formGroup.get('pNummer').invalid) {\r\n Indtast eventuelt virksomhedens P-nummer\r\n \r\n }\r\n \r\n
    \r\n Vi accepterer\r\n betingelserne (læs\r\n betingelserne)\r\n
    \r\n @if (isErrorState('samtykkeTekstAccepteret')) {\r\n \r\n Vi har brug for samtykke for at kunne sende via e-Boks\r\n \r\n }\r\n
    \r\n }\r\n }\r\n }\r\n
    \r\n\r\n @if (!formGroup.control('erVirksomhed').value && konfiguration.visEBoksTilmelding) {\r\n
    \r\n Er der flere ejere på adressen?\r\n @if (formGroup.control('ekstraPerson').value) {\r\n
    \r\n \r\n Medejers for og -efternavn\r\n \r\n @if (formGroup.get('ekstraPersonNavn').errors?.required) {\r\n Indtast medejers fulde navn\r\n \r\n }\r\n @if (formGroup.get('ekstraPersonNavn').errors?.maxlength) {\r\n Navn må indeholde 30 tegn\r\n \r\n }\r\n \r\n \r\n Telefon\r\n \r\n @if (formGroup.get('ekstraPersonTelefon').hasError('pattern')) {\r\n Indtast gyldigt\r\n telefonnummer \r\n }\r\n \r\n \r\n E-mail\r\n \r\n @if (formGroup.get('ekstraPersonEmail').hasError('email')) {\r\n Indtast gyldig e-mail\r\n \r\n }\r\n \r\n \r\n Gentag e-mail\r\n \r\n @if (formGroup.get('ekstraPersonEmailGentag').hasError('email')) {\r\n Indtast gyldig e-mail\r\n \r\n }\r\n @if (formGroup.get('ekstraPersonEmailGentag').hasError('mustMatch') && !formGroup.get('ekstraPersonEmailGentag').hasError('email')) {\r\n \r\n De to e-mails stemmer ikke overens\r\n \r\n }\r\n \r\n @if (konfiguration.visEBoksTilmelding) {\r\n Jeg (medejer) ønsker\r\n at modtage post via e-Boks\r\n @if (formGroup.control('ekstraPersonOenskerEboks').value) {\r\n
    \r\n \r\n Medejers CPR-nummer\r\n \r\n @if (formGroup.get('ekstraPersonCprNummer').invalid) {\r\n Indtast medejers CPR-nummer\r\n \r\n }\r\n \r\n \r\n Gentag CPR-nummer\r\n \r\n @if (formGroup.get('ekstraPersonCprNummerGentag').hasError('required')) {\r\n Indtast\r\n dit CPR-nummer \r\n }\r\n @if (formGroup.get('ekstraPersonCprNummerGentag').hasError('mustMatch') && !formGroup.get('ekstraPersonCprNummerGentag').hasError('required')) {\r\n \r\n De to CPR-numre stemmer ikke overens \r\n }\r\n \r\n
    \r\n Jeg\r\n accepterer betingelserne (læs\r\n betingelserne)\r\n
    \r\n @if (isErrorState('ekstraPersonSamtykkeTekstAccepteret')) {\r\n \r\n Vi har brug for samtykke for at kunne sende via e-Boks\r\n \r\n }\r\n
    \r\n }\r\n }\r\n
    \r\n }\r\n }\r\n
    ","export * from \"./tilslutningsanmodning.component\";\r\nexport * from \"./tilslutningsanmodning.module\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { first } from \"rxjs/operators\";\r\n\r\nimport { DffContentGroup, DffGroupedContent } from \"@dffedb/util\";\r\nimport { formatterCprNummer, formatterCvrNummer, formatterPNummer, maskCprNummer } from \"@e-forsyning/common/e-boks\";\r\nimport { EjendomsfaktorDefinition } from \"@e-forsyning/common/ejendomsfaktor\";\r\nimport { DffMailInternal, EforsyningMailBuilderService, EforsyningMailSenderService, MailHelper } from \"@e-forsyning/common/mail\";\r\nimport { EforsyningIndstilling, UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { TilslutningsanmodningKonfiguration, TilslutningsanmodningModel } from \"../model/tilslutningsanmodning.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TilslutningsanmodningMailService {\r\n constructor(\r\n private readonly eforsyningMailBuilder: EforsyningMailBuilderService,\r\n private readonly mailSender: EforsyningMailSenderService,\r\n private readonly umbracoIndstillingerObserver: UmbracoIndstillingerObserver\r\n ) {}\r\n\r\n public async sendForsyningsanmodningMail(\r\n umbracoId: string,\r\n konfiguration: TilslutningsanmodningKonfiguration,\r\n ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[],\r\n adresseTekst: string,\r\n model: TilslutningsanmodningModel\r\n ): Promise {\r\n const indstillinger = await this.umbracoIndstillingerObserver.valueChanges.pipe(first()).toPromise();\r\n const aktuelEforsyning = indstillinger.eforsyninger.find((e) => e.nodeId === konfiguration.eforsyning.nodeId);\r\n const sideId = umbracoId; // TO DO\r\n //const firmaEmail = konfiguration.alternativVaerksEmail === undefined ? aktuelEforsyning.firmaInfo.email : konfiguration.alternativVaerksEmail;\r\n // Send mail til forbrugeren + cc: værket\r\n\r\n //Mail genereres via Umbraco for at undgå fremmed html\r\n\r\n const mailTilForbruger = await this.genererMail(\r\n aktuelEforsyning,\r\n ejendomsfaktorDefinitioner,\r\n adresseTekst,\r\n model,\r\n konfiguration.visEBoksTilmelding,\r\n model.oplysninger.ekstraPerson ? model.oplysninger.email + \";\" + model.oplysninger.ekstraPersonEmail : model.oplysninger.email,\r\n sideId\r\n );\r\n await this.mailSender.sendForsyningsanmodningMail(mailTilForbruger);\r\n }\r\n\r\n private async genererMail(\r\n aktuelEforsyning: EforsyningIndstilling,\r\n ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[],\r\n adresseTekst: string,\r\n model: TilslutningsanmodningModel,\r\n visEBoksTilmelding: boolean,\r\n toMailAddress: string,\r\n sideId: string\r\n ): Promise {\r\n const myModel = JSON.stringify(this.modelToGroupedContent(adresseTekst, model, visEBoksTilmelding, ejendomsfaktorDefinitioner));\r\n //this.genererBody(this.modelToGroupedContent(adresseTekst, model, visEBoksTilmelding, ejendomsfaktorDefinitioner));\r\n //const body = this.genererBody(aktuelEforsyning, mailSubject, mailBody, this.modelToGroupedContent(adresseTekst, model, visEBoksTilmelding, ejendomsfaktorDefinitioner));\r\n const result: DffMailInternal = {\r\n sideId,\r\n to: toMailAddress,\r\n model: myModel\r\n };\r\n return result;\r\n }\r\n\r\n private modelToGroupedContent(\r\n adresseTekst: string,\r\n model: TilslutningsanmodningModel,\r\n visEBoksTilmelding: boolean,\r\n ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[]\r\n ): DffGroupedContent {\r\n const virksomhedensOplysninger: DffContentGroup = model.oplysninger.erVirksomhed\r\n ? {\r\n title: \"Virksomhedens oplysninger\",\r\n rows: [\r\n { key: \"Firmanavn\", value: model.oplysninger.navn },\r\n { key: \"Kontaktperson\", value: model.oplysninger.ekstraPersonNavn },\r\n { key: \"Adresse\", value: adresseTekst },\r\n { key: \"Telefon\", value: model.oplysninger.telefon },\r\n { key: \"E-mail\", value: model.oplysninger.email },\r\n model.oplysninger.bemaerkning ? { key: \"Bemærkning\", value: model.oplysninger.bemaerkning } : null,\r\n visEBoksTilmelding\r\n ? { key: \"Ønsker at modtage post via e-Boks?\", value: this.boolToJaNej(model.oplysninger.oenskerEboks) }\r\n : null,\r\n model.oplysninger.oenskerEboks ? { key: \"CVR-nummer\", value: formatterCvrNummer(model.oplysninger.cvrNummer) } : null,\r\n model.oplysninger.oenskerEboks ? { key: \"P-nummer\", value: formatterPNummer(model.oplysninger.pNummer) } : null\r\n ].filter((r) => !!r)\r\n }\r\n : null;\r\n const personligeOplysninger: DffContentGroup = !model.oplysninger.erVirksomhed\r\n ? {\r\n title: \"Personlige oplysninger\",\r\n rows: [\r\n { key: \"Navn\", value: model.oplysninger.navn },\r\n { key: \"Adresse\", value: adresseTekst },\r\n { key: \"Telefon\", value: model.oplysninger.telefon },\r\n { key: \"E-mail\", value: model.oplysninger.email },\r\n model.oplysninger.bemaerkning ? { key: \"Bemærkning\", value: model.oplysninger.bemaerkning } : null,\r\n visEBoksTilmelding\r\n ? { key: \"Ønsker at modtage post via e-Boks?\", value: this.boolToJaNej(model.oplysninger.oenskerEboks) }\r\n : null,\r\n model.oplysninger.oenskerEboks\r\n ? { key: \"CPR-nummer\", value: formatterCprNummer(maskCprNummer(model.oplysninger.cprNummer)) }\r\n : null\r\n ].filter((r) => !!r)\r\n }\r\n : null;\r\n const medejerPersonligeOplysninger: DffContentGroup =\r\n !model.oplysninger.erVirksomhed && model.oplysninger.ekstraPerson\r\n ? {\r\n title: \"Medejers oplysninger\",\r\n rows: [\r\n { key: \"Navn\", value: model.oplysninger.ekstraPersonNavn },\r\n { key: \"Telefon\", value: model.oplysninger.ekstraPersonTelefon },\r\n { key: \"E-mail\", value: model.oplysninger.ekstraPersonEmail },\r\n visEBoksTilmelding\r\n ? {\r\n key: \"Ønsker at modtage post via e-Boks?\",\r\n value: this.boolToJaNej(model.oplysninger.ekstraPersonOenskerEboks)\r\n }\r\n : null,\r\n model.oplysninger.ekstraPersonOenskerEboks\r\n ? { key: \"CPR-nummer\", value: formatterCprNummer(maskCprNummer(model.oplysninger.ekstraPersonCprNummer)) }\r\n : null\r\n ].filter((r) => !!r)\r\n }\r\n : null;\r\n const ejendomsfaktorOplysninger: DffContentGroup = model.ejendomsfaktorer.length\r\n ? {\r\n title: \"Oplysninger om ejendommen\",\r\n rows: model.ejendomsfaktorer.map((e) => ({\r\n key: this.findEjendomsfaktorNavn(e.definitionId, ejendomsfaktorDefinitioner),\r\n value: this.findEjendomsfaktorVaerdi(e.vaerdi.aktuel, e.definitionId, ejendomsfaktorDefinitioner)\r\n }))\r\n }\r\n : null;\r\n return {\r\n groups: [virksomhedensOplysninger, personligeOplysninger, medejerPersonligeOplysninger, ejendomsfaktorOplysninger].filter(\r\n (e) => !!e\r\n )\r\n };\r\n }\r\n\r\n private findEjendomsfaktorNavn(definitionId: number, ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[]): string {\r\n return this.findEjendomsfaktorDefinition(definitionId, ejendomsfaktorDefinitioner)?.navn ?? \"-\";\r\n }\r\n\r\n private findEjendomsfaktorVaerdi(vaerdi: string, definitionId: number, ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[]): string {\r\n const definition = this.findEjendomsfaktorDefinition(definitionId, ejendomsfaktorDefinitioner);\r\n const valgmulighedNavn = definition?.valgmuligheder?.find((v) => v.id === vaerdi)?.navn;\r\n const result = (valgmulighedNavn ?? vaerdi)?.toString();\r\n return !!result ? result + \" \" + definition?.enhed : \"\";\r\n }\r\n\r\n private findEjendomsfaktorDefinition(\r\n definitionId: number,\r\n ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[]\r\n ): EjendomsfaktorDefinition | null {\r\n return ejendomsfaktorDefinitioner.find((e) => e.id === definitionId);\r\n }\r\n\r\n private boolToJaNej(value: boolean): string {\r\n return value ? \"Ja\" : \"Nej\";\r\n }\r\n\r\n private genererBody(content: DffGroupedContent): string {\r\n return this.eforsyningMailBuilder.generer(MailHelper.kvitteringPanel(content));\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { AbstractControl, UntypedFormBuilder, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\nimport {\r\n cprNummerValidator,\r\n cvrNummerValidator,\r\n IFormBuilder,\r\n IFormControl,\r\n IFormGroup,\r\n mustMatchValidator,\r\n pNummerValidator\r\n} from \"@dffedb/forms\";\r\nimport { opretSamtykkeTekst, SamtykkeTekstData } from \"@e-forsyning/common/e-boks\";\r\nimport { EjendomsfaktorDefinition } from \"@e-forsyning/common/ejendomsfaktor\";\r\nimport { EjendomsfaktorFormBuilder } from \"@e-forsyning/common/ejendomsfaktor/ejendomsfaktor.form-builder\";\r\nimport { Ejendomsfaktor } from \"@e-forsyning/common/ejendomsfaktor/model/ejendomsfaktor.model\";\r\n\r\nimport {\r\n TilslutningsanmodningKonfiguration,\r\n TilslutningsanmodningModel,\r\n TilslutningsanmodningOplysningerModel\r\n} from \"../model/tilslutningsanmodning.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TilslutningsanmodningFormBuilder {\r\n private readonly fb: IFormBuilder;\r\n\r\n constructor(fb: UntypedFormBuilder, private readonly ejendomsfaktorFormBuilder: EjendomsfaktorFormBuilder) {\r\n this.fb = fb;\r\n }\r\n\r\n public opretFormGroup(\r\n konfiguration: TilslutningsanmodningKonfiguration,\r\n ejendomsfaktorer: Ejendomsfaktor[],\r\n ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[]\r\n ): IFormGroup {\r\n const result = this.fb.group({\r\n oplysninger: this.opretOplysningerFormGroup(konfiguration),\r\n ejendomsfaktorer: this.ejendomsfaktorFormBuilder.ejendomsfaktorerToFormArray(ejendomsfaktorer, ejendomsfaktorDefinitioner)\r\n });\r\n return result;\r\n }\r\n\r\n public formGroupToTilslutningsanmodningModel(formGroup: IFormGroup): TilslutningsanmodningModel {\r\n return formGroup.value;\r\n }\r\n\r\n public opretSamtykkeTekst(\r\n formGroup: IFormGroup,\r\n konfiguration: TilslutningsanmodningKonfiguration\r\n ): string {\r\n const cprNummer = formGroup.control(\"erVirksomhed\").value ? \"\" : formGroup.control(\"cprNummer\").value;\r\n const cvrNummer = formGroup.control(\"erVirksomhed\").value ? formGroup.control(\"cvrNummer\").value : \"\";\r\n const pNummer = formGroup.control(\"erVirksomhed\").value ? formGroup.control(\"pNummer\").value : \"\";\r\n return this.doOpretSamtykkeTekst(cprNummer, cvrNummer, pNummer, konfiguration);\r\n }\r\n\r\n public isRequired(\r\n formGroup: IFormGroup,\r\n formControlName: keyof TilslutningsanmodningOplysningerModel\r\n ): boolean {\r\n const erPrivatperson = !formGroup.get(\"erVirksomhed\").value;\r\n const erVirksomhed = !!formGroup.get(\"erVirksomhed\").value;\r\n const oenskerEboks = !!formGroup.get(\"oenskerEboks\").value;\r\n const ekstraPerson = !!formGroup.get(\"ekstraPerson\").value;\r\n const ekstraPersonOenskerEboks = !!formGroup.get(\"ekstraPersonOenskerEboks\").value;\r\n switch (formControlName) {\r\n case \"cprNummer\":\r\n return erPrivatperson && oenskerEboks;\r\n case \"cvrNummer\":\r\n return erVirksomhed && oenskerEboks;\r\n case \"samtykkeTekstAccepteret\":\r\n return oenskerEboks;\r\n case \"ekstraPersonNavn\":\r\n return ekstraPerson;\r\n case \"ekstraPersonCprNummer\":\r\n return erPrivatperson && ekstraPerson && ekstraPersonOenskerEboks;\r\n case \"ekstraPersonSamtykkeTekstAccepteret\":\r\n return erPrivatperson && ekstraPerson && ekstraPersonOenskerEboks;\r\n }\r\n return true;\r\n }\r\n\r\n private opretOplysningerFormGroup(\r\n konfiguration: TilslutningsanmodningKonfiguration\r\n ): IFormGroup {\r\n const result = this.fb.group({\r\n erVirksomhed: this.fb.control(false),\r\n navn: this.fb.control(\"\", [Validators.required, Validators.maxLength(30)]),\r\n telefon: this.fb.control(\"\", [Validators.required, Validators.pattern(/^[+]?[0-9]{8,}$/)]),\r\n email: this.fb.control(\"\", [Validators.required, Validators.email]),\r\n emailGentag: this.fb.control(\"\", [Validators.required, Validators.email, mustMatchValidator(\"email\")]),\r\n bemaerkning: this.fb.control(\"\"),\r\n oenskerEboks: this.fb.control(konfiguration.visEBoksTilmelding ? true : false),\r\n cprNummer: this.fb.control(\"\"),\r\n cprNummerGentag: this.fb.control(\"\"),\r\n cvrNummer: this.fb.control(\"\"),\r\n pNummer: this.fb.control(\"\"),\r\n samtykkeTekst: this.fb.control(\"\"),\r\n samtykkeTekstAccepteret: this.fb.control(false),\r\n ekstraPerson: this.fb.control(false),\r\n ekstraPersonNavn: this.fb.control(\"\"),\r\n ekstraPersonOenskerEboks: this.fb.control(false),\r\n ekstraPersonCprNummer: this.fb.control(\"\"),\r\n ekstraPersonCprNummerGentag: this.fb.control(\"\"),\r\n ekstraPersonTelefon: this.fb.control(\"\"),\r\n ekstraPersonEmail: this.fb.control(\"\", [Validators.email]),\r\n ekstraPersonEmailGentag: this.fb.control(\"\", [Validators.email, mustMatchValidator(\"ekstraPersonEmail\")]),\r\n ekstraPersonSamtykkeTekst: this.fb.control(\"\"),\r\n ekstraPersonSamtykkeTekstAccepteret: this.fb.control(false)\r\n });\r\n result.valueChanges.subscribe(() => this.updateStatus(result, konfiguration));\r\n return result;\r\n }\r\n\r\n private updateStatus(\r\n formGroup: IFormGroup,\r\n konfiguration: TilslutningsanmodningKonfiguration\r\n ): void {\r\n const cprNummerValidators = [Validators.required, Validators.minLength(10), Validators.maxLength(10), cprNummerValidator()];\r\n const cprNummerGentagValidators = [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(10),\r\n cprNummerValidator(),\r\n mustMatchValidator(\"cprNummer\")\r\n ];\r\n const ekstraPersonCprNummerGentagValidators = [\r\n Validators.required,\r\n Validators.minLength(10),\r\n Validators.maxLength(10),\r\n cprNummerValidator(),\r\n mustMatchValidator(\"ekstraPersonCprNummer\")\r\n ];\r\n const cvrNummerValidators = [Validators.required, Validators.minLength(8), Validators.maxLength(8), cvrNummerValidator()];\r\n const pNummerValidators = [Validators.minLength(10), Validators.maxLength(10), pNummerValidator()];\r\n\r\n this.setValidators(formGroup.get(\"cprNummer\"), this.isRequired(formGroup, \"cprNummer\") ? cprNummerValidators : []);\r\n this.setValidators(formGroup.get(\"cprNummerGentag\"), this.isRequired(formGroup, \"cprNummer\") ? cprNummerGentagValidators : []);\r\n this.setValidators(formGroup.get(\"cvrNummer\"), this.isRequired(formGroup, \"cvrNummer\") ? cvrNummerValidators : []);\r\n this.setValidators(formGroup.get(\"pNummer\"), this.isRequired(formGroup, \"cvrNummer\") ? pNummerValidators : []);\r\n this.setValidators(\r\n formGroup.get(\"ekstraPersonNavn\"),\r\n this.isRequired(formGroup, \"ekstraPersonNavn\") ? [Validators.required, Validators.maxLength(30)] : []\r\n );\r\n this.setValidators(\r\n formGroup.get(\"ekstraPersonCprNummer\"),\r\n this.isRequired(formGroup, \"ekstraPersonCprNummer\") ? cprNummerValidators : []\r\n );\r\n this.setValidators(\r\n formGroup.get(\"ekstraPersonCprNummerGentag\"),\r\n this.isRequired(formGroup, \"ekstraPersonCprNummer\") ? ekstraPersonCprNummerGentagValidators : []\r\n );\r\n this.setValidators(\r\n formGroup.get(\"samtykkeTekstAccepteret\"),\r\n this.isRequired(formGroup, \"samtykkeTekstAccepteret\") ? [Validators.requiredTrue] : []\r\n );\r\n this.setValidators(\r\n formGroup.get(\"ekstraPersonSamtykkeTekstAccepteret\"),\r\n this.isRequired(formGroup, \"ekstraPersonSamtykkeTekstAccepteret\") ? [Validators.requiredTrue] : []\r\n );\r\n this.setValue(formGroup.control(\"ekstraPersonSamtykkeTekst\"), this.opretEkstraPersonSamtykkeTekst(formGroup, konfiguration));\r\n }\r\n\r\n private setValidators(control: AbstractControl, validators: ValidatorFn[]): void {\r\n // Når man ændrer validatorer, bør man efterfølgende kalde updateValueAndValidity.\r\n // Ellers risikerer vi at få fejlen ExpressionChangedAfterItHasBeenCheckedError.\r\n control.setValidators(validators);\r\n control.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n private opretEkstraPersonSamtykkeTekst(\r\n formGroup: IFormGroup,\r\n konfiguration: TilslutningsanmodningKonfiguration\r\n ): string {\r\n const cprNummer = formGroup.control(\"erVirksomhed\").value ? \"\" : formGroup.control(\"ekstraPersonCprNummer\").value;\r\n return this.doOpretSamtykkeTekst(cprNummer, \"\", \"\", konfiguration);\r\n }\r\n\r\n private doOpretSamtykkeTekst(\r\n cprNummer: string,\r\n cvrNummer: string,\r\n pNummer: string,\r\n konfiguration: TilslutningsanmodningKonfiguration\r\n ): string {\r\n const standardData: SamtykkeTekstData = {\r\n cprNummer: null,\r\n cvrNummer: null,\r\n pNummer: null,\r\n firmaNavn: konfiguration.eforsyning.firmaInfo.firmaNavn,\r\n telefon: konfiguration.eforsyning.firmaInfo.telefon\r\n };\r\n const samtykkeTekst = opretSamtykkeTekst({ ...standardData, cprNummer, cvrNummer, pNummer });\r\n return samtykkeTekst;\r\n }\r\n\r\n private setValue(formControl: IFormControl, value: string): void {\r\n if (formControl.value !== value) {\r\n formControl.setValue(value);\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { beregnDecimalerIInternationalMaske, dkMaskeTilInternationalMaske } from \"@dffedb/util\";\r\nimport { EjendomsfaktorDefinition, EjendomsfaktorDefinitionValgmulighed } from \"@e-forsyning/common/ejendomsfaktor\";\r\n\r\nimport {\r\n TilslutningsanmodningDto,\r\n TilslutningsanmodningEjendomsfaktorDefinitionDto,\r\n TilslutningsanmodningEjendomsfaktorDefinitionValgmulighedDto,\r\n TilslutningsanmodningOplysningerDto\r\n} from \"../model/tilslutningsanmodning.dto\";\r\nimport { TilslutningsanmodningModel, TilslutningsanmodningOplysningerModel } from \"../model/tilslutningsanmodning.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TilslutningsanmodningMapper {\r\n public dtoToEjendomsfaktorDefinitioner(dto: TilslutningsanmodningEjendomsfaktorDefinitionDto[]): EjendomsfaktorDefinition[] {\r\n const result = dto.map((d) => this.dtoToEjendomsfaktorDefinition(d));\r\n return result;\r\n }\r\n\r\n public dtoToEjendomsfaktorDefinition(dto: TilslutningsanmodningEjendomsfaktorDefinitionDto): EjendomsfaktorDefinition {\r\n const maske = dkMaskeTilInternationalMaske(dto.formater);\r\n const result: EjendomsfaktorDefinition = {\r\n datatype: dto.alfa,\r\n decimaler: beregnDecimalerIInternationalMaske(maske),\r\n enhed: dto.enhed,\r\n id: dto.faktor,\r\n maske,\r\n maxVaerdi: this.beregnMaxVaerdi(dto.vaerdiMaximum),\r\n minVaerdi: this.beregnMinVaerdi(dto.vaerdiMinimum),\r\n navn: dto.faktorTekst,\r\n readonly: false,\r\n valgmuligheder: this.dtoToEjendomsfaktorDefinitionValgmuligheder(dto.relationer)\r\n };\r\n return result;\r\n }\r\n\r\n public tilslutningsanmodningModelToDto(data: TilslutningsanmodningModel): TilslutningsanmodningDto {\r\n const result: TilslutningsanmodningDto = {\r\n oplysninger: this.tilslutningsanmodningOplysningerModelToDto(data.oplysninger),\r\n ejendomsfaktorer: data.ejendomsfaktorer.map((e) => ({\r\n definitionId: e.definitionId,\r\n vaerdi: e.vaerdi.aktuel\r\n }))\r\n };\r\n return result;\r\n }\r\n\r\n public tilslutningsanmodningOplysningerModelToDto(data: TilslutningsanmodningOplysningerModel): TilslutningsanmodningOplysningerDto {\r\n const cprGodkendt = !data.erVirksomhed && data.oenskerEboks && data.samtykkeTekstAccepteret;\r\n const cvrGodkendt = data.erVirksomhed && data.oenskerEboks && data.samtykkeTekstAccepteret;\r\n const ekstraPersonCprGodkendt = !data.erVirksomhed && data.ekstraPerson && data.ekstraPersonOenskerEboks && data.ekstraPersonSamtykkeTekstAccepteret;\r\n\r\n const result: TilslutningsanmodningOplysningerDto = {\r\n erVirksomhed: data.erVirksomhed,\r\n\r\n navn: data.navn,\r\n email: data.ekstraPerson || data.erVirksomhed ? data.email + \";\" + data.ekstraPersonEmail : data.email,\r\n telefon: data.telefon,\r\n cprNummer: cprGodkendt ? data.cprNummer : null,\r\n cvrNummer: cvrGodkendt ? data.cvrNummer : null,\r\n pNummer: cvrGodkendt ? data.pNummer : null,\r\n oenskerEboks: cprGodkendt || cvrGodkendt,\r\n samtykkeTekst: cprGodkendt || cvrGodkendt ? data.samtykkeTekst : null,\r\n samtykkeTekstAccepteret: cprGodkendt || cvrGodkendt,\r\n\r\n ekstraPerson: data.ekstraPerson || data.erVirksomhed,\r\n ekstraPersonNavn: data.ekstraPerson || data.erVirksomhed ? data.ekstraPersonNavn : null,\r\n ekstraPersonTelefon: data.ekstraPerson || data.erVirksomhed ? data.ekstraPersonTelefon : null,\r\n ekstraPersonCprNummer: ekstraPersonCprGodkendt ? data.ekstraPersonCprNummer : null,\r\n ekstraPersonOenskerEboks: ekstraPersonCprGodkendt,\r\n ekstraPersonSamtykkeTekst: ekstraPersonCprGodkendt ? data.ekstraPersonSamtykkeTekst : null,\r\n ekstraPersonSamtykkeTekstAccepteret: ekstraPersonCprGodkendt\r\n };\r\n return result;\r\n }\r\n\r\n public dtoToEjendomsfaktorDefinitionValgmuligheder(dto: TilslutningsanmodningEjendomsfaktorDefinitionValgmulighedDto[]): EjendomsfaktorDefinitionValgmulighed[] {\r\n const result = dto.map((d) => this.dtoToEjendomsfaktorDefinitionValgmulighed(d));\r\n return result;\r\n }\r\n\r\n public dtoToEjendomsfaktorDefinitionValgmulighed(dto: TilslutningsanmodningEjendomsfaktorDefinitionValgmulighedDto): EjendomsfaktorDefinitionValgmulighed {\r\n const result: EjendomsfaktorDefinitionValgmulighed = {\r\n id: dto.relation,\r\n navn: dto.tekst\r\n };\r\n return result;\r\n }\r\n\r\n private beregnMinVaerdi(value: string): number {\r\n return value ? +value : -2_147_483_648; // Mindste integer vi kan hådtere i Delphi\r\n }\r\n\r\n private beregnMaxVaerdi(value: string): number {\r\n return value ? +value : 2_147_483_647; // Største integer vi kan håndtere i Delphi\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { first, map, mapTo, switchMap, tap } from \"rxjs/operators\";\r\n\r\nimport { dbToBoolean, dbToString } from \"@dffedb/util\";\r\nimport { EjendomsfaktorDefinition } from \"@e-forsyning/common/ejendomsfaktor/model/ejendomsfaktor-definition.model\";\r\nimport { UmbracoHttpClient } from \"@e-forsyning/common/http\";\r\nimport { UmbracoIndstillinger, UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport {\r\n TilslutningsanmodningDto,\r\n TilslutningsanmodningKonfigurationDto,\r\n TilslutningsanmodningSkabelonDto\r\n} from \"../model/tilslutningsanmodning.dto\";\r\nimport { TilslutningsanmodningKonfiguration, TilslutningsanmodningModel } from \"../model/tilslutningsanmodning.model\";\r\nimport { TilslutningsanmodningMapper } from \"./tilslutningsanmodning.mapper\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TilslutningsanmodningRepository {\r\n constructor(\r\n private readonly indstillinger: UmbracoIndstillingerObserver,\r\n private readonly httpClient: HttpClient,\r\n private readonly umbracoHttpClient: UmbracoHttpClient,\r\n private readonly mapper: TilslutningsanmodningMapper\r\n ) {}\r\n\r\n public selectKonfiguration(nodeId: number): Observable {\r\n const indstillinger$ = this.indstillinger.valueChanges;\r\n const sideData$ = this.umbracoHttpClient.hentSideDataForId(nodeId);\r\n return combineLatest([indstillinger$, sideData$]).pipe(\r\n map(([indstillinger, dto]) => this.mapDtoToTilslutningsamodningKonfiguration(indstillinger, dto))\r\n );\r\n }\r\n\r\n public hentEjendomsfaktorDefinitioner(eforsyningNodeId: number): Observable {\r\n return this.indstillinger.valueChanges.pipe(\r\n map((indstillinger) => indstillinger.eforsyninger.find((e) => e.nodeId === eforsyningNodeId)),\r\n map((eforsyning) => eforsyning.appServerUrl),\r\n switchMap((appServerUrl) =>\r\n this.httpClient.get(`${appServerUrl}api/HentTilslutningsanmodningsSkabelon`)\r\n ),\r\n map((skabelon) => this.mapper.dtoToEjendomsfaktorDefinitioner(skabelon.ejendomsfaktorer))\r\n );\r\n }\r\n\r\n public submit(eforsyningNodeId: number, ejendomNr: number, data: TilslutningsanmodningModel): Promise {\r\n const dto = this.mapper.tilslutningsanmodningModelToDto(data);\r\n return this.indstillinger.valueChanges\r\n .pipe(\r\n map((i) => i.eforsyninger.find((e) => e.nodeId === eforsyningNodeId)),\r\n tap((e) => console.log(\"Submitter\", e.appServerUrl, ejendomNr, dto)),\r\n switchMap((e) => this.httpSubmit(e.appServerUrl, ejendomNr, dto)),\r\n //delay(1000),\r\n tap((e) => console.log(\"Submittet\", e, ejendomNr, dto)),\r\n first(),\r\n mapTo(null)\r\n )\r\n .toPromise();\r\n }\r\n\r\n private httpSubmit(appServerUrl: string, ejendomNr: number, data: TilslutningsanmodningDto): Observable {\r\n const url = `${appServerUrl}api/OpretTilslutningsAnmodning?ejendomNr=${ejendomNr}`;\r\n return this.httpClient\r\n .post(url, data)\r\n .pipe(tap((result) => console.log(\"Oprettet tilslutningsanmodning for ejendom: \", ejendomNr, result)));\r\n }\r\n\r\n private mapDtoToTilslutningsamodningKonfiguration(\r\n indstillinger: UmbracoIndstillinger,\r\n dto: TilslutningsanmodningKonfigurationDto\r\n ): TilslutningsanmodningKonfiguration {\r\n const eforsyning = indstillinger.eforsyninger.find((e) => e.nodeId === +dto.eforsyningNodeId);\r\n const widgetNodeId = \"\";\r\n return {\r\n eforsyning,\r\n widgetNodeId,\r\n visEBoksTilmelding: dbToBoolean(dto.visEBoksTilmelding),\r\n alternativVaerksEmail: dbToString(dto.alternativVaerksEmail),\r\n steps: {\r\n adresseSoegning: {\r\n knapTekst: dto.interesseKnapTekst,\r\n overskrift: dto.adresseOverskrift,\r\n tekst: dto.adresseTekst\r\n },\r\n ejendomsfaktorer: {\r\n overskrift: dto.ejendomsfaktorerOverskrift,\r\n tekst: dto.ejendomsfaktorerTekst\r\n },\r\n personligeOplysninger: {\r\n overskrift: dto.personligeOplysningerOverskrift,\r\n tekst: dto.personligeOplysningerTekst,\r\n visBemaerkning: !dbToBoolean(dto.personligeOplysningerSkjulBemaerkning),\r\n sendKnapTekst: dto.personligeOplysningerSendKnapTekst === \"\" ? \"Send\" : dto.personligeOplysningerSendKnapTekst\r\n },\r\n kvittering: {\r\n overskrift: dto.kvitteringOverskrift,\r\n tekst: dto.kvitteringTekst,\r\n emailSubject: dto.emailSubject,\r\n emailBody: dto.emailBody\r\n }\r\n }\r\n };\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { BehaviorSubject, combineLatest, Observable } from \"rxjs\";\r\nimport { map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { EntitetStatus } from \"@dffedb/util\";\r\nimport { Ejendomsfaktor, EjendomsfaktorDefinition } from \"@e-forsyning/common/ejendomsfaktor\";\r\nimport { ForsyningPaaAdresseLeveringStatus, ForsyningPaaAdresseResult } from \"@e-forsyning/common/forsyning-paa-adresse\";\r\n\r\nimport { TilslutningsanmodningViewModel } from \"../model/tilslutningsanmodning.view-model\";\r\nimport { TilslutningsanmodningMailService } from \"./tilslutningsanmodning-mail.service\";\r\nimport { TilslutningsanmodningFormBuilder } from \"./tilslutningsanmodning.form-builder\";\r\nimport { TilslutningsanmodningRepository } from \"./tilslutningsanmodning.repository\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TilslutningsanmodningSandbox {\r\n private readonly forsyningPaaAdresseResult$ = new BehaviorSubject({\r\n ejendomNr: null,\r\n status: ForsyningPaaAdresseLeveringStatus.Arbejder,\r\n statusTekst: null,\r\n tekst: null\r\n });\r\n\r\n constructor(public readonly repository: TilslutningsanmodningRepository, public readonly formBuilder: TilslutningsanmodningFormBuilder, private readonly mailService: TilslutningsanmodningMailService) {}\r\n\r\n public selectViewModel(nodeId: number): Observable {\r\n const konfiguration$ = this.repository.selectKonfiguration(nodeId);\r\n return konfiguration$.pipe(\r\n switchMap((konfiguration) =>\r\n combineLatest([this.forsyningPaaAdresseResult$, this.repository.hentEjendomsfaktorDefinitioner(konfiguration.eforsyning.nodeId)]).pipe(\r\n map(([forsyningPaaAdresseResult, ejendomsfaktorDefinitioner]) => {\r\n const ejendomsfaktorer = this.mapEjendomsfaktorDefinitionerToEjendomsfaktorer(ejendomsfaktorDefinitioner);\r\n const formGroup = this.formBuilder.opretFormGroup(konfiguration, ejendomsfaktorer, ejendomsfaktorDefinitioner);\r\n konfiguration.widgetNodeId = String(nodeId);\r\n return {\r\n konfiguration,\r\n ejendomsfaktorDefinitioner,\r\n formGroup,\r\n forsyningPaaAdresseResult\r\n };\r\n })\r\n )\r\n )\r\n );\r\n }\r\n\r\n public setForsyningPaaAdresseResult(value: ForsyningPaaAdresseResult): void {\r\n this.forsyningPaaAdresseResult$.next(value);\r\n }\r\n\r\n public async submit(vm: TilslutningsanmodningViewModel): Promise {\r\n const model = this.formBuilder.formGroupToTilslutningsanmodningModel(vm.formGroup);\r\n await this.repository.submit(vm.konfiguration.eforsyning.nodeId, vm.forsyningPaaAdresseResult.ejendomNr, model);\r\n //await\r\n await this.mailService.sendForsyningsanmodningMail(vm.konfiguration.widgetNodeId, vm.konfiguration, vm.ejendomsfaktorDefinitioner, vm.forsyningPaaAdresseResult.tekst, model);\r\n }\r\n\r\n private mapEjendomsfaktorDefinitionerToEjendomsfaktorer(ejendomsfaktorDefinitioner: EjendomsfaktorDefinition[]): Ejendomsfaktor[] {\r\n return ejendomsfaktorDefinitioner.map((e) => ({\r\n definitionId: e.id,\r\n id: null,\r\n status: EntitetStatus.Uaendret,\r\n vaerdi: {\r\n oprindelig: null,\r\n aktuel: null\r\n }\r\n }));\r\n }\r\n}\r\n","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { MatStepper } from \"@angular/material/stepper\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { ForsyningPaaAdresseLeveringStatus, ForsyningPaaAdresseResult } from \"@e-forsyning/common/forsyning-paa-adresse\";\r\n\r\nimport { TilslutningsanmodningViewModel } from \"./model/tilslutningsanmodning.view-model\";\r\nimport { TilslutningsanmodningFormBuilder } from \"./services/tilslutningsanmodning.form-builder\";\r\nimport { TilslutningsanmodningSandbox } from \"./services/tilslutningsanmodning.sandbox\";\r\n\r\n@Component({\r\n selector: \"tilslutningsanmodning\",\r\n templateUrl: \"./tilslutningsanmodning.component.html\",\r\n styleUrls: [\"./tilslutningsanmodning.component.scss\"]\r\n})\r\nexport class TilslutningsanmodningComponent implements OnInit {\r\n @Input() public nodeId: number;\r\n public ForsyningPaaAdresseLeveringStatus = ForsyningPaaAdresseLeveringStatus;\r\n public submitter = false;\r\n public stepperVisible = false;\r\n public vm$: Observable;\r\n\r\n constructor(public readonly sandbox: TilslutningsanmodningSandbox, public readonly formBuilder: TilslutningsanmodningFormBuilder) {}\r\n\r\n public ngOnInit(): void {\r\n this.vm$ = this.sandbox.selectViewModel(+this.nodeId);\r\n }\r\n\r\n public onAdresseChange(value: ForsyningPaaAdresseResult): void {\r\n this.sandbox.setForsyningPaaAdresseResult(value);\r\n }\r\n\r\n public async submit(vm: TilslutningsanmodningViewModel, source: { valider: () => boolean }, stepper: MatStepper): Promise {\r\n if (!source.valider()) {\r\n return;\r\n }\r\n\r\n this.submitter = true;\r\n try {\r\n await this.sandbox.submit(vm);\r\n stepper.next();\r\n } finally {\r\n this.submitter = false;\r\n }\r\n }\r\n}\r\n","@if (vm$ | async; as vm) {\r\n @if (false) {\r\n
    \r\n      {{ vm.formGroup.getRawValue() | json }}\r\n    
    \r\n }\r\n \r\n \r\n Find adresse\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n @if (vm.forsyningPaaAdresseResult.status === ForsyningPaaAdresseLeveringStatus.LevererIFremtiden) {\r\n
    \r\n Ja, det er min adresse \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n @if (!!vm.ejendomsfaktorDefinitioner.length) {\r\n \r\n Oplysninger om ejendommen\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n Dine oplysninger\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n @if (submitter) {\r\n \r\n }\r\n
    \r\n \r\n Kvittering\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n @if (false) {\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n} @else {\r\n \r\n}\r\n\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\r\nimport { MatStepperModule } from \"@angular/material/stepper\";\r\n\r\nimport { NgxMaskDirective, NgxMaskPipe, provideEnvironmentNgxMask } from \"ngx-mask\";\r\n\r\nimport { DffSideModule, SpinnerModule } from \"@dffedb/ui\";\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { EjendomsfaktorModule } from \"../ejendomsfaktor/ejendomsfaktor.module\";\r\nimport { ForsyningPaaAdresseModule } from \"../forsyning-paa-adresse\";\r\nimport { TilslutningsanmodningStepEjendomsfaktorerComponent } from \"./components/step-ejendsomfaktorer/step-ejendomsfaktorer.component\";\r\nimport { TilslutningsanmodningStepOplysningerComponent } from \"./components/step-oplysninger/step-oplysninger.component\";\r\nimport { TilslutningsanmodningComponent } from \"./tilslutningsanmodning.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n NgxMaskDirective,\r\n NgxMaskPipe,\r\n DffSideModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatCheckboxModule,\r\n MatButtonModule,\r\n MatStepperModule,\r\n MatSlideToggleModule,\r\n SpinnerModule,\r\n EjendomsfaktorModule,\r\n ForsyningPaaAdresseModule\r\n ],\r\n declarations: [\r\n TilslutningsanmodningComponent,\r\n TilslutningsanmodningStepOplysningerComponent,\r\n TilslutningsanmodningStepEjendomsfaktorerComponent\r\n ],\r\n exports: [TilslutningsanmodningComponent],\r\n providers: [provideEnvironmentNgxMask()]\r\n})\r\nexport class TilslutningsanmodningModule {\r\n constructor(iconRegistry: SvgIconRegistry) {}\r\n}\r\n","export * from \"./init-umbraco-indstillinger\";\r\nexport * from \"./model/e-forsyning-indstilling.model\";\r\nexport * from \"./model/forsyning-web-indstilling.model\";\r\nexport * from \"./model/umbraco-indstillinger.model\";\r\nexport * from \"./umbraco-indstillinger.observer\";\r\nexport * from \"./umbraco-indstillinger.repository\";\r\nexport * from \"./test/umbraco-indstillinger.factory\";\r\n","import { Injector } from \"@angular/core\";\r\n\r\nimport { UmbracoMenu } from \"../eforsyning-menu/model/umbraco-menu.model\";\r\nimport { UmbracoMenuObserver } from \"../eforsyning-menu/observers/umbraco-menu.observer\";\r\nimport { UmbracoIndstillinger } from \"./model/umbraco-indstillinger.model\";\r\nimport { UmbracoIndstillingerObserver } from \"./umbraco-indstillinger.observer\";\r\n\r\ninterface InitUmbracoIndstillinger {\r\n umbraco: UmbracoIndstillinger;\r\n menu: UmbracoMenu;\r\n}\r\n\r\ntype InitUmbracoIndstillingerFn = (indstillinger: InitUmbracoIndstillinger) => void;\r\n\r\nexport function initUmbracoIndstillinger(injector: Injector, fn: InitUmbracoIndstillingerFn): void {\r\n const umbracoIndstillinger = new UmbracoIndstillinger();\r\n const indstillinger: InitUmbracoIndstillinger = { umbraco: umbracoIndstillinger, menu: null };\r\n if (fn) {\r\n fn(indstillinger);\r\n // indstillinger.umbraco kan være blevet overskrevet af et 'dumt' objekt.\r\n // Vi tilføjer derfor metoder som er angivet på klassen UmbracoIndstillinger.\r\n Object.setPrototypeOf(indstillinger.umbraco, Object.getPrototypeOf(umbracoIndstillinger));\r\n }\r\n\r\n const umbracoIndstillingerObserver = injector.get(UmbracoIndstillingerObserver);\r\n umbracoIndstillingerObserver.next(indstillinger.umbraco);\r\n\r\n const umbracoMenuObserver = injector.get(UmbracoMenuObserver);\r\n umbracoMenuObserver.next(indstillinger.menu);\r\n}\r\n","// eslint-disable-next-line max-classes-per-file\r\nclass FirmaInfo {\r\n public email?: string;\r\n public firmaNavn?: string;\r\n public telefon?: string;\r\n}\r\n\r\nexport class EforsyningIndstilling {\r\n public appServerUrl: string;\r\n public forsyningId: string;\r\n public siteUrl: string;\r\n public logoUrl: string;\r\n public emailLogoUrl: string;\r\n public emailSignatur: string;\r\n public nodeId: number;\r\n public overskriftPaaLoginside: string;\r\n public firmaInfo: FirmaInfo = {};\r\n}\r\n","export class ForsyningWebIndstilling {\r\n public siteUrl?: string;\r\n public nodeId?: number;\r\n public driftsstatusUrl?: string;\r\n}\r\n","import { EforsyningIndstilling } from \"./e-forsyning-indstilling.model\";\r\nimport { ForsyningWebIndstilling } from \"./forsyning-web-indstilling.model\";\r\n\r\nexport class UmbracoIndstillinger {\r\n public eforsyninger: EforsyningIndstilling[] = [];\r\n public aktuelEforsyningNodeId: number;\r\n\r\n public forsyningWeb: ForsyningWebIndstilling = {};\r\n\r\n public firmaNavn: string;\r\n public vaerkslisteUrl: string;\r\n public vaerkNodeId: number;\r\n public themeUrl: string;\r\n public logoUrl: string;\r\n public visDriftsstatus: boolean;\r\n public driftsstatusForstyrrelserTekst: string;\r\n public driftsstatusIngenForstyrrelserTekst: string;\r\n public matomoSiteId: string;\r\n\r\n public featureToggles: FeatureToggles = {\r\n cookiepolitik: false\r\n };\r\n\r\n public get aktuelEforsyning(): EforsyningIndstilling {\r\n const result = this.eforsyninger.find((e) => e.nodeId === this.aktuelEforsyningNodeId);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface FeatureToggles {\r\n cookiepolitik: boolean;\r\n}\r\n","import { EforsyningIndstilling } from \"../model/e-forsyning-indstilling.model\";\r\nimport { UmbracoIndstillinger } from \"../model/umbraco-indstillinger.model\";\r\n\r\n// TODO: Flyttes til @dffedb/test eller noget i den stil\r\nexport class TestDataFactory {\r\n constructor(private generatorFn: () => T) {}\r\n\r\n public getSingleRecord(override: any = {}): T {\r\n return {\r\n ...this.generatorFn(),\r\n ...override\r\n };\r\n }\r\n\r\n public getArray(length: number = 20, overrides: any[] = []): T[] {\r\n return Array.from(new Array(length)).map((_, i) => this.getSingleRecord(overrides[i]));\r\n }\r\n}\r\n\r\nexport const eforsyningIndstillingFactory = new TestDataFactory(() => {\r\n const id = Math.ceil(Math.random() * 1000);\r\n return {\r\n nodeId: id,\r\n appServerUrl: `APP_SERVER_URL_${id}`,\r\n forsyningId: `FORSYNING_ID_${id}`,\r\n siteUrl: `SITE_URL_${id}`,\r\n logoUrl: `LOGO_URL_${id}`,\r\n emailLogoUrl: `LOGO_URL_${id}`,\r\n emailSignatur: `SIGNATUR_${id}`,\r\n overskriftPaaLoginside: `OVERSKRIFT_${id}`,\r\n firmaInfo: {\r\n firmaNavn: `FIRMA_NAVN_${id}`,\r\n telefon: `TELEFON_${id}`,\r\n email: `${id}@foo.dk`\r\n }\r\n };\r\n});\r\n\r\nexport const umbracoIndstillingerFactory = new TestDataFactory(() => {\r\n const result: UmbracoIndstillinger = {\r\n eforsyninger: [],\r\n aktuelEforsyningNodeId: null,\r\n forsyningWeb: {\r\n siteUrl: \"SITE_URL\",\r\n nodeId: 0\r\n },\r\n firmaNavn: \"FIRMA_NAVN\",\r\n vaerkslisteUrl: \"VAERKSLISTE_URL\",\r\n vaerkNodeId: 0,\r\n themeUrl: \"THEME_URL\",\r\n logoUrl: \"LOGO_URL\",\r\n visDriftsstatus: true,\r\n driftsstatusForstyrrelserTekst: \"DRIFTSSTATUS_FORSTYRRELSER\",\r\n driftsstatusIngenForstyrrelserTekst: \"DRIFTSSTATUS_INGEN_FORSTYRRELSER\",\r\n matomoSiteId: \"1\",\r\n aktuelEforsyning: null,\r\n featureToggles: {\r\n cookiepolitik: true\r\n }\r\n };\r\n Object.setPrototypeOf(result, Object.getPrototypeOf(new UmbracoIndstillinger()));\r\n return result;\r\n});\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, ReplaySubject } from \"rxjs\";\r\nimport { first } from \"rxjs/operators\";\r\n\r\nimport { UmbracoIndstillinger } from \"./model/umbraco-indstillinger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class UmbracoIndstillingerObserver {\r\n public initialized = false;\r\n private valueSubject = new ReplaySubject(1);\r\n\r\n public get valueChanges(): Observable {\r\n return this.valueSubject.asObservable();\r\n }\r\n\r\n public getValue(): Promise {\r\n return this.valueChanges.pipe(first()).toPromise();\r\n }\r\n\r\n public next(value: UmbracoIndstillinger): void {\r\n this.initialized = true;\r\n this.valueSubject.next(value);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { UmbracoHttpClient } from \"../http/umbraco-http-client.service\";\r\nimport { UmbracoIndstillinger } from \"./model/umbraco-indstillinger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class UmbracoIndstillingerRepository {\r\n constructor(private readonly umbracoHttpClient: UmbracoHttpClient) { }\r\n\r\n public hent(nodeId: number): Observable {\r\n return this.umbracoHttpClient.get(`HentUmbracoIndstillinger?id=${nodeId}`);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { UmbracoIndstillingerObserver } from \"../umbraco-indstillinger\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EforsyningUrlService {\r\n constructor(private readonly indstillingerObserver: UmbracoIndstillingerObserver) {}\r\n\r\n public async hentAbsolutUrl(side: string): Promise {\r\n const indstillinger = await this.indstillingerObserver.getValue();\r\n return indstillinger.aktuelEforsyning.siteUrl + \"#/\" + side;\r\n }\r\n}\r\n","export * from \"./eforsyning-url.service\";\r\nexport * from \"./observer-base.service\";\r\nexport * from \"./observer-based-service.service\";\r\nexport * from \"./rolle-body-class.service\";\r\nexport * from \"./route-body-class.service\";\r\n","import { BehaviorSubject, Observable, of, ReplaySubject } from \"rxjs\";\r\nimport { catchError, distinctUntilChanged, shareReplay, switchMap, tap } from \"rxjs/operators\";\r\n\r\nimport { DffObserverState } from \"@dffedb/rxjs\";\r\nimport { DffError, getErrorMessage } from \"@dffedb/util\";\r\n\r\nimport { LogLevel } from \"../log/log.model\";\r\nimport { LogService } from \"../log/log.service\";\r\n\r\nexport abstract class ObserverBase {\r\n private readonly stateChangesSubject = new ReplaySubject(1);\r\n private readonly errorChangesSubject = new BehaviorSubject(null);\r\n private readonly valueChanges$: Observable;\r\n public readonly stateChanges = this.stateChangesSubject.asObservable();\r\n public readonly errorChanges = this.errorChangesSubject.asObservable();\r\n\r\n constructor(\r\n private readonly logService: LogService,\r\n sourceListener: Observable,\r\n innerProject: (value: TSource, index: number) => Observable,\r\n errorProject: (value: TSource, index: number) => Observable = () => of(null)\r\n ) {\r\n this.valueChanges$ = sourceListener.pipe(\r\n tap(() => this.stateChangesSubject.next({ loading: true })),\r\n tap(() => this.errorChangesSubject.next(null)),\r\n switchMap((value, index) =>\r\n innerProject(value, index).pipe(\r\n catchError((err) => {\r\n const error = new DffError(`${this.constructor.name}: Fejl i forbindelse med observable: ${getErrorMessage(err)}`, {\r\n innerError: err\r\n });\r\n this.logService.logError(error, LogLevel.Warning);\r\n console.warn(`${name}: ${getErrorMessage(error)}`);\r\n this.errorChangesSubject.next(error);\r\n return errorProject(value, index);\r\n })\r\n )\r\n ),\r\n tap(() => setTimeout(() => this.stateChangesSubject.next({ loading: false }))),\r\n distinctUntilChanged((x, y) => JSON.stringify(x) === JSON.stringify(y)),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public get valueChanges(): Observable {\r\n return this.valueChanges$;\r\n }\r\n}\r\n","import { combineLatest, Observable } from \"rxjs\";\r\nimport { filter, first, map } from \"rxjs/operators\";\r\n\r\nimport { ObserverBase } from \"./observer-base.service\";\r\n\r\n/**\r\n * ObserverBasedService er en basisklasse, som bruges til at generere services, der nedarver fra ObserverBase.\r\n * F.eks. kan vi have en AktuelForbrugerService, som lytter til AktuelForbrugerObserver.\r\n * Man benytter XyzService, hvis man skal have den aktuelle værdi.\r\n * Man benytter XyzObserver, hvis man har behov for at lytte til løbende ændringer af Xyz.\r\n *\r\n * Observers lytter ofte til SessionStorage (ny forbruger valgt) og loader data når datagrundlaget kræver det.\r\n * Load af data kan tage tid, så vi risikerer at starte med data fra det gamle valg et par sekunder inden nye data er loadet.\r\n * Ved brug af en XyzService, som arver fra ObserverBasedService, undgår man selv at skulle styre hvornår data er loadet.\r\n */\r\nexport abstract class ObserverBasedService {\r\n constructor(private readonly observer: ObserverBase) {}\r\n\r\n public select(): Observable {\r\n return combineLatest([this.observer.valueChanges, this.observer.stateChanges, this.observer.errorChanges]).pipe(\r\n filter(([_, state]) => !state.loading),\r\n map(([value, __, error]) => {\r\n if (error) {\r\n throw error;\r\n }\r\n return value;\r\n }),\r\n first()\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { SubSink } from \"@dffedb/rxjs\";\r\nimport { BodyClassService } from \"@dffedb/util\";\r\n\r\nimport { AktuelBrugerObserver, Rolle } from \"../bruger\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class RolleBodyClassService {\r\n private readonly subs = new SubSink();\r\n\r\n constructor(private readonly aktuelBrugerObserver: AktuelBrugerObserver, private readonly bodyClassService: BodyClassService) {}\r\n\r\n public setup(): void {\r\n this.subs.sink = this.aktuelBrugerObserver.valueChanges.subscribe((bruger) => {\r\n this.bodyClassService.set(\"rolle-ingen\", !bruger);\r\n this.bodyClassService.set(\"rolle-forbruger\", bruger && bruger.rolle === Rolle.Forbruger);\r\n this.bodyClassService.set(\"rolle-fofbruger\", bruger && bruger.rolle === Rolle.FofBruger);\r\n this.bodyClassService.set(\"rolle-ejendomsadministrator\", bruger && bruger.rolle === Rolle.Ejendomsadministrator);\r\n });\r\n }\r\n\r\n public teardown(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\n\r\nimport { merge } from \"rxjs\";\r\nimport { filter, first, map, pairwise } from \"rxjs/operators\";\r\n\r\nimport { SubSink } from \"@dffedb/rxjs\";\r\nimport { BodyClassService, trim } from \"@dffedb/util\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class RouteBodyClassService {\r\n private readonly subs = new SubSink();\r\n\r\n constructor(private readonly router: Router, private readonly bodyClassService: BodyClassService) {}\r\n\r\n public setup(): void {\r\n const firstEvent$ = this.router.events.pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n first(),\r\n map(event => ({ enter: this.getRoute(event as NavigationEnd), leave: \"\" }))\r\n );\r\n const followingEvents$ = this.router.events.pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n pairwise(),\r\n map(([prev, curr]) => ({ enter: this.getRoute(curr as NavigationEnd), leave: this.getRoute(prev as NavigationEnd) }))\r\n );\r\n\r\n const events$ = merge(firstEvent$, followingEvents$);\r\n\r\n this.subs.sink = events$.subscribe(event => {\r\n this.bodyClassService.remove(`route-${event.leave}`);\r\n this.bodyClassService.add(`route-${event.enter}`);\r\n });\r\n }\r\n\r\n public teardown(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n private getRoute(event: NavigationEnd): string {\r\n const result = trim(event.url, \"/\").replace(\"/\", \"-\");\r\n switch (result) {\r\n case \"\":\r\n case \"logout\":\r\n return \"login\";\r\n default:\r\n return result;\r\n }\r\n }\r\n}\r\n","export * from \"./lib/dffedb-cookie-consent-overlay/dffedb-cookie-consent-overlay.module\";\r\nexport * from \"./lib/dffedb-cookie-consent/dffedb-cookie-consent.module\";\r\nexport * from \"./lib/dffedb-driftsstatus-knap/dffedb-driftsstatus-knap.module\";\r\nexport * from \"./lib/dffedb-e-boks-tilmeld/dffedb-e-boks-tilmeld.module\";\r\nexport * from \"./lib/dffedb-fancybox/dffedb-fancybox.module\";\r\nexport * from \"./lib/dffedb-forsyning-paa-adresse/dffedb-forsyning-paa-adresse.module\";\r\nexport * from \"./lib/dffedb-iframe/dffedb-iframe.module\";\r\nexport * from \"./lib/dffedb-info-popup/dffedb-info-popup.module\";\r\nexport * from \"./lib/dffedb-prisberegner/dffedb-prisberegner.module\";\r\nexport * from \"./lib/dffedb-tilslutningsanmodning/dffedb-tilslutningsanmodning.module\";\r\nexport * from \"./lib/e-forsyning-logind-knap/e-forsyning-logind-knap.module\";\r\nexport * from \"./lib/util/util\";\r\n","import { Component, HostBinding, Input, OnInit, ViewEncapsulation } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { UnsubscribeOnDestroy } from \"@dffedb/util\";\r\n\r\nimport { DffedbCookieConsentOverlaySandbox } from \"./dffedb-cookie-consent-overlay.sandbox\";\r\nimport { DffedbCookieConsentOverlayViewModel } from \"./dffedb-cookie-consent-overlay.view-model\";\r\n\r\n@Component({\r\n templateUrl: \"./dffedb-cookie-consent-overlay.component.html\",\r\n styleUrls: [\"./dffedb-cookie-consent-overlay.component.scss\"],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class DffedbCookieConsentOverlayComponent extends UnsubscribeOnDestroy implements OnInit {\r\n @Input() public visible: boolean | string = true;\r\n @Input() public pageReload: boolean | string = true;\r\n @HostBinding(\"class.initialized\") public classInitialized = true; // Bruges i CSS til at skjule boksen indtil den er initialiseret\r\n\r\n public vm$: Observable;\r\n\r\n constructor(private readonly sandbox: DffedbCookieConsentOverlaySandbox) {\r\n super();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.vm$ = this.sandbox.selectViewModel(this.visible);\r\n this.sandbox.setCookieConsentChangeRequiresPageReload(this.pageReload);\r\n }\r\n}\r\n","@if ((vm$ | async)?.overlayVisible) {\r\n \r\n \r\n \r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\n\r\nimport { defineCustomElements } from \"@dffedb/util\";\r\n\r\nimport { DffCookieConsentOverlayModule } from \"../shared/dff-cookie-consent-overlay\";\r\nimport { DffedbCookieConsentOverlayComponent } from \"./dffedb-cookie-consent-overlay.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, DffCookieConsentOverlayModule],\r\n exports: [DffedbCookieConsentOverlayComponent],\r\n declarations: [DffedbCookieConsentOverlayComponent],\r\n providers: []\r\n})\r\nexport class DffedbCookieConsentOverlayModule {\r\n constructor(injector: Injector) {\r\n defineCustomElements(\"dffedb-cookie-consent-overlay\", DffedbCookieConsentOverlayComponent, { injector });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { DffCookieConsentService } from \"../shared/dff-cookie-consent\";\r\nimport { DffedbCookieConsentOverlayViewModel } from \"./dffedb-cookie-consent-overlay.view-model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffedbCookieConsentOverlaySandbox {\r\n constructor(private readonly cookieConsentService: DffCookieConsentService) {}\r\n\r\n public selectViewModel(shouldOverlayEverBeVisible: boolean | string): Observable {\r\n return this.cookieConsentService.selectCookieConsent().pipe(\r\n map(c => c.consent.thirdparty && c.consent.statistics),\r\n map(consentAccepted => ({\r\n overlayVisible: !consentAccepted && this.toBoolean(shouldOverlayEverBeVisible)\r\n }))\r\n );\r\n }\r\n\r\n public setCookieConsentChangeRequiresPageReload(value: boolean | string): void {\r\n if (this.toBoolean(value)) {\r\n this.cookieConsentService.setCookieConsentChangeRequiresPageReload();\r\n }\r\n }\r\n\r\n private toBoolean(value: boolean | string): boolean {\r\n return value === true || value === \"true\";\r\n }\r\n}\r\n","import { Component, Input, OnInit } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { DffedbCookieConsentSandbox } from \"./dffedb-cookie-consent.sandbox\";\r\nimport { DffedbCookieConsentViewModel } from \"./dffedb-cookie-consent.view-model\";\r\n\r\n@Component({\r\n templateUrl: \"./dffedb-cookie-consent.component.html\",\r\n styleUrls: [\"./dffedb-cookie-consent.component.scss\"]\r\n})\r\nexport class DffedbCookieConsentComponent implements OnInit {\r\n public vm$: Observable;\r\n\r\n @Input() public version: string;\r\n @Input() public pageReload: boolean | string = false;\r\n\r\n constructor(private readonly sandbox: DffedbCookieConsentSandbox) {}\r\n\r\n public async ngOnInit(): Promise {\r\n await this.sandbox.initialize(this.version, this.pageReload);\r\n this.vm$ = this.sandbox.selectViewModel();\r\n if (this.sandbox.isCookieConsentUpdateNeeded()) {\r\n this.sandbox.showCookieConsentDialog();\r\n } else {\r\n this.sandbox.renewCookieConsent();\r\n }\r\n }\r\n\r\n public onClick(event: Event): void {\r\n event.preventDefault();\r\n this.sandbox.showCookieConsentDialog();\r\n }\r\n}\r\n","@if (vm$ | async; as vm) {\r\n @if (vm.enabled) {\r\n \r\n
    \r\n home\r\n
    \r\n @if (vm.reloading) {\r\n
    \r\n
    \r\n \r\n

    Genindlæser siden...

    \r\n
    \r\n
    \r\n }\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\n\r\nimport { mdiCookie } from \"@mdi/js\";\r\n\r\nimport { defineCustomElements, SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { DffCookieConsentDialogModule } from \"../shared/dff-cookie-consent-dialog\";\r\nimport { DffedbCookieConsentComponent } from \"./dffedb-cookie-consent.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatButtonModule, MatDialogModule, MatIconModule, MatProgressSpinnerModule, DffCookieConsentDialogModule],\r\n exports: [DffedbCookieConsentComponent],\r\n declarations: [DffedbCookieConsentComponent],\r\n providers: []\r\n})\r\nexport class DffedbCookieConsentModule {\r\n constructor(injector: Injector, svgIconRegistry: SvgIconRegistry) {\r\n svgIconRegistry.registerIcon(mdiCookie, \"dffedb-cookie-consent.cookie\");\r\n defineCustomElements(\"dffedb-cookie-consent\", DffedbCookieConsentComponent, { injector });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { DffCookieConsentDialog } from \"../shared/dff-cookie-consent-dialog\";\r\nimport { DffCookieConsentService } from \"../shared/dff-cookie-consent/dff-cookie-consent.service\";\r\nimport { DffedbCookieConsentViewModel } from \"./dffedb-cookie-consent.view-model\";\r\nimport { MatDialogConfig } from \"@angular/material/dialog\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffedbCookieConsentSandbox {\r\n constructor(\r\n private readonly indstillingerObserver: UmbracoIndstillingerObserver,\r\n private readonly cookieConsentService: DffCookieConsentService,\r\n private readonly cookieConsentDialog: DffCookieConsentDialog\r\n ) {}\r\n\r\n public async initialize(version: string, cookieConsentChangeRequiresPageReload: boolean | string): Promise {\r\n const indstillinger = await this.indstillingerObserver.getValue();\r\n await this.cookieConsentService.initialize(indstillinger.featureToggles.cookiepolitik, version, this.toBoolean(cookieConsentChangeRequiresPageReload));\r\n }\r\n\r\n public selectViewModel(): Observable {\r\n const indstillinger$ = this.indstillingerObserver.valueChanges;\r\n const cookieConsent$ = this.cookieConsentService.selectCookieConsent();\r\n return combineLatest([indstillinger$, cookieConsent$]).pipe(\r\n map(([indstillinger, cookieConsent]) => ({\r\n cookieConsent,\r\n enabled: indstillinger.featureToggles.cookiepolitik,\r\n reloading: cookieConsent.reloading\r\n }))\r\n );\r\n }\r\n\r\n public isCookieConsentUpdateNeeded(): boolean {\r\n return this.cookieConsentService.isCookieConsentUpdateNeeded();\r\n }\r\n\r\n public showCookieConsentDialog(): void {\r\n this.cookieConsentDialog.open();\r\n }\r\n\r\n public renewCookieConsent(): void {\r\n this.cookieConsentService.renewCookieConsent();\r\n }\r\n\r\n private toBoolean(value: boolean | string): boolean {\r\n return value === true || value === \"true\";\r\n }\r\n}\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nimport { ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { map, startWith } from \"rxjs/operators\";\r\n\r\nimport { SubSink } from \"@dffedb/rxjs\";\r\nimport { DriftsstatusService } from \"@e-forsyning/common/driftsstatus\";\r\nimport { UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\n@Component({\r\n selector: \"driftsstatus-knap\", // Fordi vi også bruger den som almindelig (ikke webcomponent) komponent.\r\n templateUrl: \"./dffedb-driftsstatus-knap.component.html\",\r\n styleUrls: [\"./dffedb-driftsstatus-knap.component.scss\"],\r\n animations: [trigger(\"fadeIn\", [transition(\":enter\", [style({ opacity: 0 }), animate(600)])])]\r\n})\r\nexport class DffedbDriftsstatusKnapComponent implements OnInit, OnDestroy {\r\n private readonly iconActive = \"driftsstatus-active\";\r\n private subs = new SubSink();\r\n public vm: DriftsstatusViewModel;\r\n\r\n @HostBinding(\"@fadeIn\")\r\n public fadeInAnimation = true;\r\n\r\n @HostBinding(\"class\")\r\n @Input()\r\n public class: string;\r\n\r\n @Input()\r\n public titel = \"Driftsstatus\";\r\n\r\n @Input()\r\n public driftsstatusforstyrrelsertekst = \"Du kan i øjeblikket opleve driftsforstyrrelser\";\r\n\r\n @Input()\r\n public driftsstatusingenforstyrrelsertekst = \"Der er ingen kendte driftsforstyrrelser\";\r\n\r\n @Input()\r\n public visIkon = true;\r\n\r\n constructor(\r\n private readonly cd: ChangeDetectorRef,\r\n private readonly indstillingerObserver: UmbracoIndstillingerObserver,\r\n private readonly driftsstatusService: DriftsstatusService\r\n ) {\r\n // WebComponents fungerer ikke så godt med auto-change detection, så vi kobler det helt fra.\r\n cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n const harForsyningWeb$ = this.indstillingerObserver.valueChanges.pipe(map((i) => !!i.forsyningWeb.nodeId));\r\n const erDerDriftsforstyrrelser$ = this.driftsstatusService.erDerAktuelleDriftsforstyrrelser().pipe(startWith(false));\r\n const driftsstatusUrl$ = this.hentDriftsstatusUrl().pipe(startWith(\"\"));\r\n combineLatest([harForsyningWeb$, erDerDriftsforstyrrelser$, driftsstatusUrl$]).subscribe(\r\n ([harForsyningWeb, erDerDriftsforstyrrelser, driftsstatusUrl]) => {\r\n this.class += erDerDriftsforstyrrelser ? \" driftsstatus-alert\" : \"\";\r\n this.vm = this.mapToMenu(harForsyningWeb, erDerDriftsforstyrrelser, driftsstatusUrl);\r\n this.cd.detectChanges();\r\n }\r\n );\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n private hentDriftsstatusUrl(): Observable {\r\n return this.indstillingerObserver.valueChanges.pipe(map((i) => (i.forsyningWeb && i.forsyningWeb.driftsstatusUrl) || \"\"));\r\n }\r\n\r\n private mapToMenu(harForsyningWeb: boolean, erDerDriftsforstyrrelser: boolean, driftsstatusUrl: string): DriftsstatusViewModel {\r\n return {\r\n visible: harForsyningWeb,\r\n active: erDerDriftsforstyrrelser,\r\n href: driftsstatusUrl,\r\n svgIcon: this.visIkon && erDerDriftsforstyrrelser ? this.iconActive : \"\"\r\n };\r\n }\r\n}\r\n\r\ninterface DriftsstatusViewModel {\r\n visible: boolean;\r\n active: boolean;\r\n svgIcon: string;\r\n href: string;\r\n}\r\n","@if (vm.visible) {\r\n \r\n
    \r\n @if (vm.active) {\r\n
    \r\n

    {{ driftsstatusforstyrrelsertekst }}

    \r\n Læs mere om driftsforstyrrelser\r\n
    \r\n }\r\n @if (!vm.active) {\r\n
    \r\n {{ driftsstatusingenforstyrrelsertekst }}\r\n
    \r\n }\r\n
    \r\n
    \r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { mdiAlertOutline } from \"@mdi/js\";\r\n\r\nimport { defineCustomElements, SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { DffDropdownButtonModule } from \"../shared/dff-dropdown-button/dff-dropdown-button.module\";\r\nimport { DffedbDriftsstatusKnapComponent } from \"./dffedb-driftsstatus-knap.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatIconModule, DffDropdownButtonModule],\r\n exports: [DffedbDriftsstatusKnapComponent],\r\n declarations: [DffedbDriftsstatusKnapComponent],\r\n providers: []\r\n})\r\nexport class DffedbDriftsstatusKnapModule {\r\n constructor(injector: Injector, svgIconRegistry: SvgIconRegistry) {\r\n svgIconRegistry.registerIcon(mdiAlertOutline, \"driftsstatus-active\");\r\n defineCustomElements(\"dffedb-driftsstatus-knap\", DffedbDriftsstatusKnapComponent, { injector });\r\n }\r\n}\r\n","import { Component, HostBinding, Input, OnInit } from \"@angular/core\";\r\n\r\nimport { switchMap } from \"rxjs/operators\";\r\n\r\nimport { UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { WebComponentInitializerService } from \"../shared/web-component-initializer.service\";\r\nimport { DffedbEBoksTilmeldService } from \"./dffedb-e-boks-tilmeld.service\";\r\n\r\n@Component({\r\n templateUrl: \"./dffedb-e-boks-tilmeld.component.html\",\r\n styleUrls: [\"./dffedb-e-boks-tilmeld.component.scss\"]\r\n})\r\nexport class DffedbEBoksTilmeldComponent implements OnInit {\r\n public initialiserer = true;\r\n @HostBinding(\"class.mat-app-background\") public classMatAppBackground = true;\r\n @Input() public nodeId: number;\r\n\r\n constructor(\r\n private readonly webComponentInitializer: WebComponentInitializerService,\r\n private readonly umbracoIndstillingerObserver: UmbracoIndstillingerObserver,\r\n private readonly eBoksTilmeldService: DffedbEBoksTilmeldService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.webComponentInitializer.init(this.nodeId);\r\n this.umbracoIndstillingerObserver.valueChanges\r\n .pipe(switchMap(() => this.eBoksTilmeldService.skalRedirecteTilEforsyning()))\r\n .subscribe((skalRedirecteTilEforsyning) => {\r\n if (skalRedirecteTilEforsyning) {\r\n this.eBoksTilmeldService.redirecTilEforsyning();\r\n } else {\r\n this.initialiserer = false;\r\n }\r\n });\r\n }\r\n}\r\n","@if (initialiserer) {\r\n \r\n}\r\n@if (!initialiserer) {\r\n \r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\n\r\nimport { defineCustomElements } from \"@dffedb/util\";\r\nimport { EBoksTilmeldingModule } from \"@e-forsyning/common/e-boks\";\r\n\r\nimport { DffedbEBoksTilmeldComponent } from \"./dffedb-e-boks-tilmeld.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatProgressSpinnerModule, EBoksTilmeldingModule],\r\n exports: [DffedbEBoksTilmeldComponent],\r\n declarations: [DffedbEBoksTilmeldComponent]\r\n})\r\nexport class DffedbEBoksTilmeldModule {\r\n constructor(injector: Injector) {\r\n defineCustomElements(\"dffedb-e-boks-tilmeld\", DffedbEBoksTilmeldComponent, { injector });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of, throwError } from \"rxjs\";\r\nimport { catchError, first, map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { LoginService } from \"@e-forsyning/common/auth\";\r\nimport { AktuelBrugerObserver, Rolle } from \"@e-forsyning/common/bruger\";\r\nimport { UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffedbEBoksTilmeldService {\r\n constructor(\r\n private readonly loginService: LoginService,\r\n private readonly indstillinger: UmbracoIndstillingerObserver,\r\n private readonly brugerObserver: AktuelBrugerObserver\r\n ) {}\r\n\r\n public skalRedirecteTilEforsyning(): Observable {\r\n return this.indstillinger.valueChanges.pipe(\r\n first(),\r\n map(indstillinger => indstillinger.eforsyninger),\r\n switchMap(eforsyninger => {\r\n // Ingen E|Forsyning? Så er der ikke grund til at redirecte\r\n if (eforsyninger.length === 0) {\r\n return of(false);\r\n }\r\n // Flere E|Forsyninger? Så kan vi ikke være sikre på hvilken der skal redirectes til\r\n if (eforsyninger.length > 1) {\r\n return of(false);\r\n }\r\n // Er vi logget ind? Ellers er der ingen grund til at redirecte til E|Forsyning\r\n if (!this.loginService.erLoggetInd()) {\r\n return of(false);\r\n }\r\n // Er den aktuelle bruger 'Forbruger'? I så fald kan vi redirecte til E|Forsyning,\r\n // hvor man kan tilmelde e-Boks uden brug af to-delt kode.\r\n const erForbruger$ = this.brugerObserver.valueChanges.pipe(map(bruger => bruger.rolle === Rolle.Forbruger));\r\n const skalRedirecte$ = erForbruger$.pipe(catchError(error => (error.status === 401 ? of(false) : throwError(error))));\r\n return skalRedirecte$;\r\n })\r\n );\r\n }\r\n\r\n public redirecTilEforsyning(): void {\r\n this.indstillinger.valueChanges\r\n .pipe(first()) // Auto-unsubscribe\r\n .subscribe(indstillinger => {\r\n const url = indstillinger.eforsyninger[0].siteUrl + \"#/mine-oplysninger\";\r\n window.location.href = url;\r\n });\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { DffedbFancyboxSandbox } from \"./dffedb-fancybox.sandbox\";\r\nimport { DffedbFancyboxViewModel } from \"./dffedb-fancybox.view-model\";\r\n\r\n@Component({\r\n templateUrl: \"./dffedb-fancybox.component.html\",\r\n styleUrls: [\"./dffedb-fancybox.component.scss\"]\r\n})\r\nexport class DffedbFancyboxComponent implements OnInit, OnChanges {\r\n @Input() public imageUrl: string;\r\n @Input() public videoUrl: string;\r\n @Input() public requiredConsent: string;\r\n @Input() public buttonClass: string;\r\n\r\n public vm$: Observable;\r\n\r\n constructor(private readonly cd: ChangeDetectorRef, private readonly sandbox: DffedbFancyboxSandbox) {\r\n // WebComponents fungerer ikke så godt med auto-change detection, så vi kobler det helt fra.\r\n // cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.vm$ = this.sandbox.getViewModel(this.requiredConsent);\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n console.log(\"DffedbFancyboxComponent.ngOnChanges\", changes);\r\n }\r\n}\r\n","@if (vm$ | async; as vm) {\r\n @if (!vm.consentAccepted) {\r\n \r\n \r\n \r\n }\r\n @if (vm.consentAccepted) {\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\n\r\nimport { defineCustomElements } from \"@dffedb/util\";\r\n\r\nimport { DffCookieConsentOverlayModule } from \"../shared/dff-cookie-consent-overlay\";\r\nimport { DffedbFancyboxComponent } from \"./dffedb-fancybox.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, DffCookieConsentOverlayModule],\r\n exports: [DffedbFancyboxComponent],\r\n declarations: [DffedbFancyboxComponent],\r\n providers: []\r\n})\r\nexport class DffedbFancyboxModule {\r\n constructor(injector: Injector) {\r\n defineCustomElements(\"dffedb-fancybox\", DffedbFancyboxComponent, { injector });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { DffCookieConsentService } from \"../shared/dff-cookie-consent\";\r\nimport { DffedbFancyboxViewModel } from \"./dffedb-fancybox.view-model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffedbFancyboxSandbox {\r\n constructor(private readonly cookieConsentService: DffCookieConsentService) {}\r\n\r\n public getViewModel(requiredConsent: string): Observable {\r\n return this.cookieConsentService.selectCookieConsent().pipe(map(c => ({ consentAccepted: !!c.consent[requiredConsent] })));\r\n }\r\n}\r\n","import { Component, HostBinding, Input, OnInit } from \"@angular/core\";\r\n\r\nimport { WebComponentInitializerService } from \"../shared/web-component-initializer.service\";\r\n\r\n@Component({\r\n templateUrl: \"./dffedb-forsyning-paa-adresse.component.html\",\r\n styleUrls: [\"./dffedb-forsyning-paa-adresse.component.scss\"]\r\n})\r\nexport class DffedbForsyningPaaAdresseComponent implements OnInit {\r\n @HostBinding(\"class.mat-app-background\") public classMatAppBackground = true;\r\n @Input() public nodeId: number;\r\n\r\n constructor(private readonly webComponentInitializer: WebComponentInitializerService) {}\r\n\r\n public ngOnInit(): void {\r\n this.webComponentInitializer.init(this.nodeId);\r\n }\r\n}\r\n","\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\n\r\nimport { defineCustomElements } from \"@dffedb/util\";\r\nimport { ForsyningPaaAdresseModule } from \"@e-forsyning/common/forsyning-paa-adresse\";\r\n\r\nimport { DffedbForsyningPaaAdresseComponent } from \"./dffedb-forsyning-paa-adresse.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, ForsyningPaaAdresseModule],\r\n exports: [DffedbForsyningPaaAdresseComponent],\r\n declarations: [DffedbForsyningPaaAdresseComponent],\r\n providers: []\r\n})\r\nexport class DffedbForsyningPaaAdresseModule {\r\n constructor(injector: Injector) {\r\n defineCustomElements(\"dffedb-forsyning-paa-adresse\", DffedbForsyningPaaAdresseComponent, { injector });\r\n }\r\n}\r\n","import { Component, ElementRef, HostBinding, Input, OnChanges, OnInit, Renderer2, SimpleChanges } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { UnsubscribeOnDestroy } from \"@dffedb/util\";\r\n\r\nimport { DffedbIframeSandbox } from \"./dffedb-iframe.sandbox\";\r\nimport { DffedbIframeViewModel } from \"./dffedb-iframe.view-model\";\r\n\r\n@Component({\r\n templateUrl: \"./dffedb-iframe.component.html\",\r\n styleUrls: [\"./dffedb-iframe.component.scss\"]\r\n})\r\nexport class DffedbIframeComponent extends UnsubscribeOnDestroy implements OnInit, OnChanges {\r\n private iframe: any;\r\n @Input() public height: string;\r\n @Input() public width: string;\r\n @Input() public imageUrl: string;\r\n @Input() public src: string; // Krævet for at kunne lytte til ngOnChanges i forbindelse med Fancybox-indlejring\r\n @HostBinding(\"style.width\") public styleWidth: string;\r\n @HostBinding(\"style.height\") public styleHeight: string;\r\n\r\n public vm$: Observable;\r\n\r\n constructor(\r\n private readonly sandbox: DffedbIframeSandbox,\r\n private readonly hostElement: ElementRef,\r\n private readonly renderer: Renderer2,\r\n private readonly el: ElementRef\r\n ) {\r\n super();\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n this.initializeIframe();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.createIframe();\r\n this.initializeIframe();\r\n this.vm$ = this.sandbox.selectViewModel(this.src);\r\n this.subs.sink = this.vm$.subscribe((vm) => {\r\n if (vm.consentAccepted) {\r\n this.renderer.appendChild(this.hostElement.nativeElement, this.iframe);\r\n } else {\r\n this.renderer.removeChild(this.hostElement, this.iframe);\r\n }\r\n });\r\n }\r\n\r\n private createIframe(): void {\r\n this.iframe = this.renderer.createElement(\"iframe\");\r\n // Ved indlejring i Fancybox, forventes det at emitter et load-event.\r\n this.iframe.onload = () => {\r\n this.el.nativeElement.dispatchEvent(new CustomEvent(\"load\"));\r\n };\r\n\r\n if (!this.sandbox.getViewModel(this.src).consentAccepted) {\r\n setTimeout(() => this.el.nativeElement.dispatchEvent(new CustomEvent(\"load\")));\r\n }\r\n }\r\n\r\n private initializeIframe(): void {\r\n this.styleWidth = this.calculateSize(this.width);\r\n this.styleHeight = this.calculateSize(this.height);\r\n if (this.iframe) {\r\n const attributes = Array.from(this.hostElement.nativeElement.attributes as NamedNodeMap).filter(\r\n (a) => a.name !== \"ng-version\" && !a.name.startsWith(\"_nghost-\")\r\n );\r\n for (const attribute of attributes) {\r\n this.renderer.setAttribute(this.iframe, attribute.name, attribute.value);\r\n }\r\n }\r\n }\r\n\r\n private calculateSize(value: string): string {\r\n return !value ? \"\" : isNaN(+value) ? value : `${value}px`;\r\n }\r\n}\r\n","@if (!(vm$ | async)?.consentAccepted) {\r\n \r\n @if (imageUrl) {\r\n \r\n }\r\n \r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\n\r\nimport { defineCustomElements } from \"@dffedb/util\";\r\n\r\nimport { DffCookieConsentOverlayModule } from \"../shared/dff-cookie-consent-overlay\";\r\nimport { DffedbIframeComponent } from \"./dffedb-iframe.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, DffCookieConsentOverlayModule],\r\n exports: [DffedbIframeComponent],\r\n declarations: [DffedbIframeComponent],\r\n providers: []\r\n})\r\nexport class DffedbIframeModule {\r\n constructor(injector: Injector) {\r\n defineCustomElements(\"dffedb-iframe\", DffedbIframeComponent, { injector });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { DffCookieConsent, DffCookieConsentService } from \"../shared/dff-cookie-consent\";\r\nimport { DffCookieConsentCookieListModule } from \"../shared/dff-cookie-consent-cookie-list/dff-cookie-consent-cookie-list.module\";\r\nimport { DffedbIframeViewModel } from \"./dffedb-iframe.view-model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffedbIframeSandbox {\r\n constructor(\r\n private readonly cookieConsentService: DffCookieConsentService,\r\n private readonly cookieConsentCookieListModule: DffCookieConsentCookieListModule\r\n ) {}\r\n\r\n public selectViewModel(source: string): Observable {\r\n return this.cookieConsentService.selectCookieConsent().pipe(map((c) => this.mapViewModel(c, source)));\r\n }\r\n\r\n public getViewModel(source: string): DffedbIframeViewModel {\r\n return this.mapViewModel(this.cookieConsentService.getCookieConsent(), source);\r\n }\r\n\r\n private mapViewModel(value: DffCookieConsent, source: string): DffedbIframeViewModel {\r\n return {\r\n consentAccepted: source.includes(\"sms-service\") ? true : value.consent.statistics && value.consent.thirdparty\r\n };\r\n }\r\n}\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n templateUrl: \"./dffedb-info-popup.component.html\",\r\n styleUrls: [\"./dffedb-info-popup.component.scss\"]\r\n})\r\nexport class DffedbInfoPopupComponent {\r\n @Input() public header: string;\r\n @Input() public content: string;\r\n @Input() public imageSrc: string;\r\n @Input() public buttonText: string;\r\n @Input() public buttonHref: string;\r\n @Input() public buttonTarget: string;\r\n @Input() public showAfterMs = 2000;\r\n @Input() public hideAfterMs = 0;\r\n @Input() public visibleStartTime: number;\r\n @Input() public visibleEndTime: number;\r\n\r\n public toDateTime(value: number): Date {\r\n // Ved værdien '0' genererer vi en invalid dato for at indikere 'ikke udfyldt'\r\n return +value === 0 ? new Date(\"\") : new Date(+value);\r\n }\r\n}\r\n","\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\n\r\nimport { DffInfoPopupModule } from \"@dffedb/ui\";\r\nimport { defineCustomElements } from \"@dffedb/util\";\r\n\r\nimport { DffedbInfoPopupComponent } from \"./dffedb-info-popup.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, DffInfoPopupModule],\r\n exports: [DffedbInfoPopupComponent],\r\n declarations: [DffedbInfoPopupComponent],\r\n providers: []\r\n})\r\nexport class DffedbInfoPopupModule {\r\n constructor(injector: Injector) {\r\n defineCustomElements(\"dffedb-info-popup\", DffedbInfoPopupComponent, { injector });\r\n }\r\n}\r\n","import { Component, HostBinding, Input, OnInit } from \"@angular/core\";\r\nimport { MatSlideToggleChange } from \"@angular/material/slide-toggle\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { WebComponentInitializerService } from \"../shared/web-component-initializer.service\";\r\nimport { DffedbPrisberegnerSandbox } from \"./dffedb-prisberegner.sandbox\";\r\nimport { PrisberegnerResultatDetaljelinjeViewModel, PrisberegnerViewModel } from \"./model/prisberegner.view-model\";\r\n\r\n@Component({\r\n templateUrl: \"./dffedb-prisberegner.component.html\",\r\n styleUrls: [\"./dffedb-prisberegner.component.scss\"]\r\n})\r\nexport class DffedbPrisberegnerComponent implements OnInit {\r\n @HostBinding(\"class.mat-app-background\") public classMatAppBackground = true;\r\n @Input() public nodeId: number;\r\n\r\n public vm$: Observable;\r\n\r\n constructor(\r\n private readonly webComponentInitializer: WebComponentInitializerService,\r\n private readonly sandbox: DffedbPrisberegnerSandbox\r\n ) {}\r\n\r\n public toggle(event: MatSlideToggleChange): void {\r\n //console.log(\"toggle\", event.checked);\r\n this.sandbox._state.oenskerFordelingAfKonverteringsbidrag = event.checked;\r\n // this.useDefault = event.checked;\r\n }\r\n\r\n public findKonverterinsbidrag(resultat: PrisberegnerResultatDetaljelinjeViewModel[], tekst: string): number {\r\n const res = resultat.find((e) => e.tekst === tekst);\r\n if (res === undefined || res === null || !res) return null;\r\n return res.beloeb;\r\n }\r\n\r\n public async ngOnInit(): Promise {\r\n this.webComponentInitializer.init(+this.nodeId);\r\n this.vm$ = this.sandbox.selectViewModel(+this.nodeId);\r\n }\r\n\r\n public onFocus(event: FocusEvent): void {\r\n (event.target as any).select();\r\n }\r\n\r\n public getDetaljerText(erSynlig: boolean): string {\r\n return erSynlig ? \"Skjul detaljer\" : \"Vis detaljer\";\r\n }\r\n}\r\n","\r\n \r\n Prisberegneren mangler at blive konfigureret\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n Hvor stort er dit hus (BBR-boligareal)?\r\n \r\n m2\r\n \r\n \r\n\r\n \r\n Hvordan opvarmer du dit hus?\r\n \r\n \r\n {{ varmekilde.navn }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Hvor meget el bruger du til opvarmning om året?\r\n \r\n kWh\r\n \r\n \r\n\r\n \r\n \r\n \r\n Hvor meget olie bruger du om året?\r\n \r\n liter\r\n \r\n \r\n \r\n Hvor gammelt er dit oliefyr?\r\n \r\n \r\n 0-4 år\r\n \r\n 5-8 år\r\n \r\n Ældre end 8 år\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Hvor meget naturgas bruger du om året?\r\n \r\n m3\r\n \r\n \r\n \r\n Hvor gammelt er dit naturgasfyr?\r\n \r\n \r\n 0-4 år\r\n \r\n 5-8 år\r\n \r\n Ældre end 8 år\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Hvor mange træpiller bruger du om året?\r\n \r\n kg\r\n \r\n \r\n \r\n Hvor gammelt er dit pillefyr?\r\n \r\n \r\n 0-4 år\r\n \r\n 5-8 år\r\n \r\n Ældre end 8 år\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Hvor meget el bruger din varmepumpe om året?\r\n \r\n kWh\r\n \r\n \r\n \r\n\r\n \r\n {{ vm.konfiguration.tekster.medVarmemesterordning }}\r\n \r\n\r\n \r\n \r\n

    {{ vm.konfiguration.tekster.konverteringsbidragOverskrift }}

    \r\n

    {{ vm.konfiguration.tekster.konverteringsbidragSubtekst1 }}

    \r\n

    {{ vm.konfiguration.tekster.konverteringsbidragSubtekst2 }}

    \r\n
    \r\n \r\n {{\r\n vm.state.oenskerFordelingAfKonverteringsbidrag\r\n ? vm.konfiguration.tekster.konverteringsbidragToggle2\r\n : vm.konfiguration.tekster.konverteringsbidragToggle1\r\n }}\r\n {{\r\n findKonverterinsbidrag(vm.resultat.fjernvarme.detaljer, vm.konfiguration.tekster.konverteringsbidragOverskrift)\r\n | number : \"0.0-0\"\r\n }}\r\n kr.\r\n {{ vm.state.oenskerFordelingAfKonverteringsbidrag ? \"pr. år\" : \" \" }}\r\n \r\n \r\n \r\n Vælg antal år til fordeling\r\n \r\n \r\n betal over {{ antalAar }} år\r\n \r\n \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n

    Resultat

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Vejledende årlige udgifter ved fjernvarme:\r\n
    {{ vm.resultat.fjernvarme.ialt.beloeb | number : \"1.0-0\" }} kr.
    \r\n inkl. moms pr. år\r\n
    Årlige besparelse ved skift til fjernvarme:\r\n
    {{ vm.resultat.besparelseKr | number : \"1.0-0\" }} kr.
    \r\n inkl. moms pr. år\r\n
    Årlig besparelse svarer til:\r\n
    {{ vm.resultat.besparelsePct | number : \"1.0-0\" }}%
    \r\n  \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n
    \r\n

    Beregningsgrundlag

    \r\n
    Hvad koster det dig at varme dit hus op?
    \r\n
    \r\n
    Dit varmeforbrug pr. år
    \r\n
    \r\n {{ vm.resultat.mwh | number : \"1.2-2\" }} MWh \r\n {{ vm.resultat.mwhForklaring }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Vejledende årlige varmeregning med {{ vm.varmekildeTekst | lowercase }}\r\n
    \r\n
    \r\n
    \r\n {{ vm.resultat.sammenligningskilde.ialt.beloeb | number : \"1.0-0\" }} kr. \r\n \r\n
    \r\n \r\n \r\n {{ getDetaljerText(vm.state.visDetaljerSammenligningskilde) }}\r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    Årlig besparelse ift. {{ vm.varmekildeTekst | lowercase }}
    \r\n
    \r\n {{ vm.resultat.besparelseKr | number : \"1.0-0\" }} kr. \r\n svarende til en besparelse på {{ vm.resultat.besparelsePct | number : \"1.0-0\" }}%\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n                {{ vm.konfiguration | json }}\r\n            
    \r\n
    \r\n                {{ vm.model | json }}\r\n            
    \r\n
    \r\n                {{ vm.resultat | json }}\r\n            
    \r\n
    \r\n \r\n
    \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\n//import { FlexLayoutModule } from \"@angular/flex-layout\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\r\n\r\nimport { EmptyPageBadgeModule } from \"@dffedb/ui\";\r\nimport { defineCustomElements } from \"@dffedb/util\";\r\n\r\nimport { DffedbPrisberegnerComponent } from \"./dffedb-prisberegner.component\";\r\nimport { PrisberegnerSpecifikationComponent } from \"./prisberegner-specifikation/prisberegner-specifikation.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n //FlexLayoutModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatSlideToggleModule,\r\n EmptyPageBadgeModule\r\n ],\r\n exports: [DffedbPrisberegnerComponent],\r\n declarations: [DffedbPrisberegnerComponent, PrisberegnerSpecifikationComponent],\r\n providers: []\r\n})\r\nexport class DffedbPrisberegnerModule {\r\n constructor(injector: Injector) {\r\n defineCustomElements(\"dffedb-prisberegner\", DffedbPrisberegnerComponent, { injector });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { first, map, shareReplay, startWith, switchMap } from \"rxjs/operators\";\r\n\r\nimport { LogService } from \"@e-forsyning/common/log\";\r\n\r\nimport { PrisberegnerFormModel } from \"./model/prisberegner-form.model\";\r\nimport { PrisberegnerKonfiguration, PrisberegnerVarmekilde } from \"./model/prisberegner-konfiguration.model\";\r\nimport { prisberegnerVarmekilder } from \"./model/prisberegner-varmekilder.model\";\r\nimport { PrisberegnerStateViewModel, PrisberegnerViewModel } from \"./model/prisberegner.view-model\";\r\nimport { PrisberegnerViewModelMapper } from \"./services/prisberegner-view-model.mapper\";\r\nimport { PrisberegnerService } from \"./services/prisberegner.service\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffedbPrisberegnerSandbox {\r\n // Defineres her, så ændringer beholdes selvom beregningsgrundlaget ændrer sig.\r\n // Hvis vi flyttede det ned i 'selectViewModel', ville værdierne blive resat hver gang beregningsgrundlaget ændrer sig.\r\n public _state: PrisberegnerStateViewModel = {\r\n visDetaljerFjernvarme: false,\r\n visDetaljerSammenligningskilde: false,\r\n oenskerFordelingAfKonverteringsbidrag: false\r\n };\r\n constructor(\r\n private readonly service: PrisberegnerService,\r\n private readonly viewModelMapper: PrisberegnerViewModelMapper,\r\n private readonly logger: LogService,\r\n private readonly sanitizer: DomSanitizer\r\n ) {}\r\n\r\n public selectViewModel(nodeId: number): Observable {\r\n const konfiguration$ = this.service.selectKonfiguration(nodeId).pipe(shareReplay(1));\r\n\r\n const formGroup$ = konfiguration$.pipe(\r\n map((konfiguration) => this.createFormGroup(konfiguration)),\r\n shareReplay(1)\r\n );\r\n const model$ = formGroup$.pipe(\r\n switchMap((formGroup) => formGroup.valueChanges.pipe(startWith(formGroup.value))),\r\n map((model) => model as PrisberegnerFormModel)\r\n );\r\n\r\n const beregnetResultat$ = combineLatest([model$, konfiguration$]).pipe(\r\n map(([model, konfiguration]) =>\r\n this.viewModelMapper.modelToViewModel(konfiguration, model, this.service.beregnForbrugPrAar(model, konfiguration))\r\n )\r\n );\r\n\r\n return combineLatest([beregnetResultat$, konfiguration$, model$, formGroup$]).pipe(\r\n map(([resultat, konfiguration, model, formGroup]) => ({\r\n varmekilder: konfiguration.varmekilder,\r\n model,\r\n formGroup,\r\n varmekildeTekst: this.getVarmekildeTekst(konfiguration.varmekilder, formGroup.get(\"varmekilde\").value),\r\n konfiguration,\r\n konfigurationOk: this.beregnOmKonfigurationErOk(konfiguration),\r\n resultat,\r\n state: this._state\r\n }))\r\n );\r\n }\r\n\r\n private getVarmekildeTekst(varmekilder: PrisberegnerVarmekilde[], valgtVarmekildeId: number): string {\r\n return varmekilder.find((k) => k.id === valgtVarmekildeId)?.navn;\r\n }\r\n\r\n private beregnOmKonfigurationErOk(konfiguration: PrisberegnerKonfiguration): boolean {\r\n const fjernvarmeKonfigurationOk = !!konfiguration.fjernvarme.prisPrMwh;\r\n const naturgasKonfigurationOk =\r\n !konfiguration.varmekilder.find((k) => k.id === prisberegnerVarmekilder.naturgas.id) ||\r\n (!!konfiguration.naturgas.braendvaerdiKwhPrM3 && !!konfiguration.naturgas.virkningsgrad);\r\n const olieKonfigurationOk =\r\n !konfiguration.varmekilder.find((k) => k.id === prisberegnerVarmekilder.olie.id) ||\r\n (!!konfiguration.olie.braendvaerdiKwhPrLiter && !!konfiguration.olie.virkningsgrad);\r\n const traepillerKonfigurationOk =\r\n !konfiguration.varmekilder.find((k) => k.id === prisberegnerVarmekilder.traepiller.id) ||\r\n (!!konfiguration.traepiller.braendvaerdiKwhPrKg && !!konfiguration.traepiller.virkningsgrad);\r\n return fjernvarmeKonfigurationOk && naturgasKonfigurationOk && olieKonfigurationOk && traepillerKonfigurationOk;\r\n }\r\n\r\n private createFormGroup(konfiguration: PrisberegnerKonfiguration): UntypedFormGroup {\r\n const defaultVarmekilde = konfiguration.varmekilder[0];\r\n const oenskerVarmemesterOrdning = konfiguration.fjernvarme.fjernvarmeVarmemesterordningStandardVaerdi;\r\n const oenskerFordelingAfKonverteringsbidrag = false; //!!konfiguration.fjernvarme.konverteringsbidrag;\r\n const defaultKonverteringbidragAntalAar =\r\n konfiguration.fjernvarme.konverteringsbidragAntalAar[konfiguration.fjernvarme.konverteringsbidragAntalAar.length - 1];\r\n const result = new UntypedFormGroup({\r\n boligareal: new UntypedFormControl(0),\r\n varmekilde: new UntypedFormControl(defaultVarmekilde && defaultVarmekilde.id),\r\n forbrugEl: new UntypedFormControl(0),\r\n forbrugNaturgas: new UntypedFormControl(0),\r\n forbrugOlie: new UntypedFormControl(0),\r\n forbrugTraepiller: new UntypedFormControl(0),\r\n forbrugVarmepumpe: new UntypedFormControl(0),\r\n naturgasKeddelAlder: new UntypedFormControl(null),\r\n olieFyrAlder: new UntypedFormControl(null),\r\n pillefyrAlder: new UntypedFormControl(null),\r\n oenskerVarmemesterOrdning: new UntypedFormControl(oenskerVarmemesterOrdning),\r\n oenskerFordelingAfKonverteringsbidrag: new UntypedFormControl(oenskerFordelingAfKonverteringsbidrag),\r\n konverteringbidragAntalAar: new UntypedFormControl(defaultKonverteringbidragAntalAar)\r\n });\r\n this.setupLogging(result);\r\n return result;\r\n }\r\n\r\n private setupLogging(formGroup: UntypedFormGroup): void {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n this.logger.log({ Besked: \"Prisberegner loadet\" });\r\n formGroup.statusChanges.pipe(first()).subscribe(() => this.logger.log({ Besked: \"Prisberegner benyttet\" }));\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n }\r\n}\r\n","import { PrisberegnerVarmekilde } from \"./prisberegner-konfiguration.model\";\r\n\r\nexport interface PrisberegnerVarmekilder {\r\n el: PrisberegnerVarmekilde;\r\n naturgas: PrisberegnerVarmekilde;\r\n olie: PrisberegnerVarmekilde;\r\n traepiller: PrisberegnerVarmekilde;\r\n varmepumpe: PrisberegnerVarmekilde;\r\n alle: () => PrisberegnerVarmekilde[];\r\n}\r\n\r\nexport const prisberegnerVarmekilder: PrisberegnerVarmekilder = {\r\n el: { id: 1, navn: \"Elradiator\" },\r\n naturgas: { id: 2, navn: \"Naturgas\" },\r\n olie: { id: 3, navn: \"Olie\" },\r\n traepiller: { id: 4, navn: \"Træpiller\" },\r\n varmepumpe: { id: 5, navn: \"Varmepumpe\" },\r\n alle: () => [\r\n prisberegnerVarmekilder.el,\r\n prisberegnerVarmekilder.naturgas,\r\n prisberegnerVarmekilder.olie,\r\n prisberegnerVarmekilder.traepiller,\r\n prisberegnerVarmekilder.varmepumpe\r\n ]\r\n};\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\nimport { PrisberegnerResultatDetaljelinjeViewModel } from \"../model/prisberegner.view-model\";\r\n\r\n@Component({\r\n selector: \"prisberegner-specifikation\",\r\n templateUrl: \"./prisberegner-specifikation.component.html\",\r\n styleUrls: [\"./prisberegner-specifikation.component.scss\"]\r\n})\r\nexport class PrisberegnerSpecifikationComponent {\r\n @Input()\r\n public linjer: PrisberegnerResultatDetaljelinjeViewModel[];\r\n}\r\n","\r\n @for (linje of linjer; track linje) {\r\n \r\n \r\n \r\n \r\n }\r\n
    {{ linje.tekst }} {{ linje.beloeb | number: \"1.0-0\" }} {{ linje.beloebSuffix }}
    \r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { dbToBoolean, dbToFloat, dbToString } from \"@dffedb/util\";\r\n\r\nimport { PrisberegnerKonfigurationBbrPriserDto, PrisberegnerKonfigurationDto } from \"../model/prisberegner-konfiguration.dto\";\r\nimport {\r\n PrisberegnerFjernvarmeBbrPrisKonfiguration,\r\n PrisberegnerKonfiguration,\r\n PrisberegnerVarmekilde\r\n} from \"../model/prisberegner-konfiguration.model\";\r\nimport { prisberegnerVarmekilder } from \"../model/prisberegner-varmekilder.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class PrisberegnerKonfigurationMapper {\r\n public dtoToKonfiguration(dto: PrisberegnerKonfigurationDto): PrisberegnerKonfiguration {\r\n const bbrTrappemodel = dbToBoolean(dto.fjernvarmeBbrTrappemodel);\r\n const result: PrisberegnerKonfiguration = {\r\n fjernvarme: {\r\n prisAbonnement: dbToFloat(dto.fjernvarmePrisAbonnement),\r\n bbrTrappemodel,\r\n bbrPrisPrM2: bbrTrappemodel ? null : dbToFloat(dto.fjernvarmeBbrPrisPrM2),\r\n bbrPriserPrM2: bbrTrappemodel ? this.dtoBbrPriserToKonfiguration(JSON.parse(dto.fjernvarmeBbrPriserPrM2 ?? \"[]\")) : [],\r\n prisPrMwh: dbToFloat(dto.fjernvarmePrisPrMwh),\r\n groenOmstillingsbidragPrM2: dbToFloat(dto.fjernvarmePrisGroenOmstillingsbidrag),\r\n fjernvarmeVarmemesterordningStandardVaerdi: dbToBoolean(dto.fjernvarmeVarmemesterordningStandardVaerdi),\r\n tilslutningsbidrag: dbToFloat(dto.fjernvarmeTilslutningsbidragFastPris),\r\n varmemesterordningPrAar: dbToFloat(dto.fjernvarmeVarmemesterordningPrisPrAar),\r\n serviceOgVedligeholdPrAar: dbToFloat(dto.fjernvarmeServiceOgVedligeholdPrAar),\r\n investeringsomkostninger: dbToFloat(dto.fjernvarmeInvesteringsomkostninger),\r\n nyUnitPris: dbToFloat(dto.fjernvarmeNyUnitPris),\r\n nyUnitAfskrivningsperiodeAar: dbToFloat(dto.fjernvarmeNyUnitAfskrivningsperiodeAar),\r\n nyUnitRentesats: this.parseRentesat(dto.fjernvarmeNyUnitRentesats),\r\n konverteringsbidragAntalAar: this.parseAntalAar(dto.fjernvarmeKonverteringbidragAntalAar)\r\n },\r\n naturgas: {\r\n braendvaerdiKwhPrM3: dbToFloat(dto.naturgasBraendvaerdiKwhPrM3),\r\n virkningsgrad: {\r\n vaelgKedlensAlder: dbToBoolean(dto.naturgasVirkningsgradVaelgKedlensAlder),\r\n virkningsgrad: this.parseVirkningsgrad(dto.naturgasVirkningsgrad),\r\n virkningsgrad0til4Aar: this.parseVirkningsgrad(dto.naturgasVirkningsgrad0til4Aar),\r\n virkningsgrad5til8Aar: this.parseVirkningsgrad(dto.naturgasVirkningsgrad5til8Aar),\r\n virkningsgrad9tilNAar: this.parseVirkningsgrad(dto.naturgasVirkningsgrad9tilNAar)\r\n },\r\n abonnementPrAar: dbToFloat(dto.natrurgasPrisAbonnementPrAar),\r\n systemtarif: dbToFloat(dto.naturgasPrisSystemtarif),\r\n elPrAar: dbToFloat(dto.naturgasPrisElPrAar),\r\n prisPrM3: dbToFloat(dto.naturgasPrisPrM3),\r\n serviceOgVedligeholdPrAar: dbToFloat(dto.naturgasPrisServiceOgVedligeholdPrAar),\r\n nytFyrPris: dbToFloat(dto.naturgasNytFyrPris),\r\n nytFyrAfskrivningsperiodeAar: dbToFloat(dto.naturgasNytFyrAfskrivningsperiodeAar),\r\n nytFyrRentesats: this.parseRentesat(dto.naturgasNytFyrRentesats)\r\n },\r\n olie: {\r\n braendvaerdiKwhPrLiter: dbToFloat(dto.olieBraendvaerdiKwhPrLiter),\r\n virkningsgrad: {\r\n vaelgKedlensAlder: dbToBoolean(dto.olieVirkningsgradVaelgFyretsAlder),\r\n virkningsgrad: this.parseVirkningsgrad(dto.olieVirkningsgrad),\r\n virkningsgrad0til4Aar: this.parseVirkningsgrad(dto.olieVirkningsgrad0Til4Aar),\r\n virkningsgrad5til8Aar: this.parseVirkningsgrad(dto.olieVirkningsgrad5Til8Aar),\r\n virkningsgrad9tilNAar: this.parseVirkningsgrad(dto.olieVirkningsgrad9TilNAar)\r\n },\r\n elPrAar: dbToFloat(dto.olieElforbrugPrAar),\r\n prisPrLiter: dbToFloat(dto.oliePrisPrLiter),\r\n serviceOgVedligeholdPrAar: dbToFloat(dto.olieServiceOgVedligeholdPrAar),\r\n skorstensfejerPrAar: dbToFloat(dto.olieSkorstensfejerPrAar),\r\n nytFyrPris: dbToFloat(dto.olieNytFyrPris),\r\n nytFyrAfskrivningsperiodeAar: dbToFloat(dto.olieNytFyrAfskrivningsperiodeAar),\r\n nytFyrRentesats: this.parseRentesat(dto.olieNytFyrRentesats)\r\n },\r\n traepiller: {\r\n braendvaerdiKwhPrKg: dbToFloat(dto.traepillerBraendvaerdiKwhPrKg),\r\n virkningsgrad: {\r\n vaelgKedlensAlder: dbToBoolean(dto.traepillerVgVaelgFyretsAlder),\r\n virkningsgrad: this.parseVirkningsgrad(dto.traepillerVirkningsgrad),\r\n virkningsgrad0til4Aar: this.parseVirkningsgrad(dto.traepillerVirkningsgrad0Til4Aar),\r\n virkningsgrad5til8Aar: this.parseVirkningsgrad(dto.traepillerVirkningsgrad5Til8Aar),\r\n virkningsgrad9tilNAar: this.parseVirkningsgrad(dto.traepillerVirkningsgrad9TilNAar)\r\n },\r\n elPrAar: dbToFloat(dto.traepillerElforbrugPrAar),\r\n prisPrKg: dbToFloat(dto.traepillerPrisPrKg),\r\n serviceOgVedligeholdPrAar: dbToFloat(dto.traepillerServiceOgVedligeholdPrAar),\r\n skorstensfejerPrAar: dbToFloat(dto.traepillerSkorstensfejerPrAar),\r\n nytFyrPris: dbToFloat(dto.traepillerNytFyrPris),\r\n nytFyrAfskrivningsperiodeAar: dbToFloat(dto.traepillerNytFyrAfskrivningsperiodeAar),\r\n nytFyrRentesats: this.parseRentesat(dto.traepillerNytFyrRentesats)\r\n },\r\n varmepumpe: {\r\n virkningsgrad: this.parseVirkningsgrad(dto.varmepumpeVirkningsgrad),\r\n elprisPrKwh: dbToFloat(dto.varmepumpeElprisPrKwh),\r\n serviceOgVedligeholdPrAar: dbToFloat(dto.varmepumpeServiceOgVedligeholdPrAar),\r\n nyPumpePris: dbToFloat(dto.varmepumpeNyPumpePris),\r\n nyPumpeAfskrivningsperiodeAar: dbToFloat(dto.varmepumpeNyPumpeAfskrivningsperiodeAar),\r\n nyPumpeRentesats: this.parseRentesat(dto.varmepumpeNyPumpeRentesats)\r\n },\r\n tekster: {\r\n abonnementsbidrag: dto.tekstAbonnementsbidrag !== \"\" ? dto.tekstAbonnementsbidrag : \"Abonnementsbidrag\",\r\n bbrBidrag: dto.tekstBbrBidrag !== \"\" ? dto.tekstBbrBidrag : \"BBR bidrag\",\r\n energipris: dto.tekstEnergipris !== \"\" ? dto.tekstEnergipris : \"Energipris\",\r\n investeringsomkostninger:\r\n dto.tekstInvesteringsomkostninger !== \"\" ? dto.tekstInvesteringsomkostninger : \"Investeringsomkostninger\",\r\n koebAfFjernvarmeunit: dto.tekstKoebAfFjernvarmeunit !== \"\" ? dto.tekstKoebAfFjernvarmeunit : \"Køb af fjernvarmeunit\",\r\n medVarmemesterordning: dto.tekstMedVarmemesterordning !== \"\" ? dto.tekstMedVarmemesterordning : \"Ønsker varmemesterordning\",\r\n serviceOgVedligehold: dto.tekstServiceOgVedligehold !== \"\" ? dto.tekstServiceOgVedligehold : \"Service og vedligehold\",\r\n groenOmstillingsbidrag: dto.tekstGroenOmstillingsbidrag !== \"\" ? dto.tekstGroenOmstillingsbidrag : \"Grøn omstillingsbidrag\",\r\n tilslutningsbidrag: dto.tekstTilslutningsbidrag !== \"\" ? dto.tekstTilslutningsbidrag : \"Tilslutningsbidrag\",\r\n varmemesterordning: dto.tekstVarmemesterordning !== \"\" ? dto.tekstVarmemesterordning : \"Varmemesterordning\",\r\n konverteringsbidragOverskrift:\r\n dto.tekstKonverteringsbidragOverskrift !== \"\" ? dto.tekstKonverteringsbidragOverskrift : \"Konverteringsbidrag\",\r\n konverteringsbidragSubtekst1:\r\n dto.tekstKonverteringsbidragSubtekst1 !== \"\"\r\n ? dto.tekstKonverteringsbidragSubtekst1\r\n : \"Konverteringsbidraget kan betales med det samme, eller fordeles over et antal år.\",\r\n konverteringsbidragSubtekst2:\r\n dto.tekstKonverteringsbidragSubtekst2 !== \"\" ? dto.tekstKonverteringsbidragSubtekst2 : \"Klik og vælg din løsning\",\r\n konverteringsbidragToggle1:\r\n dto.tekstKonverteringsbidragToggle1 !== \"\" ? dto.tekstKonverteringsbidragToggle1 : \"Engangsbetaling af\",\r\n konverteringsbidragToggle2:\r\n dto.tekstKonverteringsbidragToggle2 !== \"\" ? dto.tekstKonverteringsbidragToggle2 : \"Fordel betalingen med\"\r\n },\r\n varmekilder: this.dtoToVarmekilder(dto.varmekilder),\r\n visDetaljeretResultat: dto.visDetaljeretResultat === \"1\",\r\n visKunUdgiftResultat: dto.visKunUdgiftResultat === \"1\"\r\n };\r\n\r\n return result;\r\n }\r\n\r\n private dtoBbrPriserToKonfiguration(dto: PrisberegnerKonfigurationBbrPriserDto[]): PrisberegnerFjernvarmeBbrPrisKonfiguration[] {\r\n // Værdier er gemt som \"12.5\", så vi benytter parseFloat (decimalseparator .) i stedet for dbToFloat (decimalseparator ,)\r\n return (dto ?? []).map((d) => ({\r\n tekst: dbToString(d.tekst),\r\n fraM2: parseFloat(d.fraM2),\r\n tilM2: parseFloat(d.tilM2),\r\n prisPrM2: parseFloat(d.prisPrM2),\r\n konverteringsbidragPrM2: parseFloat(d.konverteringsbidragPrM2)\r\n }));\r\n }\r\n\r\n private dtoToVarmekilder(varmekilder: string): PrisberegnerVarmekilde[] {\r\n const ids = (varmekilder || \"\").split(\",\").map((id) => +id);\r\n return ids.map((id) => prisberegnerVarmekilder.alle().find((vk) => vk.id === id));\r\n }\r\n\r\n // \"4%\" => 4\r\n // \"4\" => 4 => 4 (implicit %-tegn)\r\n // \"0,04\" => 4\r\n // \"0,19\" => 19 (19%)-\r\n // \"0,20\" => 0.20\r\n private parseRentesat(value: string): number {\r\n const result = dbToFloat(value);\r\n return result > 0.2 ? result : result * 100; // Vi har nok ikke rentesats på 20% eller derover\r\n }\r\n\r\n // \"325\" => 325 => 3.25 (implicit %-tegn)\r\n // \"325%\" => 3.25\r\n // \"3,25\" => 3.25\r\n // \"95\" => 95 => 0.95 (implicit %-tegn)\r\n // \"95%\" => 0.95\r\n // \"0,95\" => 0.95\r\n private parseVirkningsgrad(value: string): number {\r\n const result = dbToFloat(value);\r\n return result < 10 ? result : result / 100; // Vi har nok hverken COP-værdi eller virkningsgrad på 1000% eller derover\r\n }\r\n\r\n private parseAntalAar(value: string): number[] {\r\n return (value || \"\").split(\",\").map(Number);\r\n }\r\n}\r\n","import { DecimalPipe } from \"@angular/common\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\nimport { PrisberegnerFormModel } from \"../model/prisberegner-form.model\";\r\nimport {\r\n PrisberegnerKonfiguration,\r\n PrisberegnerNaturgasKonfiguration,\r\n PrisberegnerOlieKonfiguration,\r\n PrisberegnerTraepillerKonfiguration,\r\n PrisberegnerVarmepumpeKonfiguration\r\n} from \"../model/prisberegner-konfiguration.model\";\r\nimport {\r\n PrisberegnerResultat,\r\n PrisberegnerResultatFjernvarme,\r\n PrisberegnerResultatNaturgas,\r\n PrisberegnerResultatOlie,\r\n PrisberegnerResultatVarmepumpe\r\n} from \"../model/prisberegner-resultat.model\";\r\nimport { prisberegnerVarmekilder } from \"../model/prisberegner-varmekilder.model\";\r\nimport { PrisberegnerResultatDetaljelinjeViewModel, PrisberegnerResultaterViewModel } from \"../model/prisberegner.view-model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class PrisberegnerViewModelMapper {\r\n constructor(private readonly sanitizer: DomSanitizer) {}\r\n\r\n public modelToViewModel(\r\n konfiguration: PrisberegnerKonfiguration,\r\n model: PrisberegnerFormModel,\r\n resultat: PrisberegnerResultat\r\n ): PrisberegnerResultaterViewModel {\r\n const fjernvarmeDetaljer = Array.from(this.genererDetaljerFjernvarme(konfiguration, model, resultat.fjernvarme, resultat.mwh));\r\n const sammenligningskildeDetaljer = this.genererDetaljerSammenligningskilde(konfiguration, model, resultat);\r\n const sammenligningskildeIaltLinje = sammenligningskildeDetaljer.find((d) => d.bold);\r\n const fjernvarmeIaltLinje = fjernvarmeDetaljer.find((d) => d.bold);\r\n const fjernvarmeIalt = fjernvarmeIaltLinje?.beloeb || 0;\r\n const sammenligningkildeIalt = sammenligningskildeIaltLinje?.beloeb || 0;\r\n const besparelseKr = !!sammenligningkildeIalt ? sammenligningkildeIalt - fjernvarmeIalt : 0;\r\n const besparelsePct = !!sammenligningkildeIalt ? (besparelseKr * 100) / sammenligningkildeIalt : 0;\r\n return {\r\n mwh: resultat.mwh,\r\n mwhForklaring: this.genererMwhForklaring(konfiguration, model),\r\n fjernvarme: {\r\n detaljer: fjernvarmeDetaljer,\r\n ialt: fjernvarmeIaltLinje\r\n },\r\n sammenligningskilde: {\r\n detaljer: sammenligningskildeDetaljer,\r\n ialt: sammenligningskildeIaltLinje || this.createDetaljer(\"\", \"\", 0, \"\", false)\r\n },\r\n besparelseKr,\r\n besparelsePct\r\n };\r\n }\r\n\r\n private *genererDetaljerFjernvarme(\r\n konfiguration: PrisberegnerKonfiguration,\r\n model: PrisberegnerFormModel,\r\n resultat: PrisberegnerResultatFjernvarme,\r\n mwh: number\r\n ): IterableIterator {\r\n const format = new DecimalPipe(\"da-DK\");\r\n const boligareal = format.transform(model.boligareal, \"1.0-0\") + \" m2\";\r\n const bbrPrisPrM2 = this.formatKr(konfiguration.fjernvarme.bbrPrisPrM2);\r\n const antalMwh = format.transform(mwh, \"1.2-2\") + \" MWh\";\r\n const prisPrMwh = this.formatKr(konfiguration.fjernvarme.prisPrMwh);\r\n const investeringsomkostninger = this.formatKr(konfiguration.fjernvarme.investeringsomkostninger);\r\n const nyUnitPris = this.formatKr(konfiguration.fjernvarme.nyUnitPris);\r\n const nyUnitAfskrivningsperiode = konfiguration.fjernvarme.nyUnitAfskrivningsperiodeAar + \" år\";\r\n const nyUnitRentesats = konfiguration.fjernvarme.nyUnitRentesats + \"%\";\r\n const groenOmstillingsbidragPrM2 = this.formatKr(konfiguration.fjernvarme.groenOmstillingsbidragPrM2);\r\n const tekst = konfiguration.tekster;\r\n const suffixBeloeb = \"kr.\";\r\n const suffixBeloebPrAar = \"kr./år\";\r\n\r\n if (resultat.forbrug) {\r\n yield this.createDetaljer(tekst.energipris, `(${antalMwh} à ${prisPrMwh})`, resultat.forbrug, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.abonnement) {\r\n yield this.createDetaljer(tekst.abonnementsbidrag, \"\", resultat.abonnement, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.bbrBidrag) {\r\n yield this.createDetaljer(tekst.bbrBidrag, `(${boligareal} à ${bbrPrisPrM2})`, resultat.bbrBidrag, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.bbrBidragTrappemodel.ialt) {\r\n yield this.createDetaljer(tekst.bbrBidrag, \"\", resultat.bbrBidragTrappemodel.ialt, suffixBeloebPrAar, false);\r\n for (const item of resultat.bbrBidragTrappemodel.items) {\r\n const arealFra = format.transform(item.fraM2, \"1.0-0\");\r\n const arealTil = format.transform(item.tilM2, \"1.0-0\");\r\n const areal = `${arealFra}-${arealTil} m2`;\r\n const prisPrM2 = this.formatKr(item.prisPrM2);\r\n yield this.createDetaljer(null, `- ${areal} à ${prisPrM2}`, null, null, false, \"detail\");\r\n }\r\n }\r\n\r\n if (resultat.groenOmstillingsbidrag) {\r\n yield this.createDetaljer(\r\n tekst.groenOmstillingsbidrag,\r\n `(${boligareal} à ${groenOmstillingsbidragPrM2})`,\r\n resultat.groenOmstillingsbidrag,\r\n suffixBeloebPrAar,\r\n false\r\n );\r\n }\r\n\r\n if (resultat.varmemesterOrdning) {\r\n yield this.createDetaljer(tekst.varmemesterordning, \"\", resultat.varmemesterOrdning, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.serviceOgVedligehold) {\r\n yield this.createDetaljer(tekst.serviceOgVedligehold, \"\", resultat.serviceOgVedligehold, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.unitGenanskaffelseYdelse) {\r\n yield this.createDetaljer(\r\n tekst.koebAfFjernvarmeunit,\r\n `(${nyUnitPris} betalt over ${nyUnitAfskrivningsperiode}, rente ${nyUnitRentesats})`,\r\n resultat.unitGenanskaffelseYdelse,\r\n suffixBeloebPrAar,\r\n false\r\n );\r\n }\r\n\r\n if (resultat.investeringsomkostningerYdelse) {\r\n yield this.createDetaljer(\r\n tekst.investeringsomkostninger,\r\n `(${investeringsomkostninger} betalt over ${nyUnitAfskrivningsperiode}, rente ${nyUnitRentesats})`,\r\n resultat.investeringsomkostningerYdelse,\r\n suffixBeloebPrAar,\r\n false\r\n );\r\n }\r\n\r\n if (model.oenskerFordelingAfKonverteringsbidrag) {\r\n yield this.createDetaljer(\r\n tekst.konverteringsbidragOverskrift,\r\n `(${resultat.bbrBidragTrappemodel.konverteringsbidragIalt} kr. fordelt over ${model.konverteringbidragAntalAar} år)`,\r\n model.konverteringbidragAntalAar > 0\r\n ? resultat.bbrBidragTrappemodel.konverteringsbidragIalt / model.konverteringbidragAntalAar\r\n : resultat.bbrBidragTrappemodel.konverteringsbidragIalt,\r\n suffixBeloebPrAar,\r\n false\r\n );\r\n for (const item of resultat.bbrBidragTrappemodel.items) {\r\n const arealFra = format.transform(item.fraM2, \"1.0-0\");\r\n const arealTil = format.transform(item.tilM2, \"1.0-0\");\r\n const areal = `${arealFra}-${arealTil} m2`;\r\n const prisPrM2 = this.formatKr(item.konverteringsbidragPrM2);\r\n yield this.createDetaljer(null, `- ${areal} à ${prisPrM2}`, null, null, false, \"detail\");\r\n }\r\n }\r\n\r\n if (resultat.varmemesterOrdning) {\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n } else if (resultat.serviceOgVedligehold) {\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n } else {\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, ekskl. service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n }\r\n\r\n if (resultat.tilslutningsbidrag) {\r\n yield this.createDetaljer(tekst.tilslutningsbidrag, \"\", resultat.tilslutningsbidrag, suffixBeloeb, false);\r\n }\r\n\r\n //konverteringsbidrag uden fordeling\r\n if (!model.oenskerFordelingAfKonverteringsbidrag) {\r\n if (resultat.bbrBidragTrappemodel.konverteringsbidragIalt > 0) {\r\n yield this.createDetaljer(\r\n tekst.konverteringsbidragOverskrift,\r\n \"\",\r\n resultat.bbrBidragTrappemodel.konverteringsbidragIalt,\r\n suffixBeloeb,\r\n false\r\n );\r\n }\r\n for (const item of resultat.bbrBidragTrappemodel.items) {\r\n const arealFra = format.transform(item.fraM2, \"1.0-0\");\r\n const arealTil = format.transform(item.tilM2, \"1.0-0\");\r\n const areal = `${arealFra}-${arealTil} m2`;\r\n const prisPrM2 = this.formatKr(item.konverteringsbidragPrM2);\r\n yield this.createDetaljer(null, `- ${areal} à ${prisPrM2}`, null, null, false, \"detail\");\r\n }\r\n }\r\n }\r\n\r\n private genererDetaljerSammenligningskilde(\r\n konfiguration: PrisberegnerKonfiguration,\r\n model: PrisberegnerFormModel,\r\n resultat: PrisberegnerResultat\r\n ): PrisberegnerResultatDetaljelinjeViewModel[] {\r\n if (model.varmekilde === prisberegnerVarmekilder.naturgas.id) {\r\n return Array.from(this.genererDetaljerNaturgas(konfiguration.naturgas, model, resultat.naturgas));\r\n }\r\n if (model.varmekilde === prisberegnerVarmekilder.olie.id) {\r\n return Array.from(this.genererDetaljerOlie(konfiguration.olie, model, resultat.olie));\r\n }\r\n if (model.varmekilde === prisberegnerVarmekilder.traepiller.id) {\r\n return Array.from(this.genererDetaljerTraepiller(konfiguration.traepiller, model, resultat.traepiller));\r\n }\r\n if (model.varmekilde === prisberegnerVarmekilder.varmepumpe.id) {\r\n return Array.from(this.genererDetaljerVarmepumpe(konfiguration.varmepumpe, model, resultat.varmepumpe, resultat.mwh));\r\n }\r\n return [];\r\n }\r\n\r\n private genererMwhForklaring(konfiguration: PrisberegnerKonfiguration, model: PrisberegnerFormModel): string {\r\n const format = new DecimalPipe(\"da-DK\");\r\n if (model.varmekilde === prisberegnerVarmekilder.varmepumpe.id) {\r\n return `beregnet med en COP-værdi på ${format.transform(konfiguration.varmepumpe.virkningsgrad * 100, \"1.0-0\")}%`;\r\n }\r\n return \"\";\r\n }\r\n\r\n private *genererDetaljerNaturgas(\r\n konfiguration: PrisberegnerNaturgasKonfiguration,\r\n model: PrisberegnerFormModel,\r\n resultat: PrisberegnerResultatNaturgas\r\n ): IterableIterator {\r\n const format = new DecimalPipe(\"da-DK\");\r\n const antalM3 = format.transform(model.forbrugNaturgas, \"1.0-0\") + \" m3\";\r\n const prisPrM3 = this.formatKr(konfiguration.prisPrM3);\r\n const nytFyrPris = this.formatKr(konfiguration.nytFyrPris);\r\n const nytFyrAfskrivningsperiode = konfiguration.nytFyrAfskrivningsperiodeAar + \" år\";\r\n const nytFyrRentesats = konfiguration.nytFyrRentesats + \"%\";\r\n const suffixBeloebPrAar = \"kr./år\";\r\n\r\n if (resultat.forbrug) {\r\n yield this.createDetaljer(\"Forbrug\", `(${antalM3} à ${prisPrM3})`, resultat.forbrug, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.unitGenanskaffelseYdelse) {\r\n yield this.createDetaljer(\r\n \"Køb af gasfyr\",\r\n `(${nytFyrPris} betalt over ${nytFyrAfskrivningsperiode}, rente ${nytFyrRentesats})`,\r\n resultat.unitGenanskaffelseYdelse,\r\n suffixBeloebPrAar,\r\n false\r\n );\r\n }\r\n\r\n if (resultat.abonnement) {\r\n yield this.createDetaljer(\"Abonnement\", \"\", resultat.abonnement, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.systemtarif) {\r\n yield this.createDetaljer(\"Systemtarif (G1.6, G2.4, G4)\", \"\", resultat.systemtarif, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.serviceOgVedligehold) {\r\n yield this.createDetaljer(\"Service og vedligehold\", \"\", resultat.serviceOgVedligehold, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.elForbrug) {\r\n yield this.createDetaljer(\"Udgifter til el\", \"\", resultat.elForbrug, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.serviceOgVedligehold) {\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n } else {\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, ekskl. service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n }\r\n }\r\n\r\n private *genererDetaljerOlie(\r\n konfiguration: PrisberegnerOlieKonfiguration,\r\n model: PrisberegnerFormModel,\r\n resultat: PrisberegnerResultatOlie\r\n ): IterableIterator {\r\n const format = new DecimalPipe(\"da-DK\");\r\n const antalLiter = format.transform(model.forbrugOlie, \"1.0-0\") + \" liter\";\r\n const prisPrLiter = this.formatKr(konfiguration.prisPrLiter);\r\n const nytFyrPris = this.formatKr(konfiguration.nytFyrPris);\r\n const nytFyrAfskrivningsperiode = konfiguration.nytFyrAfskrivningsperiodeAar + \" år\";\r\n\r\n const nytFyrRentesats = konfiguration.nytFyrRentesats + \"%\";\r\n const suffixBeloebPrAar = \"kr./år\";\r\n\r\n if (resultat.forbrug) {\r\n yield this.createDetaljer(\"Forbrug\", `(${antalLiter} à ${prisPrLiter})`, resultat.forbrug, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.unitGenanskaffelseYdelse) {\r\n yield this.createDetaljer(\r\n \"Køb af oliefyr\",\r\n `(${nytFyrPris} betalt over ${nytFyrAfskrivningsperiode}, rente ${nytFyrRentesats})`,\r\n resultat.unitGenanskaffelseYdelse,\r\n suffixBeloebPrAar,\r\n false\r\n );\r\n }\r\n\r\n if (resultat.serviceOgVedligehold) {\r\n yield this.createDetaljer(\"Service og vedligehold\", \"\", resultat.serviceOgVedligehold, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.skorstensfejer) {\r\n yield this.createDetaljer(\"Skorstensfejer\", \"\", resultat.skorstensfejer, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.elForbrug) {\r\n yield this.createDetaljer(\"Udgifter til el\", \"\", resultat.elForbrug, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.serviceOgVedligehold) {\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n } else {\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, ekskl. service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n }\r\n }\r\n\r\n private *genererDetaljerTraepiller(\r\n konfiguration: PrisberegnerTraepillerKonfiguration,\r\n model: PrisberegnerFormModel,\r\n resultat: PrisberegnerResultatOlie\r\n ): IterableIterator {\r\n const format = new DecimalPipe(\"da-DK\");\r\n const antalKg = format.transform(model.forbrugTraepiller, \"1.0-0\") + \" kg\";\r\n const prisPrKg = this.formatKr(konfiguration.prisPrKg);\r\n const nytFyrPris = this.formatKr(konfiguration.nytFyrPris);\r\n const nytFyrAfskrivningsperiode = konfiguration.nytFyrAfskrivningsperiodeAar + \" år\";\r\n const nytFyrRentesats = konfiguration.nytFyrRentesats + \"%\";\r\n const suffixBeloebPrAar = \"kr./år\";\r\n\r\n if (resultat.forbrug) {\r\n yield this.createDetaljer(\"Forbrug\", `(${antalKg} à ${prisPrKg})`, resultat.forbrug, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.unitGenanskaffelseYdelse) {\r\n yield this.createDetaljer(\r\n \"Køb af pillefyr\",\r\n `(${nytFyrPris} betalt over ${nytFyrAfskrivningsperiode}, rente ${nytFyrRentesats})`,\r\n resultat.unitGenanskaffelseYdelse,\r\n suffixBeloebPrAar,\r\n false\r\n );\r\n }\r\n\r\n if (resultat.serviceOgVedligehold) {\r\n yield this.createDetaljer(\"Service og vedligehold\", \"\", resultat.serviceOgVedligehold, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.skorstensfejer) {\r\n yield this.createDetaljer(\"Skorstensfejer\", \"\", resultat.skorstensfejer, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.elForbrug) {\r\n yield this.createDetaljer(\"Udgifter til el\", \"\", resultat.elForbrug, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.serviceOgVedligehold) {\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n } else {\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, ekskl. service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n }\r\n }\r\n\r\n private *genererDetaljerVarmepumpe(\r\n konfiguration: PrisberegnerVarmepumpeKonfiguration,\r\n model: PrisberegnerFormModel,\r\n resultat: PrisberegnerResultatVarmepumpe,\r\n mwh: number\r\n ): IterableIterator {\r\n const format = new DecimalPipe(\"da-DK\");\r\n const forbrugEl = `${format.transform(model.forbrugVarmepumpe, \"1.0-0\")} kWh`;\r\n const prisPrKwh = this.formatKr(konfiguration.elprisPrKwh);\r\n const nyPumpePris = this.formatKr(konfiguration.nyPumpePris);\r\n const nyPumpeAfskrivningsperiode = konfiguration.nyPumpeAfskrivningsperiodeAar + \" år\";\r\n const nyPumpeRentesats = konfiguration.nyPumpeRentesats + \"%\";\r\n const suffixBeloebPrAar = \"kr./år\";\r\n\r\n if (resultat.elUdgift) {\r\n yield this.createDetaljer(\"Eludgift\", `(${forbrugEl} à ${prisPrKwh})`, resultat.elUdgift, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.serviceOgVedligehold) {\r\n yield this.createDetaljer(\"Service og vedligehold\", \"\", resultat.serviceOgVedligehold, suffixBeloebPrAar, false);\r\n }\r\n\r\n if (resultat.unitGenanskaffelseYdelse) {\r\n yield this.createDetaljer(\r\n \"Køb af varmepumpe\",\r\n `(${nyPumpePris} betalt over ${nyPumpeAfskrivningsperiode}, rente ${nyPumpeRentesats})`,\r\n resultat.unitGenanskaffelseYdelse,\r\n suffixBeloebPrAar,\r\n false\r\n );\r\n }\r\n\r\n yield this.createDetaljer(\"I alt\", \"inkl. moms, service og vedligehold\", resultat.ialt, suffixBeloebPrAar, true);\r\n }\r\n\r\n private createDetaljer(\r\n tekst: string,\r\n tekst2: string,\r\n beloeb: number,\r\n beloebSuffix: string,\r\n bold: boolean,\r\n cssClasses: string = \"\"\r\n ): PrisberegnerResultatDetaljelinjeViewModel {\r\n return {\r\n tekst,\r\n tekst2: this.sanitizer.bypassSecurityTrustHtml(tekst2),\r\n beloeb,\r\n beloebSuffix,\r\n bold,\r\n cssClasses: bold ? \"bold \" : \"\" + cssClasses\r\n };\r\n }\r\n\r\n private formatKr(value: number): string {\r\n const format = new DecimalPipe(\"da-DK\");\r\n const result = value % 1 ? format.transform(value, \"1.2-2\") : format.transform(value, \"1.0-0\");\r\n return `${result} kr.`;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { UmbracoHttpClient } from \"@e-forsyning/common/http\";\r\n\r\nimport { PrisberegnerKonfigurationDto } from \"../model/prisberegner-konfiguration.dto\";\r\nimport { PrisberegnerKonfiguration } from \"../model/prisberegner-konfiguration.model\";\r\nimport { PrisberegnerKonfigurationMapper } from \"./prisberegner-konfiguration.mapper\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class PrisberegnerRepository {\r\n constructor(private readonly http: UmbracoHttpClient, private readonly mapper: PrisberegnerKonfigurationMapper) {}\r\n\r\n public selectKonfiguration(nodeId: number): Observable {\r\n return this.http.hentSideDataForId(nodeId).pipe(map((data) => this.mapper.dtoToKonfiguration(data)));\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { PrisberegnerFormModel } from \"../model/prisberegner-form.model\";\r\nimport {\r\n PrisberegnerFjernvarmeBbrPrisKonfiguration,\r\n PrisberegnerFjernvarmeKonfiguration,\r\n PrisberegnerKonfiguration,\r\n PrisberegnerKonfigurationVirkningsgrad,\r\n PrisberegnerNaturgasKonfiguration,\r\n PrisberegnerOlieKonfiguration,\r\n PrisberegnerTraepillerKonfiguration,\r\n PrisberegnerVarmepumpeKonfiguration\r\n} from \"../model/prisberegner-konfiguration.model\";\r\nimport {\r\n PrisberegnerResultat,\r\n PrisberegnerResultatFjernvarme,\r\n PrisberegnerResultatFjernvarmeBbrBidrag,\r\n PrisberegnerResultatNaturgas,\r\n PrisberegnerResultatOlie,\r\n PrisberegnerResultatTraepiller,\r\n PrisberegnerResultatVarmepumpe\r\n} from \"../model/prisberegner-resultat.model\";\r\nimport { prisberegnerVarmekilder } from \"../model/prisberegner-varmekilder.model\";\r\nimport { PrisberegnerRepository } from \"./prisberegner.repository\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class PrisberegnerService {\r\n constructor(private readonly repository: PrisberegnerRepository) {}\r\n\r\n public selectKonfiguration(nodeId: number): Observable {\r\n return this.repository.selectKonfiguration(nodeId);\r\n }\r\n\r\n public beregnForbrugPrAar(model: PrisberegnerFormModel, konfiguration: PrisberegnerKonfiguration): PrisberegnerResultat {\r\n const mwhEl = model.varmekilde === prisberegnerVarmekilder.el.id ? this.beregnForbrugEl(model.forbrugEl) : 0;\r\n const mwhNaturgas =\r\n model.varmekilde === prisberegnerVarmekilder.naturgas.id\r\n ? this.beregnForbrugNaturgas(model.naturgasKeddelAlder, model.forbrugNaturgas, konfiguration.naturgas)\r\n : 0;\r\n const mwhOlie =\r\n model.varmekilde === prisberegnerVarmekilder.olie.id\r\n ? this.beregnForbrugOlie(model.olieFyrAlder, model.forbrugOlie, konfiguration.olie)\r\n : 0;\r\n const mwhTraepiller =\r\n model.varmekilde === prisberegnerVarmekilder.traepiller.id\r\n ? this.beregnForbrugTraepiller(model.pillefyrAlder, model.forbrugTraepiller, konfiguration.traepiller)\r\n : 0;\r\n const mwhVarmepumpe =\r\n model.varmekilde === prisberegnerVarmekilder.varmepumpe.id\r\n ? this.beregnForbrugVarmepumpe(model.forbrugVarmepumpe, konfiguration.varmepumpe)\r\n : 0;\r\n\r\n const mwhIalt = mwhEl + mwhNaturgas + mwhOlie + mwhTraepiller + mwhVarmepumpe;\r\n const fjernvarme = this.beregnPriserFjernvarme(\r\n konfiguration.fjernvarme,\r\n model.boligareal,\r\n mwhIalt,\r\n model.oenskerVarmemesterOrdning,\r\n model.oenskerFordelingAfKonverteringsbidrag ? model.konverteringbidragAntalAar : -1\r\n );\r\n const naturgas = this.beregnPriserNaturgas(konfiguration.naturgas, model.forbrugNaturgas);\r\n const olie = this.beregnPriserOlie(konfiguration.olie, model.forbrugOlie);\r\n const traepiller = this.beregnPriserTraepiller(konfiguration.traepiller, model.forbrugTraepiller);\r\n const varmepumpe = this.beregnPriserVarmepumpe(konfiguration.varmepumpe, model.forbrugVarmepumpe);\r\n const result: PrisberegnerResultat = {\r\n mwh: mwhIalt,\r\n fjernvarme,\r\n naturgas,\r\n olie,\r\n traepiller,\r\n varmepumpe\r\n };\r\n return result;\r\n }\r\n\r\n private beregnPriserFjernvarme(\r\n konfiguration: PrisberegnerFjernvarmeKonfiguration,\r\n boligareal: number,\r\n mwhIalt: number,\r\n oenskerVarmemesterOrdning: boolean,\r\n konverteringsbidragAntalAarParm: number\r\n ): PrisberegnerResultatFjernvarme {\r\n const abonnement = Math.round(konfiguration.prisAbonnement);\r\n const bbrBidrag = Math.round(this.beregnPrisBBR(boligareal, konfiguration));\r\n const bbrBidragTrappemodel = this.beregBBRTrappemodel(boligareal, konfiguration);\r\n //const bbrBidragTrappemodel = Math.round(this.beregnPrisBBRTrappemodel(boligareal, konfiguration));\r\n const forbrug = Math.round(mwhIalt * konfiguration.prisPrMwh);\r\n const groenOmstillingsbidrag = Math.round(konfiguration.groenOmstillingsbidragPrM2 * boligareal);\r\n const tilslutningsbidrag = Math.round(konfiguration.tilslutningsbidrag);\r\n const serviceOgVedligehold = Math.round(oenskerVarmemesterOrdning ? 0 : konfiguration.serviceOgVedligeholdPrAar);\r\n const investeringsomkostningerYdelse = Math.round(\r\n oenskerVarmemesterOrdning\r\n ? 0\r\n : this.beregnYdelsePrAar(\r\n konfiguration.investeringsomkostninger,\r\n konfiguration.nyUnitAfskrivningsperiodeAar,\r\n konfiguration.nyUnitRentesats\r\n )\r\n );\r\n const unitGenanskaffelseYdelse = Math.round(\r\n oenskerVarmemesterOrdning\r\n ? 0\r\n : this.beregnYdelsePrAar(\r\n konfiguration.nyUnitPris,\r\n konfiguration.nyUnitAfskrivningsperiodeAar,\r\n konfiguration.nyUnitRentesats\r\n )\r\n );\r\n const varmemesterOrdning = Math.round(oenskerVarmemesterOrdning ? konfiguration.varmemesterordningPrAar : 0);\r\n /*let konverteringsbidragPraar = Math.round(\r\n konverteringsbidragAntalAarParm > 0\r\n ? konfiguration.konverteringsbidrag / konverteringsbidragAntalAarParm\r\n : konfiguration.konverteringsbidrag\r\n );*/\r\n //konverteringsbidragPraar = konverteringsbidragAntalAarParm === -1 ? 0 : konverteringsbidragPraar;\r\n //const konverteringsbidrag = konfiguration.konverteringsbidrag;\r\n const bbrBidragTrappemodelIalt = bbrBidragTrappemodel.ialt ? bbrBidragTrappemodel.ialt : null;\r\n const konverteringsbidragIalt =\r\n konverteringsbidragAntalAarParm > 0 ? bbrBidragTrappemodel.konverteringsbidragIalt / konverteringsbidragAntalAarParm : 0;\r\n const konverteringsbidragAntalAarValgt = konverteringsbidragAntalAarParm; //vi skal bruge den valgte, ikke def\r\n const ialt =\r\n forbrug +\r\n abonnement +\r\n bbrBidrag +\r\n bbrBidragTrappemodelIalt +\r\n groenOmstillingsbidrag +\r\n serviceOgVedligehold +\r\n investeringsomkostningerYdelse +\r\n unitGenanskaffelseYdelse +\r\n varmemesterOrdning +\r\n konverteringsbidragIalt;\r\n\r\n return {\r\n forbrug,\r\n abonnement,\r\n bbrBidrag,\r\n bbrBidragTrappemodel,\r\n groenOmstillingsbidrag,\r\n tilslutningsbidrag,\r\n serviceOgVedligehold,\r\n investeringsomkostningerYdelse,\r\n unitGenanskaffelseYdelse,\r\n varmemesterOrdning,\r\n //konverteringsbidrag,\r\n //konverteringsbidragPraar,\r\n konverteringsbidragAntalAarValgt,\r\n ialt\r\n };\r\n }\r\n\r\n private beregnPriserNaturgas(konfiguration: PrisberegnerNaturgasKonfiguration, forbrugM3: number): PrisberegnerResultatNaturgas {\r\n const abonnement = Math.round(konfiguration.abonnementPrAar);\r\n const systemtarif = Math.round(konfiguration.systemtarif);\r\n const forbrug = Math.round(forbrugM3 * konfiguration.prisPrM3);\r\n const serviceOgVedligehold = Math.round(konfiguration.serviceOgVedligeholdPrAar);\r\n const elForbrug = Math.round(konfiguration.elPrAar);\r\n const unitGenanskaffelseYdelse = Math.round(\r\n this.beregnYdelsePrAar(konfiguration.nytFyrPris, konfiguration.nytFyrAfskrivningsperiodeAar, konfiguration.nytFyrRentesats)\r\n );\r\n const ialt = abonnement + systemtarif + forbrug + serviceOgVedligehold + elForbrug + unitGenanskaffelseYdelse;\r\n return {\r\n abonnement,\r\n systemtarif,\r\n forbrug,\r\n serviceOgVedligehold,\r\n elForbrug,\r\n unitGenanskaffelseYdelse,\r\n ialt\r\n };\r\n }\r\n\r\n private beregnPriserOlie(konfiguration: PrisberegnerOlieKonfiguration, forbrugLiter: number): PrisberegnerResultatOlie {\r\n const forbrug = Math.round(forbrugLiter * konfiguration.prisPrLiter);\r\n const skorstensfejer = Math.round(konfiguration.skorstensfejerPrAar);\r\n const serviceOgVedligehold = Math.round(konfiguration.serviceOgVedligeholdPrAar);\r\n const elForbrug = Math.round(konfiguration.elPrAar);\r\n const unitGenanskaffelseYdelse = Math.round(\r\n this.beregnYdelsePrAar(konfiguration.nytFyrPris, konfiguration.nytFyrAfskrivningsperiodeAar, konfiguration.nytFyrRentesats)\r\n );\r\n const ialt = forbrug + skorstensfejer + serviceOgVedligehold + elForbrug + unitGenanskaffelseYdelse;\r\n return {\r\n forbrug,\r\n skorstensfejer,\r\n serviceOgVedligehold,\r\n elForbrug,\r\n unitGenanskaffelseYdelse,\r\n ialt\r\n };\r\n }\r\n\r\n private beregnPriserTraepiller(konfiguration: PrisberegnerTraepillerKonfiguration, forbrugKg: number): PrisberegnerResultatTraepiller {\r\n const forbrug = Math.round(forbrugKg * konfiguration.prisPrKg);\r\n const skorstensfejer = Math.round(konfiguration.skorstensfejerPrAar);\r\n const serviceOgVedligehold = Math.round(konfiguration.serviceOgVedligeholdPrAar);\r\n const elForbrug = Math.round(konfiguration.elPrAar);\r\n const unitGenanskaffelseYdelse = Math.round(\r\n this.beregnYdelsePrAar(konfiguration.nytFyrPris, konfiguration.nytFyrAfskrivningsperiodeAar, konfiguration.nytFyrRentesats)\r\n );\r\n const ialt = forbrug + skorstensfejer + serviceOgVedligehold + elForbrug + unitGenanskaffelseYdelse;\r\n return {\r\n forbrug,\r\n skorstensfejer,\r\n serviceOgVedligehold,\r\n elForbrug,\r\n unitGenanskaffelseYdelse,\r\n ialt\r\n };\r\n }\r\n\r\n private beregnPriserVarmepumpe(konfiguration: PrisberegnerVarmepumpeKonfiguration, forbrugKwh: number): PrisberegnerResultatVarmepumpe {\r\n const elUdgift = Math.round(forbrugKwh * konfiguration.elprisPrKwh);\r\n const serviceOgVedligehold = Math.round(konfiguration.serviceOgVedligeholdPrAar);\r\n const unitGenanskaffelseYdelse = Math.round(\r\n this.beregnYdelsePrAar(konfiguration.nyPumpePris, konfiguration.nyPumpeAfskrivningsperiodeAar, konfiguration.nyPumpeRentesats)\r\n );\r\n const ialt = elUdgift + serviceOgVedligehold + unitGenanskaffelseYdelse;\r\n return {\r\n elUdgift,\r\n serviceOgVedligehold,\r\n unitGenanskaffelseYdelse,\r\n ialt\r\n };\r\n }\r\n\r\n private beregnYdelsePrAar(pris: number, antalAar: number, rente: number): number {\r\n // https://superuser.com/questions/871404#answer-871411\r\n const result = (pris * (rente / 100)) / (1 - (1 + rente / 100) ** (-1 * antalAar));\r\n return isNaN(result) ? 0 : result;\r\n }\r\n\r\n private beregnPrisBBR(boligareal: number, konfiguration: PrisberegnerFjernvarmeKonfiguration): number {\r\n return (boligareal || 0) * konfiguration.bbrPrisPrM2;\r\n }\r\n\r\n private beregBBRTrappemodel(\r\n boligareal: number,\r\n konfiguration: PrisberegnerFjernvarmeKonfiguration\r\n ): PrisberegnerResultatFjernvarmeBbrBidrag {\r\n const konfigurationer = this.mapBbrKonfiguration(boligareal, konfiguration.bbrPriserPrM2);\r\n return {\r\n ialt: this.beregnPrisBBRTrappemodel(boligareal, konfiguration),\r\n konverteringsbidragIalt: this.beregnPrisKonverteringsbidragTappemodel(boligareal, konfiguration),\r\n items: konfigurationer\r\n };\r\n }\r\n\r\n private beregnPrisBBRTrappemodel(boligareal: number, konfiguration: PrisberegnerFjernvarmeKonfiguration): number {\r\n return konfiguration.bbrPriserPrM2.reduce((prev, curr) => {\r\n const result = this.beregnPrisBBRTrappemodelItem(boligareal, curr);\r\n return prev + result;\r\n }, 0);\r\n }\r\n\r\n private beregnPrisKonverteringsbidragTappemodel(boligareal: number, konfiguration: PrisberegnerFjernvarmeKonfiguration): number {\r\n return konfiguration.bbrPriserPrM2.reduce((prev, curr) => {\r\n const result = this.beregnPrisKonverteringsbidragTrappemodelItem(boligareal, curr);\r\n return prev + result;\r\n }, 0);\r\n }\r\n\r\n private beregnPrisKonverteringsbidragTrappemodelItem(\r\n boligareal: number,\r\n konfiguration: PrisberegnerFjernvarmeBbrPrisKonfiguration\r\n ): number {\r\n const fraM2 = konfiguration.fraM2 === 0 ? 1 : konfiguration.fraM2;\r\n const tilM2 = konfiguration.tilM2;\r\n const prisPrM2 = konfiguration.konverteringsbidragPrM2;\r\n\r\n // BBR mindre end konfigurationen: Ignorer konfigurationen\r\n if (boligareal < fraM2) {\r\n return 0;\r\n }\r\n // BBR større end konfigurationen: Brug hele konfigurationen\r\n if (boligareal > tilM2 && !!tilM2) {\r\n return (tilM2 - fraM2 + 1) * prisPrM2;\r\n }\r\n // BBR inden for konfigurationen: Brug noget af konfigurationen\r\n return (boligareal - fraM2 + 1) * prisPrM2;\r\n }\r\n\r\n private beregnPrisBBRTrappemodelItem(boligareal: number, konfiguration: PrisberegnerFjernvarmeBbrPrisKonfiguration): number {\r\n const fraM2 = konfiguration.fraM2 === 0 ? 1 : konfiguration.fraM2;\r\n const tilM2 = konfiguration.tilM2;\r\n const prisPrM2 = konfiguration.prisPrM2;\r\n\r\n // BBR mindre end konfigurationen: Ignorer konfigurationen\r\n if (boligareal < fraM2) {\r\n return 0;\r\n }\r\n // BBR større end konfigurationen: Brug hele konfigurationen\r\n if (boligareal > tilM2 && !!tilM2) {\r\n return (tilM2 - fraM2 + 1) * prisPrM2;\r\n }\r\n // BBR inden for konfigurationen: Brug noget af konfigurationen\r\n return (boligareal - fraM2 + 1) * prisPrM2;\r\n }\r\n\r\n private mapBbrKonfiguration(\r\n boligareal: number,\r\n konfigurationer: PrisberegnerFjernvarmeBbrPrisKonfiguration[]\r\n ): PrisberegnerFjernvarmeBbrPrisKonfiguration[] {\r\n // Fjerner konfigurationer som ikke er relevante + tilretter med faktisk boligareal\r\n return konfigurationer\r\n .filter((konfiguration) => konfiguration.fraM2 <= boligareal)\r\n .map((konfiguration) => ({\r\n tekst: konfiguration.tekst,\r\n fraM2: konfiguration.fraM2,\r\n tilM2: konfiguration.tilM2 <= boligareal ? konfiguration.tilM2 : boligareal,\r\n prisPrM2: konfiguration.prisPrM2,\r\n konverteringsbidragPrM2: konfiguration.konverteringsbidragPrM2\r\n }));\r\n }\r\n\r\n private beregnForbrugEl(forbrug: number): number {\r\n return (forbrug || 0) / 1000;\r\n }\r\n\r\n private beregnForbrugNaturgas(keddelAlder: number, forbrug: number, konfiguration: PrisberegnerNaturgasKonfiguration): number {\r\n const virkningsgrad = this.findVirkningsgrad(keddelAlder, konfiguration.virkningsgrad);\r\n return ((forbrug || 0) * konfiguration.braendvaerdiKwhPrM3 * virkningsgrad) / 1000;\r\n }\r\n\r\n private beregnForbrugOlie(keddelAlder: number, forbrug: number, konfiguration: PrisberegnerOlieKonfiguration): number {\r\n const virkningsgrad = this.findVirkningsgrad(keddelAlder, konfiguration.virkningsgrad);\r\n return ((forbrug || 0) * konfiguration.braendvaerdiKwhPrLiter * virkningsgrad) / 1000;\r\n }\r\n\r\n private beregnForbrugTraepiller(keddelAlder: number, forbrug: number, konfiguration: PrisberegnerTraepillerKonfiguration): number {\r\n const virkningsgrad = this.findVirkningsgrad(keddelAlder, konfiguration.virkningsgrad);\r\n return ((forbrug || 0) * konfiguration.braendvaerdiKwhPrKg * virkningsgrad) / 1000;\r\n\r\n // return ((forbrug || 0) * konfiguration.braendvaerdiKwhPrKg * konfiguration.virkningsgrad) / 1000;\r\n }\r\n\r\n private beregnForbrugVarmepumpe(forbrug: number, konfiguration: PrisberegnerVarmepumpeKonfiguration): number {\r\n return ((forbrug || 0) * konfiguration.virkningsgrad) / 1000;\r\n }\r\n\r\n private findVirkningsgrad(keddelAlder: number, konfiguration: PrisberegnerKonfigurationVirkningsgrad): number {\r\n if (!konfiguration.vaelgKedlensAlder) {\r\n return konfiguration.virkningsgrad;\r\n }\r\n switch (keddelAlder) {\r\n case 1:\r\n return konfiguration.virkningsgrad0til4Aar;\r\n case 2:\r\n return konfiguration.virkningsgrad5til8Aar;\r\n default:\r\n return konfiguration.virkningsgrad9tilNAar;\r\n }\r\n }\r\n}\r\n","import { Component, HostBinding, Input, OnInit } from \"@angular/core\";\r\n\r\nimport { WebComponentInitializerService } from \"../shared/web-component-initializer.service\";\r\n\r\n@Component({\r\n templateUrl: \"./dffedb-tilslutningsanmodning.component.html\",\r\n styleUrls: [\"./dffedb-tilslutningsanmodning.component.scss\"]\r\n})\r\nexport class DffedbTilslutningsanmodningComponent implements OnInit {\r\n public initialiserer = true;\r\n @HostBinding(\"class.mat-app-background\") public classMatAppBackground = true;\r\n @Input() public nodeId: number;\r\n\r\n constructor(private readonly webComponentInitializer: WebComponentInitializerService) {}\r\n\r\n public ngOnInit(): void {\r\n this.webComponentInitializer.init(this.nodeId);\r\n }\r\n}\r\n"," \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\n//import { FlexLayoutModule } from \"@angular/flex-layout\";\r\n\r\nimport { defineCustomElements } from \"@dffedb/util\";\r\nimport { ForsyningPaaAdresseModule } from \"@e-forsyning/common/forsyning-paa-adresse\";\r\nimport { TilslutningsanmodningModule } from \"@e-forsyning/common/tilslutningsanmodning\";\r\n\r\nimport { DffedbTilslutningsanmodningComponent } from \"./dffedb-tilslutningsanmodning.component\";\r\n@NgModule({\r\n imports: [CommonModule, TilslutningsanmodningModule, ForsyningPaaAdresseModule],\r\n exports: [DffedbTilslutningsanmodningComponent],\r\n declarations: [DffedbTilslutningsanmodningComponent]\r\n})\r\nexport class DffedbTilslutningsanmodningModule {\r\n constructor(injector: Injector) {\r\n defineCustomElements(\"dffedb-tilslutningsanmodning\", DffedbTilslutningsanmodningComponent, { injector });\r\n }\r\n}\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nimport { ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit } from \"@angular/core\";\r\n\r\nimport { combineLatest } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { SubSink } from \"@dffedb/rxjs\";\r\nimport { MenuItem } from \"@dffedb/ui\";\r\nimport { AppserverInstallationCredentialsRepository } from \"@e-forsyning/common/credentials\";\r\nimport { EforsyningMenuerObserver } from \"@e-forsyning/common/eforsyning-menu\";\r\nimport { UmbracoIndstillinger, UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { EForsyningLogindKnapMenuItem, EForsyningLogindKnapViewModel } from \"./e-forsyning-logind-knap.view-model\";\r\n\r\n@Component({\r\n templateUrl: \"./e-forsyning-logind-knap.component.html\",\r\n styleUrls: [\"./e-forsyning-logind-knap.component.scss\"],\r\n animations: [trigger(\"fadeIn\", [transition(\":enter\", [style({ opacity: 0 }), animate(600)])])]\r\n})\r\nexport class EForsyningLogindKnapComponent implements OnInit, OnDestroy {\r\n private readonly iconLoggedIn = \"lock-open\";\r\n private readonly iconLoggedOut = \"lock\";\r\n private subs = new SubSink();\r\n public vm: EForsyningLogindKnapViewModel;\r\n\r\n @HostBinding(\"@fadeIn\")\r\n public fadeInAnimation = true;\r\n\r\n @Input()\r\n public class: string;\r\n\r\n constructor(\r\n private readonly cd: ChangeDetectorRef,\r\n private readonly indstillingerObserver: UmbracoIndstillingerObserver,\r\n private readonly credentialsObserver: AppserverInstallationCredentialsRepository,\r\n private readonly eforsyningMenuerObserver: EforsyningMenuerObserver\r\n ) {\r\n // WebComponents fungerer ikke så godt med auto-change detection, så vi kobler det helt fra.\r\n cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.subs.sink = combineLatest([\r\n this.indstillingerObserver.valueChanges,\r\n this.eforsyningMenuerObserver.valueChanges,\r\n this.credentialsObserver.valueChanges\r\n ])\r\n .pipe(map(([indstillinger, menuer, credentials]) => this.mapToMenu(indstillinger, menuer, credentials.forsyningNodeId)))\r\n .subscribe((vm) => {\r\n this.vm = vm;\r\n this.cd.detectChanges();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n public onClick(event: MouseEvent, href: string): void {\r\n if (!href) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n private mapToMenu(\r\n indstillinger: UmbracoIndstillinger,\r\n menuItem: MenuItem,\r\n currentEforsyningNodeId: number\r\n ): EForsyningLogindKnapViewModel {\r\n const eforsyninger = menuItem.children.map((c) => this.mapToSubmenu(c, currentEforsyningNodeId));\r\n const svgIcon = eforsyninger.some((i) => i.svgIcon === this.iconLoggedIn) ? this.iconLoggedIn : this.iconLoggedOut;\r\n const harForsyningWeb = !!indstillinger.forsyningWeb.nodeId;\r\n const visible = (harForsyningWeb && eforsyninger.length >= 1) || (!harForsyningWeb && eforsyninger.length > 1);\r\n const result = {\r\n visible,\r\n titel: menuItem.title || \"Min side\",\r\n svgIcon,\r\n href: eforsyninger.length === 1 ? eforsyninger[0].href : \"\",\r\n items: eforsyninger.length === 1 ? [] : eforsyninger\r\n };\r\n return result;\r\n }\r\n\r\n private mapToSubmenu(menuItem: MenuItem, currentEforsyningNodeId: number): EForsyningLogindKnapMenuItem {\r\n const loggedIn = menuItem.id === currentEforsyningNodeId;\r\n return {\r\n titel: menuItem.title,\r\n href: menuItem.href,\r\n svgIcon: loggedIn ? this.iconLoggedIn : this.iconLoggedOut\r\n };\r\n }\r\n}\r\n","@if (vm.visible) {\r\n \r\n
    \r\n \r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Injector, NgModule } from \"@angular/core\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { mdiLockOpenVariantOutline, mdiLockOutline } from \"@mdi/js\";\r\n\r\nimport { defineCustomElements, SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { DffDropdownButtonModule } from \"../shared/dff-dropdown-button\";\r\nimport { EForsyningLogindKnapComponent } from \"./e-forsyning-logind-knap.component\";\r\n\r\nconst menuIconEforsyning = `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `;\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatIconModule, DffDropdownButtonModule],\r\n exports: [],\r\n declarations: [EForsyningLogindKnapComponent],\r\n providers: []\r\n})\r\nexport class EForsyningLogindKnapModule {\r\n constructor(injector: Injector, svgIconRegistry: SvgIconRegistry) {\r\n svgIconRegistry.registerIcon(mdiLockOutline, \"lock\");\r\n svgIconRegistry.registerIcon3(menuIconEforsyning, 40, 31, \"lock-open\");\r\n defineCustomElements(\"e-forsyning-logind-knap\", EForsyningLogindKnapComponent, { injector });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\nimport { DffCookieConsentCookie } from \"../dff-cookie-consent/dff-cookie-consent-cookie.model\";\r\n\r\n@Component({\r\n selector: \"dff-cookie-consent-cookie-list\",\r\n templateUrl: \"./dff-cookie-consent-cookie-list.component.html\",\r\n styleUrls: [\"./dff-cookie-consent-cookie-list.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DffCookieConsentCookieListComponent {\r\n @Input()\r\n public cookies: DffCookieConsentCookie[];\r\n\r\n constructor() {}\r\n}\r\n","
    \r\n @for (cookie of cookies; track cookie) {\r\n
    \r\n
    \r\n
    Databehandler
    \r\n
    {{ cookie.processor }}
    \r\n
    \r\n
    \r\n
    Navn
    \r\n
    {{ cookie.name }}
    \r\n
    \r\n @if (cookie.domain) {\r\n
    \r\n
    Domæne
    \r\n
    {{ cookie.domain }}
    \r\n
    \r\n }\r\n
    \r\n
    Udløb
    \r\n
    {{ cookie.expiry }}
    \r\n
    \r\n
    \r\n
    Type
    \r\n
    {{ cookie.type }}
    \r\n
    \r\n
    \r\n }\r\n
    \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nimport { DffCookieConsentCookieListComponent } from \"./dff-cookie-consent-cookie-list.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n exports: [DffCookieConsentCookieListComponent],\r\n declarations: [DffCookieConsentCookieListComponent],\r\n providers: []\r\n})\r\nexport class DffCookieConsentCookieListModule {}\r\n","import { Component, OnInit } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { filter, map, shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { UmbracoHttpClient } from \"@e-forsyning/common/http\";\r\nimport { UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { DffCookieConsentService } from \"../dff-cookie-consent\";\r\nimport { DffCookieConsentCookie } from \"../dff-cookie-consent/dff-cookie-consent-cookie.model\";\r\n\r\n@Component({\r\n selector: \"dff-cookie-consent-dialog\",\r\n templateUrl: \"./dff-cookie-consent-dialog.component.html\",\r\n styleUrls: [\"./dff-cookie-consent-dialog.component.scss\"]\r\n})\r\nexport class DffCookieConsentDialogComponent implements OnInit {\r\n public side = \"consent\";\r\n public vm$: Observable;\r\n\r\n constructor(\r\n private readonly cookieConsentService: DffCookieConsentService,\r\n private readonly indstillingerObserver: UmbracoIndstillingerObserver,\r\n private readonly umbracoHttpClient: UmbracoHttpClient\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.vm$ = this.indstillingerObserver.valueChanges.pipe(\r\n map((i) => (i.forsyningWeb && i.forsyningWeb.nodeId) || (i.aktuelEforsyning && i.aktuelEforsyning.nodeId)),\r\n filter((nodeId) => !!nodeId),\r\n switchMap((nodeId) =>\r\n combineLatest([\r\n this.umbracoHttpClient.get(`GetCookieConsentText?nodeId=${nodeId}`),\r\n this.umbracoHttpClient.get(`GetCookies?nodeId=${nodeId}`)\r\n ])\r\n ),\r\n map(([html, cookies]) => ({\r\n html,\r\n cookies: {\r\n mandatory: cookies.filter((c) => c.mandatory),\r\n optional: cookies.filter((c) => !c.mandatory)\r\n }\r\n })),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public onGotoReadMoreClick(event: Event): void {\r\n event.preventDefault();\r\n this.side = \"laes-mere\";\r\n }\r\n\r\n public onGotoConsentClick(event: Event): void {\r\n event.preventDefault();\r\n this.side = \"consent\";\r\n }\r\n\r\n public onConsentApproveClick(): void {\r\n this.cookieConsentService.approveCookies();\r\n }\r\n\r\n public onConsentRejectClick(): void {\r\n this.cookieConsentService.rejectCookies();\r\n }\r\n}\r\n\r\ninterface ViewModel {\r\n html: string;\r\n cookies: {\r\n optional: DffCookieConsentCookie[];\r\n mandatory: DffCookieConsentCookie[];\r\n };\r\n}\r\n","\r\n
    \r\n
    \r\n

    Du bestemmer over dine data

    \r\n \r\n

    \r\n Vi bruger nødvendige cookies til at få vores hjemmeside til at fungere. Vi vil derudover gerne bruge\r\n valgfrie cookies\r\n fra samarbejdspartnere til at optimere dit besøg på vores hjemmeside ved at sikre funktionalitet,\r\n generere statistik og\r\n huske dine præferencer samt til brug for markedsføring, så vi kan optimere vores reklametiltag på\r\n andre hjemmesider og\r\n sociale medier.\r\n

    \r\n

    \r\n Vi placerer først de valgfrie cookies, hvis du har givet os dit samtykke nedenfor. Ved at klikke på\r\n ”Tillad alle cookies” samtykker\r\n du til de valgfrie cookies. Du kan til enhver tid trække dit samtykke tilbage eller ændre dit\r\n samtykke ved at klikke på\r\n cookie-ikonet nederst til venstre på hjemmesiden. Du skal være opmærksom på, at vores hjemmeside\r\n muligvis ikke fungerer\r\n optimalt, hvis du ikke accepterer cookies.\r\n

    \r\n
    \r\n\r\n \r\n Læs mere...\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n Information om cookies\r\n

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n

    Nødvendige cookies

    \r\n \r\n
    \r\n \r\n

    Valgfri cookies

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    ","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { MatTabsModule } from \"@angular/material/tabs\";\r\n\r\nimport { mdiArrowLeft } from \"@mdi/js\";\r\n\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { DffCookieConsentCookieListModule } from \"../dff-cookie-consent-cookie-list/dff-cookie-consent-cookie-list.module\";\r\nimport { DffCookieConsentDialogComponent } from \"./dff-cookie-consent-dialog.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n DffCookieConsentCookieListModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatTabsModule\r\n ],\r\n exports: [DffCookieConsentDialogComponent],\r\n declarations: [DffCookieConsentDialogComponent],\r\n providers: []\r\n})\r\nexport class DffCookieConsentDialogModule {\r\n constructor(svgIconRegistry: SvgIconRegistry) {\r\n svgIconRegistry.registerIcon(mdiArrowLeft, \"dff-cookie-consent-dialog.arrow-left\");\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\n\r\nimport { DffCookieConsentDialogComponent } from \"./dff-cookie-consent-dialog.component\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffCookieConsentDialog {\r\n constructor(private readonly dialog: MatDialog) {}\r\n\r\n public open(): void {\r\n this.dialog.open(DffCookieConsentDialogComponent, { disableClose: true, maxWidth: \"500px\" });\r\n }\r\n}\r\n","export * from \"./dff-cookie-consent-dialog.component\";\r\nexport * from \"./dff-cookie-consent-dialog.module\";\r\nexport * from \"./dff-cookie-consent-dialog\";\r\n","import { Component } from \"@angular/core\";\r\n\r\nimport { DffCookieConsentDialog } from \"../dff-cookie-consent-dialog\";\r\n\r\n@Component({\r\n selector: \"dff-cookie-consent-overlay\",\r\n templateUrl: \"./dff-cookie-consent-overlay.component.html\",\r\n styleUrls: [\"./dff-cookie-consent-overlay.component.scss\"]\r\n})\r\nexport class DffCookieConsentOverlayComponent {\r\n constructor(private readonly cookieConsentDialog: DffCookieConsentDialog) {}\r\n\r\n public onShowCookieConsent(event: Event): void {\r\n event.preventDefault();\r\n this.cookieConsentDialog.open();\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n

    Dette indhold er ikke tilgængelig, da det indeholder marketing og statistik cookies, som du har fravalgt i dine indstillinger.

    \r\n Opdater dit samtykke\r\n
    \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nimport { DffCookieConsentOverlayComponent } from \"./dff-cookie-consent-overlay.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [DffCookieConsentOverlayComponent],\r\n exports: [DffCookieConsentOverlayComponent],\r\n providers: []\r\n})\r\nexport class DffCookieConsentOverlayModule {}\r\n","export * from \"./dff-cookie-consent-overlay.component\";\r\nexport * from \"./dff-cookie-consent-overlay.module\";\r\n","export interface DffCookieConsent {\r\n version: string;\r\n utc: Date;\r\n consent: {\r\n necessary: boolean;\r\n statistics: boolean;\r\n thirdparty: boolean;\r\n };\r\n}\r\n\r\nexport interface DffCookieConsentChanged extends DffCookieConsent {\r\n reloading: boolean;\r\n}\r\n\r\nexport function cookieConsentsEqual(consent1: DffCookieConsent, consent2: DffCookieConsent): boolean {\r\n return JSON.stringify(consent1.consent) === JSON.stringify(consent2.consent);\r\n}\r\n\r\nexport function cookieConsentToString(value: DffCookieConsent): string {\r\n return `version=${value.version}&utc=${value.utc.getTime()}&consent.necessary=${value.consent.necessary}&consent.thirdparty=${\r\n value.consent.thirdparty\r\n }&consent.statistics=${value.consent.statistics}`;\r\n}\r\n\r\nexport function stringToCookieConsent(value: string): DffCookieConsent {\r\n const keyValuePairs = value.split(\"&\").map(cc => cc.split(\"=\"));\r\n return {\r\n version: getAsString(keyValuePairs, \"version\"),\r\n utc: getAsDate(keyValuePairs, \"utc\"),\r\n consent: {\r\n necessary: true,\r\n thirdparty: getAsBoolean(keyValuePairs, \"consent.thirdparty\", false),\r\n statistics: getAsBoolean(keyValuePairs, \"consent.statistics\", false)\r\n }\r\n };\r\n}\r\n\r\nexport function getAllEnabledCookieConsent(version: string): DffCookieConsent {\r\n return {\r\n version,\r\n utc: new Date(Date.now()),\r\n consent: {\r\n necessary: true,\r\n thirdparty: true,\r\n statistics: true\r\n }\r\n };\r\n}\r\n\r\nfunction getAsString(keyValuePairs: string[][], key: string): string {\r\n const item = keyValuePairs.find(kv => kv[0] === key) || [\"\", \"0\"];\r\n return item[1];\r\n}\r\n\r\nfunction getAsDate(keyValuePairs: string[][], key: string): Date {\r\n const item = keyValuePairs.find(kv => kv[0] === key) || [\"\", new Date().getTime().toString()];\r\n return new Date(parseInt(item[1], 10));\r\n}\r\n\r\nfunction getAsBoolean(keyValuePairs: string[][], key: string, defaultValue: boolean): boolean {\r\n const item = keyValuePairs.find(kv => kv[0] === key);\r\n return item ? item[1] === \"true\" : defaultValue;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, ReplaySubject } from \"rxjs\";\r\nimport { distinctUntilChanged, shareReplay } from \"rxjs/operators\";\r\n\r\nimport { compareVersions, CookieStorage } from \"@dffedb/util\";\r\n\r\nimport {\r\n cookieConsentsEqual,\r\n cookieConsentToString,\r\n DffCookieConsent,\r\n DffCookieConsentChanged,\r\n getAllEnabledCookieConsent,\r\n stringToCookieConsent\r\n} from \"./dff-cookie-consent.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffCookieConsentService {\r\n private readonly cookieConsentSubject = new ReplaySubject(1);\r\n private readonly key = \"dff-edb.cookie-consent\";\r\n private enabled: boolean;\r\n private requiredConsentVersion: string;\r\n private cookieConsentChangeRequiresPageReload = false;\r\n\r\n constructor(private readonly cookieStorage: CookieStorage) {}\r\n\r\n public async initialize(enableCookiepolitk: boolean, version: string, cookieConsentChangeRequiresPageReload: boolean): Promise {\r\n this.enabled = enableCookiepolitk;\r\n this.cookieConsentChangeRequiresPageReload = cookieConsentChangeRequiresPageReload;\r\n this.requiredConsentVersion = version;\r\n const consent = this.getCookieConsent();\r\n this.cookieConsentSubject.next({ ...consent, reloading: false });\r\n }\r\n\r\n public isCookieConsentUpdateNeeded(): boolean {\r\n const version = this.getCookieConsent().version;\r\n return compareVersions(version, this.requiredConsentVersion) < 0;\r\n }\r\n\r\n public approveCookies(): void {\r\n const consent = this.getCookieConsent();\r\n consent.consent.necessary = true;\r\n consent.consent.statistics = true;\r\n consent.consent.thirdparty = true;\r\n this.setGoogleTagManagerCookieOptIn(true);\r\n this.setCookieConsent(consent);\r\n }\r\n\r\n public rejectCookies(): void {\r\n const consent = this.getCookieConsent();\r\n consent.consent.necessary = true; // Man kan ikke afvise 'krævede' cookies\r\n consent.consent.statistics = false;\r\n consent.consent.thirdparty = false;\r\n this.deleteCookies();\r\n this.setGoogleTagManagerCookieOptIn(false);\r\n this.setCookieConsent(consent);\r\n }\r\n\r\n public renewCookieConsent(): void {\r\n const consent = this.getCookieConsent();\r\n if (consent.version === this.requiredConsentVersion) {\r\n this.setCookieConsent(consent); // Fornyer datoen\r\n }\r\n }\r\n\r\n public getCookieConsent(): DffCookieConsent {\r\n return this.enabled\r\n ? stringToCookieConsent(this.cookieStorage.get(this.key))\r\n : getAllEnabledCookieConsent(this.requiredConsentVersion);\r\n }\r\n\r\n public setCookieConsent(value: DffCookieConsent): void {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n const oldConsent = this.getCookieConsent();\r\n value.version = this.requiredConsentVersion;\r\n value.utc = new Date();\r\n this.cookieStorage.set(this.key, cookieConsentToString(value), 365, \"/\");\r\n\r\n if (cookieConsentsEqual(value, oldConsent)) {\r\n return;\r\n }\r\n\r\n if (this.cookieConsentChangeRequiresPageReload) {\r\n // Vi overfører den gamle Cookie Consent, fordi vi ikke ønsker UI-ændringer, inden hele siden reloades.\r\n this.cookieConsentChanged(oldConsent, true);\r\n window.location.reload();\r\n } else {\r\n this.cookieConsentChanged(value, false);\r\n }\r\n }\r\n\r\n public selectCookieConsent(): Observable {\r\n return this.cookieConsentSubject.asObservable().pipe(distinctUntilChanged(), shareReplay());\r\n }\r\n\r\n // Vi kan ikke altid styre om elementer på siden kan slås til/fra client side.\r\n // Derfor kan en komponent (f.eks. vores RAW HTML i Umbraco) fortælle at den ønsker 'page reload'\r\n // når brugeren ændrer sin Cookie-accept.\r\n public setCookieConsentChangeRequiresPageReload(): void {\r\n this.cookieConsentChangeRequiresPageReload = true;\r\n }\r\n\r\n private cookieConsentChanged(consent: DffCookieConsent, reloading: boolean): void {\r\n this.cookieConsentSubject.next({ ...consent, reloading });\r\n }\r\n\r\n private setGoogleTagManagerCookieOptIn(value: boolean): void {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n ((window as any).dataLayer || []).push({ CookieOptIn: value });\r\n }\r\n\r\n private deleteCookies(): void {\r\n const whitelist = [/^dff-edb.cookie-consent$/, /^UMB-.*$/];\r\n const cookies = this.cookieStorage.getAll();\r\n this.cookieStorage.beginUpdate();\r\n try {\r\n for (const name in cookies) {\r\n if (!whitelist.some((l) => l.test(name))) {\r\n this.cookieStorage.delete(name, \"/\");\r\n }\r\n }\r\n } finally {\r\n this.cookieStorage.endUpdate();\r\n }\r\n }\r\n}\r\n","export * from \"./dff-cookie-consent.model\";\r\nexport * from \"./dff-cookie-consent.service\";\r\n","import { Component, ElementRef, HostListener, Input, ViewChild, Renderer2, OnInit, OnDestroy } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"dff-dropdown-button\",\r\n templateUrl: \"./dff-dropdown-button.component.html\",\r\n styleUrls: [\"./dff-dropdown-button.component.scss\"]\r\n})\r\nexport class DffDropdownButtonComponent implements OnInit, OnDestroy {\r\n @Input() public titel = \"\";\r\n @Input() public href = \"\";\r\n @Input() public svgIcon = \"\";\r\n @Input() public class = \"\";\r\n\r\n @ViewChild(\"dropdown\") public dropdown: ElementRef;\r\n\r\n private listener: Function;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n\r\n ngOnInit() {\r\n this.listener = this.renderer.listen(\"document\", \"focusout\", () => {\r\n if (!this.el.nativeElement.contains(document.activeElement)) {\r\n this.onFocusOut();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.listener) {\r\n console.log(\"remove listener\");\r\n this.listener();\r\n }\r\n }\r\n\r\n @HostListener(\"keydown.arrowdown\", [\"$event\"]) onArrowDown(event: KeyboardEvent) {\r\n event.preventDefault();\r\n if (!this.el.nativeElement.classList.contains(\"active\")) {\r\n this.el.nativeElement.classList.toggle(\"active\");\r\n this.toggleAriaExpanded();\r\n }\r\n const focusableElementsNodeList = this.el.nativeElement.querySelectorAll(\"[href]\");\r\n const focusableElementsArray = Array.from(focusableElementsNodeList);\r\n const focusedElement = document.activeElement;\r\n const currentIndex = focusableElementsArray.indexOf(focusedElement);\r\n const nextIndex = (currentIndex + 1) % focusableElementsArray.length;\r\n const nextElement = focusableElementsArray[nextIndex] as HTMLElement;\r\n if (nextElement !== null) {\r\n nextElement.focus();\r\n }\r\n }\r\n\r\n @HostListener(\"keydown.arrowup\", [\"$event\"]) onArrowUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n if (!this.el.nativeElement.classList.contains(\"active\")) {\r\n this.el.nativeElement.classList.toggle(\"active\");\r\n this.toggleAriaExpanded();\r\n }\r\n const focusableElementsNodeList = this.el.nativeElement.querySelectorAll(\"[href]\");\r\n const focusableElementsArray = Array.from(focusableElementsNodeList);\r\n const focusedElement = document.activeElement;\r\n const currentIndex = focusableElementsArray.indexOf(focusedElement);\r\n const nextIndex = (currentIndex - 1) % focusableElementsArray.length;\r\n const prevElement = focusableElementsArray[nextIndex] as HTMLElement;\r\n if (prevElement !== null) {\r\n prevElement.focus();\r\n }\r\n }\r\n\r\n @HostListener(\"keydown.enter\") onEnter() {\r\n this.el.nativeElement.classList.toggle(\"active\");\r\n this.toggleAriaExpanded();\r\n }\r\n\r\n @HostListener(\"keydown.space\") onSpace() {\r\n this.el.nativeElement.classList.toggle(\"active\");\r\n this.toggleAriaExpanded();\r\n }\r\n\r\n @HostListener(\"mouseover\") onMouseover() {\r\n this.el.nativeElement.classList.add(\"active\");\r\n }\r\n\r\n @HostListener(\"mouseleave\") onmouseleave() {\r\n setTimeout(() => {\r\n // for a more accesible dropdown, we should add a delay before closing the dropdown when accessing with the mouse\r\n if (!this.el.nativeElement.contains(document.activeElement)) {\r\n this.el.nativeElement.classList.remove(\"active\");\r\n if (!this.dropdown) return;\r\n this.dropdown.nativeElement.setAttribute(\"aria-expanded\", \"false\");\r\n }\r\n }, 1000);\r\n }\r\n\r\n public onFocusOut(): void {\r\n setTimeout(() => {\r\n if (!this.el.nativeElement.contains(document.activeElement)) {\r\n this.el.nativeElement.classList.remove(\"active\");\r\n if (!this.dropdown) return;\r\n this.dropdown.nativeElement.setAttribute(\"aria-expanded\", \"false\");\r\n }\r\n }, 0);\r\n }\r\n\r\n private toggleAriaExpanded(): void {\r\n const isExpanded = this.dropdown.nativeElement.getAttribute(\"aria-expanded\") === \"true\";\r\n this.dropdown.nativeElement.setAttribute(\"aria-expanded\", (!isExpanded).toString());\r\n }\r\n\r\n public onClick(event: MouseEvent, href: string): void {\r\n if (!href) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n","@if (href) {\r\n \r\n \r\n @if (svgIcon) {\r\n \r\n }\r\n {{ titel }}\r\n \r\n \r\n} @else {\r\n \r\n \r\n @if (svgIcon) {\r\n \r\n }\r\n {{ titel }}\r\n \r\n \r\n}\r\n
    \r\n \r\n
    \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { DffDropdownButtonComponent } from \"./dff-dropdown-button.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatIconModule],\r\n declarations: [DffDropdownButtonComponent],\r\n exports: [DffDropdownButtonComponent],\r\n providers: []\r\n})\r\nexport class DffDropdownButtonModule {}\r\n","export * from \"./dff-dropdown-button.component\";\r\nexport * from \"./dff-dropdown-button.module\";\r\n","import { Injectable, RendererFactory2 } from \"@angular/core\";\r\n\r\nimport { Observable, of, Subject } from \"rxjs\";\r\nimport { first, mapTo, shareReplay, switchMap, tap } from \"rxjs/operators\";\r\n\r\nimport { UmbracoHttpClient } from \"@e-forsyning/common/http\";\r\nimport {\r\n UmbracoIndstillinger,\r\n UmbracoIndstillingerObserver,\r\n UmbracoIndstillingerRepository\r\n} from \"@e-forsyning/common/umbraco-indstillinger\";\r\n\r\nimport { getUmbracoBaseUrl, getUrlQuery } from \"../util/util\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class WebComponentInitializerService {\r\n constructor(\r\n private readonly rendererFactory: RendererFactory2,\r\n private readonly umbracoHttpClient: UmbracoHttpClient,\r\n private readonly umbracoIndstillingerRepository: UmbracoIndstillingerRepository,\r\n private readonly umbracoIndstillingerObserver: UmbracoIndstillingerObserver\r\n ) {}\r\n\r\n public init(nodeId: number): Observable {\r\n // Hvis WebComponents benyttes i E|Forsyning eller Forsyning|WEB, har vi allerede initialiseret UmbracoIndstillingerObservable\r\n console.log(\"WebComponentInitializerService: Undersøger om instillinger er indlæst\", nodeId);\r\n if (this.umbracoIndstillingerObserver.initialized) {\r\n console.log(\"WebComponentInitializerService: Indstillinger er allerede indlæst\", nodeId);\r\n return of(null);\r\n }\r\n\r\n // Køres WebComponents på ekstern hjemmeside, initialiserer vi UmbracoIndstillingerObservable på baggrund af 'nodeId'\r\n console.log(\"WebComponentInitializerService: Indlæser indstillinger\", nodeId);\r\n this.umbracoHttpClient.setBaseUrl(getUmbracoBaseUrl());\r\n const result$ = this.umbracoIndstillingerRepository.hent(nodeId).pipe(\r\n switchMap((indstillinger) => this.loadStyleSheet(indstillinger)),\r\n tap((indstillinger) => this.setUmbracoIndstillinger(indstillinger)),\r\n mapTo(null),\r\n first(),\r\n shareReplay(1)\r\n );\r\n result$.subscribe();\r\n return result$;\r\n }\r\n\r\n private setUmbracoIndstillinger(indstillinger: UmbracoIndstillinger): void {\r\n // Initialiser UmbracoIndstillinger\r\n // Vi tilføjer metoder som er angivet på klassen UmbracoIndstillinger.\r\n Object.setPrototypeOf(indstillinger, new UmbracoIndstillinger());\r\n this.umbracoIndstillingerObserver.next(indstillinger);\r\n }\r\n\r\n private loadStyleSheet(indstillinger: UmbracoIndstillinger): Observable {\r\n // Load stylesheet og resolve først når det er loadet\r\n const result$ = new Subject();\r\n if (getUrlQuery().nostyle !== undefined) {\r\n result$.next(indstillinger);\r\n return result$.asObservable();\r\n }\r\n const renderer = this.rendererFactory.createRenderer(null, null);\r\n const link = renderer.createElement(\"link\");\r\n renderer.setAttribute(link, \"rel\", \"stylesheet\");\r\n renderer.setAttribute(link, \"type\", \"text/css\");\r\n renderer.setAttribute(link, \"href\", indstillinger.themeUrl);\r\n renderer.listen(link, \"load\", () => result$.next(indstillinger));\r\n renderer.appendChild(document.head, link);\r\n return result$.asObservable();\r\n }\r\n}\r\n","import { getUrlQuery as baseGetUrlQuery, getUrlOrigin } from \"@dffedb/util\";\r\n\r\nexport function getUrlQuery(): any {\r\n return baseGetUrlQuery(getMainScriptUrl());\r\n}\r\n\r\nexport function getNgZone(): \"noop\" | \"zone.js\" {\r\n const query = getUrlQuery();\r\n return query.ngzone === \"noop\" ? \"noop\" : \"zone.js\";\r\n}\r\n\r\nexport function getUmbracoBaseUrl(): string {\r\n return getUrlOrigin(getMainScriptUrl());\r\n}\r\n\r\nfunction getMainScriptUrl(): string {\r\n const pattern = /\\/dist\\/web-components\\/v\\d+\\/main.*\\.js/;\r\n return (\r\n Array.from(document.scripts)\r\n .map((s) => s.src)\r\n .find((s) => !!s.match(pattern)) ?? \"\"\r\n );\r\n}\r\n","export * from \"./lib/controls-of\";\r\nexport * from \"./lib/dff-form-control/dff-form-control.component\";\r\nexport * from \"./lib/dff-form-control/dff-form-control.module\";\r\nexport * from \"./lib/dff-form-control/dff-form-control\";\r\nexport * from \"./lib/dff-oprindelig-aktuel-vaerdi/dff-oprindelig-aktuel-vaerdi-form-group\";\r\nexport * from \"./lib/validators\";\r\nexport * from \"./lib/dff-error-state-matcher\";\r\nexport * from \"./lib/dff-reactive-form-control-value-mapper\";\r\nexport * from \"./lib/typed-forms\";\r\nexport * from \"./lib/util\";\r\n","import { FormControl, FormGroup } from \"@angular/forms\";\r\n\r\nexport type ControlsOf> = {\r\n [K in keyof T]: T[K] extends Record ? FormGroup> : FormControl;\r\n};\r\n","import { FormGroupDirective, NgForm, UntypedFormControl } from \"@angular/forms\";\r\nimport { ErrorStateMatcher } from \"@angular/material/core\";\r\n\r\n/** Error when invalid control is dirty, touched, or submitted. */\r\nexport class DffErrorStateMatcher implements ErrorStateMatcher {\r\n public isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { isObservable, Observable, of } from \"rxjs\";\r\n\r\nimport { Pattern } from \"@dffedb/util\";\r\n\r\nimport { DffFormControl, DffFormControlDropdownListOptions, DffFormControlType } from \"./dff-form-control\";\r\n\r\n@Component({\r\n selector: \"dff-form-control\",\r\n templateUrl: \"./dff-form-control.component.html\",\r\n styleUrls: [\"./dff-form-control.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: DffFormControlComponent,\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DffFormControlComponent implements ControlValueAccessor, OnInit {\r\n public get controlType(): DffFormControlType {\r\n return (this.formControl && this.formControl.controlType) || DffFormControlType.TextInput;\r\n }\r\n\r\n public get placeholder(): string {\r\n return (this.formControl && this.formControl.placeholder) || \"\";\r\n }\r\n\r\n public get suffix(): string {\r\n return (this.formControl && this.formControl.suffix) || \"\";\r\n }\r\n\r\n public get hint(): string {\r\n return (this.formControl && this.formControl.hint) || \"\";\r\n }\r\n\r\n public get options$(): Observable {\r\n const result = (this.formControl && this.formControl.dropdownListOptions) || [];\r\n return isObservable(result) ? result : of(result);\r\n }\r\n\r\n public get hidden(): boolean {\r\n return this.formControl && this.formControl.hidden;\r\n }\r\n\r\n @Input() public formControl: DffFormControl;\r\n\r\n public formControlType: typeof DffFormControlType = DffFormControlType;\r\n\r\n public ngOnInit(): void {\r\n if (!this.formControl) {\r\n throw new Error(\"DffFormControlComponent: formControl forventer en FormControl-instans.\");\r\n }\r\n }\r\n\r\n public getErrorText(formControl: DffFormControl): string {\r\n return (\r\n this.getRequiredErrorText(formControl.errors, formControl.controlType) ||\r\n this.getMaxLengthErrorText(formControl.errors) ||\r\n this.getDateErrorText(formControl.errors) ||\r\n this.getEmailErrorText(formControl.errors) ||\r\n this.getMinMaxErrorText(formControl.errors) ||\r\n this.getMaxDecimalsErrorText(formControl.errors) ||\r\n this.getPatternErrorText(formControl.errors)\r\n );\r\n }\r\n\r\n // Dummy ControlValueAccessor-metoder for at kunne have en [formControl]-property\r\n public writeValue(): void {}\r\n public registerOnChange(): void {}\r\n public registerOnTouched(): void {}\r\n\r\n private getRequiredErrorText(errors: any, formControlType: DffFormControlType): string {\r\n if (!errors.required) {\r\n return null;\r\n }\r\n\r\n switch (formControlType) {\r\n case DffFormControlType.DropdownList:\r\n return \"Vælg en værdi\";\r\n case DffFormControlType.Checkbox:\r\n return \"Feltet skal afkrydses\";\r\n case DffFormControlType.DateInput:\r\n return errors.matDatepickerParse ? null : \"Indtast en dato\";\r\n case DffFormControlType.TextInput:\r\n case DffFormControlType.NumberInput:\r\n default:\r\n return \"Indtast en værdi\";\r\n }\r\n }\r\n\r\n private getDateErrorText(errors: any): string {\r\n return errors.matDatepickerParse || errors.mindate || errors.maxdate ? \"Indtast en gyldig dato\" : null;\r\n }\r\n\r\n private getMaxLengthErrorText(errors: any): string {\r\n return errors.maxlength ? `Feltet må maksimalt indeholde ${errors.maxlength.requiredLength} tegn` : null;\r\n }\r\n\r\n private getEmailErrorText(errors: any): string {\r\n return errors.email ? \"Indtast en gyldig e-mail\" : null;\r\n }\r\n\r\n private getMinMaxErrorText(errors: any): string {\r\n return errors.min\r\n ? `Indtast en værdi på ${errors.min.min} eller derover`\r\n : errors.max\r\n ? `Indtast en værdi på ${errors.max.max} eller derunder`\r\n : null;\r\n }\r\n\r\n private getMaxDecimalsErrorText(errors: any): string {\r\n if (!errors.decimals) {\r\n return null;\r\n }\r\n\r\n const max = errors.decimals.max || 0;\r\n if (max === 0) {\r\n return \"Indtast et heltal\";\r\n }\r\n return `Indtast et tal med op til ${max} decimaler`;\r\n }\r\n\r\n private getPatternErrorText(errors: any): string {\r\n if (!errors.pattern) {\r\n return null;\r\n }\r\n\r\n switch (errors.pattern.requiredPattern) {\r\n case Pattern.helTal:\r\n return \"Indtast et heltal\";\r\n case Pattern.positivHelTal:\r\n return \"Indtast et positivt heltal\";\r\n case Pattern.kommaTal:\r\n return \"Indtast et tal\";\r\n case Pattern.positivKommaTal:\r\n return \"Indtast et positivt tal\";\r\n case Pattern.postNr:\r\n return \"Indtast et gyldigt postummmer\";\r\n case Pattern.registreringsNr:\r\n return \"Indtast et gyldigt registreringsnummer\";\r\n case Pattern.kontoNr:\r\n return \"Indtast et gyldigt kontonummer\";\r\n default:\r\n return \"Indtast en gyldig værdi\";\r\n }\r\n }\r\n}\r\n","@if (formControl && !hidden) {\r\n
    \r\n @switch (true) {\r\n \r\n @case (controlType === formControlType.NumberInput) {\r\n \r\n {{ placeholder }}\r\n \r\n
    \r\n @if (hint) {\r\n \r\n }\r\n @if (formControl.errors) {\r\n {{ getErrorText(formControl) }}\r\n }\r\n
    \r\n }\r\n \r\n @case (controlType === formControlType.DropdownList) {\r\n \r\n {{ placeholder }}\r\n \r\n @for (option of options$ | async; track option) {\r\n {{ option.value }}\r\n }\r\n \r\n @if (hint) {\r\n \r\n }\r\n @if (formControl.errors) {\r\n {{ getErrorText(formControl) }}\r\n }\r\n \r\n }\r\n \r\n @case (controlType === formControlType.Autocomplete || controlType === formControlType.AutocompleteNumeric) {\r\n \r\n {{ placeholder }}\r\n \r\n
    \r\n @if (hint) {\r\n \r\n }\r\n @if (formControl.errors) {\r\n {{ getErrorText(formControl) }}\r\n }\r\n \r\n @for (option of options$ | async; track option) {\r\n \r\n {{ option.value }}\r\n \r\n }\r\n \r\n
    \r\n }\r\n \r\n @case (controlType === formControlType.Checkbox) {\r\n
    \r\n {{ placeholder }}\r\n @if (formControl.errors) {\r\n {{ getErrorText(formControl) }}\r\n }\r\n
    \r\n }\r\n \r\n @case (controlType === formControlType.DateInput) {\r\n \r\n {{ placeholder }}\r\n \r\n \r\n \r\n @if (hint) {\r\n \r\n }\r\n @if (formControl.errors) {\r\n {{ getErrorText(formControl) }}\r\n }\r\n \r\n }\r\n \r\n @default {\r\n \r\n {{ placeholder }}\r\n \r\n
    \r\n @if (hint) {\r\n \r\n }\r\n @if (formControl.errors) {\r\n {{ getErrorText(formControl) }}\r\n }\r\n
    \r\n }\r\n }\r\n
    \r\n } @else {\r\n @if (!hidden) {\r\n
    Fejl: DffFormControlComponent.formControl forventer en FormControl-instans.
    \r\n }\r\n }\r\n \r\n {{ suffix }}\r\n \r\n \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\n\r\nimport { DffFormControlComponent } from \"./dff-form-control.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatAutocompleteModule,\r\n MatCheckboxModule,\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [DffFormControlComponent],\r\n declarations: [DffFormControlComponent],\r\n providers: []\r\n})\r\nexport class DffFormControlModule {}\r\n","import { AbstractControlOptions, AsyncValidatorFn, UntypedFormControl, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\nexport enum DffFormControlType {\r\n TextInput,\r\n NumberInput,\r\n DateInput,\r\n DropdownList,\r\n Autocomplete,\r\n AutocompleteNumeric,\r\n Checkbox\r\n}\r\n\r\nexport type DffFormControlDropdownListOptions = {} | { key: any; value: string }[];\r\n\r\nexport interface DffFormControlOptions {\r\n controlType?: DffFormControlType;\r\n placeholder?: string;\r\n suffix?: string;\r\n dropdownListOptions?: DffFormControlDropdownListOptions;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n hint?: string;\r\n}\r\n\r\nexport class DffFormControl extends UntypedFormControl {\r\n public controlType: DffFormControlType;\r\n public placeholder: string;\r\n public suffix: string;\r\n public dropdownListOptions: DffFormControlDropdownListOptions;\r\n public hidden: boolean;\r\n public hint: string;\r\n public required = false;\r\n\r\n constructor(\r\n formState?: any,\r\n options: DffFormControlOptions = {},\r\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\r\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\r\n ) {\r\n super(formState, validatorOrOpts, asyncValidator);\r\n this.setOptions(options);\r\n this.updateRequired(validatorOrOpts);\r\n }\r\n\r\n public setOptions(options: DffFormControlOptions): void {\r\n if (options.disabled) {\r\n this.disable();\r\n } else {\r\n this.enable();\r\n }\r\n\r\n this.controlType = options.controlType || DffFormControlType.TextInput;\r\n this.dropdownListOptions = options.dropdownListOptions || [];\r\n this.placeholder = options.placeholder || \"\";\r\n this.suffix = options.suffix || \"\";\r\n this.hidden = options.hidden || false;\r\n this.hint = options.hint || \"\";\r\n }\r\n\r\n public setValidators(newValidator: ValidatorFn | ValidatorFn[] | null): void {\r\n super.setValidators(newValidator);\r\n this.updateRequired(newValidator);\r\n }\r\n\r\n private updateRequired(validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null): void {\r\n const validators = validatorsToArray(validatorOrOpts);\r\n this.required = validators.includes(Validators.required);\r\n }\r\n}\r\n\r\nfunction validatorsToArray(validatorOrOpts: ValidatorFn | ValidatorFn[] | AbstractControlOptions): ValidatorFn[] {\r\n const validator = isOptionsObj(validatorOrOpts) ? (validatorOrOpts as AbstractControlOptions).validators : validatorOrOpts;\r\n return Array.isArray(validator) ? validator : [validator];\r\n}\r\n\r\nfunction isOptionsObj(\r\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null\r\n): validatorOrOpts is AbstractControlOptions {\r\n return validatorOrOpts != null && !Array.isArray(validatorOrOpts) && typeof validatorOrOpts === \"object\";\r\n}\r\n","import { AbstractControlOptions, AsyncValidatorFn, UntypedFormControl, UntypedFormGroup, ValidatorFn } from \"@angular/forms\";\r\n\r\nimport { DffOprindeligAktuelVaerdier } from \"@dffedb/util\";\r\n\r\nimport { DffFormControl, DffFormControlOptions } from \"../dff-form-control/dff-form-control\";\r\n\r\nexport class DffOprindeligAktuelVaerdiFormGroup extends UntypedFormGroup {\r\n private aktuel: DffFormControl;\r\n\r\n constructor(\r\n formState: DffOprindeligAktuelVaerdier,\r\n options: DffFormControlOptions = {},\r\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\r\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\r\n ) {\r\n const oprindelig = new UntypedFormControl(formState.oprindelig);\r\n const aktuel = new DffFormControl(formState.aktuel, options, validatorOrOpts, asyncValidator);\r\n super({ aktuel, oprindelig });\r\n this.aktuel = aktuel;\r\n\r\n this.valueChanges.subscribe(() => this.tjekOmDerErSketAendringer());\r\n setTimeout(() => this.tjekOmDerErSketAendringer());\r\n }\r\n\r\n public setOptions(value: DffFormControlOptions): void {\r\n this.aktuel.setOptions(value);\r\n }\r\n\r\n public setValidators(newValidator: ValidatorFn | ValidatorFn[] | null): void {\r\n this.aktuel.setValidators(newValidator);\r\n }\r\n\r\n public setAsyncValidators(newValidator: AsyncValidatorFn | AsyncValidatorFn[] | null): void {\r\n this.aktuel.setAsyncValidators(newValidator);\r\n }\r\n\r\n private tjekOmDerErSketAendringer(): void {\r\n const aktuel = this.controls[\"aktuel\"];\r\n const oprindelig = this.controls[\"oprindelig\"];\r\n\r\n const aktuelVaerdi = this.erNullEllerUndefined(aktuel.value) ? \"\" : aktuel.value.toString();\r\n const oprindeligVaerdi = this.erNullEllerUndefined(oprindelig.value) ? \"\" : oprindelig.value.toString();\r\n\r\n if (aktuelVaerdi === oprindeligVaerdi) {\r\n aktuel.markAsPristine();\r\n } else {\r\n aktuel.markAsDirty();\r\n }\r\n }\r\n\r\n private erNullEllerUndefined(value: any): boolean {\r\n return value === null || value === undefined;\r\n }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nimport { asValidDateOrNull, DffOprindeligAktuelVaerdi, parseDate } from \"@dffedb/util\";\r\n\r\nexport class DffReactiveFormControlValueMapper {\r\n public static toOprindeligAktuelStrings(control: AbstractControl): DffOprindeligAktuelVaerdi {\r\n const oprindelig = this.toString(control.get(\"oprindelig\"));\r\n const aktuel = this.toString(control.get(\"aktuel\"));\r\n return { oprindelig, aktuel };\r\n }\r\n\r\n public static toString(control: AbstractControl): string {\r\n return this.hasValue(control) ? control.value.toString() : null;\r\n }\r\n\r\n public static toOprindeligAktuelIntegers(control: AbstractControl, defaultValue: number = null): DffOprindeligAktuelVaerdi {\r\n const oprindelig = this.toInteger(control.get(\"oprindelig\"), defaultValue);\r\n const aktuel = this.toInteger(control.get(\"aktuel\"), defaultValue);\r\n return { oprindelig, aktuel };\r\n }\r\n\r\n public static toInteger(control: AbstractControl, defaultValue: number = null): number {\r\n return this.hasValue(control) ? parseInt(control.value.toString(), 10) : defaultValue;\r\n }\r\n\r\n public static toOprindeligAktuelFloats(control: AbstractControl, defaultValue: number = null): DffOprindeligAktuelVaerdi {\r\n const oprindelig = this.toFloat(control.get(\"oprindelig\"), defaultValue);\r\n const aktuel = this.toFloat(control.get(\"aktuel\"), defaultValue);\r\n return { oprindelig, aktuel };\r\n }\r\n\r\n public static toFloat(control: AbstractControl, defaultValue: number = null): number {\r\n return this.hasValue(control) ? parseFloat(control.value.toString()) : defaultValue;\r\n }\r\n\r\n public static toOprindeligAktuelBooleans(control: AbstractControl): DffOprindeligAktuelVaerdi {\r\n const oprindelig = this.toBoolean(control.get(\"oprindelig\"));\r\n const aktuel = this.toBoolean(control.get(\"aktuel\"));\r\n return { oprindelig, aktuel };\r\n }\r\n\r\n public static toBoolean(control: AbstractControl): boolean {\r\n return control && !!control.value;\r\n }\r\n\r\n public static toOprindeligAktuelDates(control: AbstractControl, defaultValue: Date = null): DffOprindeligAktuelVaerdi {\r\n const oprindelig = this.toDate(control.get(\"oprindelig\"), defaultValue);\r\n const aktuel = this.toDate(control.get(\"aktuel\"), defaultValue);\r\n return { oprindelig, aktuel };\r\n }\r\n\r\n public static toDate(control: AbstractControl, defaultValue: Date = null): Date {\r\n const value = control && control.value;\r\n if (!value) {\r\n return defaultValue;\r\n }\r\n\r\n if (value instanceof Date) {\r\n return value;\r\n }\r\n\r\n const dffDate = parseDate(value, \"DD-MM-YYYY\");\r\n const javascriptDate = new Date(value);\r\n return asValidDateOrNull(dffDate) || asValidDateOrNull(javascriptDate);\r\n }\r\n\r\n private static hasValue(control: AbstractControl): boolean {\r\n return control && control.value !== undefined && control.value !== null;\r\n }\r\n}\r\n","import { AbstractControlOptions, AsyncValidatorFn, UntypedFormArray, UntypedFormGroup, ValidatorFn } from \"@angular/forms\";\r\n\r\nimport {\r\n ControlState,\r\n IFormArray as ITypedFormArray,\r\n IFormBuilder as ITypedFormBuilder,\r\n IFormControl as ITypedFormControl,\r\n IFormGroup as ITypedFormGroup\r\n} from \"@rxweb/types\";\r\nimport { ControlConfig } from \"@rxweb/types/reactive-form/control-config\";\r\n\r\ntype Unarray = T extends (infer U)[] ? U : T;\r\n\r\nexport interface IFormBuilder extends ITypedFormBuilder {\r\n array(\r\n controlsConfig: ControlConfig[],\r\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\r\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\r\n ): IFormArray;\r\n control(\r\n formState: ControlState,\r\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\r\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\r\n ): IFormControl;\r\n group(\r\n controlsConfig: {\r\n [key: string]: any;\r\n },\r\n options?:\r\n | AbstractControlOptions\r\n | {\r\n [key: string]: any;\r\n }\r\n | null\r\n ): UntypedFormGroup;\r\n group(\r\n controlsConfig: {\r\n [key in keyof T]: ControlConfig;\r\n },\r\n options?:\r\n | AbstractControlOptions\r\n | {\r\n [key: string]: any;\r\n }\r\n | null\r\n ): IFormGroup;\r\n}\r\n\r\nexport interface IFormArray extends ITypedFormArray {\r\n groups(): IFormGroup[] | null;\r\n}\r\n\r\nexport type IFormControl = ITypedFormControl;\r\n\r\nexport interface IFormGroup extends ITypedFormGroup {\r\n array(index: K): IFormArray>;\r\n control(index: K): IFormControl;\r\n group(index: K): IFormGroup;\r\n}\r\n\r\ndeclare module \"@angular/forms\" {\r\n interface FormGroup {\r\n array(key: string | number | symbol): IFormArray | null;\r\n control(key: string | number | symbol): IFormControl | null;\r\n group(key: string | number | symbol): IFormGroup | null;\r\n }\r\n\r\n interface FormArray {\r\n //[index: number]: IFormGroup | null; // TODO: Hvordan implementerer man en indexer via FormArray.prototype?\r\n groups(): IFormGroup[] | null; // TODO: Kan man implenetere en property i stedet for en funktion via FormArray.prototype?\r\n }\r\n}\r\n\r\nUntypedFormGroup.prototype.array = function (path: string): IFormArray | null {\r\n return this.controls[path];\r\n};\r\n\r\nUntypedFormGroup.prototype.control = function (path: string): IFormControl | null {\r\n return this.controls[path];\r\n};\r\n\r\nUntypedFormGroup.prototype.group = function (path: string): IFormGroup | null {\r\n return this.controls[path];\r\n};\r\n\r\nUntypedFormArray.prototype.groups = function (): IFormGroup[] | null {\r\n return this.controls;\r\n};\r\n","import { AbstractControl, UntypedFormArray, UntypedFormGroup } from \"@angular/forms\";\r\n\r\nexport function updateValueAndValidity(control: AbstractControl): void {\r\n getControlsAsArray(control).forEach((c) => {\r\n updateValueAndValidity(c);\r\n });\r\n control.updateValueAndValidity({ onlySelf: true });\r\n}\r\n\r\nexport function markAsTouched(control: AbstractControl): void {\r\n getControlsAsArray(control).forEach((c) => {\r\n markAsTouched(c);\r\n });\r\n control.markAsTouched({ onlySelf: true });\r\n}\r\n\r\nexport function updateDirty(control: AbstractControl): void {\r\n if (control.dirty) {\r\n control.markAsDirty();\r\n }\r\n getControlsAsArray(control).forEach((c) => {\r\n updateDirty(c);\r\n });\r\n}\r\n\r\nfunction getControlsAsArray(control: AbstractControl): AbstractControl[] {\r\n return control instanceof UntypedFormGroup || control instanceof UntypedFormArray ? controlsToArray(control.controls) : [];\r\n}\r\n\r\nexport function controlsToArray(controls: { [key: string]: AbstractControl } | AbstractControl[]): AbstractControl[] {\r\n return Array.isArray(controls) ? controls : Object.keys(controls).map((key) => controls[key]);\r\n}\r\n","import { maxDateValidator, minDateValidator } from \"./validators.date\";\r\nimport { decimalsValidator } from \"./validators.decimals\";\r\n\r\nexport class DffValidators {\r\n public static minDate = minDateValidator;\r\n public static maxDate = maxDateValidator;\r\n public static decimals = decimalsValidator;\r\n}\r\n","export * from \"./dff-validators\";\r\nexport * from \"./validators.cprNummer\";\r\nexport * from \"./validators.cvrNummer\";\r\nexport * from \"./validators.pNummer\";\r\nexport * from \"./validators.date\";\r\nexport * from \"./validators.decimals\";\r\nexport * from \"./validators.email\";\r\nexport * from \"./validators.emails\";\r\nexport * from \"./validators.must-match\";\r\nexport * from \"./validators.telefonnummer\";\r\nexport * from \"./validators.telefonnumre\";\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nimport { formatDate, parseDate } from \"@dffedb/util\";\r\n\r\n/*\r\nBemærk, at det ikke længere er sikkert at benytte Modulus 11-check på CPR-numre:\r\nhttps://www.cpr.dk/cpr-systemet/personnumre-uden-kontrolciffer-modulus-11-kontrol/\r\nVi kan imidlertid checke om de første 6 cifre i personummeret udgør en gyldig dato.\r\nF.eks. er 300219, 320119 og 021319 ikke gyldige datoer.\r\n*/\r\nexport function cprNummerValidator(): any {\r\n return (control: AbstractControl) => {\r\n if (erBlankVaerdi(control.value)) {\r\n return null; // Vi anser blank værdi for valid. Ønskes dette ikke, kan man benytte en RequiredValidator.\r\n }\r\n return erValidCprNummer(control.value.toString()) ? null : error(control.value);\r\n };\r\n}\r\n\r\nexport function cprNummerMedBindestregValidator(): any {\r\n return (control: AbstractControl) => {\r\n if (erBlankVaerdi(control.value)) {\r\n return null; // Vi anser blank værdi for valid. Ønskes dette ikke, kan man benytte en RequiredValidator.\r\n }\r\n return erValidCprNummerMedBindestreg(control.value.toString()) ? null : error(control.value);\r\n };\r\n}\r\n\r\nexport function cprNummerUdenBindestregValidator(): any {\r\n return (control: AbstractControl) => {\r\n if (erBlankVaerdi(control.value)) {\r\n return null; // Vi anser blank værdi for valid. Ønskes dette ikke, kan man benytte en RequiredValidator.\r\n }\r\n return erValidCprNummerUdenBindestreg(control.value.toString()) ? null : error(control.value);\r\n };\r\n}\r\n\r\nfunction erBlankVaerdi(value: string): boolean {\r\n return value === null || value === undefined || value === \"\";\r\n}\r\n\r\nfunction erValidCprNummer(value: string): boolean {\r\n return erValidCprNummerMedBindestreg(value) || erValidCprNummerUdenBindestreg(value);\r\n}\r\n\r\nfunction erValidCprNummerMedBindestreg(value: string): boolean {\r\n return /^\\d{6}-\\d{4}$/.test(value) && erFoerste6cifreValidDato(value);\r\n}\r\n\r\nfunction erValidCprNummerUdenBindestreg(value: string): boolean {\r\n return /^\\d{10}$/.test(value) && erFoerste6cifreValidDato(value);\r\n}\r\n\r\nfunction erFoerste6cifreValidDato(value: string): boolean {\r\n const expected = value.slice(0, 6);\r\n const actual = formatDate(parseDate(expected, \"DDMMYY\"), \"DDMMYY\");\r\n return actual === expected;\r\n}\r\n\r\nfunction error(cprNummer: string): any {\r\n return { cprNummer };\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport function cvrNummerValidator(): any {\r\n return (control: AbstractControl) => {\r\n if (erBlankVaerdi(control.value)) {\r\n return null; // Vi anser blank værdi for valid. Ønskes dette ikke, kan man benytte en RequiredValidator.\r\n }\r\n return erValidCvrNummer(control.value.toString()) ? null : error(control.value);\r\n };\r\n}\r\n\r\nfunction erBlankVaerdi(value: string): boolean {\r\n return value === null || value === undefined || value === \"\";\r\n}\r\n\r\nfunction erValidCvrNummer(value: string): boolean {\r\n return /^\\d{8}$/.test(value) && erModulusValid(value);\r\n}\r\n\r\nfunction erModulusValid(value: string): boolean {\r\n const vaegt = [2, 7, 6, 5, 4, 3, 2, 1];\r\n const total = vaegt.reduce((acc, curr, i) => acc + curr * +value[i], 0);\r\n return total % 11 === 0;\r\n}\r\n\r\nfunction error(cvrNummer: string): any {\r\n return { cvrNummer };\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nimport { formatDate } from \"@dffedb/util\";\r\n\r\nfunction toDate(value: any): Date {\r\n // Null / undefined\r\n if (!value) {\r\n return null;\r\n }\r\n // Rigtig Javascript dato\r\n if (value instanceof Date) {\r\n return value;\r\n }\r\n // F.eks. Moment.js dato\r\n if (typeof value.toDate === \"function\") {\r\n return value.toDate();\r\n }\r\n return null;\r\n}\r\n\r\nfunction toString(value: Date): string {\r\n return formatDate(value, \"DD-MM-YYYY\");\r\n}\r\n\r\nexport function minDateValidator(minDate: Date): any {\r\n return (control: AbstractControl) => {\r\n const controlDate = toDate(control.value);\r\n if (!controlDate) {\r\n return null;\r\n }\r\n const isSameOrAfter = controlDate >= minDate;\r\n return isSameOrAfter ? null : { mindate: { minDate: toString(minDate), actualDate: toString(controlDate) } };\r\n };\r\n}\r\n\r\nexport function maxDateValidator(maxDate: Date): any {\r\n return (control: AbstractControl) => {\r\n const controlDate = toDate(control.value);\r\n if (!controlDate) {\r\n return null;\r\n }\r\n const isSameOrBefore = controlDate <= maxDate;\r\n return isSameOrBefore ? null : { maxdate: { maxDate: toString(maxDate), actualDate: toString(controlDate) } };\r\n };\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport class DecimalsError {\r\n public max: number;\r\n}\r\n\r\nexport function decimalsValidator(max: number = -1): any {\r\n const regexp =\r\n max === -1 // -1 indikerer at man kan angive et vilkårligt antal decimaler\r\n ? new RegExp(`^([-+]?\\\\d*([\\\\.,]\\\\d*)?)$`)\r\n : new RegExp(`^([-+]?\\\\d*([\\\\.,]\\\\d{0,${max}})?)$`);\r\n\r\n return (control: AbstractControl) => {\r\n if (control.value === null || control.value === undefined) {\r\n return null;\r\n }\r\n\r\n if (regexp.test(control.value)) {\r\n return null;\r\n }\r\n\r\n return { decimals: { max } };\r\n };\r\n}\r\n","import { AbstractControl, Validators } from \"@angular/forms\";\r\n\r\nexport const emailRegexp = /^[_a-zA-Z0-9ÆØÅæøå-]+(\\.[_a-zA-Z0-9ÆØÅæøå-]+)*@[a-zA-Z0-9ÆØÅæøå-]+(\\.[a-zA-Z0-9-]+)*(\\.[a-zA-Z]{2,15})$/;\r\n\r\nexport function erstatEmailValidatorMedDffEdbUdgave(): void {\r\n Validators.email = emailValidator;\r\n}\r\n\r\n// Hugget fra @angular/forms og erstattet med vores egen e-mail-validering\r\n// Angulars validering accepterer mail-adresser uden punktum, f.eks.: \"info@softvaerket\"\r\nexport function emailValidator(control: AbstractControl): any {\r\n if (isEmptyInputValue(control.value)) {\r\n return null; // don't validate empty values to allow optional controls\r\n }\r\n return emailRegexp.test(control.value) ? null : { email: true };\r\n}\r\n\r\nfunction isEmptyInputValue(value: string): boolean {\r\n // we don't check for string here so it also works with arrays\r\n return value == null || value.length === 0;\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nimport { trim } from \"@dffedb/util\";\r\n\r\nimport { emailRegexp } from \"./validators.email\";\r\n\r\nexport function emailsValidator(separator: string = \",\"): any {\r\n return (control: AbstractControl) => {\r\n if (control.value === null || control.value === undefined || control.value.length === 0) {\r\n return null;\r\n }\r\n\r\n const emails = (control.value + \"\").split(separator).map((email) => trim(email));\r\n const results = emails.map((email) => emailRegexp.test(email));\r\n return results.every((r) => r) ? null : { email: true };\r\n };\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport function mustMatchValidator(matchingControlName: string): any {\r\n return (control: AbstractControl) => {\r\n if (!control.parent) {\r\n return null;\r\n }\r\n\r\n const matchingControl = control.parent.controls[matchingControlName];\r\n\r\n if (control.value !== matchingControl.value) {\r\n return { mustMatch: true };\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\n/*\r\nSærligt moduluscheck af P-nummer:\r\nVed en fejl blev der i kodningen af nummergeneratoren for produktionsenheder anvendt\r\nforkerte vægte i forhold til de vægte, der indgår i modulus 11.\r\nDen forkerte nummergenerator blev anvendt til at danne serien af P-numre til de\r\nkonverterede produktionsenheder i forbindelse med CVR's idriftsættelse.\r\nDe anvendte forkerte vægte i konverteringen er 1 5 6 7 3 6 4 8 9\r\nMens de rigtige vægte i modulus 11 er 4 3 2 7 6 5 4 3 2\r\nDen serie af P-numre, der tildeles driftmæssigt i CVR efter konverteringen, er dannet på baggrund af de rigtige vægte.\r\nHøjeste P-nummer dannet med de forkerte vægte er: 1.006.959.421. Højere P-numre er dannet med den rette vægt.\r\nKilde: https://www.kmd.dk/~/media/documents/snitfladebeskrivelser/kmd-udbetaling/id141-gf200001q-version-12-13-04-2007-pdf.pdf?la=da-dk\r\n*/\r\nexport function pNummerValidator(): any {\r\n return (control: AbstractControl) => {\r\n if (erBlankVaerdi(control.value)) {\r\n return null; // Vi anser blank værdi for valid. Ønskes dette ikke, kan man benytte en RequiredValidator.\r\n }\r\n return erValidPNummer(control.value.toString()) ? null : error(control.value);\r\n };\r\n}\r\n\r\nfunction erBlankVaerdi(value: string): boolean {\r\n return value === null || value === undefined || value === \"\";\r\n}\r\n\r\nfunction erValidPNummer(value: string): boolean {\r\n return /^\\d{10}$/.test(value) && erModulusValid(value);\r\n}\r\n\r\nfunction erModulusValid(value: string): boolean {\r\n const nyAlgoritme = +value > 1006959421;\r\n const vaegt = nyAlgoritme ? [4, 3, 2, 7, 6, 5, 4, 3, 2, 1] : [1, 5, 6, 7, 3, 6, 4, 8, 9, 1];\r\n const total = vaegt.reduce((acc, curr, i) => acc + curr * +value[i], 0);\r\n return total % 11 === 0;\r\n}\r\n\r\nfunction error(pNummer: string): any {\r\n return { pNummer };\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport function telefonnummerValidator(): any {\r\n return (control: AbstractControl) => {\r\n if (erBlankVaerdi(control.value)) {\r\n return null; // Vi anser blank værdi for valid. Ønskes dette ikke, kan man benytte en RequiredValidator.\r\n }\r\n return erValidTelefonr(control.value.toString()) ? null : error(control.value);\r\n };\r\n}\r\n\r\nexport function erValidTelefonr(value: string): boolean {\r\n return /^[+]?[0-9]{8,}$/.test(value);\r\n}\r\n\r\nfunction erBlankVaerdi(value: string): boolean {\r\n return value === null || value === undefined || value === \"\";\r\n}\r\n\r\nfunction error(pNummer: string): any {\r\n return { pNummer };\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nimport { trim } from \"@dffedb/util\";\r\n\r\nimport { erValidTelefonr } from \"./validators.telefonnummer\";\r\n\r\nexport function telefonnumreValidator(separator: string = \",\"): any {\r\n return (control: AbstractControl) => {\r\n if (control.value === null || control.value === undefined || control.value.length === 0) {\r\n return null;\r\n }\r\n\r\n const telefonnumre = (control.value + \"\").split(separator).map((telefonnr) => trim(telefonnr));\r\n const results = telefonnumre.map((telefonnr) => erValidTelefonr(telefonnr));\r\n return results.every((r) => r) ? null : { telefonnr: true };\r\n };\r\n}\r\n","export * from \"./lib/dff-current-route/dff-current-route\";\r\nexport * from \"./lib/dff-redirect-service/dff-redirect-service\";\r\nexport * from \"./lib/dff-route-changing/dff-route-changing.observer\";\r\nexport * from \"./lib/dff-route-params/dff-route-params\";\r\nexport * from \"./lib/previous-route-service/previous-route.service\";\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Router } from \"@angular/router\";\r\n\r\nimport { trimRight } from \"@dffedb/util\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffCurrentRoute {\r\n constructor(private readonly router: Router) {}\r\n\r\n public get value(): DffRoute {\r\n const path = this.doGetPath(this.router.routerState.snapshot.root);\r\n const params = this.router.routerState.snapshot.root.queryParams;\r\n return { path, params };\r\n }\r\n\r\n private doGetPath(snapshot: ActivatedRouteSnapshot): string {\r\n if (!snapshot) {\r\n return \"\";\r\n }\r\n const currentUrl = snapshot.url.map((u) => u.path).join(\"/\");\r\n const childUrl = this.doGetPath(snapshot.firstChild);\r\n return trimRight(`${currentUrl}/${childUrl}`, \"/\");\r\n }\r\n}\r\n\r\nexport interface DffRoute {\r\n path: string;\r\n params: any;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { NavigationExtras, Router, UrlTree } from \"@angular/router\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffRedirectService {\r\n constructor(private readonly router: Router) {}\r\n\r\n public redirect(url: string, params?: any): void {\r\n this.router.navigateByUrl(this.genererUrl(url, { queryParams: params }));\r\n }\r\n\r\n public replace(url: string): void {\r\n this.router.navigateByUrl(this.genererUrl(url, { replaceUrl: true }));\r\n }\r\n\r\n private genererUrl(url: string, navigationExtras?: NavigationExtras): UrlTree {\r\n return this.router.createUrlTree([url], navigationExtras);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivationStart, NavigationCancel, NavigationEnd, Router } from \"@angular/router\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { filter, map, startWith } from \"rxjs/operators\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffRouteChangingObserver {\r\n public readonly valueChanges: Observable;\r\n\r\n constructor(router: Router) {\r\n this.valueChanges = router.events.pipe(\r\n filter(e => e instanceof ActivationStart || e instanceof NavigationEnd || e instanceof NavigationCancel),\r\n map(e => e instanceof ActivationStart),\r\n startWith(false)\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DffRouteParams {\r\n constructor(private readonly router: Router) {}\r\n\r\n public get(key: string): any {\r\n let route = this.router.routerState.snapshot.root;\r\n while (route.firstChild) {\r\n route = route.firstChild;\r\n }\r\n return route.paramMap.get(key) || route.queryParamMap.get(key);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\n\r\nimport { filter, pairwise } from \"rxjs/operators\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class PreviousRouteService {\r\n private previousUrl = \"\";\r\n\r\n constructor(private router: Router) {\r\n this.router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n pairwise()\r\n )\r\n .subscribe(([prev]) => {\r\n this.previousUrl = (prev as NavigationEnd).url;\r\n });\r\n }\r\n\r\n public get value(): string {\r\n return this.previousUrl;\r\n }\r\n}\r\n","export * from \"./lib/dff-observer-state.model\";\r\nexport * from \"./lib/brug-pagineret-ressource\";\r\nexport * from \"./lib/execute-with-progress\";\r\nexport * from \"./lib/processing-subject\";\r\nexport * from \"./lib/rethrow-dff-error.operator\";\r\nexport * from \"./lib/subsink\";\r\n","import { BehaviorSubject, merge, Observable, of } from \"rxjs\";\r\nimport { concatMap, filter, first, map, scan, shareReplay, tap } from \"rxjs/operators\";\r\n\r\nexport interface PagineretRessourceResultData {\r\n items: T[];\r\n isLoading: boolean;\r\n isLoadingFirstPage: boolean;\r\n eof: boolean;\r\n pageNo: number;\r\n}\r\n\r\nexport interface PagineretRessourceResult {\r\n result$: Observable>;\r\n loadMore(): void;\r\n reset(loadFirstPage: boolean): void;\r\n}\r\n\r\nexport type PagineretRessourceCallback = (sideNummer: number) => Observable<{ items: T[]; eof: boolean }>;\r\n\r\ninterface Page {\r\n pageNo: number;\r\n resetting: boolean;\r\n}\r\n\r\nexport function brugPagineretRessource(callback: PagineretRessourceCallback): PagineretRessourceResult {\r\n let sideNummer = -1;\r\n let eof = false;\r\n\r\n const initialValue: PagineretRessourceResultData = {\r\n items: [],\r\n eof: false,\r\n isLoading: false,\r\n isLoadingFirstPage: false,\r\n pageNo: -1\r\n };\r\n\r\n const loadingSubject = new BehaviorSubject(-1);\r\n const loading$: Observable>> = loadingSubject.pipe(\r\n map((pageNo) =>\r\n pageNo <= 0 ? { isLoading: true, isLoadingFirstPage: true, items: [] } : { isLoading: true, isLoadingFirstPage: false }\r\n )\r\n );\r\n\r\n const fetchSubject = new BehaviorSubject(-1);\r\n const fetch$: Observable> = fetchSubject.pipe(\r\n filter(() => !eof),\r\n tap((pageNo) => loadingSubject.next(pageNo)),\r\n concatMap((pageNo) => fetchPage(pageNo).pipe(map((result) => ({ pageNo, ...result })))),\r\n scan((acc, value) => (value.pageNo <= 0 ? value : { ...value, items: [...acc.items, ...value.items] })),\r\n map((result) => ({ ...result, isLoading: false, isLoadingFirstPage: false })),\r\n tap((result) => (eof = result.eof))\r\n );\r\n\r\n const result$: Observable> = merge(loading$, fetch$).pipe(\r\n scan((acc, value) => ({ ...acc, ...value }), initialValue),\r\n shareReplay(1)\r\n );\r\n\r\n function fetchPage(pageNo: number): Observable<{ items: T[]; eof: boolean }> {\r\n return pageNo === -1 ? of({ items: [], eof: false }) : callback(pageNo).pipe(first());\r\n }\r\n\r\n return {\r\n result$,\r\n loadMore(): void {\r\n fetchSubject.next(++sideNummer);\r\n },\r\n reset(loadFirstPage: boolean): void {\r\n sideNummer = loadFirstPage ? 0 : -1;\r\n eof = false;\r\n fetchSubject.next(sideNummer);\r\n }\r\n };\r\n}\r\n","export interface DffObserverState {\r\n loading: boolean;\r\n}\r\n","import { HttpEvent, HttpEventType, HttpProgressEvent } from \"@angular/common/http\";\r\n\r\nimport { combineLatest, Observable, timer } from \"rxjs\";\r\nimport { filter, finalize, map, switchMap, tap } from \"rxjs/operators\";\r\n\r\nexport function executeWithProgress(\r\n save: () => Observable>,\r\n load: (t: T) => Observable,\r\n onProgress: (value: number) => void\r\n): Promise {\r\n const result = save().pipe(\r\n tap(event => event.type === HttpEventType.UploadProgress && onProgress(calculateProgressPercentage(event, 90))),\r\n filter(event => event.type === HttpEventType.Response),\r\n tap(() => onProgress(98)),\r\n map(event => event.type === HttpEventType.Response && event.body),\r\n switchMap(body => load(body))\r\n );\r\n return combineLatest([result, timer(1000)])\r\n .pipe(\r\n map(r => r[0]),\r\n finalize(() => onProgress(0))\r\n )\r\n .toPromise();\r\n}\r\n\r\nexport function calculateProgressPercentage(event: HttpProgressEvent, maxPercentage: number = 100): number {\r\n const percentage = (event.loaded / event.total) * 100;\r\n return Math.round((percentage / 100) * maxPercentage);\r\n}\r\n","import { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\nexport enum ProcessingState {\r\n idle,\r\n processing,\r\n justProcessed,\r\n processed,\r\n errored\r\n}\r\nexport class Processing {\r\n constructor(private state: ProcessingState, public value: T, public error: string) {}\r\n\r\n public get idle(): boolean {\r\n return this.state === ProcessingState.idle;\r\n }\r\n\r\n public get errored(): boolean {\r\n return this.state === ProcessingState.errored;\r\n }\r\n\r\n public get processing(): boolean {\r\n return this.state === ProcessingState.processing;\r\n }\r\n\r\n public get justProcessed(): boolean {\r\n return this.state === ProcessingState.justProcessed;\r\n }\r\n\r\n public get processed(): boolean {\r\n return this.state === ProcessingState.justProcessed || this.state === ProcessingState.processed;\r\n }\r\n}\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class ProcessingSubject {\r\n private subject = new BehaviorSubject>(this.idleState(null));\r\n\r\n public asObservable(): Observable> {\r\n return this.subject.asObservable();\r\n }\r\n\r\n public idle(value: T): void {\r\n this.subject.next(this.idleState(value));\r\n }\r\n\r\n public processing(value: T): void {\r\n this.subject.next(this.processingState(value));\r\n }\r\n\r\n public processed(value: T): void {\r\n this.subject.next(this.justProcessedState(value));\r\n this.subject.next(this.processedState(value));\r\n }\r\n\r\n public errored(error: any): void {\r\n this.subject.next(this.erroredState(error));\r\n }\r\n\r\n private idleState(value: T): Processing {\r\n return new Processing(ProcessingState.idle, value, null);\r\n }\r\n\r\n private processingState(value: T): Processing {\r\n return new Processing(ProcessingState.processing, value, null);\r\n }\r\n\r\n private processedState(value: T): Processing {\r\n return new Processing(ProcessingState.processed, value, null);\r\n }\r\n\r\n private justProcessedState(value: T): Processing {\r\n return new Processing(ProcessingState.justProcessed, value, null);\r\n }\r\n\r\n private erroredState(error: any): Processing {\r\n const errorMessage = !error ? \"Der er opstået en fejl\" : typeof error === \"string\" ? error : error.message || error.toString();\r\n return new Processing(ProcessingState.errored, null, errorMessage);\r\n }\r\n}\r\n","import { ObservableInput, ObservedValueOf, OperatorFunction, throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\n\r\nimport { DffError, getErrorMessage } from \"@dffedb/util\";\r\n\r\n/**\r\n * rethrowDffError sørger for at konvertere eventuelle fejl om til DffError.\r\n */\r\nexport function rethrowDffError>(): OperatorFunction> {\r\n return catchError(error => {\r\n const newError = error instanceof DffError ? error : new DffError(getErrorMessage(error), { innerError: error });\r\n return throwError(newError);\r\n });\r\n}\r\n","// Denne fil er en kopi af https://github.com/wardbell/subsink\r\n// Den findes også som en npm-pakke, men den giver desværre fejl i vores tests:\r\n// https://github.com/wardbell/subsink/issues/6\r\n// Vi har derfor valgt at kopiere koden.\r\n\r\nconst isFunction = (fn: any) => typeof fn === \"function\";\r\n\r\nexport interface SubscriptionLike {\r\n unsubscribe(): void;\r\n}\r\n\r\n/**\r\n * Subscription sink that holds Observable subscriptions\r\n * until you call unsubscribe on it in ngOnDestroy.\r\n */\r\nexport class SubSink {\r\n protected _subs: SubscriptionLike[] = [];\r\n\r\n /**\r\n * Subscription sink that holds Observable subscriptions\r\n * until you call unsubscribe on it in ngOnDestroy.\r\n *\r\n * @example\r\n * In Angular:\r\n * ```\r\n * private subs = new SubSink();\r\n * ...\r\n * this.subs.sink = observable$.subscribe(\r\n * this.subs.add(observable$.subscribe(...));\r\n * ...\r\n * ngOnDestroy() {\r\n * this.subs.unsubscribe();\r\n * }\r\n * ```\r\n */\r\n constructor() {}\r\n\r\n /**\r\n * Add subscriptions to the tracked subscriptions\r\n *\r\n * @example\r\n * this.subs.add(observable$.subscribe(...));\r\n */\r\n public add(...subscriptions: SubscriptionLike[]): void {\r\n this._subs = this._subs.concat(subscriptions);\r\n }\r\n\r\n /**\r\n * Assign subscription to this sink to add it to the tracked subscriptions\r\n *\r\n * @example\r\n * this.subs.sink = observable$.subscribe(...);\r\n */\r\n public set sink(subscription: SubscriptionLike) {\r\n this._subs.push(subscription);\r\n }\r\n\r\n /**\r\n * Unsubscribe to all subscriptions in ngOnDestroy()\r\n *\r\n * @example\r\n * ngOnDestroy() {\r\n * this.subs.unsubscribe();\r\n * }\r\n */\r\n public unsubscribe(): void {\r\n this._subs.forEach((sub) => sub && isFunction(sub.unsubscribe) && sub.unsubscribe());\r\n this._subs = [];\r\n }\r\n}\r\n","export * from \"./lib/accordion-status-indicator\";\r\nexport * from \"./lib/dff-button\";\r\nexport * from \"./lib/dff-date-adapter\";\r\nexport * from \"./lib/dff-date-field\";\r\nexport * from \"./lib/dff-email-field\";\r\nexport * from \"./lib/dff-error-panel\";\r\nexport * from \"./lib/dff-info-dialog\";\r\nexport * from \"./lib/dff-info-popup\";\r\nexport * from \"./lib/dff-info\";\r\nexport * from \"./lib/dff-kvittering\";\r\nexport * from \"./lib/dff-mat-slider-wrapper\";\r\nexport * from \"./lib/dff-side\";\r\nexport * from \"./lib/dff-simpel-dialog\";\r\nexport * from \"./lib/dff-upload-progress-overlay\";\r\nexport * from \"./lib/empty-page-badge\";\r\nexport * from \"./lib/error\";\r\nexport * from \"./lib/image-upload-button\";\r\nexport * from \"./lib/menu\";\r\nexport * from \"./lib/page-error\";\r\nexport * from \"./lib/panel\";\r\nexport * from \"./lib/pipes\";\r\nexport * from \"./lib/reveal-on-focus\";\r\nexport * from \"./lib/spinner\";\r\nexport * from \"./lib/toast\";\r\nexport * from \"./lib/util\";\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"accordion-status-indicator\",\r\n templateUrl: \"./accordion-status-indicator.component.html\",\r\n styleUrls: [\"./accordion-status-indicator.component.scss\"]\r\n})\r\nexport class AccordionStatusIndicatorComponent {\r\n @Input() public formGroup: UntypedFormGroup;\r\n\r\n public get status(): \"unknown\" | \"invalid\" | \"valid\" | \"pristine\" {\r\n if (!this.formGroup) {\r\n return \"unknown\";\r\n }\r\n if (this.formGroup.invalid) {\r\n return \"invalid\";\r\n }\r\n if (this.formGroup.dirty) {\r\n return \"valid\";\r\n }\r\n return \"pristine\";\r\n }\r\n}\r\n","","import { NgModule } from \"@angular/core\";\r\n\r\nimport { AccordionStatusIndicatorComponent } from \"./accordion-status-indicator.component\";\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AccordionStatusIndicatorComponent],\r\n declarations: [AccordionStatusIndicatorComponent],\r\n providers: []\r\n})\r\nexport class AccordionStatusIndicatorModule {}\r\n","export * from \"./accordion-status-indicator.component\";\r\nexport * from \"./accordion-status-indicator.module\";\r\n","import { Component, HostBinding, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"dff-button-panel\",\r\n templateUrl: \"./dff-button-panel.component.html\",\r\n styleUrls: [\"./dff-button-panel.component.scss\"]\r\n})\r\nexport class DffButtonPanelComponent {\r\n @HostBinding(\"class\") public get cssClass(): string {\r\n return `dff-button-panel align-${this.align}`;\r\n }\r\n\r\n @Input() public align: \"left\" | \"right\" = \"right\";\r\n}\r\n","\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\n\r\nimport { DffButtonPanelComponent } from \"./dff-button-panel/dff-button-panel.component\";\r\nimport { DffSpinnerButtonComponent } from \"./dff-spinner-button/dff-spinner-button.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule],\r\n exports: [DffButtonPanelComponent, DffSpinnerButtonComponent],\r\n declarations: [DffButtonPanelComponent, DffSpinnerButtonComponent],\r\n providers: []\r\n})\r\nexport class DffButtonModule {}\r\n","import { Component, EventEmitter, HostBinding, Input, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"dff-spinner-button\",\r\n templateUrl: \"./dff-spinner-button.component.html\",\r\n styleUrls: [\"./dff-spinner-button.component.scss\"]\r\n})\r\nexport class DffSpinnerButtonComponent {\r\n @HostBinding(\"class\") public cssClass = \"dff-spinner-button\";\r\n @Input() public color = \"primary\";\r\n @Input() public disabled = false;\r\n @Input() public spinning = false;\r\n @Input() public buttonType: string = \"button\";\r\n @Output() public click = new EventEmitter();\r\n\r\n public onClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (!this.disabled) {\r\n this.click.emit(event);\r\n }\r\n }\r\n\r\n public killHostClickListener(event: MouseEvent): void {\r\n // Det er altid et (click)-event på en komponents host-element.\r\n // Når vi disabler knappen, vil mouse clicks ryge videre til host-elementet, som så sørger for at emitte click-eventet.\r\n // Vi lægger derfor et element bagved knappen og sørger for at fange mouse clicks via denne og sikre at de\r\n // ikke rygere videre op til host-elementet.\r\n event.stopPropagation();\r\n }\r\n}\r\n","\r\n \r\n @if (spinning) {\r\n \r\n }\r\n \r\n \r\n\r\n","export * from \"./dff-button.module\";\r\n","import { Injectable } from \"@angular/core\";\r\nimport { NativeDateAdapter } from \"@angular/material/core\";\r\n\r\nimport { formatDate, parseDate } from \"@dffedb/util\";\r\n\r\nfunction padLeft(text: string, padChar: string, size: number): string {\r\n return (padChar.repeat(size) + text).substr(size * -1, size);\r\n}\r\n\r\nfunction dffParseDateExact(dateStr: string, template: string): Date | null {\r\n const result = parseDate(dateStr, template);\r\n return dateStr === formatDate(result, template) ? result : null;\r\n}\r\n\r\n// dffParseDate parser en dato-streng i dansk format.\r\n// Hvis man tænker sig at aktuelle dato er 07. maj 2019, vil man opnå følgende resultater:\r\n// Input: 20-05-2019, Output: 20-05-2019\r\n// Input: 20/05/2019, Output: 20-05-2019\r\n// Input: 200519, Output: 20-05-2019\r\n// Input: 20-05, Output: 20-05-2019\r\n// Input: 2005, Output: 20-05-2019\r\n// Input: 20, Output: 20-05-2019\r\n// Input: d, Output: 07-05-2019\r\nfunction dffParseDate(value: string): Date | null {\r\n const today = new Date();\r\n const currentYear = today.getFullYear().toString();\r\n const currentMonth = padLeft((today.getMonth() + 1).toString(), \"0\", 2);\r\n return (\r\n dffParseDateExact(value, \"DD-MM-YYYY\") || // 20-05-2019 -> 20-05-2019\r\n dffParseDateExact(value, \"DD/MM/YYYY\") || // 20/05/2019 -> 20-05-2019\r\n dffParseDateExact(value, \"DDMMYY\") || // 200519 -> 20-05-2019\r\n dffParseDateExact(value + currentYear, \"DD-MMYYYY\") || // 20-05 -> 20-05-2019\r\n dffParseDateExact(value + currentYear, \"DD/MMYYYY\") || // 20/05 -> 20-05-2019\r\n dffParseDateExact(value + currentYear, \"DDMMYYYY\") || // 2005 -> 20-05-2019\r\n dffParseDateExact(value + currentMonth + currentYear, \"DDMMYYYY\") || // 20 -> 20-05-2019\r\n ((value || \"\").toUpperCase() === \"D\" ? new Date() : null) // d -> 20-05-2019\r\n );\r\n}\r\n\r\n// dffFormatDate formatterer en dato til en streng i dansk format.\r\n// Default benyttes formatet 'DD-MM-YYYY', så man få vist dato som f.eks. '20-05-2019'\r\nfunction dffFormatDate(date: Date, template: string = \"DD-MM-YYYY\"): string {\r\n return formatDate(date, template);\r\n}\r\n\r\n@Injectable()\r\nexport class DffDateAdapter extends NativeDateAdapter {\r\n public parse(value: any): Date | null {\r\n return dffParseDate(value);\r\n }\r\n\r\n public format(date: Date, _displayFormat: any): string {\r\n return dffFormatDate(date);\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS } from \"@angular/material/core\";\r\n\r\nimport { DffDateAdapter } from \"./dff-date-adapter\";\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: DffDateAdapter\r\n }\r\n ]\r\n})\r\nexport class DffDateModule {}\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\n@NgModule({\r\n imports: [DffDateModule],\r\n providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS }]\r\n})\r\nexport class MatDffDateModule {}\r\n","export * from \"./dff-date.module\";\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl } from \"@angular/forms\";\r\nimport { addDays, formatDate } from \"@dffedb/util\";\r\n\r\n@Component({\r\n selector: \"dff-date-field\",\r\n templateUrl: \"./dff-date-field.component.html\",\r\n styleUrls: [\"./dff-date-field.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: DffDateFieldComponent,\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DffDateFieldComponent implements ControlValueAccessor, OnInit {\r\n @Input() public formControl: UntypedFormControl;\r\n @Input() public placeholder: string;\r\n @Input() public required = false;\r\n @Input() public hint: string;\r\n @Input() public min: Date;\r\n @Input() public max: Date;\r\n @Input() public label: string;\r\n\r\n public ngOnInit(): void {\r\n if (!this.formControl) {\r\n throw new Error(\"DffDateFieldComponent: formControl forventer en FormControl-instans.\");\r\n }\r\n }\r\n\r\n public getErrorText(formControl: UntypedFormControl): string {\r\n return (\r\n this.getRequiredErrorText(formControl.errors) ||\r\n this.getMinErrorText(formControl.errors) ||\r\n this.getMaxErrorText(formControl.errors) ||\r\n this.getAnyErrorText(formControl.errors)\r\n );\r\n }\r\n\r\n // Dummy ControlValueAccessor-metoder for at kunne have en [formControl]-property\r\n public writeValue(): void {}\r\n public registerOnChange(): void {}\r\n public registerOnTouched(): void {}\r\n\r\n private getRequiredErrorText(errors: any): string {\r\n if (!errors.required) {\r\n return null;\r\n }\r\n return errors.matDatepickerParse ? null : \"Indtast en dato\";\r\n }\r\n\r\n private getMinErrorText(errors: any): string {\r\n return errors.matDatepickerMin ? `Indtast en dato større end ${this.formatDate(addDays(errors.matDatepickerMin.min, -1))}` : null;\r\n }\r\n\r\n private getMaxErrorText(errors: any): string {\r\n return errors.matDatepickerMax ? `Indtast en dato mindre end ${this.formatDate(addDays(errors.matDatepickerMax.max, 1))}` : null;\r\n }\r\n\r\n private getAnyErrorText(errors: any): string {\r\n return errors ? \"Indtast en gyldig dato\" : null;\r\n }\r\n\r\n private formatDate(min: Date): string {\r\n return formatDate(min, \"DD-MM-YYYY\");\r\n }\r\n}\r\n","\r\n {{ placeholder }}\r\n \r\n \r\n \r\n @if (hint) {\r\n {{ hint }}\r\n }\r\n @if (formControl.errors) {\r\n {{ getErrorText(formControl) }}\r\n }\r\n \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatDatepickerIntl, MatDatepickerModule } from \"@angular/material/datepicker\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\n\r\nimport { DffDateFieldComponent } from \"./dff-date-field.component\";\r\nimport { MAT_DATE_LOCALE } from \"@angular/material/core\";\r\nimport { CustomDatepickerIntl } from \"./dff-fate-field.service\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, MatDatepickerModule, MatInputModule, MatFormFieldModule, ReactiveFormsModule],\r\n exports: [DffDateFieldComponent],\r\n declarations: [DffDateFieldComponent],\r\n providers: [\r\n { provide: MAT_DATE_LOCALE, useValue: \"da-DK\" }, // Change to your locale\r\n { provide: MatDatepickerIntl, useClass: CustomDatepickerIntl }\r\n ]\r\n})\r\nexport class DffDateFieldModule {}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatDatepickerIntl } from \"@angular/material/datepicker\";\r\n\r\n@Injectable()\r\nexport class CustomDatepickerIntl extends MatDatepickerIntl {\r\n closeCalendarLabel = \"Luk Kalender\";\r\n openCalendarLabel = \"Åbn kalender\";\r\n prevMonthLabel = \"Forrige måned\";\r\n nextMonthLabel = \"Næste måned\";\r\n prevMultiYearLabel = \"Forrige 24 år\";\r\n nextMultiYearLabel = \"Næste 24 år\";\r\n switchToMonthViewLabel = \"Skift til månedsvisning\";\r\n switchToMultiYearViewLabel = \"Skift til flerårig visning\";\r\n cancelLabel = \"Annuller\";\r\n setTodayLabel = \"Indstil i dag\";\r\n weekNumberLabel = \"Ugenummer\";\r\n changesDetected = \"Ændringer registreret\";\r\n saveAndCloseLabel = \"Gem og luk\";\r\n}\r\n","export * from \"./dff-date-field.module\";\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"dff-email-field\",\r\n templateUrl: \"./dff-email-field.component.html\",\r\n styleUrls: [\"./dff-email-field.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: DffEmailFieldComponent,\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DffEmailFieldComponent implements ControlValueAccessor, OnInit {\r\n @Input() public formControl: UntypedFormControl;\r\n @Input() public placeholder: string;\r\n @Input() public hint: string;\r\n\r\n public ngOnInit(): void {\r\n if (!this.formControl) {\r\n throw new Error(\"DffEmailFieldComponent: formControl forventer en FormControl-instans.\");\r\n }\r\n }\r\n\r\n public getErrorText(formControl: UntypedFormControl): string {\r\n return (\r\n this.getRequiredErrorText(formControl.errors) ||\r\n this.getEmailErrorText(formControl.errors) ||\r\n this.getAnyErrorText(formControl.errors)\r\n );\r\n }\r\n\r\n // Dummy ControlValueAccessor-metoder for at kunne have en [formControl]-property\r\n public writeValue(): void {}\r\n public registerOnChange(): void {}\r\n public registerOnTouched(): void {}\r\n\r\n private getRequiredErrorText(errors: any): string {\r\n if (!errors.required) {\r\n return null;\r\n }\r\n return errors.matDatepickerParse ? null : \"Indtast en værdi\";\r\n }\r\n\r\n private getEmailErrorText(errors: any): string {\r\n return errors.email ? \"Indtast en gyldig e-mail\" : null;\r\n }\r\n\r\n private getAnyErrorText(errors: any): string {\r\n return errors ? \"Indtast en gyldig e-mail\" : null;\r\n }\r\n}\r\n","\r\n {{ placeholder }}\r\n \r\n @if (hint) {\r\n {{ hint }}\r\n }\r\n @if (formControl.errors) {\r\n {{ getErrorText(formControl) }}\r\n }\r\n\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\n\r\nimport { DffEmailFieldComponent } from \"./dff-email-field.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, MatInputModule, MatFormFieldModule, ReactiveFormsModule],\r\n exports: [DffEmailFieldComponent],\r\n declarations: [DffEmailFieldComponent],\r\n providers: []\r\n})\r\nexport class DffEmailFieldModule {}\r\n","export * from \"./dff-email-field.module\";\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\nimport { DffError, getErrorDetails } from \"@dffedb/util\";\r\n\r\n@Component({\r\n selector: \"dff-error-panel\",\r\n templateUrl: \"./dff-error-panel.component.html\",\r\n styleUrls: [\"./dff-error-panel.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DffErrorPanelComponent implements OnChanges {\r\n @Input() public title = \"Der er opstået en fejl\";\r\n @Input() public error: any;\r\n public message = \"\";\r\n public logId = \"\";\r\n public details = \"\";\r\n public detailsVisible = false;\r\n\r\n public async ngOnChanges(changes: SimpleChanges): Promise {\r\n if (changes[\"error\"]?.currentValue !== changes[\"error\"]?.previousValue) {\r\n this.message = getMessage(changes[\"error\"].currentValue);\r\n this.logId = getLogId(changes[\"error\"].currentValue);\r\n this.details = await getDetails(changes[\"error\"].currentValue);\r\n }\r\n }\r\n}\r\n\r\nasync function getDetails(error: any): Promise {\r\n return getErrorDetails(error);\r\n // return error instanceof DffError2 ? await error.getErrorDetails() : error instanceof Error ? error.stack : \"\";\r\n}\r\n\r\nfunction getMessage(error: any): string {\r\n return (error && (error.friendlyMessage || error.message || error)) || \"Der er opstået en ukendt fejl\";\r\n}\r\n\r\nfunction getLogId(error: any): string {\r\n return error instanceof DffError ? error.logId : \"\";\r\n}\r\n","@if (error) {\r\n
    \r\n
    {{ title }}
    \r\n
    {{ message }}
    \r\n
    \r\n @if (logId) {\r\n Detaljer\r\n }\r\n @if (detailsVisible) {\r\n
    {{ details }}
    \r\n }\r\n
    \r\n
    \r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nimport { DffErrorPanelComponent } from \"./dff-error-panel.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n exports: [DffErrorPanelComponent],\r\n declarations: [DffErrorPanelComponent]\r\n})\r\nexport class DffErrorPanelModule {}\r\n","export * from \"./dff-error-panel.component\";\r\nexport * from \"./dff-error-panel.module\";\r\n","import { Component, Inject } from \"@angular/core\";\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\r\n\r\n@Component({\r\n selector: \"dff-info-dialog\",\r\n styleUrls: [\"./dff-info-dialog.component.scss\"],\r\n templateUrl: \"./dff-info-dialog.component.html\"\r\n})\r\nexport class DffInfoDialogComponent {\r\n constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) {}\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n @if (data.titel) {\r\n {{ data.titel }}\r\n }\r\n @if (data.tekst) {\r\n

    {{ data.tekst }}

    \r\n }\r\n
    \r\n\r\n \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { mdiCheckCircleOutline, mdiCloseCircleOutline } from \"@mdi/js\";\r\n\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { DffInfoDialog } from \"./dff-info-dialog\";\r\nimport { DffInfoDialogComponent } from \"./dff-info-dialog.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, ReactiveFormsModule, MatDialogModule, MatButtonModule, MatIconModule],\r\n declarations: [DffInfoDialogComponent],\r\n providers: [DffInfoDialog]\r\n})\r\nexport class DffInfoDialogModule {\r\n constructor(iconRegistry: SvgIconRegistry) {\r\n iconRegistry.registerIcon(mdiCheckCircleOutline, \"dff-info-dialog-success-icon\");\r\n iconRegistry.registerIcon(mdiCloseCircleOutline, \"dff-info-dialog-error-icon\");\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { DffInfoDialogComponent } from \"./dff-info-dialog.component\";\r\n\r\n// Provides i DffInfoDialogModule (og ikke \"root\") for at understøtte dynamisk oprettelse af DffInfoDialogComponent\r\n@Injectable()\r\nexport class DffInfoDialog {\r\n constructor(private readonly dialog: MatDialog) {}\r\n\r\n public open(titel: string, tekst: string, cssClass: string): Observable {\r\n const dialog = this.dialog.open(DffInfoDialogComponent, {\r\n data: { titel, tekst, cssClass, icon: `dff-info-dialog-${cssClass}-icon` }\r\n });\r\n return dialog.afterClosed();\r\n }\r\n\r\n public success(titel: string, tekst: string): Observable {\r\n return this.open(titel, tekst, \"success\");\r\n }\r\n\r\n public error(titel: string, tekst: string): Observable {\r\n return this.open(titel, tekst, \"error\");\r\n }\r\n}\r\n","export * from \"./dff-info-dialog.module\";\r\nexport * from \"./dff-info-dialog\";\r\n","import { Component, HostBinding, Input, OnInit } from \"@angular/core\";\r\n\r\nimport { interval } from \"rxjs\";\r\nimport { filter, first } from \"rxjs/operators\";\r\n\r\nimport { isValidDate } from \"@dffedb/util\";\r\n\r\n@Component({\r\n selector: \"dff-info-popup\",\r\n styleUrls: [\"./dff-info-popup.component.scss\"],\r\n templateUrl: \"./dff-info-popup.component.html\"\r\n})\r\nexport class DffInfoPopupComponent implements OnInit {\r\n private manuallyHidden = false;\r\n\r\n @HostBinding(\"class.dff-info-popup\") public classDffInfoPopup = true;\r\n @HostBinding(\"class.init\") public classInit = true;\r\n @HostBinding(\"class.visible\") public classVisible = false;\r\n\r\n @Input() public header: string;\r\n @Input() public content: string;\r\n @Input() public imageSrc: string;\r\n @Input() public buttonText: string;\r\n @Input() public buttonHref: string;\r\n @Input() public buttonTarget: string;\r\n @Input() public showAfterMs: number;\r\n @Input() public hideAfterMs: number;\r\n @Input() public visibleStartTime: Date;\r\n @Input() public visibleEndTime: Date;\r\n\r\n constructor() {}\r\n\r\n public ngOnInit(): void {\r\n this.showAfterMs = +this.showAfterMs;\r\n this.hideAfterMs = +this.hideAfterMs;\r\n let startDate = this.visibleStartTime;\r\n let endDate = this.visibleEndTime;\r\n\r\n // Adjusts the time zone to GMT/GMT+0, as that is what comes from Umbraco calendar component\r\n startDate.setHours(startDate.getHours() - 2);\r\n endDate.setHours(endDate.getHours() - 2);\r\n\r\n if (!this.isDateInInterval(new Date(), startDate, endDate)) {\r\n return;\r\n }\r\n\r\n interval(this.showAfterMs)\r\n .pipe(first())\r\n .subscribe(() => {\r\n this.classInit = false;\r\n this.classVisible = true;\r\n });\r\n\r\n if (this.hideAfterMs !== 0) {\r\n interval(this.showAfterMs + this.hideAfterMs)\r\n .pipe(\r\n filter(() => !this.manuallyHidden),\r\n first()\r\n )\r\n .subscribe(() => {\r\n this.classVisible = false;\r\n });\r\n }\r\n }\r\n\r\n public isDateInInterval(date: Date, intervalFrom: Date, intervalTo: Date): boolean {\r\n if (!isValidDate(date)) {\r\n return false;\r\n }\r\n if (isValidDate(intervalFrom) && isValidDate(intervalTo)) {\r\n return date >= intervalFrom && date <= intervalTo;\r\n }\r\n if (isValidDate(intervalFrom)) {\r\n return date >= intervalFrom;\r\n }\r\n if (isValidDate(intervalTo)) {\r\n return date <= intervalTo;\r\n }\r\n return true;\r\n }\r\n\r\n public onShowPopup(event: MouseEvent): void {\r\n event.preventDefault();\r\n this.classVisible = true;\r\n }\r\n\r\n public onHidePopup(event: MouseEvent): void {\r\n event.preventDefault();\r\n this.manuallyHidden = true;\r\n this.classVisible = false;\r\n }\r\n}\r\n","
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n @if (imageSrc) {\r\n \"Billede\"\r\n }\r\n @if (header) {\r\n

    {{ header }}

    \r\n }\r\n @if (content) {\r\n
    \r\n }\r\n @if (buttonHref && buttonText) {\r\n {{ buttonText }}\r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { mdiClose, mdiInformationOutline } from \"@mdi/js\";\r\n\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { DffInfoPopupComponent } from \"./dff-info-popup.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, ReactiveFormsModule, MatButtonModule, MatIconModule],\r\n declarations: [DffInfoPopupComponent],\r\n exports: [DffInfoPopupComponent],\r\n providers: []\r\n})\r\nexport class DffInfoPopupModule {\r\n constructor(iconRegistry: SvgIconRegistry) {\r\n iconRegistry.registerIcon(mdiClose, \"dff-info-popup-close\");\r\n iconRegistry.registerIcon(mdiInformationOutline, \"dff-info-popup-open\");\r\n }\r\n}\r\n","export * from \"./dff-info-popup.component\";\r\nexport * from \"./dff-info-popup.module\";\r\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"dff-info\",\r\n templateUrl: \"./dff-info.component.html\",\r\n styleUrls: [\"./dff-info.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DffInfoComponent {\r\n public type: \"success\" | \"error\" | \"warning\";\r\n}\r\n","\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { DffInfoComponent } from \"./dff-info.component\";\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [DffInfoComponent],\r\n declarations: [DffInfoComponent],\r\n providers: []\r\n})\r\nexport class DffInfoModule {}\r\n","export * from \"./dff-info.module\";\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\nimport { DffGroupedContent } from \"@dffedb/util\";\r\n\r\n@Component({\r\n selector: \"dff-kvittering\",\r\n templateUrl: \"./dff-kvittering.component.html\",\r\n styleUrls: [\"./dff-kvittering.component.scss\"]\r\n})\r\nexport class DffKvitteringComponent {\r\n @Input() public kvittering: DffGroupedContent;\r\n}\r\n","\r\n @for (group of kvittering.groups; track group; let i = $index) {\r\n @if (i !== 0) {\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n @for (row of group.rows; track row) {\r\n \r\n \r\n \r\n \r\n }\r\n }\r\n

    {{ group.title }}
    {{ row.key }}:
    \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nimport { DffKvitteringComponent } from \"./dff-kvittering.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n exports: [DffKvitteringComponent],\r\n declarations: [DffKvitteringComponent]\r\n})\r\nexport class DffKvitteringModule {}\r\n","import { DffContentGroup, DffContentRow, DffGroupedContent } from \"@dffedb/util\";\r\n\r\nexport function genererKvitteringMailHtml(model: DffGroupedContent): string {\r\n const css = \"width:100%;\";\r\n const groupsHtml = model.groups.map((group, index) => buildGroupHtml(group, index)).join(\"\");\r\n return buildPanelHtml(`${groupsHtml}
    `);\r\n}\r\n\r\nfunction buildGroupHtml(group: DffContentGroup, index: number): string {\r\n return buildSpacerHtml(index) + buildHeaderHtml(group) + buildRowsHtml(group);\r\n}\r\n\r\nfunction buildSpacerHtml(index: number): string {\r\n const css = \"font-size:0;height:0;margin:10px 0;border-top:1px dashed silver;\";\r\n return index === 0 ? \"\" : `
     
    `;\r\n}\r\n\r\nfunction buildHeaderHtml(group: DffContentGroup): string {\r\n const css = \"margin: 0;font-weight: bold;text-transform: uppercase;font-size: 0.8em;padding-bottom: 5px;\";\r\n return `${group.title}`;\r\n}\r\n\r\nfunction buildRowsHtml(group: DffContentGroup): string {\r\n return group.rows.map(row => buildRowHtml(row)).join(\"\");\r\n}\r\n\r\nfunction buildRowHtml(row: DffContentRow): string {\r\n const css1 = \"vertical-align:top;white-space:nowrap;\";\r\n const css2 = \"width:100%;padding-left:5px;font-weight:bold;\";\r\n const value = row.value || \" \";\r\n return `${row.key}:${value}`;\r\n}\r\n\r\nfunction buildPanelHtml(content: string): string {\r\n return `\r\n \r\n \r\n \r\n \r\n
    \r\n ${content}\r\n
    `;\r\n}\r\n","export * from \"./dff-kvittering.component\";\r\nexport * from \"./dff-kvittering.module\";\r\nexport * from \"./dff-mail-kvittering.util\";\r\n","import { Component, ContentChild, HostBinding, Input } from \"@angular/core\";\r\nimport { MatSlider } from \"@angular/material/slider\";\r\n\r\n@Component({\r\n selector: \"dff-mat-slider-wrapper\",\r\n templateUrl: \"./dff-mat-slider-wrapper.component.html\",\r\n styleUrls: [\"./dff-mat-slider-wrapper.component.scss\"]\r\n})\r\nexport class DffMatSliderWrapperComponent {\r\n @HostBinding(\"class\") public class = \"dff-mat-slider-wrapper\";\r\n @ContentChild(MatSlider) public matSlider: MatSlider;\r\n\r\n @Input() public suffix: string;\r\n\r\n constructor() {}\r\n\r\n // TODO 14420: Should maybe just be removed, as transform label is now part of angular slider\r\n // public getSliderValueLabelTransform(): string {\r\n // const percent = (this.matSlider && this.matSlider.step) || 0;\r\n // return `translateX(${percent * 100 - 50}%)`;\r\n // }\r\n\r\n public formatValue(value: number): string | number {\r\n return (this.matSlider && this.matSlider.displayWith(value)) || \"\";\r\n }\r\n}\r\n","\r\n\r\n{{ formatValue(matSlider?.min) + suffix }}\r\n{{ formatValue(matSlider?.max) + suffix }}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatSliderModule } from \"@angular/material/slider\";\r\n\r\nimport { DffMatSliderWrapperComponent } from \"./dff-mat-slider-wrapper.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatSliderModule],\r\n declarations: [DffMatSliderWrapperComponent],\r\n exports: [DffMatSliderWrapperComponent]\r\n})\r\nexport class DffMatSliderWrapperModule {}\r\n","export * from \"./dff-mat-slider-wrapper.component\";\r\nexport * from \"./dff-mat-slider-wrapper.module\";\r\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"dff-side-tekst\",\r\n template: `\r\n @if (titel) {\r\n

    {{ titel }}

    \r\n }\r\n @if (tekst) {\r\n
    \r\n }\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n margin-bottom: 20px;\r\n }\r\n :host ::ng-deep p {\r\n margin: 0 0 5px 0;\r\n }\r\n strong {\r\n display: block;\r\n margin: 0 0 5px 0;\r\n }\r\n h2 {\r\n font: 400 14px / 20px Roboto, \"Helvetica Neue\", sans-serif;\r\n letter-spacing: normal;\r\n margin: 0 0 5px 0;\r\n font-weight: 600;\r\n }\r\n p {\r\n margin: 0 0 5px 0;\r\n }\r\n `\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DffSideTekstComponent {\r\n @Input() public titel: string;\r\n @Input() public tekst: string;\r\n}\r\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"dff-side-titel\",\r\n template: `

    `,\r\n styles: [\r\n `\r\n h1 {\r\n margin-top: 0;\r\n font-weight: 500;\r\n }\r\n\r\n :host ::ng-deep h1 button {\r\n top: -4px;\r\n margin-right: -6px;\r\n }\r\n `\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DffSideTitelComponent {}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { catchError, map, startWith, switchMap } from \"rxjs/operators\";\r\n\r\nimport { DffRouteChangingObserver } from \"@dffedb/router\";\r\n\r\n@Component({\r\n selector: \"dff-side\",\r\n template: `\r\n @if (vm$ | async; as vm) {\r\n @if (vm.showContent) {\r\n \r\n }\r\n @if (vm.error) {\r\n \r\n }\r\n @if (!vm.showContent && !vm.error) {\r\n \r\n }\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DffSideComponent implements OnInit {\r\n public vm$: Observable<{ showContent: boolean; error: any }>;\r\n @Input() public observable: Observable;\r\n\r\n constructor(private readonly routeChangingObserver: DffRouteChangingObserver) { }\r\n\r\n public ngOnInit(): void {\r\n // viser en spinner:\r\n // - Når data loades på aktuelle side - kræver angivelse af [observable].\r\n // - Når der navigeres til en anden side (intil navigationen er overstået).\r\n // Dette er lavet i tilfælde af langsom route guard (skal måske spørge serveren om vi er authenticated).\r\n const value$ = this.observable || of({});\r\n const notNavigating$ = this.routeChangingObserver.valueChanges.pipe(map(changing => !changing));\r\n const showContent$ = value$.pipe(switchMap(() => notNavigating$));\r\n this.vm$ = showContent$.pipe(\r\n startWith(false),\r\n map(showContent => ({ showContent, error: null })),\r\n catchError(error => of({ showContent: false, error }))\r\n );\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\n\r\nimport { PageErrorModule } from \"../page-error\";\r\nimport { DffSideTekstComponent } from \"./dff-side-tekst.component\";\r\nimport { DffSideTitelComponent } from \"./dff-side-titel.component\";\r\nimport { DffSideComponent } from \"./dff-side.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, PageErrorModule, MatProgressSpinnerModule],\r\n exports: [DffSideComponent, DffSideTekstComponent, DffSideTitelComponent],\r\n declarations: [DffSideComponent, DffSideTekstComponent, DffSideTitelComponent]\r\n})\r\nexport class DffSideModule {}\r\n","export * from \"./dff-side-tekst.component\";\r\nexport * from \"./dff-side-titel.component\";\r\nexport * from \"./dff-side.component\";\r\nexport * from \"./dff-side.module\";\r\nexport * from \"./model/dff-side-tekst.model\";\r\nexport * from \"./model/dff-side-titel.model\";\r\n","export interface DffSideTekst {\r\n sideUndertitel?: string;\r\n sideTekst?: string;\r\n}\r\n","export interface DffSideTitel {\r\n sideTitel: string;\r\n}\r\n","import { Component, Inject } from \"@angular/core\";\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\r\n\r\n@Component({\r\n selector: \"dff-simpel-dialog\",\r\n styleUrls: [\"./dff-simpel-dialog.component.scss\"],\r\n templateUrl: \"./dff-simpel-dialog.component.html\",\r\n host: {\r\n role: \"dialog\",\r\n \"[attr.aria-labelledby]\": \"dialogTitle\",\r\n \"[attr.aria-describedby]\": \"dialogDesc\"\r\n }\r\n})\r\nexport class DffSimpelDialogComponent {\r\n constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) {}\r\n\r\n public dialogTitle = \"dialogTitle\";\r\n public dialogDesc = \"dialogDesc\";\r\n}\r\n","@if (data.titel) {\r\n

    {{ data.titel }}

    \r\n}\r\n
    \r\n\r\n @for (knap of data.knapper; track knap; let i = $index) {\r\n \r\n {{ knap }}\r\n \r\n }\r\n\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\n\r\nimport { DffSimpelDialog } from \"./dff-simpel-dialog\";\r\nimport { DffSimpelDialogComponent } from \"./dff-simpel-dialog.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, ReactiveFormsModule, MatDialogModule, MatButtonModule],\r\n declarations: [DffSimpelDialogComponent],\r\n providers: [DffSimpelDialog]\r\n})\r\nexport class DffSimpelDialogModule {}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { SafeHtml } from \"@angular/platform-browser\";\r\n\r\nimport { DffSimpelDialogComponent } from \"./dff-simpel-dialog.component\";\r\n\r\n// Provides i DffSimpelDialogModule (og ikke \"root\") for at understøtte dynamisk oprettelse af DffSimpelDialogComponent\r\n@Injectable()\r\nexport class DffSimpelDialog {\r\n constructor(private readonly dialog: MatDialog) {}\r\n\r\n public async open(titel: string, tekst: string | SafeHtml, knapper: string[], config: DffSimpelDialogConfig = {}): Promise {\r\n const matDialogConfig = { ...config, data: { titel, tekst, knapper } };\r\n const dialog = this.dialog.open(DffSimpelDialogComponent, matDialogConfig);\r\n return await dialog.afterClosed().toPromise();\r\n }\r\n\r\n public async openJaNej(titel: string, tekst: string | SafeHtml, config: DffSimpelDialogConfig = {}): Promise {\r\n return (await this.open(titel, tekst, [\"JA\", \"NEJ\"], config)) === \"JA\";\r\n }\r\n\r\n public async openOkAnnuller(titel: string, tekst: string | SafeHtml, config: DffSimpelDialogConfig = {}): Promise {\r\n return (await this.open(titel, tekst, [\"ANNULLER\", \"OK\"], config)) === \"OK\";\r\n }\r\n\r\n public async openOk(titel: string, tekst: string | SafeHtml, config: DffSimpelDialogConfig = {}): Promise {\r\n await this.open(titel, tekst, [\"OK\"], config);\r\n }\r\n}\r\n\r\nexport interface DffSimpelDialogConfig {\r\n maxWidth?: number;\r\n}\r\n","export * from \"./dff-simpel-dialog.module\";\r\nexport * from \"./dff-simpel-dialog\";\r\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"dff-upload-progress-overlay\",\r\n templateUrl: \"./dff-upload-progress-overlay.component.html\",\r\n styleUrls: [\"./dff-upload-progress-overlay.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DffUploadProgressOverlayComponent {\r\n @Input() public value: number;\r\n}\r\n"," \r\n

    {{ value }}%

    \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\n\r\nimport { DffUploadProgressOverlayComponent } from \"./dff-upload-progress-overlay.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatProgressSpinnerModule],\r\n exports: [DffUploadProgressOverlayComponent],\r\n declarations: [DffUploadProgressOverlayComponent]\r\n})\r\nexport class DffUploadProgressOverlayModule {}\r\n","export * from \"./dff-upload-progress-overlay.component\";\r\nexport * from \"./dff-upload-progress-overlay.module\";\r\n","import { animate, keyframes, style, transition, trigger } from \"@angular/animations\";\r\nimport { Component, HostBinding, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"empty-page-badge\",\r\n templateUrl: \"./empty-page-badge.component.html\",\r\n styleUrls: [\"./empty-page-badge.component.scss\"],\r\n animations: [\r\n trigger(\"slideInFromTop\", [\r\n transition(\":enter\", [\r\n animate(\r\n \"200ms ease-in\",\r\n keyframes([\r\n style({ opacity: 0, transform: \"scale(1)\", offset: 0 }),\r\n style({ opacity: 0.5, transform: \"scale(1.05)\", offset: 0.5 }),\r\n style({ opacity: 1, transform: \"scale(1)\", offset: 1 })\r\n ])\r\n )\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class EmptyPageBadgeComponent {\r\n @Input() public overskrift = \"\";\r\n @Input() public iconClass = \"\";\r\n @Input() public matIcon = \"\";\r\n @Input() public svgIcon = \"\";\r\n @HostBinding(\"@slideInFromTop\") public slideInFromTop = true;\r\n @HostBinding(\"class.empty-page-badge\") public cssClass = true;\r\n}\r\n","@if (iconClass) {\r\n
    \r\n}\r\n@if (matIcon) {\r\n {{ matIcon }}\r\n}\r\n@if (svgIcon) {\r\n \r\n}\r\n

    {{ overskrift }}

    \r\n\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { EmptyPageBadgeComponent } from \"./empty-page-badge.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatIconModule],\r\n exports: [EmptyPageBadgeComponent],\r\n declarations: [EmptyPageBadgeComponent]\r\n})\r\nexport class EmptyPageBadgeModule {}\r\n","export * from \"./empty-page-badge.component\";\r\nexport * from \"./empty-page-badge.module\";\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\nimport { DffError, getErrorDetails } from \"@dffedb/util\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"error\",\r\n templateUrl: \"./error.component.html\",\r\n styleUrls: [\"./error.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ErrorComponent implements OnChanges {\r\n @Input() public error: any;\r\n public message = \"\";\r\n public logId = \"\";\r\n public details = \"\";\r\n public detailsVisible = false;\r\n\r\n public async ngOnChanges(changes: SimpleChanges): Promise {\r\n if (changes[\"error\"]?.currentValue !== changes[\"error\"]?.previousValue) {\r\n this.message = getMessage(changes[\"error\"].currentValue);\r\n this.logId = getLogId(changes[\"error\"].currentValue);\r\n this.details = await getDetails(changes[\"error\"].currentValue);\r\n }\r\n }\r\n}\r\n\r\nasync function getDetails(error: any): Promise {\r\n return getErrorDetails(error);\r\n}\r\n\r\nfunction getMessage(error: any): string {\r\n return (error && (error.friendlyMessage || error.message || error)) || \"Der er opstået en ukendt fejl\";\r\n}\r\n\r\nfunction getLogId(error: any): string {\r\n return error instanceof DffError ? error.logId : \"\";\r\n}\r\n","@if (error) {\r\n
    \r\n

    Der er opstået en fejl

    \r\n

    {{ message }}

    \r\n @if (logId) {\r\n {{ logId }}\r\n }\r\n @if (detailsVisible) {\r\n
    {{ details }}
    \r\n }\r\n
    \r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nimport { EmptyPageBadgeModule } from \"../empty-page-badge\";\r\nimport { ErrorComponent } from \"./error.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, EmptyPageBadgeModule],\r\n exports: [ErrorComponent],\r\n declarations: [ErrorComponent]\r\n})\r\nexport class ErrorModule {}\r\n","export * from \"./error.component\";\r\nexport * from \"./error.module\";\r\n","import { Component, EventEmitter, Output } from \"@angular/core\";\r\n\r\nimport { getImageFromFile } from \"../util/image-file.util\";\r\n\r\n@Component({\r\n selector: \"image-upload-button\",\r\n template: `\r\n \r\n \r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n }\r\n `\r\n ]\r\n})\r\nexport class ImageUploadButtonComponent {\r\n @Output() public add = new EventEmitter();\r\n\r\n public onFileChanged(event: any): void {\r\n [...event.target.files].map((file: any) => {\r\n if (file.type === \"application/pdf\") {\r\n const reader = new FileReader();\r\n reader.onload = (ev: any) => {\r\n const pdf = new Blob([ev.target.result], { type: \"application/pdf\" });\r\n const pdfFile: NoteBilagPDF = {\r\n filNavn: file.name,\r\n fil: pdf\r\n };\r\n this.add.emit(pdfFile);\r\n };\r\n\r\n reader.readAsArrayBuffer(file);\r\n return;\r\n } else {\r\n getImageFromFile(file).then((image) => {\r\n this.add.emit(image as HTMLImageElement);\r\n });\r\n }\r\n });\r\n event.target.value = \"\"; // Ellers reagerer feltet ikke på at man indsætter samme billede to gange.\r\n }\r\n}\r\n\r\ninterface NoteBilagPDF {\r\n filNavn: string;\r\n fil: Blob;\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { mdiCameraPlus } from \"@mdi/js\";\r\n\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { ImageUploadButtonComponent } from \"./image-upload-button.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatButtonModule, MatIconModule],\r\n exports: [ImageUploadButtonComponent],\r\n declarations: [ImageUploadButtonComponent],\r\n providers: []\r\n})\r\nexport class ImageUploadButtonModule {\r\n constructor(svgIconRegistry: SvgIconRegistry) {\r\n svgIconRegistry.registerIcon(mdiCameraPlus, \"camera-plus\");\r\n }\r\n}\r\n","export * from \"./image-upload-button.component\";\r\nexport * from \"./image-upload-button.module\";\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\n\r\nimport { DffRedirectService } from \"@dffedb/router\";\r\n\r\nimport { MenuItem } from \"../model/menu-item.model\";\r\nimport { animate, style, transition, trigger } from \"@angular/animations\";\r\n\r\n@Component({\r\n selector: \"dff-sidenav-menu\",\r\n templateUrl: \"./dff-sidenav-menu.component.html\",\r\n styleUrls: [\"./dff-sidenav-menu.component.scss\"],\r\n animations: [\r\n trigger(\"inOutAnimation\", [\r\n transition(\":enter\", [style({ transform: \"translateX(100%)\" }), animate(\"0.4s ease-out\", style({ transform: \"translateX(0)\" }))]),\r\n transition(\":leave\", [style({ transform: \"translateX(0)\" }), animate(\"0.4s ease-in\", style({ transform: \"translateX(100%)\" }))])\r\n ])\r\n ]\r\n})\r\nexport class DffSidenavMenuComponent {\r\n @Input()\r\n public items: MenuItem[];\r\n @Input()\r\n public hasTabIndex = true;\r\n\r\n @Output()\r\n public itemClick: EventEmitter = new EventEmitter();\r\n\r\n constructor(private readonly redirectService: DffRedirectService) { } // TODO NIM: Findes ikke i Forsyning|WEB\r\n\r\n public currentItem = null;\r\n public isSubmenuVisible = false;\r\n\r\n get isMobile(): boolean {\r\n return window.innerWidth < 768;\r\n }\r\n\r\n public openSubmenu(item: MenuItem) {\r\n this.currentItem = item;\r\n this.isSubmenuVisible = true;\r\n if (!item.children && item.children[0] !== null) return;\r\n\r\n setTimeout(() => {\r\n const submenu = document.getElementById(item.id + \"-sub-menu\");\r\n if (!submenu) return;\r\n const firstFocusableElement = submenu.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])') as HTMLElement;\r\n\r\n if (!firstFocusableElement) return;\r\n firstFocusableElement.focus();\r\n }, 500);\r\n }\r\n\r\n public closeSubmenu() {\r\n this.currentItem = null;\r\n this.isSubmenuVisible = false;\r\n }\r\n\r\n public getMenuItemId(itemId: number | string, itemType: string): string {\r\n if (!itemId) return \"\";\r\n return itemId + \"-\" + itemType;\r\n }\r\n\r\n public killClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n\r\n public onItemClick(event: MouseEvent, href: string): void {\r\n // Hvis der ikke er en url at navigere til (menupunktet Installation for forbruger med én installation)\r\n // sørger vi for at ignorere klikket. Vi ønsker hverken at navigere eller collapse side-menuen.\r\n if (!href) {\r\n event.preventDefault();\r\n return;\r\n }\r\n // Fix: iOS burde ikke fange intern routing og kan dermed ikke vælge at åbne siden i Safari.\r\n // Fixet bør fjernes når vi engang har tilrettet vores iOS App til at genkende url'er fra Umbraco.\r\n const route = (href || \"\").split(\"#\")[1];\r\n if (route && !!this.redirectService) {\r\n event.preventDefault();\r\n this.redirectService.redirect(route);\r\n }\r\n // Send event videre, så vi kan få collapset side-menuen\r\n this.itemClick.emit(event);\r\n }\r\n}\r\n","@if (items) {\r\n \r\n}\r\n@for (item of items; track item) {\r\n
  • \r\n @if (!item.children?.length) {\r\n @if (item.route) {\r\n \r\n @if (item.icon) {\r\n \r\n }\r\n {{ item.title }}\r\n }\r\n @if (!item.route) {\r\n \r\n @if (item.icon) {\r\n \r\n }\r\n {{ item.title }}\r\n }\r\n }\r\n @if (item.children && item.children.length && !isMobile) {\r\n \r\n \r\n @if (item.icon) {\r\n \r\n }\r\n \r\n {{ item.title }}\r\n \r\n \r\n \r\n \r\n }\r\n @if (item.children && item.children.length && isMobile) {\r\n
    \r\n \r\n \r\n @if (item.icon) {\r\n \r\n }\r\n {{ item.title }}\r\n \r\n \r\n \r\n @if (isSubmenuVisible) {\r\n \r\n \r\n \r\n Gå tilbage\r\n \r\n \r\n
    \r\n }\r\n \r\n }\r\n
  • \r\n}\r\n","export * from \"./dff-sidenav-menu/dff-sidenav-menu.component\";\r\nexport * from \"./menu.module\";\r\nexport * from \"./model/menu-item.model\";\r\nexport * from \"./menu-item.util\";\r\n","import { MenuItem } from \"./model/menu-item.model\";\r\n\r\nexport function flattenMenuItems(menuItemOrItems: MenuItem | MenuItem[]): MenuItem[] {\r\n if (!menuItemOrItems) {\r\n return [];\r\n }\r\n const menuItems = Array.isArray(menuItemOrItems) ? menuItemOrItems : [menuItemOrItems];\r\n return menuItems.reduce((acc, curr) => [...acc, curr, ...flattenMenuItems(curr.children)], []);\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { MatListModule } from \"@angular/material/list\";\r\n\r\nimport { DffSidenavMenuComponent } from \"./dff-sidenav-menu/dff-sidenav-menu.component\";\r\nimport { MatDrawer, MatDrawerContainer, MatDrawerContent } from \"@angular/material/sidenav\";\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\nimport { mdiArrowLeft, mdiArrowRight, mdiPause } from \"@mdi/js\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatIconModule, MatExpansionModule, RouterModule, MatListModule, MatDrawer, MatDrawerContainer, MatDrawerContent],\r\n declarations: [DffSidenavMenuComponent],\r\n exports: [DffSidenavMenuComponent]\r\n})\r\nexport class MenuModule {\r\n constructor(svgIconRegistry: SvgIconRegistry) {\r\n svgIconRegistry.registerIcon(mdiArrowLeft, \"arrow-left\");\r\n svgIconRegistry.registerIcon(mdiArrowRight, \"arrow-right\");\r\n svgIconRegistry.registerIcon(mdiPause, \"icon-pause\");\r\n }\r\n}\r\n","export interface MenuItem {\r\n id?: number;\r\n name?: string;\r\n title?: string;\r\n route?: string;\r\n href?: string;\r\n icon?: string;\r\n adgangsstyret: boolean;\r\n children?: MenuItem[];\r\n roles?: number[];\r\n}\r\n","export * from \"./page-error.component\";\r\nexport * from \"./page-error.module\";\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\nimport { DffError, getErrorDetails } from \"@dffedb/util\";\r\n\r\n@Component({\r\n selector: \"page-error\",\r\n templateUrl: \"./page-error.component.html\",\r\n styleUrls: [\"./page-error.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PageErrorComponent implements OnChanges {\r\n @Input() public error: any;\r\n public message = \"\";\r\n public logId = \"\";\r\n public details = \"\";\r\n public detailsVisible = false;\r\n\r\n public async ngOnChanges(changes: SimpleChanges): Promise {\r\n if (changes[\"error\"]?.currentValue !== changes[\"error\"]?.previousValue) {\r\n this.message = getMessage(changes[\"error\"].currentValue);\r\n this.logId = getLogId(changes[\"error\"].currentValue);\r\n this.details = await getDetails(changes[\"error\"].currentValue);\r\n }\r\n }\r\n}\r\n\r\nasync function getDetails(error: any): Promise {\r\n return await getErrorDetails(error);\r\n}\r\n\r\nfunction getMessage(error: any): string {\r\n return (error && (error.friendlyMessage || error.message || error)) || \"Der er opstået en ukendt fejl\";\r\n}\r\n\r\nfunction getLogId(error: any): string {\r\n return error instanceof DffError ? error.logId : \"\";\r\n}\r\n","@if (error) {\r\n \r\n

    {{ message }}

    \r\n @if (logId) {\r\n {{ logId }}\r\n }\r\n @if (detailsVisible) {\r\n
    {{ details }}
    \r\n }\r\n
    \r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nimport { mdiAlertCircleOutline } from \"@mdi/js\";\r\n\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { EmptyPageBadgeModule } from \"../empty-page-badge\";\r\nimport { PageErrorComponent } from \"./page-error.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, EmptyPageBadgeModule],\r\n exports: [PageErrorComponent],\r\n declarations: [PageErrorComponent]\r\n})\r\nexport class PageErrorModule {\r\n constructor(iconRegistry: SvgIconRegistry) {\r\n iconRegistry.registerIcon(mdiAlertCircleOutline, \"page-error-icon\");\r\n }\r\n}\r\n","export * from \"./panel.component\";\r\nexport * from \"./panel.module\";\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"panel\",\r\n templateUrl: \"./panel.component.html\",\r\n styleUrls: [\"./panel.component.scss\"]\r\n})\r\nexport class PanelComponent {\r\n @Input() public titel = \"\";\r\n @Input() public icon = \"\";\r\n}\r\n","\r\n \r\n @if (titel) {\r\n

    {{ titel }}

    \r\n }\r\n
    \r\n \r\n \r\n \r\n
    \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatCardModule } from \"@angular/material/card\";\r\n\r\nimport { PanelComponent } from \"./panel.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatCardModule],\r\n exports: [PanelComponent],\r\n declarations: [PanelComponent]\r\n})\r\nexport class PanelModule {}\r\n","export * from \"./trust-html.module\";\r\nexport * from \"./trust-html.pipe\";\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { TrustHtmlPipe } from \"./trust-html.pipe\";\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [TrustHtmlPipe],\r\n declarations: [TrustHtmlPipe],\r\n providers: []\r\n})\r\nexport class TrustHtmlModule {}\r\n","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\r\n\r\n@Pipe({ name: \"trustHtml\" })\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TrustHtmlPipe implements PipeTransform {\r\n constructor(private readonly sanitizer: DomSanitizer) {}\r\n\r\n public transform(html: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n}\r\n","export * from \"./reveal-on-focus.module\";\r\n","import { Directive, HostListener, Input } from \"@angular/core\";\r\n\r\nimport scrollIntoView from \"scroll-into-view-if-needed\";\r\n\r\n/**\r\n * @description\r\n * Directive som ved fokus af et element (f.eks. input-felt) sørger for at scrolle siden,\r\n * så et andet element (f.eks. en næste-knap) bliver synligt.\r\n * @usageNotes\r\n * ### Eksempel\r\n * Følgende sørger for, at der scrolles til knappen, når man sætter fokus i input-feltet.\r\n * ```html\r\n * \r\n * \r\n * ```\r\n */\r\n@Directive({\r\n selector: \"[revealOnFocus]\"\r\n})\r\nexport class RevealOnFocusDirective {\r\n @Input()\r\n public revealOnFocus: any;\r\n\r\n @HostListener(\"focus\")\r\n public onFocus(): void {\r\n if (this.nativeElement) {\r\n // Scroll hurtigt for enheder uden software-tastatur\r\n this.scrollIntoView(this.nativeElement);\r\n // Scroll efter lidt tid for enheder, som viser et software-tastatur\r\n setTimeout(() => this.scrollIntoView(this.nativeElement), 400);\r\n }\r\n }\r\n\r\n public get nativeElement(): Element {\r\n return this.revealOnFocus instanceof HTMLElement\r\n ? this.revealOnFocus\r\n : this.revealOnFocus && this.revealOnFocus._elementRef && this.revealOnFocus._elementRef.nativeElement;\r\n }\r\n\r\n private scrollIntoView(element: Element): void {\r\n scrollIntoView(element, {\r\n behavior: \"smooth\",\r\n block: \"end\",\r\n inline: \"nearest\",\r\n scrollMode: \"if-needed\"\r\n });\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { RevealOnFocusDirective } from \"./reveal-on-focus.directive\";\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [RevealOnFocusDirective],\r\n exports: [RevealOnFocusDirective]\r\n})\r\nexport class RevealOnFocusModule {}\r\n","export * from \"./spinner.component\";\r\nexport * from \"./spinner.module\";\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"spinner\",\r\n styles: [\".mat-mdc-progress-spinner { margin: 0 auto; }\"],\r\n template: ``\r\n})\r\nexport class SpinnerComponent {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\n\r\nimport { SpinnerComponent } from \"./spinner.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatProgressSpinnerModule],\r\n exports: [SpinnerComponent],\r\n declarations: [SpinnerComponent],\r\n providers: []\r\n})\r\nexport class SpinnerModule {}\r\n","export * from \"./toast.service\";\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatSnackBar, MatSnackBarConfig } from \"@angular/material/snack-bar\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ToastService {\r\n private readonly matSnackBarConfig: MatSnackBarConfig;\r\n\r\n constructor(private readonly snackBar: MatSnackBar) {\r\n this.matSnackBarConfig = new MatSnackBarConfig();\r\n this.matSnackBarConfig.duration = 3000;\r\n this.matSnackBarConfig.horizontalPosition = \"right\";\r\n this.matSnackBarConfig.verticalPosition = \"top\";\r\n }\r\n\r\n public visFejl(tekst: string): void {\r\n this.snackBar.open(tekst, null, this.matSnackBarConfig);\r\n }\r\n\r\n public visInfo(tekst: string): void {\r\n this.snackBar.open(tekst, null, this.matSnackBarConfig);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n// ReSharper disable once InconsistentNaming\r\nimport * as Hammer from \"hammerjs\";\r\n\r\nimport { getOffsetLeft, getOffsetTop, getScrollBottom, getScrollLeft, getScrollRight, getScrollTop, getWidth } from \"./dom-util\";\r\n\r\ntype RedrawCallback = (scale: number) => Promise;\r\ninterface CanvasZoomResult {\r\n zoomIn: () => void;\r\n zoomOut: () => void;\r\n}\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class CanvasZoomService {\r\n public setup(canvas: HTMLElement, redrawCallback: RedrawCallback): CanvasZoomResult {\r\n return hammerIt(canvas, redrawCallback);\r\n }\r\n}\r\n\r\nfunction hammerIt(elm: HTMLElement, redrawCallback: RedrawCallback): CanvasZoomResult {\r\n const maxScale = 2;\r\n const minScale = 1;\r\n const doubletapScaleFactor = 2;\r\n\r\n let realScale = 1;\r\n let pinchPosX = 0;\r\n let pinchPosY = 0;\r\n let pinchScale = 1;\r\n let pinchTranslateX = 0;\r\n let pinchTranslateY = 0;\r\n let currentDoubletapScaleFactor = 2;\r\n\r\n init();\r\n\r\n function init(): void {\r\n const hammertime = new Hammer(elm, { touchAction: \"pan-x pan-y\" });\r\n hammertime.get(\"pinch\").set({\r\n enable: true\r\n });\r\n hammertime.on(\"doubletap pinch pinchstart pinchend\", handleHammerEvent);\r\n }\r\n\r\n function zoomIn(): void {\r\n zoom(realScale * 2);\r\n }\r\n\r\n function zoomOut(): void {\r\n zoom(realScale / 2);\r\n }\r\n\r\n function zoom(scale: number): void {\r\n const pos = getWidth(elm) / realScale / 2;\r\n realZoom({ scale, posX: pos, posY: 0 }).then((result: any) => result);\r\n }\r\n\r\n function handleHammerEvent(ev: any): void {\r\n ev.preventDefault();\r\n\r\n if (ev.type === \"pinchstart\") {\r\n pinchPosX = ev.center.x - getOffsetLeft(elm);\r\n pinchPosY = ev.center.y - getOffsetTop(elm);\r\n }\r\n\r\n if (ev.type === \"pinch\") {\r\n const scale = adjustOverUnderScale(ev.scale * realScale) / realScale;\r\n\r\n const posX = pinchPosX + getScrollLeft(elm);\r\n const posY = pinchPosY + getScrollTop(elm);\r\n\r\n let translateX = ((posX + pinchTranslateX) * scale) / pinchScale - posX;\r\n let translateY = ((posY + pinchTranslateY) * scale) / pinchScale - posY;\r\n translateX = Math.max(-getScrollLeft(elm), Math.min(translateX, elm.clientWidth * (scale - 1) + getScrollRight(elm)));\r\n translateY = Math.max(-getScrollTop(elm), Math.min(translateY, elm.clientHeight * (scale - 1) + getScrollBottom(elm)));\r\n\r\n elm.style.transform = `translate3d(${-translateX}px,${-translateY}px, 0) scale3d(${scale}, ${scale}, 1)`;\r\n\r\n pinchTranslateX = translateX;\r\n pinchTranslateY = translateY;\r\n pinchScale = scale;\r\n }\r\n\r\n if (ev.type === \"pinchend\") {\r\n realZoom({ posX: pinchPosX, posY: pinchPosY, scale: realScale * pinchScale }).then(() => {\r\n pinchTranslateX = pinchTranslateY = 0;\r\n pinchScale = 1;\r\n });\r\n }\r\n\r\n if (ev.type === \"doubletap\") {\r\n currentDoubletapScaleFactor =\r\n realScale <= minScale\r\n ? doubletapScaleFactor\r\n : realScale >= maxScale\r\n ? 1 / doubletapScaleFactor\r\n : currentDoubletapScaleFactor;\r\n const scale = realScale * currentDoubletapScaleFactor;\r\n const posX = ev.center.x - getOffsetLeft(elm);\r\n const posY = ev.center.y - getOffsetTop(elm);\r\n realZoom({ posX, posY, scale });\r\n }\r\n }\r\n\r\n function realZoom(ev: any): any {\r\n const scale = adjustOverUnderScale(ev.scale);\r\n if (scale === realScale) {\r\n return new Promise((resolve) => resolve());\r\n }\r\n\r\n const scrollLeft = ((ev.posX + getScrollLeft(elm)) * scale) / realScale - ev.posX;\r\n const scrollTop = ((ev.posY + getScrollTop(elm)) * scale) / realScale - ev.posY;\r\n\r\n return redrawCallback(scale).then(() => {\r\n elm.style.transform = \"none\";\r\n elm.parentElement.scrollLeft = scrollLeft;\r\n elm.parentElement.scrollTop = scrollTop;\r\n realScale = ev.scale;\r\n });\r\n }\r\n\r\n function adjustOverUnderScale(scale: number): number {\r\n return Math.max(minScale, Math.min(scale, maxScale));\r\n }\r\n\r\n return {\r\n zoomIn,\r\n zoomOut\r\n };\r\n}\r\n","export function getOffsetTop(elm: HTMLElement): number {\r\n return elm.getBoundingClientRect().top + getScrollTop(elm);\r\n}\r\n\r\nexport function getOffsetLeft(elm: HTMLElement): number {\r\n return elm.getBoundingClientRect().left + getScrollLeft(elm);\r\n}\r\n\r\nexport function getScrollTop(elm: HTMLElement): number {\r\n return elm ? elm.scrollTop + getScrollTop(elm.parentElement) : 0;\r\n}\r\n\r\nexport function getScrollLeft(elm: HTMLElement): number {\r\n return elm ? elm.scrollLeft + getScrollLeft(elm.parentElement) : 0;\r\n}\r\n\r\nexport function getScrollRight(elm: HTMLElement): number {\r\n return elm ? elm.scrollWidth - elm.scrollLeft - elm.clientWidth + getScrollRight(elm.parentElement) : 0;\r\n}\r\n\r\nexport function getScrollBottom(elm: HTMLElement): number {\r\n return elm ? elm.scrollHeight - elm.scrollTop - elm.clientHeight + getScrollBottom(elm.parentElement) : 0;\r\n}\r\n\r\nexport function getWidth(element: HTMLElement): number {\r\n if (!element) {\r\n return 0;\r\n }\r\n return element.offsetWidth || getWidth(element.parentElement);\r\n}\r\n\r\nexport function getScrollbarWidth(): number {\r\n const outer = document.createElement(\"div\");\r\n outer.style.visibility = \"hidden\";\r\n outer.style.width = \"100px\";\r\n\r\n document.body.appendChild(outer);\r\n\r\n const widthNoScroll = outer.offsetWidth;\r\n // force scrollbars\r\n outer.style.overflow = \"scroll\";\r\n\r\n // add innerdiv\r\n const inner = document.createElement(\"div\");\r\n inner.style.width = \"100%\";\r\n outer.appendChild(inner);\r\n\r\n const widthWithScroll = inner.offsetWidth;\r\n\r\n // remove divs\r\n outer.parentNode.removeChild(outer);\r\n\r\n return widthNoScroll - widthWithScroll;\r\n}\r\n","import MegaPixImage from \"@koba04/ios-imagefile-megapixel\";\r\n\r\nexport function getImageFromFile(file: any): Promise {\r\n return new Promise(resolve => {\r\n const reader = new FileReader();\r\n reader.onload = (ev: any) => {\r\n const image = new Image();\r\n image.src = ev.target.result;\r\n const dimensions = getNewDimensions(image, 1920);\r\n const mediaType = getMediaTypeFromDataUrl(ev.target.result);\r\n\r\n const mpImg = new MegaPixImage(file);\r\n mpImg.render(\r\n image,\r\n {\r\n maxWidth: dimensions.width,\r\n maxHeight: dimensions.height,\r\n quality: 0.5,\r\n format: mediaType\r\n },\r\n () => {\r\n image.title = file.name;\r\n resolve(image);\r\n }\r\n );\r\n };\r\n reader.readAsDataURL(file);\r\n });\r\n}\r\n\r\nexport function rotateImageData(imageData: string): Promise {\r\n const sourceImage = new Image();\r\n sourceImage.src = imageData;\r\n const mpImg = new MegaPixImage(sourceImage);\r\n return new Promise(resolve => {\r\n const rotateRight = 6;\r\n const targetImage = new Image();\r\n mpImg.render(targetImage, { orientation: rotateRight }, () => {\r\n resolve(targetImage.src);\r\n });\r\n });\r\n}\r\n\r\nfunction getNewDimensions(image: HTMLImageElement, maxWidthAndHeight: number): { height: number; width: number } {\r\n const isPortrait = image.height > image.width;\r\n const height = isPortrait ? maxWidthAndHeight : Math.floor((maxWidthAndHeight / image.width) * image.height);\r\n const width = isPortrait ? Math.floor((maxWidthAndHeight / image.height) * image.width) : maxWidthAndHeight;\r\n return { height, width };\r\n}\r\n\r\nfunction getMediaTypeFromDataUrl(dataUrl: string): string {\r\n if (!dataUrl) {\r\n return null;\r\n }\r\n\r\n const start = dataUrl.indexOf(\":\");\r\n const end = dataUrl.indexOf(\";\");\r\n return dataUrl.substr(start + 1, end - (start + 1));\r\n}\r\n","export * from \"./canvas-zoom.service\";\r\nexport * from \"./dom-util\";\r\nexport * from \"./image-file.util\";\r\nexport * from \"./scroll-into-view.util\";\r\n","import scrollIntoViewIfNeeded from \"scroll-into-view-if-needed\";\r\n\r\nexport function scrollIntoView(element: Element): void {\r\n scrollIntoViewIfNeeded(element, {\r\n behavior: \"smooth\",\r\n block: \"end\",\r\n inline: \"nearest\",\r\n scrollMode: \"if-needed\"\r\n });\r\n}\r\n","export * from \"./lib/body-class.service\";\r\nexport * from \"./lib/correlation-id\";\r\nexport * from \"./lib/custom-elements\";\r\nexport * from \"./lib/date-util\";\r\nexport * from \"./lib/db-mapper\";\r\nexport * from \"./lib/device\";\r\nexport * from \"./lib/dff-grouped-content\";\r\nexport * from \"./lib/dff-oprindelig-aktuel-vaerdi\";\r\nexport * from \"./lib/entitet-status\";\r\nexport * from \"./lib/environment\";\r\nexport * from \"./lib/error\";\r\nexport * from \"./lib/key-value-pair\";\r\nexport * from \"./lib/logger\";\r\nexport * from \"./lib/number-util\";\r\nexport * from \"./lib/pattern\";\r\nexport * from \"./lib/session-id\";\r\nexport * from \"./lib/storage\";\r\nexport * from \"./lib/string-util\";\r\nexport * from \"./lib/svg-icon-registry.service\";\r\nexport * from \"./lib/unik-id\";\r\nexport * from \"./lib/url-util\";\r\nexport * from \"./lib/unsubscribe/unsubscribe-on-destroy\";\r\nexport * from \"./lib/version-util\";\r\n","import { DOCUMENT } from \"@angular/common\";\r\nimport { Inject, Injectable, Renderer2, RendererFactory2 } from \"@angular/core\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class BodyClassService {\r\n private readonly renderer: Renderer2;\r\n\r\n constructor(@Inject(DOCUMENT) private readonly document: Document, rendererFactory: RendererFactory2) {\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n public add(className: string): void {\r\n this.renderer.addClass(this.document.body, className);\r\n }\r\n\r\n public remove(className: string): void {\r\n this.renderer.removeClass(this.document.body, className);\r\n }\r\n\r\n public set(className: string, shouldAdd: boolean): void {\r\n if (shouldAdd) {\r\n this.add(className);\r\n } else {\r\n this.remove(className);\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { genererUnikId } from \"../unik-id/unik-id.util\";\r\n\r\nexport const genererCorrelationId = (): string => genererUnikId(8);\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class CorrelationIdService {\r\n public genererId(laengde: number = 8): string {\r\n return genererUnikId(laengde);\r\n }\r\n}\r\n","export * from \"./correlation-id.service\";\r\n","import { Type } from \"@angular/core\";\r\nimport { createCustomElement, NgElementConfig } from \"@angular/elements\";\r\n\r\nimport { asapScheduler } from \"rxjs\";\r\n\r\nexport function defineCustomElements(name: string, component: Type, config: NgElementConfig): void {\r\n // customElements findes ikke i UnitTests\r\n if (!(\"customElements\" in window)) {\r\n return;\r\n }\r\n\r\n // Køres asynkront for at sikre, APP_INITIALIZE kaldes inden komponentens OnInit\r\n asapScheduler.schedule(() => {\r\n if (!customElements.get(name)) {\r\n customElements.define(name, createCustomElement(component, config));\r\n }\r\n });\r\n}\r\n","export * from \"./define-custom-elements\";\r\n","import {\r\n addDate as tsAddDate,\r\n addMonth as tsAddMonth,\r\n addYear as tsAddYear,\r\n asValidDateOrNull as tsAsValidDateOrNull,\r\n isValidDate as tsIsValidDate,\r\n resetDate as tsResetDate,\r\n resetMonth as tsResetMonth,\r\n resetYear as tsResetYear\r\n} from \"ts-date\";\r\nimport { format as tsFormat, parse as tsParse } from \"ts-date/esm/locale/da\";\r\n\r\nexport function asValidDateOrNull(date: Date): Date | null {\r\n return tsAsValidDateOrNull(date);\r\n}\r\n\r\nexport function isValidDate(date: Date): boolean {\r\n return tsIsValidDate(date);\r\n}\r\n\r\nexport function minDate(...values: Date[]): Date {\r\n return new Date(Math.min(...values.filter((v) => !!v).map((v) => v.getTime())));\r\n}\r\n\r\nexport function maxDate(...values: Date[]): Date {\r\n return new Date(Math.max(...values.filter((v) => !!v).map((v) => v.getTime())));\r\n}\r\n\r\nexport function formatDate(date: Date | null, dateFormat: string): string {\r\n return tsFormat(date, dateFormat) ?? \"\";\r\n}\r\n\r\nexport function parseDate(value: string, dateFormat: string): Date | null {\r\n const result = tsParse(value, dateFormat);\r\n const expected = tsFormat(result, dateFormat);\r\n return expected === value ? result : null;\r\n}\r\n\r\nexport function addYears(date: Date, years: number): Date {\r\n return tsAddYear(date, years);\r\n}\r\n\r\nexport function addMonths(date: Date, months: number): Date {\r\n return tsAddMonth(date, months);\r\n}\r\n\r\nexport function addDays(date: Date, days: number): Date {\r\n return tsAddDate(date, days);\r\n}\r\n\r\nexport function resetDate(date: Date): Date {\r\n return tsResetDate(date);\r\n}\r\n\r\nexport function resetMonth(date: Date): Date {\r\n return tsResetMonth(date);\r\n}\r\n\r\nexport function resetYear(date: Date): Date {\r\n return tsResetYear(date);\r\n}\r\n\r\nexport function getUtcDate(): Date {\r\n return toUtc(new Date());\r\n}\r\n\r\nexport function toUtc(date: Date): Date {\r\n return new Date(\r\n date.getUTCFullYear(),\r\n date.getUTCMonth(),\r\n date.getUTCDate(),\r\n date.getUTCHours(),\r\n date.getUTCMinutes(),\r\n date.getUTCSeconds(),\r\n date.getUTCMinutes()\r\n );\r\n}\r\n\r\nexport function formatDayInterval(from: Date, to: Date): string {\r\n const fullDateFormat = \"Do MMMM YYYY\";\r\n if (from > to) {\r\n return formatDayInterval(to, from);\r\n }\r\n if (from === to) {\r\n return formatDate(to, fullDateFormat);\r\n }\r\n const newYear = from.getFullYear() !== to.getFullYear();\r\n const newMonth = from.getMonth() !== to.getMonth();\r\n const fromFormat = newYear ? \"Do MMMM YYYY\" : newMonth ? \"Do MMMM\" : \"Do\";\r\n return formatDate(from, fromFormat) + \" - \" + formatDate(to, fullDateFormat);\r\n}\r\n\r\nexport function formatYearInterval(from: Date, to: Date): string {\r\n if (from > to) {\r\n return formatYearInterval(to, from);\r\n }\r\n const newYear = from.getFullYear() !== to.getFullYear();\r\n return newYear ? formatDate(from, \"YYYY\") + \" - \" + formatDate(to, \"YYYY\") : formatDate(from, \"YYYY\");\r\n}\r\n","import { DffOprindeligAktuelVaerdi } from \"@dffedb/util\";\r\n\r\nimport { formatDate, parseDate } from \"./date-util\";\r\n\r\n// Date\r\nexport function dbToDates(dates: any): DffOprindeligAktuelVaerdi {\r\n return {\r\n oprindelig: dbToDate(dates.oprindelig),\r\n aktuel: dbToDate(dates.aktuel)\r\n };\r\n}\r\n\r\nexport function dbToDate(value: string): Date | null {\r\n if (!value || value === \"30-12-1899\") {\r\n return null;\r\n }\r\n return parseDate(value, \"DD-MM-YYYY\");\r\n}\r\n\r\nexport function datesToDb(dates: DffOprindeligAktuelVaerdi): any {\r\n const result = {\r\n oprindelig: dateToDb(dates.oprindelig),\r\n aktuel: dateToDb(dates.aktuel)\r\n };\r\n return result;\r\n}\r\n\r\nfunction toDate(value: any): Date | null {\r\n // Null / undefined\r\n if (!value) {\r\n return null;\r\n }\r\n // Rigtig Javascript dato\r\n if (value instanceof Date) {\r\n return value;\r\n }\r\n // F.eks. Moment.js dato\r\n if (typeof value.toDate === \"function\") {\r\n return value.toDate();\r\n }\r\n return null;\r\n}\r\n\r\nexport function dateToDb(value: Date | null): string {\r\n // Vi kalder lige toDate i tilfælde af Moment-dato.\r\n return formatDate(toDate(value), \"DD-MM-YYYY\") || \"\";\r\n}\r\n\r\n// Int\r\nexport function dbToInts(values: any): DffOprindeligAktuelVaerdi {\r\n return {\r\n oprindelig: dbToInt(values.oprindelig),\r\n aktuel: dbToInt(values.aktuel)\r\n };\r\n}\r\n\r\nexport function dbToInt(value: any): number | null {\r\n const result = parseInt(value && value.toString(), 10);\r\n const isValid = !isNaN(result);\r\n return isValid ? result : null;\r\n}\r\n\r\nexport function intsToDb(values: DffOprindeligAktuelVaerdi): any {\r\n const result = {\r\n oprindelig: intToDb(values.oprindelig),\r\n aktuel: intToDb(values.aktuel)\r\n };\r\n return result;\r\n}\r\n\r\nexport function intToDb(value: number | null): number | null {\r\n const isValid = !isNaN(parseInt(value?.toString() ?? \"\", 10));\r\n return isValid ? value : null;\r\n}\r\n\r\n// Boolean\r\nexport function dbToBooleans(values: any): DffOprindeligAktuelVaerdi {\r\n return {\r\n oprindelig: dbToBoolean(values && values.oprindelig),\r\n aktuel: dbToBoolean(values && values.aktuel)\r\n };\r\n}\r\n\r\nexport function dbToBoolean(value: any): boolean {\r\n if (value === \"False\") {\r\n return false;\r\n }\r\n return !!value;\r\n}\r\n\r\nexport function booleansToDb(values: DffOprindeligAktuelVaerdi): DffOprindeligAktuelVaerdi {\r\n const result = {\r\n oprindelig: booleanToDb(values.oprindelig),\r\n aktuel: booleanToDb(values.aktuel)\r\n };\r\n return result;\r\n}\r\n\r\nexport function booleanToDb(value: boolean | null): boolean {\r\n return !!value;\r\n}\r\n\r\n// Float\r\nexport function dbToFloats(values: any): DffOprindeligAktuelVaerdi {\r\n return {\r\n oprindelig: dbToFloat(values.oprindelig),\r\n aktuel: dbToFloat(values.aktuel)\r\n };\r\n}\r\n\r\n// \"4.25\" => 4.25\r\n// \"4,25\" => 4.25\r\n// \"12.25%\" => 0.1225\r\nexport function dbToFloat(value: string): number | null {\r\n value = value && value.replace(\".\", \"\"); // Fjern tusindadskiller\r\n value = value && value.replace(\",\", \".\"); // Lav dansk decimal-separator om til international\r\n const divisor = (value || \"\").endsWith(\"%\") ? 100 : 1;\r\n return value ? parseFloat(value) / divisor : null;\r\n}\r\n\r\nexport function dbToFloatString(value: string): string | null {\r\n const result = dbToFloat(value);\r\n return result?.toString() ?? null;\r\n}\r\n\r\nexport function floatsToDb(values: DffOprindeligAktuelVaerdi): any {\r\n const result = {\r\n oprindelig: floatToDb(values.oprindelig),\r\n aktuel: floatToDb(values.aktuel)\r\n };\r\n return result;\r\n}\r\n\r\nexport function floatToDb(value: number | null): string | null {\r\n const isValid = !isNaN(parseFloat(value?.toString() ?? \"\"));\r\n return isValid ? value?.toString().replace(\".\", \",\") ?? null : null; // Lav international decimal-separator om til dansk\r\n}\r\n\r\n// String\r\nexport function dbToStrings(values: any): DffOprindeligAktuelVaerdi {\r\n return {\r\n oprindelig: dbToString(values.oprindelig),\r\n aktuel: dbToString(values.aktuel)\r\n };\r\n}\r\n\r\nexport function dbToString(value: string): string {\r\n return value;\r\n}\r\n\r\nexport function stringsToDb(values: DffOprindeligAktuelVaerdi): any {\r\n const result = {\r\n oprindelig: stringToDb(values.oprindelig),\r\n aktuel: stringToDb(values.aktuel)\r\n };\r\n return result;\r\n}\r\n\r\nexport function stringToDb(value: string | null): string {\r\n return value ?? \"\";\r\n}\r\n","import { BreakpointObserver } from \"@angular/cdk/layout\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DeviceService {\r\n constructor(private readonly breakpointObserver: BreakpointObserver) {}\r\n\r\n public erMobilVisning(): boolean {\r\n return this.breakpointObserver.isMatched(\"(max-width: 360px)\");\r\n }\r\n}\r\n","export * from \"./device.service\";\r\n","export interface DffGroupedContent {\r\n groups: DffContentGroup[];\r\n}\r\n\r\nexport interface DffContentGroup {\r\n title: string;\r\n rows: DffContentRow[];\r\n}\r\n\r\nexport interface DffContentRow {\r\n key: string;\r\n value: string;\r\n}\r\n","export * from \"./dff-grouped-content.model\";\r\n","export class DffOprindeligAktuelVaerdi {\r\n public oprindelig: T | null = null;\r\n public aktuel: T | null = null;\r\n}\r\n\r\nexport type DffOprindeligAktuelVaerdier =\r\n | DffOprindeligAktuelVaerdi\r\n | DffOprindeligAktuelVaerdi\r\n | DffOprindeligAktuelVaerdi\r\n | DffOprindeligAktuelVaerdi;\r\n","export enum EntitetStatus {\r\n Uaendret = 0,\r\n Tilfoejet = 1,\r\n Aendret = 2,\r\n Slettet = 3\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const ENV = new InjectionToken(\"env\");\r\n","export * from \"./environment.token\";\r\n","import { genererCorrelationId } from \"../correlation-id/correlation-id.service\";\r\nimport { sessionId } from \"../session-id/session-id.service\";\r\n\r\nexport interface DffErrorParams {\r\n friendlyMessage?: string;\r\n innerError?: any;\r\n correlationId?: string;\r\n showNotification?: boolean;\r\n}\r\n\r\nexport class DffError extends Error {\r\n public readonly correlationId: string;\r\n public readonly friendlyMessage: string;\r\n public readonly showNotification: boolean;\r\n\r\n constructor(message: string, private readonly params: DffErrorParams = {}) {\r\n super(message);\r\n Object.setPrototypeOf(this, DffError.prototype);\r\n this.name = \"DffError\";\r\n\r\n this.correlationId =\r\n this.params.correlationId || (this.params.innerError && this.params.innerError.correlationId) || genererCorrelationId();\r\n this.friendlyMessage = params.friendlyMessage || \"\";\r\n this.showNotification = !!params.showNotification;\r\n }\r\n\r\n public get logId(): string {\r\n return `${sessionId}-${this.correlationId}`;\r\n }\r\n}\r\n","import { HttpResponseBase } from \"@angular/common/http\";\r\n\r\nimport { fromError, StackFrame, StackTraceOptions } from \"stacktrace-js\";\r\n\r\n/*\r\n * Vi benytter nogle 3. parts-værktøjer til at parse stack trace.\r\n * I tilfælde af minificeret JavaScript, gør disse værktøjer brug af map-filen til at omforme til de korrekte filer og linjenumre.\r\n */\r\n\r\nexport async function getFormattedStackTrace(error: any): Promise {\r\n const stackFrames = await getStackTrace(error);\r\n return formatStackTrace(stackFrames);\r\n}\r\n\r\nexport async function getStackTrace(error: any): Promise {\r\n // HttpResponseBase indeholder ikke stack-trace. Så vi returnerer en tom trace.\r\n if (error instanceof HttpResponseBase) {\r\n return [];\r\n }\r\n if (!(error instanceof Error)) {\r\n return [];\r\n }\r\n\r\n // fromError() prøver at loade filer for at danne korrekt stack.\r\n // I tilfælde af en stack-linje i html-fil, vil den være markeret som 'ng:'. Denne kan ikke loades så vi skipper den.\r\n const options: StackTraceOptions = {\r\n filter: (stackFrame: StackFrame) => !stackFrame.fileName?.startsWith(\"ng:\")\r\n };\r\n return await fromError(error, options).catch(() => []);\r\n}\r\n\r\nexport function formatStackTrace(stackFrames: StackFrame[]): string {\r\n return stackFrames.map((f) => ` at ${f.functionName} (${f.fileName}:${f.lineNumber})`).join(\"\\r\\n\");\r\n}\r\n","import { genererCorrelationId } from \"../correlation-id\";\r\nimport { getFormattedStackTrace } from \"./dff-stack-trace\";\r\n\r\nexport function getErrorMessage(error: any): string {\r\n error = unwrapError(error);\r\n return (error && (error.brugerbesked || error.message)) || error;\r\n}\r\n\r\nexport function getCorrelationId(error: any): string {\r\n error = unwrapError(error);\r\n return (error && error.correlationId) || genererCorrelationId();\r\n}\r\n\r\nexport async function getErrorDetails(error: any): Promise {\r\n error = unwrapError(error);\r\n const details = await getErrorDetailsRecursive(error);\r\n const stringDetails = details.map(d => formatErrorDetail(d));\r\n return stringDetails.join(\"\\r\\n--- Inner error:\\n\");\r\n}\r\n\r\nfunction unwrapError(error: any): any {\r\n // Fejl som følge af promises, kan være et funky Error-objekt, som indeholder den faktiske fejl i en rejection-propery.\r\n return (error && error.rejection) || error;\r\n}\r\n\r\nasync function getErrorDetailsRecursive(error: any): Promise {\r\n error = (error && error.rejection) || error;\r\n if (!error) {\r\n return [];\r\n }\r\n\r\n const stack = await getFormattedStackTrace(error);\r\n const innerErrorDetails = await getErrorDetailsRecursive((error.params && error.params.innerError) || error.rejection);\r\n\r\n return [\r\n {\r\n friendlyMessage: error.friendlyMessage || \"\",\r\n logId: error.logId || \"\",\r\n message: typeof error === \"string\" ? error : `${error.name}: ${error.message}`,\r\n stack\r\n },\r\n ...innerErrorDetails\r\n ];\r\n}\r\n\r\nfunction formatErrorDetail(dto: DffErrorDto): string {\r\n const friendlyMessage = dto.friendlyMessage ? `\\r\\nBrugerbesked: ${dto.friendlyMessage}` : \"\";\r\n const logId = dto.logId ? `\\r\\nId: ${dto.logId}` : \"\";\r\n return `${dto.message}${friendlyMessage}${logId}\\r\\n${dto.stack}`;\r\n}\r\n\r\ninterface DffErrorDto {\r\n logId: string;\r\n message: string;\r\n friendlyMessage: string;\r\n stack: string;\r\n}\r\n","export * from \"./dff-error\";\r\nexport * from \"./dff-stack-trace\";\r\nexport * from \"./error-util\";\r\n","export interface KeyValuePair {\r\n key: TKey;\r\n value: TValue;\r\n}\r\n","export * from \"./logentries-environment.model\";\r\nexport * from \"./logentries-logger.service\";\r\nexport * from \"./logger.interface\";\r\nexport * from \"./logger.token\";\r\n","export interface LogentriesEnvironment {\r\n logentries: {\r\n token: string;\r\n application: string;\r\n };\r\n}\r\n","import { Inject, Injectable } from \"@angular/core\";\r\n\r\nimport { ENV } from \"../environment/environment.token\";\r\nimport { LogentriesEnvironment } from \"./logentries-environment.model\";\r\nimport { Logger } from \"./logger.interface\";\r\n\r\n@Injectable() // Injectes med @Inject(LOGGER)\r\nexport class LogentriesLoggerService implements Logger {\r\n private baseUrl = \"https://webhook.logentries.com/noformat/logs/\";\r\n\r\n constructor(@Inject(ENV) public environment: LogentriesEnvironment) {}\r\n\r\n public log(logFields: any): void {\r\n const hostname = window.location.hostname;\r\n if (hostname === \"localhost\" || hostname === \"dev.eforsyning.dk\") {\r\n return;\r\n }\r\n\r\n logFields = { ...logFields, Application: this.environment.logentries.application };\r\n const value = this.genererLogValue(logFields);\r\n this.post(value);\r\n }\r\n\r\n private genererLogValue(logFields: any): string {\r\n const result = Object.keys(logFields)\r\n .filter((key) => typeof logFields[key] !== \"undefined\")\r\n .map((key) => `${key}: ${this.formatValue(logFields[key])}`);\r\n // Indtil videre fjerner vi linjeskift, da Log Entries afslutter ved første linjeskift.\r\n return result.join(\", \").replace(/\\n/g, \" \");\r\n }\r\n\r\n private formatValue(value: any): string {\r\n const validChars = /^[0-9a-zA-Z_\\-. ]*$/g;\r\n const isValid = validChars.test(value);\r\n return isValid ? (value || \"\").toString() : `\"${value}\"`;\r\n }\r\n\r\n private post(value: any): void {\r\n const request = new XMLHttpRequest();\r\n request.open(\"POST\", this.baseUrl + this.environment.logentries.token);\r\n request.send(value);\r\n }\r\n}\r\n","export interface Logger {\r\n log(logFields: any): void;\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const LOGGER = new InjectionToken(\"logger\");\r\n","import vocaIsNumeric from \"voca/is_numeric\";\r\n\r\nexport function isNumeric(value: string): boolean {\r\n return vocaIsNumeric(value);\r\n}\r\n","export class Pattern {\r\n public static helTal = \"^(-)?[0-9]+$\"; // Heltal, både negative og positive\r\n public static positivHelTal = \"^[0-9]+$\"; // Heltal, kun positive\r\n public static kommaTal = \"^(-)?[0-9]+([.,][0-9]+)?$\"; // Kommatal, både negative og positive\r\n public static positivKommaTal = \"^[0-9]+([.,][0-9]+)?$\"; // Kommatal, kun positive\r\n public static postNr = \"^[0-9]{4,4}$\"; // Kun fire heltal er gyldigt\r\n public static registreringsNr = \"^[0-9]{4,4}$\"; // Kun fire heltal er gyldigt\r\n public static kontoNr = \"^[0-9]{10,10}$\"; // Kun ti heltal er gyldigt\r\n}\r\n","export * from \"./session-id.service\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { genererUnikId } from \"../unik-id/unik-id.util\";\r\n\r\nexport const sessionId = genererUnikId();\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class SessionIdService {\r\n public hentId(): string {\r\n return sessionId;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { CookieService } from \"ngx-cookie-service\";\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\nimport { distinctUntilChanged, map, shareReplay } from \"rxjs/operators\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class CookieStorage {\r\n private subject: BehaviorSubject = new BehaviorSubject(this);\r\n private observable$: Observable = this.subject.asObservable();\r\n private updateCount = 0;\r\n\r\n constructor(private readonly cookie: CookieService) {}\r\n\r\n /**\r\n * @param name Cookie name\r\n * @returns boolean - whether cookie with specified name exists\r\n */\r\n public check(name: string): boolean {\r\n return this.cookie.check(name);\r\n }\r\n\r\n /**\r\n * @param name Cookie name\r\n * @returns property value\r\n */\r\n public get(name: string): string {\r\n return this.cookie.get(name);\r\n }\r\n\r\n /**\r\n * @returns all the cookies in json\r\n */\r\n public getAll(): { [key: string]: string } {\r\n return this.cookie.getAll();\r\n }\r\n\r\n /**\r\n * @param name Cookie name\r\n * @param value Cookie value\r\n * @param expires Number of days until the cookies expires or an actual `Date`\r\n * @param path Cookie path\r\n * @param domain Cookie domain\r\n * @param secure Secure flag\r\n * @param sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `Lax`\r\n */\r\n public set(\r\n name: string,\r\n value: string,\r\n expires?: number | Date,\r\n path?: string,\r\n domain?: string,\r\n secure?: boolean,\r\n sameSite?: \"Lax\" | \"None\" | \"Strict\"\r\n ): void {\r\n this.cookie.set(name, value, expires, path, domain, secure, sameSite);\r\n this.notifyChanged();\r\n }\r\n\r\n /**\r\n * @param name Cookie name\r\n * @param path Cookie path\r\n * @param domain Cookie domain\r\n */\r\n public delete(name: string, path?: string, domain?: string, secure?: boolean, sameSite?: \"Lax\" | \"None\" | \"Strict\"): void {\r\n this.cookie.delete(name, path, domain, secure, sameSite);\r\n this.notifyChanged();\r\n }\r\n\r\n /**\r\n * @param path Cookie path\r\n * @param domain Cookie domain\r\n */\r\n public deleteAll(path?: string, domain?: string, secure?: boolean, sameSite?: \"Lax\" | \"None\" | \"Strict\"): void {\r\n this.cookie.deleteAll(path, domain, secure, sameSite);\r\n this.notifyChanged();\r\n }\r\n\r\n public select(key: string): Observable {\r\n return this.observable$.pipe(\r\n map(s => s.get(key)),\r\n distinctUntilChanged(),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public beginUpdate(): void {\r\n this.updateCount++;\r\n }\r\n\r\n public endUpdate(): void {\r\n this.updateCount--;\r\n this.notifyChanged();\r\n }\r\n\r\n private notifyChanged(): void {\r\n if (this.updateCount === 0) {\r\n this.subject.next(this);\r\n }\r\n }\r\n}\r\n","export * from \"./cookie-storage\";\r\nexport * from \"./local-storage\";\r\nexport * from \"./session-storage\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { ObservableStorageBase } from \"./observable-storage-base\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class LocalStorage extends ObservableStorageBase {\r\n constructor() {\r\n super(window.localStorage);\r\n }\r\n}\r\n","import { BehaviorSubject, Observable } from \"rxjs\";\r\nimport { distinctUntilChanged, map, shareReplay } from \"rxjs/operators\";\r\n\r\nexport class ObservableStorageBase {\r\n private subject: BehaviorSubject;\r\n private observable$: Observable;\r\n private updateCount = 0;\r\n\r\n constructor(private readonly storage: Storage) {\r\n this.subject = new BehaviorSubject(storage);\r\n this.observable$ = this.subject.asObservable();\r\n }\r\n\r\n public get length(): number {\r\n return this.storage.length;\r\n }\r\n\r\n public removeItem(key: string): void {\r\n this.storage.removeItem(key);\r\n this.notifyChanged();\r\n }\r\n\r\n public getItem(key: string): string | null {\r\n return this.storage.getItem(key);\r\n }\r\n\r\n public select(key: string): Observable {\r\n return this.observable$.pipe(\r\n map((s) => s[key]),\r\n distinctUntilChanged(),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n public setItem(key: string, value: string): void {\r\n this.storage.setItem(key, value);\r\n this.notifyChanged();\r\n }\r\n\r\n public clear(): void {\r\n this.storage.clear();\r\n this.notifyChanged();\r\n }\r\n\r\n public beginUpdate(): void {\r\n this.updateCount++;\r\n }\r\n\r\n public endUpdate(): void {\r\n this.updateCount--;\r\n this.notifyChanged();\r\n }\r\n\r\n private notifyChanged(): void {\r\n if (this.updateCount === 0) {\r\n this.subject.next(this.storage);\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { ObservableStorageBase } from \"./observable-storage-base\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class SessionStorage extends ObservableStorageBase {\r\n constructor() {\r\n super(window.sessionStorage);\r\n }\r\n}\r\n","import { formatNumber as angularFormatNumber } from \"@angular/common\";\r\n\r\nimport vocaTrim from \"voca/trim\";\r\nimport vocaTrimRight from \"voca/trim_right\";\r\n\r\nexport function trim(subject: string, whitespace?: string): string {\r\n return vocaTrim(subject, whitespace);\r\n}\r\n\r\nexport function trimRight(subject: string, whitespace?: string): string {\r\n return vocaTrimRight(subject, whitespace);\r\n}\r\n\r\n/**\r\n * @description\r\n * Formatterer et nummer som tekst.\r\n *\r\n * @param value Nummeret som skal formatteres.\r\n * @param digitInfo Repræsentation af decimaler specificeret som en streng i følgende format:\r\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`.\r\n *\r\n * @returns Nummeret formatteret som en streng.\r\n */\r\nexport function formatNumber(value: number, digitInfo?: string): string {\r\n return angularFormatNumber(value, \"DA-dk\", digitInfo);\r\n}\r\n\r\nexport function upperCaseFirstChar(value: string): string {\r\n if (!value) {\r\n return value;\r\n }\r\n return value.charAt(0).toUpperCase() + value.slice(1);\r\n}\r\n\r\n/**\r\n *\r\n * @param value Maske i dansk format. F.eks.: #.##0,00\r\n * @returns Maske i internationalt format. F.eks.: #,##0.00\r\n */\r\nexport function dkMaskeTilInternationalMaske(maske: string): string {\r\n if (!maske) {\r\n return maske;\r\n }\r\n return maske.replace(\".\", \"¤\").replace(\",\", \".\").replace(\"¤\", \",\");\r\n}\r\n\r\nexport function beregnDecimalerIInternationalMaske(maske: string): number {\r\n if (!maske) {\r\n return -1;\r\n } // Ingen maske => Uendeligt antal decimaler\r\n const pos = maske.lastIndexOf(\".\");\r\n if (pos === -1) {\r\n return 0;\r\n } // Ingen decimal-separator => 0 decimaler\r\n return maske.length - pos - 1; // Decimal-separator => n decimaler\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatIconRegistry } from \"@angular/material/icon\";\r\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class SvgIconRegistry {\r\n constructor(private readonly matIconRegistry: MatIconRegistry, private readonly domSanitizer: DomSanitizer) {}\r\n\r\n public registerIcon3(svgData: string, width: number, height: number, ...iconName: string[]): void {\r\n iconName.forEach((name) => {\r\n this.matIconRegistry.addSvgIconLiteral(name, this.createSvgTag2(svgData, width, height));\r\n });\r\n }\r\n\r\n public registerIcon2(svgData: string, width: number, height: number, ...iconName: string[]): void {\r\n iconName.forEach((name) => {\r\n this.matIconRegistry.addSvgIconLiteral(name, this.createSvgTag(svgData, width, height));\r\n });\r\n }\r\n\r\n public registerIcon(svgData: string, ...iconName: string[]): void {\r\n iconName.forEach((name) => {\r\n this.matIconRegistry.addSvgIconLiteral(name, this.createSvgTag(svgData, 24, 24));\r\n });\r\n }\r\n\r\n private createSvgTag2(icon: string, width: number, height: number): SafeHtml {\r\n return this.domSanitizer.bypassSecurityTrustHtml(\r\n // eslint-disable-next-line max-len\r\n `${icon}`\r\n );\r\n }\r\n\r\n private createSvgTag(icon: string, width: number, height: number): SafeHtml {\r\n return this.domSanitizer.bypassSecurityTrustHtml(\r\n // eslint-disable-next-line max-len\r\n ``\r\n );\r\n }\r\n}\r\n","export * from \"./unik-id.util\";\r\n","export function genererUnikId(laengde: number = 8): string {\r\n const alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\r\n let id = \"\";\r\n for (let i = 0; i < laengde; i++) {\r\n id += alphabet.charAt(Math.floor(Math.random() * alphabet.length));\r\n }\r\n return id;\r\n}\r\n","// Denne fil er en kopi af https://github.com/wardbell/subsink\r\n// Den findes også som en npm-pakke, men den giver desværre fejl i vores tests:\r\n// https://github.com/wardbell/subsink/issues/6\r\n// Vi har derfor valgt at kopiere koden.\r\n\r\nconst isFunction = (fn: any) => typeof fn === \"function\";\r\n\r\nexport interface SubscriptionLike {\r\n unsubscribe(): void;\r\n}\r\n\r\n/**\r\n * Subscription sink that holds Observable subscriptions\r\n * until you call unsubscribe on it in ngOnDestroy.\r\n */\r\nexport class SubSink {\r\n protected _subs: SubscriptionLike[] = [];\r\n\r\n /**\r\n * Subscription sink that holds Observable subscriptions\r\n * until you call unsubscribe on it in ngOnDestroy.\r\n *\r\n * @example\r\n * In Angular:\r\n * ```\r\n * private subs = new SubSink();\r\n * ...\r\n * this.subs.sink = observable$.subscribe(\r\n * this.subs.add(observable$.subscribe(...));\r\n * ...\r\n * ngOnDestroy() {\r\n * this.subs.unsubscribe();\r\n * }\r\n * ```\r\n */\r\n constructor() {}\r\n\r\n /**\r\n * Add subscriptions to the tracked subscriptions\r\n *\r\n * @example\r\n * this.subs.add(observable$.subscribe(...));\r\n */\r\n public add(...subscriptions: SubscriptionLike[]): void {\r\n this._subs = this._subs.concat(subscriptions);\r\n }\r\n\r\n /**\r\n * Assign subscription to this sink to add it to the tracked subscriptions\r\n *\r\n * @example\r\n * this.subs.sink = observable$.subscribe(...);\r\n */\r\n public set sink(subscription: SubscriptionLike) {\r\n this._subs.push(subscription);\r\n }\r\n\r\n /**\r\n * Unsubscribe to all subscriptions in ngOnDestroy()\r\n *\r\n * @example\r\n * ngOnDestroy() {\r\n * this.subs.unsubscribe();\r\n * }\r\n */\r\n public unsubscribe(): void {\r\n this._subs.forEach((sub) => sub && isFunction(sub.unsubscribe) && sub.unsubscribe());\r\n this._subs = [];\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from \"@angular/core\";\r\n\r\nimport { SubSink } from \"./subsink\";\r\n\r\n/**\r\n * A class that automatically unsubscribes all observables when the object gets destroyed\r\n * https://blog.angulartraining.com/how-to-automatically-unsubscribe-your-rxjs-observables-tutorial-2f98b0560298\r\n */\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class UnsubscribeOnDestroy implements OnDestroy {\r\n // The subscription sink object that stores all subscriptions\r\n public subs = new SubSink();\r\n\r\n // The lifecycle hook that unsubscribes all subscriptions when the component / object gets destroyed\r\n public ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","/* Returnerer scheme og domæne fra en url.\r\n * Eksempel:\r\n * http://softvaerket.dk/et-eller-andet -> http://softvaerket.dk\r\n * //softvaerket.dk/et-eller-andet -> //softvaerket.dk\r\n */\r\nexport function getUrlOrigin(url: string): string {\r\n const matches = url.match(/^(?:https?:)?(?:\\/\\/)?([^\\/\\?]+)/i);\r\n return (matches && matches[0]) || \"\";\r\n}\r\n\r\nexport function getUrlQuery(url: string): any {\r\n const query = url.split(\"?\")[1] || \"\";\r\n const splits = query.split(\"&\") || [];\r\n return splits.reduce((agg, curr) => {\r\n const [key, ...rest] = curr.split(\"=\");\r\n const value = rest.join(\"=\");\r\n return { ...agg, [key.toLowerCase()]: value };\r\n }, {});\r\n}\r\n","/**\r\n * Sammenligner to versionsnumre og returnerer 0, 1 eller -1:\r\n * 0 hvis value1 = value2\r\n * 1 hvis value1 > value 2\r\n * -1 hvis value1 < value2\r\n *\r\n * Eksempel:\r\n * compareVersions(\"1.0\", \"1.2\") => -1\r\n * compareVersions(\"1.2\", \"1.0\") => 1\r\n * compareVersions(\"1.2\", \"1.2\") => 0\r\n * compareVersions(\"1.1.2\", \"1.2.1\") => -1\r\n * compareVersions(\"1.2.0\", \"1.2\") => 0 (manglende nummer svarer til 0)\r\n * compareVersions(\"1.2.1\", \"1.2\") => 1\r\n * compareVersions(\"1.2.1\", \"1.3\") => -1\r\n * compareVersoins(\"1.2.1\", \"1.2.a\") => -1 (bogstaver eller tal/bogstav sammenlignes på tekstværdien, '1' er mindre end 'a')\r\n * compareVersions(\"1.2.12\", \"1.2.2\") => 1 (to tal sammenlignes på talværdien, 12 er større end 2)\r\n */\r\nexport function compareVersions(value1: string, value2: string): number {\r\n const split1 = (value1 || \"\").split(\".\");\r\n const split2 = (value2 || \"\").split(\".\");\r\n const length = Math.max(split1.length, split2.length);\r\n let compare = 0;\r\n for (let i = 0; i < length; i++) {\r\n compare = compareSubVersions(split1[i] || \"0\", split2[i] || \"0\");\r\n if (compare !== 0) {\r\n break;\r\n }\r\n }\r\n return compare < 0 ? -1 : compare > 0 ? 1 : 0;\r\n}\r\n\r\nfunction compareSubVersions(value1: string, value2: string): number {\r\n if (!isNaN(+value1) && !isNaN(+value2)) {\r\n return +value1 < +value2 ? -1 : +value1 > +value2 ? 1 : 0;\r\n }\r\n return value1.localeCompare(value2);\r\n}\r\n"],"names":["DOCUMENT","ElementRef","AppShellComponent","AppComponent","constructor","document","ngAfterViewInit","flytContentTilAppShell","content","querySelector","contentContainer","nativeElement","appendChild","_","i0","ɵɵdirectiveInject","_2","selectors","viewQuery","AppComponent_Query","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","registerLocaleData","HTTP_INTERCEPTORS","HttpClientModule","localeDa","APP_INITIALIZER","ErrorHandler","Injector","LOCALE_ID","MatSnackBarModule","BrowserModule","BrowserAnimationsModule","CookieService","DffRedirectService","ENV","LogentriesLoggerService","LOGGER","AppShellModule","EforsyningErrorHandler","EforsyningHttpInterceptor","initUmbracoIndstillinger","DffedbCookieConsentModule","DffedbCookieConsentOverlayModule","DffedbDriftsstatusKnapModule","DffedbEBoksTilmeldModule","DffedbFancyboxModule","DffedbForsyningPaaAdresseModule","DffedbIframeModule","DffedbInfoPopupModule","DffedbPrisberegnerModule","DffedbTilslutningsanmodningModule","EForsyningLogindKnapModule","environment","AppModule","bootstrap","_3","provide","useValue","useClass","multi","useFactory","appInit","deps","imports","declarations","injector","window","logentries","application","token","production","enableProdMode","__NgCli_bootstrap_1","platformBrowser","bootstrapModule","AdresseFormatter","formatter","adresse","husnr","vej","vejnavn","litra","litra2","trim","postnr","postnrBy","bynavn","result","adresselinie1","adresselinie2","adresselinie3","adresselinie4","replace","factory","ɵfac","providedIn","dbToInt","dbToString","AdresseMapper","dtoToAdresse","data","adressenr","vejnr","NgZone","fromEvent","Subject","map","AppShellScrollService","zone","subject","init","select","asObservable","matSidenavContent","subscription","unsubscribe","elementScrolled","pipe","getElementRef","element","scrollTop","clientHeight","scrollBottom","scrollHeight","subscribe","e","run","next","scrollY","innerHeight","documentElement","ɵɵinject","BreakpointObserver","MatSidenavContent","combineLatest","Observable","timer","distinctUntilChanged","AktuelBrugerObserver","UmbracoIndstillingerObserver","ɵɵelementContainer","ɵɵtemplate","AppShellComponent_Conditional_0_Conditional_0_Conditional_0_ng_container_1_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_0_ng_container_3_Template","ɵɵadvance","ɵɵproperty","leftmenu_r2","content_r1","ɵɵtext","ɵɵlistener","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_3_Template_button_click_0_listener","ɵɵrestoreView","_r4","ɵɵnextContext","sidenavLeft_r5","ɵɵreference","sidenavRight_r6","toggle","ɵɵresetView","close","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_3_Conditional_4_Template","ɵɵpipeBind1","ctx_r6","eforsyningIcon$","ɵɵconditional","indstillinger_r8","logoUrl","ɵɵsanitizeUrl","firmaNavn","ɵɵtextInterpolate","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_7_Template_button_click_0_listener","_r9","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_3_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_5_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_6_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_7_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_ng_container_9_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_ng_container_10_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_11_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Template_eforsyning_sidenav_menu_itemClick_19_listener","_r3","sidenavContainer_r10","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Template_forsyningweb_sidenav_menu_itemClick_22_listener","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_ng_container_25_Template","ɵɵclassMap","scrollPositionTop","opened","eforsyninger","length","forsyningWeb","siteUrl","nodeId","vaelgInstallation_r13","breadcrumb_r12","settings_r11","visDriftsstatus","ɵɵstyleProp","navbarMobileHeight$","AppShellComponent_Conditional_0_Conditional_0_Conditional_0_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Template","isDesktop","isMobile","AppShellComponent_Conditional_0_Conditional_0_Template","tmp_6_0","indstillinger$","ɵɵprojection","setMatSidenavContent","value","scrollService","scrollSubscription","isAtTop","measureScrollOffset","breakpointObserver","indstillingerObserver","aktuelBrugerObserver","valueChanges","b","breakpointChange$","observe","settings$","indstillinger","state","matches","driftsstatusForstyrrelserTekst","driftsstatusIngenForstyrrelserTekst","toggleAriaExpanded","id","menuType","attributes","getNamedItem","navbarMobile","offsetHeight","i1","i2","i3","i4","AppShellComponent_Query","AppShellComponent_Conditional_0_Template","AppShellComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","AppShellComponent_ng_template_4_Template","AppShellComponent_ng_template_6_Template","AppShellComponent_ng_template_8_Template","tmp_4_0","CommonModule","MatIconModule","MatSidenavModule","mdiAccountCircleOutline","mdiBellAlertOutline","mdiCash100","mdiChartBar","mdiCheckCircleOutline","mdiClipboardTextOutline","mdiCounter","mdiDomain","mdiFileDocumentEditOutline","mdiFileDocumentOutline","mdiLogin","mdiLogout","mdiMenu","mdiMessageTextOutline","mdiPhoneOutline","mdiScaleBalance","mdiTrainCar","SvgIconRegistry","EforsyningSidenavMenuModule","ForsyningwebSidenavMenuModule","menuIconForsyningWeb","svgIconRegistry","registerIcon","registerIcon2","exports","ActivatedRouteSnapshot","Router","RouterStateSnapshot","UrlTree","of","catchError","first","mapTo","switchMap","getErrorMessage","AuthenticationService","BrugerRepository","AppserverInstallationCredentialsRepository","LoginService","AuthGuard","router","brugerRepository","loginService","installationCredentialsObserver","umbracoIndstillingerObserver","authenticationService","canActivate","isAuthenticationTimeout","resetAuthenticationTimeout","erAktuelleEforsyningAuthenticated","erBrugerLoggetInd","authenticated","loginMedGemteCredentials","parseUrl","url","authenticatedEforsyningNodeId$","c","forsyningNodeId","aktuelEforsyningNodeId$","i","aktuelEforsyningNodeId","authenticatedEforsyningNodeId","hentAktuelleBruger","error","console","warn","success","i5","i6","AuthenticationResult","cryptId","HttpClient","MD5","http","authenticate","brugernavn","hashedKodeord","forsyningId","hentAppServerUrl","appServerUrl","getSecurityToken","createCryptId","getAuthenticationUrl","httpAuthenticate","authTimer","timeout","Date","now","reAuthenticate","getSecurityTokenUrl","get","Token","userType","indexOf","isNaN","parseInt","hashedPassword","hash","r","AppServerUri","authResult","Result","LocalStorage","HuskMigCredentialsService","localStorage","clear","removeItem","hent","userCredentials","getItem","JSON","parse","atob","username","password","rememberMe","kodeord","huskMig","gem","credentials","setItem","btoa","stringify","isNumeric","AktuelInstallationKeyObserver","InstallationGuard","aktuelInstallationKeyObserver","routerStateSnapShot","spilts","split","includes","key","throwError","tap","SessionStorage","DffError","AppserverBrugerCredentialsRepository","InstallationService","brugerCredentials","installationCredentials","installationService","huskMigCredentialsService","sessionStorage","u","aktuelEforsyning","login","fixCasing","toString","hashKodeord","gemCredentials","gemHuskMigCredentials","gemBruger","gemAktuelInstallation","createError","logout","erLoggetInd","isAuthenticated","currentForsyningNodeId","tilknytEmail","forbrugernr","kode","email","hashedPinkode","post","responseType","glemtKodeord","vaerkurl","resetPwd","secGUID","saltedPwd","erEmail","toLowerCase","toUpperCase","newInstallationCredentials","hentFoersteInstallation","installation","gemInstallation","ejendomNr","aktivNr","installationNr","hentInstallationer","installationer","hentEgneInstallationer","hentEgneOgTilknyttedeInterneInstallationer","items","hentBruger","bruger","postnrby","erForbruger","rolle","huskMigCredentials","innerError","i7","UmbracoMenuObserver","MenuBegraensningGuard","umbracoMenuObserver","route","bruger$","rootMenuItem$","m","result$","rootMenuItem","menuItem","findMenupunkt","harBrugerAdgangTilMenupunkt","href","endsWith","child","children","adgangsstyret","menupunkter","name","Type","from","isObservable","SequentialGuards","sequentialGuards","Promise","resolve","g","executeGuardsSequentially","guards","reduce","prev","curr","p","toObservable","LogService","ObserverBase","logService","repository","ObserverBasedService","AktuelBrugerService","observer","BrugerHttpClient","InstallationHttpClient","ParametreForAktuelleInstallation","brugerHttp","installationHttp","hentBrugerForAktuelleInstallation","true","navn","huskelisteId","mapHuskelisteId","Rolle","Roller","LoggetInd","Forbruger","Ejendomsadministrator","FofBruger","erLoggetUd","erFofBruger","erEjendomsadministrator","RolleService","harRolle","brugerRolle","shareReplay","ValgtForbrugerObserver","_valueChanges","AppserverCredentialsRepositoryBase","AppserverCredentialsRepository","nodeIdKey","Map","hentAlle","allCredentials","keys","Object","has","internalHent","x","y","set","genererNodeId","rawCredentials","serialiserAppserverCredentials","encodeURIComponent","deserialiserAppserverCredentials","decodeURIComponent","opretTomAppserverCredentials","AppserverEksternForsyningCredentialsRepository","UmbracoHttpClient","DriftsstatusService","umbracoHttpClient","erDerAktuelleDriftsforstyrrelser","EBoksPopupRef","EBoksPopupContentComponent_Conditional_0_Template_button_click_10_listener","_r1","ctx_r1","onNext","EBoksPopupContentComponent_Conditional_0_Template_button_click_12_listener","onLuk","EBoksPopupContentComponent_Conditional_0_Template_button_click_14_listener","onLukOgSpoergMigIkkeIgen","ɵɵtextInterpolate1","firmaNavn$","EBoksPopupContentComponent_Conditional_1_Template_button_click_2_listener","minHeight","EBoksPopupContentComponent","popupRef","step","firmaInfo","step1","spoergMigIkkeIgen","args","EBoksPopupContentComponent_Query","EBoksPopupContentComponent_Conditional_0_Template","EBoksPopupContentComponent_Conditional_1_Template","EventEmitter","overlayRef","closed","dispose","emit","DffCurrentRoute","EBoksTilmeldingRepository","EBoksPopup","EBoksPopupService","popup","eboksRepository","currentRoute","erForbruger$","erAlleredeTilmeldtEBoks$","erAlleredeTilmeldtEBoks","erEBoksKampagneAktiveret$","erEBoksKampagneAktiveret","popupSkalAldrigVisesIgen","popupSkalIkkeVisesIgenIDenneSession","aabnHvisIkkeAlleredeTilmeldt","_this","_asyncToGenerator","skalPopupVises","open","toPromise","_this2","erEBoksAktiveret","visIkkePopupPaaAktuelleSide","hentIndstillinger","visEBoksSektion","visEBoksKampagne","hentTilmeldinger","tilmeldinger","ignoredRoutes","some","test","path","Overlay","ComponentPortal","overlay","create","positionStrategy","position","global","centerHorizontally","centerVertically","hasBackdrop","backdropClass","scrollStrategy","scrollStrategies","block","attachContainer","createInjector","containerPortal","containerRef","attach","instance","parent","providers","ReactiveFormsModule","MatButtonModule","MatCheckboxModule","MatDialogModule","MatExpansionModule","MatFormFieldModule","MatInputModule","MatProgressSpinnerModule","MatStepperModule","MatTabsModule","mdiClose","mdiPencil","NgxMaskDirective","NgxMaskPipe","provideEnvironmentNgxMask","DffButtonModule","DffInfoDialogModule","DffSimpelDialogModule","RevealOnFocusModule","EBoksTilmeldingComponent","StepAdresseKodeComponent","StepEksisterendeTilmeldingerComponent","StepIdentitetComponent","StepSamtykkeComponent","EBoksTilmeldingModule","iconRegistry","SimpleChanges","MatStepper","debounceTime","delay","filter","startWith","takeUntil","scrollIntoView","DffInfoDialog","EBoksTilmeldingFormBuilder","EBoksTilmeldingService","opretSamtykkeTekst","opretTomEBoksTilmelding","EBoksTilmeldingComponent_Conditional_2_Conditional_3_ng_template_2_Template","EBoksTilmeldingComponent_Conditional_2_Conditional_3_Template_step_adresse_kode_adresseKodeChange_4_listener","$event","_r2","ctx_r2","onAdresseKodeChange","EBoksTilmeldingComponent_Conditional_2_Conditional_3_Template_button_click_7_listener","stepper_r4","adresseKodeStatus_r5","processed","disabled","ɵɵclassProp","errored","formGroup","EBoksTilmeldingComponent_Conditional_2_Conditional_5_ng_template_1_Template","EBoksTilmeldingComponent_Conditional_2_Conditional_5_Template_step_eksisterende_tilmeldinger_afmeld_3_listener","_r6","onAfmeld","EBoksTilmeldingComponent_Conditional_2_Conditional_5_Template_button_click_7_listener","tilmeldinger$","afmelder$","stepIdentitet_r7","title","tilmelder_r9","EBoksTilmeldingComponent_Conditional_2_Conditional_19_Conditional_4_Template","EBoksTilmeldingComponent_Conditional_2_Conditional_19_Template_dff_spinner_button_click_6_listener","_r8","onTilmeld","samtykkeFormGroup","samtykkeTekst$","invalid","processing","EBoksTilmeldingComponent_Conditional_2_ng_template_2_Template","EBoksTilmeldingComponent_Conditional_2_Conditional_3_Template","EBoksTilmeldingComponent_Conditional_2_Conditional_5_Template","EBoksTilmeldingComponent_Conditional_2_ng_template_8_Template","EBoksTilmeldingComponent_Conditional_2_Template_button_click_13_listener","EBoksTilmeldingComponent_Conditional_2_ng_template_18_Template","EBoksTilmeldingComponent_Conditional_2_Conditional_19_Template","tmp_7_0","afkraevAdressekode","validererAdresseKode$","identitetFormGroup","valid","identitetButtonNext_r10","tilmelder$","tmp_15_0","service","dialog","tilmeldt","initialiserer$","eforsyningIndstilling$","destroy$","ngOnInit","eBoksTilmeldingToFormGroup","tilmeldt$","t","justProcessed","samtykkeTekstAccepteret$","accepteret","tilmeldUdfoert","genererSamtykkeTekst","adresseKodeNextButton","focus","bottom","ngOnChanges","changes","currentValue","previousValue","updateDisabled","ngOnDestroy","adresseKode","validerAdresseKode","tilmelding","afmeld","samtykkeTekst","tilmeld","formGroupToEBoksTilmelding","top","stepper","selectedIndex","reset","identitet","type","eforsyningIndstilling","telefon","erPrivatperson","cprNummer","cvrNummer","pNummer","behavior","inline","scrollMode","EBoksTilmeldingComponent_Query","EBoksTilmeldingComponent_Conditional_2_Template","EBoksTilmeldingComponent_Conditional_4_Template","Processing","EBoksAdressekodeFormBuilder","ctx_r0","formatterAdresse","adresseKodeStatus","ɵɵsanitizeHtml","adresseFormatter","adresseKodeChange","opretAdressekodeFormGroup","v","onSoeg","inputs","outputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","StepAdresseKodeComponent_Template","StepAdresseKodeComponent_Template_button_click_6_listener","StepAdresseKodeComponent_Conditional_8_Template","StepAdresseKodeComponent_Conditional_9_Template","StepAdresseKodeComponent_Conditional_10_Template","DffSimpelDialog","formatterCprNummer","formatterCvrNummer","formatterPNummer","tilmelding_r2","StepEksisterendeTilmeldingerComponent_For_3_Conditional_4_Template","StepEksisterendeTilmeldingerComponent_For_3_Conditional_5_Template","StepEksisterendeTilmeldingerComponent_For_3_Conditional_6_Template","StepEksisterendeTilmeldingerComponent_For_3_Template_button_click_8_listener","$implicit","StepEksisterendeTilmeldingerComponent_For_3_Conditional_9_Template","ɵɵpropertyInterpolate1","ɵ$index_5_r4","afmeldStatus","event","stopPropagation","openJaNej","StepEksisterendeTilmeldingerComponent_Template","ɵɵrepeaterCreate","StepEksisterendeTilmeldingerComponent_For_3_Template","ɵɵrepeaterTrackByIdentity","StepEksisterendeTilmeldingerComponent_Conditional_4_Template","ɵɵrepeater","FormGroup","tabDisabled","onSelectedTabChange","tabIndex","setValue","skalGentagCprNummerFejlVises","errors","mustMatch","revealOnFocus","StepIdentitetComponent_Template","StepIdentitetComponent_Template_mat_tab_group_selectedTabChange_0_listener","index","StepIdentitetComponent_Conditional_12_Template","StepSamtykkeComponent_Template","EBoksTilmelding","ValidererAdresseKodeResult","FormControl","Validators","required","minLength","maxLength","requiredTrue","setDisabled","control","disable","enable","cprNummerValidator","cvrNummerValidator","mustMatchValidator","pNummerValidator","beregnIdentitetType","person","cprNummerGentag","virksomhed","samtykke","samtykkeTekstAccepteret","updateStatus","cprNummerValidators","cprNummerGentagValidators","cvrNummerValidators","pNummerValidators","identitetType","erPrivatPerson","setValidators","validators","updateValueAndValidity","emitEvent","intToDb","stringToDb","EBoksTilmeldingMapper","adresseMapper","dtoToEBoksTilmeldinger","d","dtoToEBoksTilmelding","eboksTilmeldingToDto","httpClient","appServerHttpClient","mapper","eforsyningIndstillingCache","opretTilmelding","fjernTilmelding","hentTilmeldingerMedAdresseKode","hentUrl","opretTilmeldingMedAdresseKode","fjernTilmeldingMedAdresseKode","hentAdresseMedAdresseKode","hentEforsyningIndstillingMedAdresseKode","Error","find","ee","hentSideData","relativeUrl","BehaviorSubject","ProcessingSubject","tilmeldingerSubject","eforsyningIndstillingSubject","tilmelderSubject","initialisererSubject","afmelderSubject","validererAdresseKodeSubject","initialiserEforsyningIndstilling","internalHentTilmeldinger","idle","internalTilmeld","internalAfmeld","hentAdresseKode","maskCprNummer","slice","formatterCprEllerCvrNummer","samtykker","samtykkeTekstSkabelon","toBehaviorObservable","observable","initialValue","EforsyningMenuService","initialiserAutoLukVedMenuklik","links","Array","querySelectorAll","forEach","link","addEventListener","closest","divs","div","parentElement","removeChild","setTimeout","AktuelInstallationObserver","AktuelBrugersInstallationerObserver","EforsyningMenuForSidebarObserver","vm_r4","aktuelInstallation","maalerNr","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_0_Template_a_click_1_listener","DffSidenavMenu_r5","onItemClick","vaelgInstallationHref","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_0_Conditional_2_Template","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_0_Conditional_3_Template","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_0_Conditional_4_Template","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_0_Conditional_5_Template","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_1_Conditional_2_Template","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_1_Conditional_3_Template","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_1_Conditional_4_Template","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_1_Conditional_5_Template","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_0_Template","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_1_Template","EforsyningSidenavMenuComponent_Conditional_0_Template_dff_sidenav_menu_itemClick_0_listener","itemClick","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Template","menuItems","visInstallationMenuItem","EforsyningSidenavMenuComponent","eforsyningSidebarMenuObserver","aktuelBrugersInstallationerObserver","aktuelInstallationObserver","menu","visLoggetUdMenu","onArrowDown","preventDefault","focusableElementsNodeList","focusableElementsArray","focusedElement","activeElement","currentIndex","nextIndex","nextElement","onArrowUp","prevElement","lastElement","menuItems$","aktuelBruger$","installationer$","aktuelInstallation$","vm$","aktuelBruger","visMenu","EforsyningSidenavMenuComponent_Query","EforsyningSidenavMenuComponent_keydown_arrowdown_HostBindingHandler","EforsyningSidenavMenuComponent_keydown_arrowup_HostBindingHandler","EforsyningSidenavMenuComponent_Conditional_0_Template","EforsyningSidenavMenuComponent_Conditional_2_Template","EforsyningSidenavMenuComponent_ng_template_3_Template","tmp_1_0","MatSelectModule","MenuModule","ForsyningWebMenuForSidebarObserver","ForsyningwebSidenavMenuComponent","menuObserver","onTab","focusableElements","firstElement","shiftKey","log","hostBindings","ForsyningwebSidenavMenuComponent_HostBindings","ForsyningwebSidenavMenuComponent_keydown_tab_HostBindingHandler","ForsyningwebSidenavMenuComponent_Template_dff_sidenav_menu_itemClick_0_listener","mdiMagnify","EforsyningMenuerObserver","eforsyningMenuerObserver","installationCredentialsRepository","eforsyningNodeId$","menu$","eforsyningNodeId","bygMenu","bygLoggetIndMenu","bygLoggetUdMenu","eforsyningMenu","fofMenuItems","genererFofMenuItems","forbrugerMenuItems","genererForbrugerMenuItems","loginOgLogoutMenuItems","genererLoginOgLogoutMenuItems","eforsyning","findFofMenuItems","fjernLoginOgLogoutMenuItems","findForbrugerMenuItems","genererForbrugerUndermenu","icon","findLoginOgLogoutMenuItems","item","loginOgLogout","merge","credentialsObservable","eforsyningerMenu$","aktuelForsyningNodeId$","initialMenu$","eforsyningerMenu","aktuelForsyningNodeId","genererDummyMenu","realMenu$","genererMenu","eforsyningerMenuChildren","erAktuelleEforsyning","LoggetUd","menupunkterMedAdgang","filterByRole","filterByMenupunkterMedAdgang","roles","moveSearchMenuToTop","searchMenuItem","rest","ReplaySubject","valueSubject","UntypedFormBuilder","DffFormControlType","DffOprindeligAktuelVaerdiFormGroup","DffValidators","DffReactiveFormControlValueMapper","dbToFloatString","floatToDb","EjendomsfaktorFormBuilder","fb","ejendomsfaktorerDataToFormGroup","ejendomsfaktorerData","ejendomsfaktorDefinitioner","group","ejendomsfaktorer","ejendomsfaktorerToFormArray","ejendomsfaktor","ejendomsfaktorToFormGroup","array","ejendomsfaktorDefinition","definition","definitionId","status","vaerdi","ejendomsfaktorVaerdiToFormGroup","dbToVaerdi","getValidators","controlType","getFormControlType","dropdownListOptions","getOptions","placeholder","suffix","enhed","readonly","datatype","decimaler","push","decimals","minVaerdi","undefined","min","maxVaerdi","max","erTal","aktuel","oprindelig","valgmuligheder","DropdownList","NumberInput","TextInput","formGroupToEjendomsfaktorerData","formArrayToEjendomsfaktorer","controls","formArray","formGroupToEjendomsfaktor","toInteger","vaerdiToDb","FormsModule","DffFormControlModule","AccordionStatusIndicatorModule","EjendomsfaktorComponent","EjendomsfaktorModule","asDffFormControl","EjendomsfaktorComponent_Template","handleError","logError","ForbrugerOplysningerService","AktuelForbrugerOplysningerObserver","hentForbrugerOplysningerForAktuelleInstallation","AktuelForbrugerOplysningerService","dbToDate","ForbrugerOplysningerRepository","hentForbrugerOplysninger","hentForbrugerOplysningerForBruger","dto","f","ejendomnr","by","indflyttet","forbrugerOplysningerRepository","ForbrugerTilknytningRepository","AktuelBrugersForbrugerTilknytningerObserver","brugerHttpClient","forbrugerTilknytningRepository","triggerChangedSubject","brugerId","hentTilknytninger","triggerChanged","ForbrugerRepository","ForsyningIndstillingerService","EksternForsyningHttpClient","installationHttpClient","eksternHttpClient","brugerCredentialsRepository","forsyningIndstillingerService","valgtForbrugerObserver","forbrugerRepository","opretTilknytning","forbrugerHvisInstallationSkalAdministreres","hentForbruger","valgtForbruger","erInternForsyning","opretInternTilknytning","opretEksternTilknytning","mailAdresse","sletTilknytning","tilknytningId","params","RelationId","postWithStringResult","forsyningId$","EBrugerId","false","dtoToTilknytninger","tilfoejAuthenticationData","tilfoejForsyningIndstillinger","tilfoejForbruger","ebrugerId","_this3","eBrugerId","isNumber","tilknytEjdNr","pwd","notificerEmail","_this4","ForsyningId","EBrugerNavn","EBrugerKodeordKrypteret","NotificerEmail","RegExp","interne","InterneTilknytninger","dtoToTilknytning","eksterne","EksterneTilknytninger","erInternTilknytning","brugerForsyningId","erAktuelleSite","EjendomNr","forbrugerNavn","Navn","forbrugerAdresse","Adresse","erEksternTilknytning","brugerNavn","kodeordKrypteret","forsyningIndstillinger","eforsyningUrl","forsyningNavn","sideId","tilknytninger","hentCredentials","auth","api","hentForsyningIndstillinger","tilknytning","forbruger","ForbrugerTilknytningService","aktuelBrugersForbrugerTilknytningerObserver","hentTilknytningerForAktuelBruger","hentTilknytningerForValgtForbruger","brugerId$","ForsyningIndstillingerRepository","AktuelForsyningIndstillingerObserver","EForsyningId","ForsyningsNavn","EforsyningUri","Id","aktuelForsyningIndstillingerObserver","forsyningIndstillingerRepository","aktuelForsyningIndstillinger","erSammeForsyningId","id1","id2","UntypedFormControl","UntypedFormGroup","UnsubscribeOnDestroy","ForsyningPaaAdresseSandbox","adresse_r3","tekst","result_r4","statusTekst","vm_r5","konfiguration","svarmuligheder","nej","ja","snart","ForsyningPaaAdresseComponent_Conditional_0_Conditional_10_Case_1_Template","ForsyningPaaAdresseComponent_Conditional_0_Conditional_10_Case_2_Template","ForsyningPaaAdresseComponent_Conditional_0_Conditional_10_Case_3_Template","ForsyningPaaAdresseComponent_Conditional_0_Conditional_10_Case_4_Template","ForsyningPaaAdresseComponent_Conditional_0_Conditional_10_Case_5_Template","tmp_5_0","ForsyningPaaAdresseComponent_Conditional_0_Template_mat_autocomplete_optionSelected_5_listener","onSearchValueChange","option","ForsyningPaaAdresseComponent_Conditional_0_For_8_Template","ForsyningPaaAdresseComponent_Conditional_0_Conditional_10_Template","autocomplete_r6","displayFn","adresser$","tmp_8_0","ForsyningPaaAdresseComponent","sandbox","lookup","aktuelAdresseSubject","searchValue","findAdresser","checkOmDerLeveresPaaAdressen","subs","add","selectViewModel","addCustomStylesheet","vm","cssLeveresFjernvarme","style","createElement","innerHTML","head","ɵɵProvidersFeature","ForsyningPaaAdresseComponent_Conditional_0_Template","tmp_0_0","MatAutocompleteModule","ForsyningPaaAdresseModule","ForsyningPaaAdresseLeveringStatus","ForsyningPaaAdresseRepository","selectKonfiguration","hentSideDataForId","svarmulighedJa","svarmulighedNej","svarmulighedPlanlagt","afgraensning","postNr","afgraensningPostNr","pnr","concat","mapAdresse","httpCheckOmDerLeveresPaaAdressen","Arbejder","etage","doer","kommunenr","husnrBogstav","mapForsyningPaaAdresseResult","adresseTekst","LevererIFremtiden","husnrMatch","match","kommunekode","vejkode","dør","ToastService","LogLevel","toast","viewModelSubject","err","Warning","visFejl","sanitize","AppserverHttpClient","AppserverHttpClientFactory","credentialsRepository","trimRight","getAppServerUrlCache","getVaerkSettingsUrl","inkluderParametreForAktuelleInstallation","inkluderCryptId","getUrl","absoluteUrl","getWithStringResult","body","options","getAppServerUrl","parameters","getParameterString","formatUrl","querySeparator","getParameters","join","udenInstallationsNr","HttpEvent","HttpHandler","HttpRequest","HttpResponse","CorrelationIdService","SessionIdService","sessionIdService","correlationIdService","intercept","request","startTime","sessionId","hentId","correlationId","genererId","clone","setHeaders","safe","logStart","handle","response","logEnd","message","fn","logHttpStart","duration","getTime","logHttpEnd","logHttpError","appserverHttpClientFactory","brugernavnOrCredentials","authenticateWithCredentials","authenticateWithUsername","authenticationResult","baseUrl","setBaseUrl","getAbsoluteUrl","arrayToObject","vaerksdata","side","customTrim","sektion","umbracoId","indeholderQueryString","queryStringChar","acc","Alias","Value","separator","startsWith","str","AktuelBrugersInstallationerService","value$","findInstallation","hentInstallationerForEjendom","installation_r1","postNrBy","installation_r2","maalerTypeTekst","installation_r3","installation_r4","InstallationListeComponent_tr_15_Template_tr_click_0_listener","row_r6","_r5","erAktuelleInstallation$","visteKolonnerForbruger","visteKolonnerForbrugerXs","visteKolonnerIkkeForbruger","visteKolonnerIkkeForbrugerXs","visteKolonner","InstallationListeComponent","aktuelForsyningIndstillingObserver","erLilleSkaerm$","visteKolonner$","erLilleSkaerm","forsyning","InstallationListeComponent_Template","ɵɵelementContainerStart","InstallationListeComponent_th_2_Template","InstallationListeComponent_td_3_Template","InstallationListeComponent_th_5_Template","InstallationListeComponent_td_6_Template","InstallationListeComponent_th_8_Template","InstallationListeComponent_td_9_Template","InstallationListeComponent_th_11_Template","InstallationListeComponent_td_12_Template","InstallationListeComponent_tr_13_Template","InstallationListeComponent_tr_15_Template","MatTableModule","InstallationListeModule","defaultInstallationAfgraensning","skip","take","soegetekst","eksternHttp","aktuelBrugerService","forbrugerTilknytningService","hentInterneInstallationer","parametre","interneInstallationer$","eksterneInstallationer$","hentEksterneInstallationer","eof","empty","hentEksterneInstallationerForTilknytning","Soegetekst","Skip","Take","MedtagTilknyttede","Installationer","mapInstallation","medtagTilknyttede","forsyningIndstillinger$","Huskeliste","splice","PostNr","By","AktivNr","InstallationNr","PreviousRouteService","RedirectService","VaelgInstallationService","redirectService","previousRouteService","aktuelBrugersInstallationerService","vaelgFoeresteInstallation","redirect","vaelgInstallation","erIntern","vaelgInternInstallation","vaelgEksternInstallation","getRedirectRoute","origin","location","slash","loginRedirect","deeplink","notFound","ignoreRoute","formatDate","getCorrelationId","getErrorDetails","getUtcDate","logger","getIdFields","getHttpRequestFields","Besked","getDurationFields","getHttpResponseFields","logLevel","getHttpErrorResponseFields","UserAgent","navigator","userAgent","Detaljer","sortFields","addDefaultFields","Duration","HttpVerb","method","RequestUrl","urlWithParams","HttpStatus","defaultFields","Information","UTC","getUtc","ForsyningNodeId","Origin","date","MailHelper","EforsyningMailBuilderService","genererAsync","titel","generer","genererMailBody","genererLogo","fallbackFirmaNavn","image","h1","html","EforsyningMailSenderService","umbracoHttp","sendForsyningsanmodningMail","mail","mail$","to","model","sendMitforbrugDatafejlMail","sendMailFraUmbraco","genererKvitteringMailHtml","css","center","table","rows","tableRow","tdCss","colon","hr","width","text","space","marginTop","venligHilsen","firmaOplysninger","signatur","kvitteringPanel","kvittering","redirectTilDefault","redirectTilLogin","redirectTilAktuelleRouteEfterLogin","redirectUrl","redirectTilFlyttekvittering","parameter","redirectTilInstallationer","redirectTilMitForbrug","redirectTilMineDokumenter","redirectTilVaerksListe","vaerkslisteUrl","ErrorStateMatcher","DffErrorStateMatcher","formGroup_r1","TilslutningsanmodningStepEjendomsfaktorerComponent","TilslutningsanmodningStepEjendomsfaktorerComponent_Template","TilslutningsanmodningStepEjendomsfaktorerComponent_For_3_Template","groups","NgForm","TilslutningsanmodningFormBuilder","getRawValue","TilslutningsanmodningStepOplysningerComponent_Conditional_11_Conditional_4_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_11_Conditional_5_Template","tmp_3_0","maxlength","TilslutningsanmodningStepOplysningerComponent_Conditional_12_Conditional_4_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_12_Conditional_5_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_13_Conditional_4_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_13_Conditional_5_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_1_Conditional_2_Conditional_5_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_1_Conditional_2_Conditional_10_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_1_Conditional_2_Conditional_11_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_1_Conditional_2_Template_a_click_16_listener","onLaesSamtykkeClick","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_1_Conditional_2_Conditional_18_Template","isRequired","hasError","isErrorState","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_1_Conditional_2_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_2_Conditional_2_Conditional_5_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_2_Conditional_2_Conditional_10_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_2_Conditional_2_Template_a_click_15_listener","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_2_Conditional_2_Conditional_17_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_2_Conditional_2_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_1_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Conditional_2_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_23_Conditional_2_Conditional_5_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_23_Conditional_2_Conditional_10_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_23_Conditional_2_Conditional_11_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_23_Conditional_2_Template_a_click_16_listener","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_23_Conditional_2_Conditional_18_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_23_Conditional_2_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_5_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_6_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_11_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_16_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_21_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_22_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Conditional_23_Template","isDirty","visEBoksTilmelding","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Conditional_3_Template","TilslutningsanmodningStepOplysningerComponent","formBuilder","errorStateMatcher","valider","markAllAsTouched","formControlName","form","dirty","openOk","TilslutningsanmodningStepOplysningerComponent_Query","TilslutningsanmodningStepOplysningerComponent_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_2_Template","TilslutningsanmodningStepOplysningerComponent_Template_mat_label_click_4_listener","privatEllerVirksomhedToggle_r3","TilslutningsanmodningStepOplysningerComponent_Template_mat_label_click_8_listener","TilslutningsanmodningStepOplysningerComponent_Conditional_11_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_12_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_13_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_20_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_21_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_26_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_27_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_32_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_33_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_34_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_35_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_36_Template","TilslutningsanmodningStepOplysningerComponent_Conditional_37_Template","checked","adresse2","steps","personligeOplysninger","visBemaerkning","TilslutningsanmodningMailService","eforsyningMailBuilder","mailSender","mailTilForbruger","genererMail","oplysninger","ekstraPerson","ekstraPersonEmail","toMailAddress","myModel","modelToGroupedContent","virksomhedensOplysninger","erVirksomhed","ekstraPersonNavn","bemaerkning","boolToJaNej","oenskerEboks","medejerPersonligeOplysninger","ekstraPersonTelefon","ekstraPersonOenskerEboks","ekstraPersonCprNummer","ejendomsfaktorOplysninger","findEjendomsfaktorNavn","findEjendomsfaktorVaerdi","findEjendomsfaktorDefinition","valgmulighedNavn","genererBody","ejendomsfaktorFormBuilder","opretFormGroup","opretOplysningerFormGroup","formGroupToTilslutningsanmodningModel","doOpretSamtykkeTekst","pattern","emailGentag","ekstraPersonCprNummerGentag","ekstraPersonEmailGentag","ekstraPersonSamtykkeTekst","ekstraPersonSamtykkeTekstAccepteret","ekstraPersonCprNummerGentagValidators","opretEkstraPersonSamtykkeTekst","standardData","formControl","beregnDecimalerIInternationalMaske","dkMaskeTilInternationalMaske","TilslutningsanmodningMapper","dtoToEjendomsfaktorDefinitioner","dtoToEjendomsfaktorDefinition","maske","formater","alfa","faktor","beregnMaxVaerdi","vaerdiMaximum","beregnMinVaerdi","vaerdiMinimum","faktorTekst","dtoToEjendomsfaktorDefinitionValgmuligheder","relationer","tilslutningsanmodningModelToDto","tilslutningsanmodningOplysningerModelToDto","cprGodkendt","cvrGodkendt","ekstraPersonCprGodkendt","dtoToEjendomsfaktorDefinitionValgmulighed","relation","dbToBoolean","TilslutningsanmodningRepository","sideData$","mapDtoToTilslutningsamodningKonfiguration","hentEjendomsfaktorDefinitioner","skabelon","submit","httpSubmit","widgetNodeId","alternativVaerksEmail","adresseSoegning","knapTekst","interesseKnapTekst","overskrift","adresseOverskrift","ejendomsfaktorerOverskrift","ejendomsfaktorerTekst","personligeOplysningerOverskrift","personligeOplysningerTekst","personligeOplysningerSkjulBemaerkning","sendKnapTekst","personligeOplysningerSendKnapTekst","kvitteringOverskrift","kvitteringTekst","emailSubject","emailBody","EntitetStatus","TilslutningsanmodningSandbox","mailService","forsyningPaaAdresseResult$","konfiguration$","forsyningPaaAdresseResult","mapEjendomsfaktorDefinitionerToEjendomsfaktorer","String","setForsyningPaaAdresseResult","Uaendret","vm_r2","TilslutningsanmodningComponent_Conditional_0_Conditional_9_Template_button_click_5_listener","stepper_r5","minAdresse_r6","TilslutningsanmodningComponent_Conditional_0_Conditional_10_ng_template_1_Template","TilslutningsanmodningComponent_Conditional_0_Conditional_10_Template_button_click_7_listener","_r7","previous","TilslutningsanmodningComponent_Conditional_0_Conditional_10_Template_button_click_9_listener","TilslutningsanmodningComponent_Conditional_0_Conditional_30_Template_button_click_0_listener","TilslutningsanmodningComponent_Conditional_0_Conditional_0_Template","TilslutningsanmodningComponent_Conditional_0_ng_template_4_Template","TilslutningsanmodningComponent_Conditional_0_Template_forsyning_paa_adresse_lookup_8_listener","onAdresseChange","TilslutningsanmodningComponent_Conditional_0_Conditional_9_Template","TilslutningsanmodningComponent_Conditional_0_Conditional_10_Template","TilslutningsanmodningComponent_Conditional_0_ng_template_12_Template","TilslutningsanmodningComponent_Conditional_0_Template_button_click_19_listener","TilslutningsanmodningComponent_Conditional_0_Template_button_click_21_listener","stepOplysninger_r8","TilslutningsanmodningComponent_Conditional_0_Conditional_23_Template","TilslutningsanmodningComponent_Conditional_0_ng_template_25_Template","TilslutningsanmodningComponent_Conditional_0_Conditional_30_Template","stepperVisible","submitter","TilslutningsanmodningComponent","source","TilslutningsanmodningComponent_Template","TilslutningsanmodningComponent_Conditional_0_Template","TilslutningsanmodningComponent_Conditional_2_Template","MatSlideToggleModule","DffSideModule","SpinnerModule","TilslutningsanmodningModule","UmbracoIndstillinger","umbracoIndstillinger","umbraco","setPrototypeOf","getPrototypeOf","FirmaInfo","EforsyningIndstilling","ForsyningWebIndstilling","featureToggles","cookiepolitik","TestDataFactory","generatorFn","getSingleRecord","override","getArray","overrides","eforsyningIndstillingFactory","Math","ceil","random","emailLogoUrl","emailSignatur","overskriftPaaLoginside","umbracoIndstillingerFactory","vaerkNodeId","themeUrl","matomoSiteId","initialized","getValue","UmbracoIndstillingerRepository","EforsyningUrlService","hentAbsolutUrl","sourceListener","innerProject","errorProject","stateChangesSubject","errorChangesSubject","stateChanges","errorChanges","valueChanges$","loading","__","SubSink","BodyClassService","RolleBodyClassService","bodyClassService","setup","sink","teardown","NavigationEnd","pairwise","RouteBodyClassService","firstEvent$","events","enter","getRoute","leave","followingEvents$","events$","remove","DffedbCookieConsentOverlaySandbox","DffedbCookieConsentOverlayComponent","visible","pageReload","classInitialized","setCookieConsentChangeRequiresPageReload","hostVars","DffedbCookieConsentOverlayComponent_HostBindings","DffedbCookieConsentOverlayComponent_Conditional_0_Template","overlayVisible","defineCustomElements","DffCookieConsentOverlayModule","DffCookieConsentService","cookieConsentService","shouldOverlayEverBeVisible","selectCookieConsent","consent","thirdparty","statistics","consentAccepted","toBoolean","DffedbCookieConsentSandbox","DffedbCookieConsentComponent_Conditional_0_Conditional_0_Template_a_click_0_listener","onClick","DffedbCookieConsentComponent_Conditional_0_Conditional_0_Conditional_4_Template","vm_r3","reloading","DffedbCookieConsentComponent_Conditional_0_Conditional_0_Template","enabled","DffedbCookieConsentComponent","initialize","version","isCookieConsentUpdateNeeded","showCookieConsentDialog","renewCookieConsent","DffedbCookieConsentComponent_Template","DffedbCookieConsentComponent_Conditional_0_Template","mdiCookie","DffCookieConsentDialogModule","DffCookieConsentDialog","cookieConsentDialog","cookieConsentChangeRequiresPageReload","cookieConsent$","cookieConsent","animate","transition","trigger","ChangeDetectorRef","driftsstatusforstyrrelsertekst","driftsstatusingenforstyrrelsertekst","DffedbDriftsstatusKnapComponent_Conditional_0_Conditional_2_Template","DffedbDriftsstatusKnapComponent_Conditional_0_Conditional_3_Template","ɵɵpropertyInterpolate","svgIcon","class","active","DffedbDriftsstatusKnapComponent","cd","driftsstatusService","iconActive","fadeInAnimation","visIkon","detach","harForsyningWeb$","erDerDriftsforstyrrelser$","driftsstatusUrl$","hentDriftsstatusUrl","harForsyningWeb","erDerDriftsforstyrrelser","driftsstatusUrl","mapToMenu","detectChanges","DffedbDriftsstatusKnapComponent_HostBindings","ɵɵsyntheticHostProperty","DffedbDriftsstatusKnapComponent_Conditional_0_Template","opacity","mdiAlertOutline","DffDropdownButtonModule","WebComponentInitializerService","DffedbEBoksTilmeldService","DffedbEBoksTilmeldComponent","webComponentInitializer","eBoksTilmeldService","initialiserer","classMatAppBackground","skalRedirecteTilEforsyning","redirecTilEforsyning","DffedbEBoksTilmeldComponent_HostBindings","DffedbEBoksTilmeldComponent_Conditional_0_Template","DffedbEBoksTilmeldComponent_Conditional_1_Template","brugerObserver","skalRedirecte$","DffedbFancyboxSandbox","imageUrl","videoUrl","ɵɵclassMapInterpolate1","buttonClass","DffedbFancyboxComponent_Conditional_0_Conditional_0_Template","DffedbFancyboxComponent_Conditional_0_Conditional_1_Template","DffedbFancyboxComponent","getViewModel","requiredConsent","DffedbFancyboxComponent_Template","DffedbFancyboxComponent_Conditional_0_Template","DffedbForsyningPaaAdresseComponent","DffedbForsyningPaaAdresseComponent_HostBindings","Renderer2","DffedbIframeSandbox","DffedbIframeComponent_Conditional_0_Conditional_1_Template","DffedbIframeComponent","hostElement","renderer","el","initializeIframe","createIframe","src","iframe","onload","dispatchEvent","CustomEvent","styleWidth","calculateSize","styleHeight","height","a","attribute","setAttribute","DffedbIframeComponent_HostBindings","DffedbIframeComponent_Conditional_0_Template","DffCookieConsentCookieListModule","cookieConsentCookieListModule","mapViewModel","getCookieConsent","DffedbInfoPopupComponent","showAfterMs","hideAfterMs","toDateTime","header","imageSrc","buttonText","buttonHref","buttonTarget","visibleStartTime","visibleEndTime","DffedbInfoPopupComponent_Template","DffInfoPopupModule","DffedbPrisberegnerSandbox","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_form_field_3_Template_input_focus_3_listener","onFocus","varmekilde_r3","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_form_field_11_Template_input_focus_3_listener","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_12_mat_form_field_8_mat_option_4_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_12_mat_form_field_8_mat_option_5_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_12_mat_form_field_8_mat_option_6_Template","vm_r6","olie","virkningsgrad","virkningsgrad0til4Aar","virkningsgrad5til8Aar","virkningsgrad9tilNAar","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_12_Template_input_focus_4_listener","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_12_mat_form_field_8_Template","vaelgKedlensAlder","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_13_mat_form_field_10_mat_option_4_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_13_mat_form_field_10_mat_option_5_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_13_mat_form_field_10_mat_option_6_Template","naturgas","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_13_Template_input_focus_4_listener","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_13_mat_form_field_10_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_14_mat_form_field_8_mat_option_4_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_14_mat_form_field_8_mat_option_5_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_14_mat_form_field_8_mat_option_6_Template","traepiller","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_14_Template_input_focus_4_listener","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_14_mat_form_field_8_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_form_field_15_Template_input_focus_3_listener","tekster","medVarmemesterordning","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_17_Template_mat_slide_toggle_change_8_listener","_r10","konverteringsbidragOverskrift","konverteringsbidragSubtekst1","konverteringsbidragSubtekst2","oenskerFordelingAfKonverteringsbidrag","ɵɵtextInterpolate3","konverteringsbidragToggle2","konverteringsbidragToggle1","ɵɵpipeBind2","findKonverterinsbidrag","resultat","fjernvarme","detaljer","antalAar_r11","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_form_field_18_mat_option_5_Template","konverteringsbidragAntalAar","besparelseKr","besparelsePct","sammenligningskilde","DffedbPrisberegnerComponent_ng_container_0_form_2_div_36_div_15_Template_a_click_14_listener","_r13","ngIf","visDetaljerSammenligningskilde","DffedbPrisberegnerComponent_ng_container_0_form_2_div_36_div_15_prisberegner_specifikation_16_Template","varmekildeTekst","ialt","beloeb","tekst2","getDetaljerText","DffedbPrisberegnerComponent_ng_container_0_form_2_div_36_div_15_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_div_36_Template_a_click_29_listener","_r12","visDetaljerFjernvarme","DffedbPrisberegnerComponent_ng_container_0_form_2_div_36_prisberegner_specifikation_31_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_div_36_div_32_Template","mwh","mwhForklaring","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_form_field_3_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_option_9_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_form_field_11_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_12_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_13_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_14_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_form_field_15_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_slide_toggle_16_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_ng_container_17_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_mat_form_field_18_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_tr_33_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_tr_34_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_div_36_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_div_37_Template","bbrPrisPrM2","bbrPriserPrM2","groenOmstillingsbidragPrM2","varmekilder","varmemesterordningPrAar","nyUnitPris","investeringsomkostninger","bbrTrappemodel","konverteringsbidragPrM2","visKunUdgiftResultat","visDetaljeretResultat","DffedbPrisberegnerComponent_ng_container_0_empty_page_badge_1_Template","DffedbPrisberegnerComponent_ng_container_0_form_2_Template","konfigurationOk","DffedbPrisberegnerComponent","_state","res","target","erSynlig","DffedbPrisberegnerComponent_HostBindings","DffedbPrisberegnerComponent_ng_container_0_Template","EmptyPageBadgeModule","PrisberegnerSpecifikationComponent","DomSanitizer","prisberegnerVarmekilder","PrisberegnerViewModelMapper","PrisberegnerService","viewModelMapper","sanitizer","formGroup$","createFormGroup","model$","beregnetResultat$","modelToViewModel","beregnForbrugPrAar","getVarmekildeTekst","beregnOmKonfigurationErOk","valgtVarmekildeId","k","fjernvarmeKonfigurationOk","prisPrMwh","naturgasKonfigurationOk","braendvaerdiKwhPrM3","olieKonfigurationOk","braendvaerdiKwhPrLiter","traepillerKonfigurationOk","braendvaerdiKwhPrKg","defaultVarmekilde","oenskerVarmemesterOrdning","fjernvarmeVarmemesterordningStandardVaerdi","defaultKonverteringbidragAntalAar","boligareal","varmekilde","forbrugEl","forbrugNaturgas","forbrugOlie","forbrugTraepiller","forbrugVarmepumpe","naturgasKeddelAlder","olieFyrAlder","pillefyrAlder","konverteringbidragAntalAar","setupLogging","statusChanges","varmepumpe","alle","linje_r1","cssClasses","ɵɵtextInterpolate2","beloebSuffix","linjer","PrisberegnerSpecifikationComponent_Template","PrisberegnerSpecifikationComponent_For_2_Template","dbToFloat","PrisberegnerKonfigurationMapper","dtoToKonfiguration","fjernvarmeBbrTrappemodel","prisAbonnement","fjernvarmePrisAbonnement","fjernvarmeBbrPrisPrM2","dtoBbrPriserToKonfiguration","fjernvarmeBbrPriserPrM2","fjernvarmePrisPrMwh","fjernvarmePrisGroenOmstillingsbidrag","tilslutningsbidrag","fjernvarmeTilslutningsbidragFastPris","fjernvarmeVarmemesterordningPrisPrAar","serviceOgVedligeholdPrAar","fjernvarmeServiceOgVedligeholdPrAar","fjernvarmeInvesteringsomkostninger","fjernvarmeNyUnitPris","nyUnitAfskrivningsperiodeAar","fjernvarmeNyUnitAfskrivningsperiodeAar","nyUnitRentesats","parseRentesat","fjernvarmeNyUnitRentesats","parseAntalAar","fjernvarmeKonverteringbidragAntalAar","naturgasBraendvaerdiKwhPrM3","naturgasVirkningsgradVaelgKedlensAlder","parseVirkningsgrad","naturgasVirkningsgrad","naturgasVirkningsgrad0til4Aar","naturgasVirkningsgrad5til8Aar","naturgasVirkningsgrad9tilNAar","abonnementPrAar","natrurgasPrisAbonnementPrAar","systemtarif","naturgasPrisSystemtarif","elPrAar","naturgasPrisElPrAar","prisPrM3","naturgasPrisPrM3","naturgasPrisServiceOgVedligeholdPrAar","nytFyrPris","naturgasNytFyrPris","nytFyrAfskrivningsperiodeAar","naturgasNytFyrAfskrivningsperiodeAar","nytFyrRentesats","naturgasNytFyrRentesats","olieBraendvaerdiKwhPrLiter","olieVirkningsgradVaelgFyretsAlder","olieVirkningsgrad","olieVirkningsgrad0Til4Aar","olieVirkningsgrad5Til8Aar","olieVirkningsgrad9TilNAar","olieElforbrugPrAar","prisPrLiter","oliePrisPrLiter","olieServiceOgVedligeholdPrAar","skorstensfejerPrAar","olieSkorstensfejerPrAar","olieNytFyrPris","olieNytFyrAfskrivningsperiodeAar","olieNytFyrRentesats","traepillerBraendvaerdiKwhPrKg","traepillerVgVaelgFyretsAlder","traepillerVirkningsgrad","traepillerVirkningsgrad0Til4Aar","traepillerVirkningsgrad5Til8Aar","traepillerVirkningsgrad9TilNAar","traepillerElforbrugPrAar","prisPrKg","traepillerPrisPrKg","traepillerServiceOgVedligeholdPrAar","traepillerSkorstensfejerPrAar","traepillerNytFyrPris","traepillerNytFyrAfskrivningsperiodeAar","traepillerNytFyrRentesats","varmepumpeVirkningsgrad","elprisPrKwh","varmepumpeElprisPrKwh","varmepumpeServiceOgVedligeholdPrAar","nyPumpePris","varmepumpeNyPumpePris","nyPumpeAfskrivningsperiodeAar","varmepumpeNyPumpeAfskrivningsperiodeAar","nyPumpeRentesats","varmepumpeNyPumpeRentesats","abonnementsbidrag","tekstAbonnementsbidrag","bbrBidrag","tekstBbrBidrag","energipris","tekstEnergipris","tekstInvesteringsomkostninger","koebAfFjernvarmeunit","tekstKoebAfFjernvarmeunit","tekstMedVarmemesterordning","serviceOgVedligehold","tekstServiceOgVedligehold","groenOmstillingsbidrag","tekstGroenOmstillingsbidrag","tekstTilslutningsbidrag","varmemesterordning","tekstVarmemesterordning","tekstKonverteringsbidragOverskrift","tekstKonverteringsbidragSubtekst1","tekstKonverteringsbidragSubtekst2","tekstKonverteringsbidragToggle1","tekstKonverteringsbidragToggle2","dtoToVarmekilder","fraM2","parseFloat","tilM2","prisPrM2","ids","vk","Number","DecimalPipe","fjernvarmeDetaljer","genererDetaljerFjernvarme","sammenligningskildeDetaljer","genererDetaljerSammenligningskilde","sammenligningskildeIaltLinje","bold","fjernvarmeIaltLinje","fjernvarmeIalt","sammenligningkildeIalt","genererMwhForklaring","createDetaljer","format","transform","formatKr","antalMwh","nyUnitAfskrivningsperiode","suffixBeloeb","suffixBeloebPrAar","forbrug","abonnement","bbrBidragTrappemodel","arealFra","arealTil","areal","varmemesterOrdning","unitGenanskaffelseYdelse","investeringsomkostningerYdelse","konverteringsbidragIalt","genererDetaljerNaturgas","genererDetaljerOlie","genererDetaljerTraepiller","genererDetaljerVarmepumpe","antalM3","nytFyrAfskrivningsperiode","elForbrug","antalLiter","skorstensfejer","antalKg","prisPrKwh","nyPumpeAfskrivningsperiode","elUdgift","bypassSecurityTrustHtml","PrisberegnerRepository","mwhEl","beregnForbrugEl","mwhNaturgas","beregnForbrugNaturgas","mwhOlie","beregnForbrugOlie","mwhTraepiller","beregnForbrugTraepiller","mwhVarmepumpe","beregnForbrugVarmepumpe","mwhIalt","beregnPriserFjernvarme","beregnPriserNaturgas","beregnPriserOlie","beregnPriserTraepiller","beregnPriserVarmepumpe","konverteringsbidragAntalAarParm","round","beregnPrisBBR","beregBBRTrappemodel","beregnYdelsePrAar","bbrBidragTrappemodelIalt","konverteringsbidragAntalAarValgt","forbrugM3","forbrugLiter","forbrugKg","forbrugKwh","pris","antalAar","rente","konfigurationer","mapBbrKonfiguration","beregnPrisBBRTrappemodel","beregnPrisKonverteringsbidragTappemodel","beregnPrisBBRTrappemodelItem","beregnPrisKonverteringsbidragTrappemodelItem","keddelAlder","findVirkningsgrad","DffedbTilslutningsanmodningComponent","DffedbTilslutningsanmodningComponent_HostBindings","item_r2","EForsyningLogindKnapComponent_Conditional_0_For_3_Template_a_click_1_listener","EForsyningLogindKnapComponent_Conditional_0_For_3_Conditional_2_Template","EForsyningLogindKnapComponent_Conditional_0_For_3_Template","EForsyningLogindKnapComponent","credentialsObserver","iconLoggedIn","iconLoggedOut","menuer","currentEforsyningNodeId","mapToSubmenu","loggedIn","EForsyningLogindKnapComponent_HostBindings","EForsyningLogindKnapComponent_Conditional_0_Template","mdiLockOutline","menuIconEforsyning","registerIcon3","cookie_r1","domain","DffCookieConsentCookieListComponent_For_2_Conditional_11_Template","processor","expiry","DffCookieConsentCookieListComponent","cookies","DffCookieConsentCookieListComponent_Template","DffCookieConsentCookieListComponent_For_2_Template","DffCookieConsentDialogComponent_ng_container_0_div_2_Template_a_click_9_listener","onGotoReadMoreClick","DffCookieConsentDialogComponent_ng_container_0_div_2_Template_button_click_12_listener","onConsentApproveClick","DffCookieConsentDialogComponent_ng_container_0_div_2_Template_button_click_14_listener","onConsentRejectClick","mandatory","optional","DffCookieConsentDialogComponent_ng_container_0_div_3_Template_a_click_2_listener","onGotoConsentClick","DffCookieConsentDialogComponent_ng_container_0_div_3_ng_container_12_Template","DffCookieConsentDialogComponent_ng_container_0_div_3_ng_container_13_Template","DffCookieConsentDialogComponent_ng_container_0_div_2_Template","DffCookieConsentDialogComponent_ng_container_0_div_3_Template","DffCookieConsentDialogComponent","approveCookies","rejectCookies","DffCookieConsentDialogComponent_Template","DffCookieConsentDialogComponent_ng_container_0_Template","DffCookieConsentDialogComponent_ng_template_2_Template","spinner_r5","mdiArrowLeft","MatDialog","disableClose","maxWidth","DffCookieConsentOverlayComponent","onShowCookieConsent","ngContentSelectors","_c0","DffCookieConsentOverlayComponent_Template","DffCookieConsentOverlayComponent_Template_a_click_5_listener","cookieConsentsEqual","consent1","consent2","cookieConsentToString","utc","necessary","stringToCookieConsent","keyValuePairs","cc","getAsString","getAsDate","getAsBoolean","getAllEnabledCookieConsent","kv","defaultValue","compareVersions","CookieStorage","cookieStorage","cookieConsentSubject","enableCookiepolitk","requiredConsentVersion","setGoogleTagManagerCookieOptIn","setCookieConsent","deleteCookies","oldConsent","cookieConsentChanged","reload","dataLayer","CookieOptIn","whitelist","getAll","beginUpdate","l","delete","endUpdate","DffDropdownButtonComponent_Conditional_0_Template_a_click_0_listener","DffDropdownButtonComponent_Conditional_0_Conditional_2_Template","DffDropdownButtonComponent_Conditional_1_Template_button_click_0_listener","DffDropdownButtonComponent_Conditional_1_Conditional_3_Template","DffDropdownButtonComponent","listener","listen","contains","onFocusOut","classList","onEnter","onSpace","onMouseover","onmouseleave","dropdown","isExpanded","getAttribute","DffDropdownButtonComponent_Query","DffDropdownButtonComponent_keydown_arrowdown_HostBindingHandler","DffDropdownButtonComponent_keydown_arrowup_HostBindingHandler","DffDropdownButtonComponent_keydown_enter_HostBindingHandler","DffDropdownButtonComponent_keydown_space_HostBindingHandler","DffDropdownButtonComponent_mouseover_HostBindingHandler","DffDropdownButtonComponent_mouseleave_HostBindingHandler","DffDropdownButtonComponent_Conditional_0_Template","DffDropdownButtonComponent_Conditional_1_Template","RendererFactory2","getUmbracoBaseUrl","getUrlQuery","rendererFactory","umbracoIndstillingerRepository","loadStyleSheet","setUmbracoIndstillinger","nostyle","createRenderer","baseGetUrlQuery","getUrlOrigin","getMainScriptUrl","getNgZone","query","ngzone","scripts","s","isSubmitted","submitted","touched","NG_VALUE_ACCESSOR","Pattern","DffFormControl","hint","getErrorText","DffFormControlComponent_Conditional_0_Case_1_ng_container_5_Template","DffFormControlComponent_Conditional_0_Case_1_Conditional_6_Template","DffFormControlComponent_Conditional_0_Case_1_Conditional_7_Template","matSuffix_r2","option_r3","DffFormControlComponent_Conditional_0_Case_2_For_5_Template","DffFormControlComponent_Conditional_0_Case_2_Conditional_7_Template","DffFormControlComponent_Conditional_0_Case_2_Conditional_8_Template","options$","option_r4","DffFormControlComponent_Conditional_0_Case_3_ng_container_6_Template","DffFormControlComponent_Conditional_0_Case_3_Conditional_7_Template","DffFormControlComponent_Conditional_0_Case_3_Conditional_8_Template","DffFormControlComponent_Conditional_0_Case_3_For_12_Template","formControlType","AutocompleteNumeric","auto_r5","DffFormControlComponent_Conditional_0_Case_4_Conditional_3_Template","DffFormControlComponent_Conditional_0_Case_5_Template_input_focus_3_listener","datepicker_r7","DffFormControlComponent_Conditional_0_Case_5_Template_mat_datepicker_closed_6_listener","dateinput_r8","blur","DffFormControlComponent_Conditional_0_Case_5_Conditional_8_Template","DffFormControlComponent_Conditional_0_Case_5_Conditional_9_Template","DffFormControlComponent_Conditional_0_Case_6_ng_container_5_Template","DffFormControlComponent_Conditional_0_Case_6_Conditional_6_Template","DffFormControlComponent_Conditional_0_Case_6_Conditional_7_Template","DffFormControlComponent_Conditional_0_Case_1_Template","DffFormControlComponent_Conditional_0_Case_2_Template","DffFormControlComponent_Conditional_0_Case_3_Template","DffFormControlComponent_Conditional_0_Case_4_Template","DffFormControlComponent_Conditional_0_Case_5_Template","DffFormControlComponent_Conditional_0_Case_6_Template","tmp_2_0","Autocomplete","Checkbox","DateInput","DffFormControlComponent_Conditional_1_Conditional_0_Template","hidden","DffFormControlComponent","getRequiredErrorText","getMaxLengthErrorText","getDateErrorText","getEmailErrorText","getMinMaxErrorText","getMaxDecimalsErrorText","getPatternErrorText","writeValue","registerOnChange","registerOnTouched","matDatepickerParse","mindate","maxdate","requiredLength","requiredPattern","helTal","positivHelTal","kommaTal","positivKommaTal","registreringsNr","kontoNr","useExisting","_c1","DffFormControlComponent_Template","DffFormControlComponent_Conditional_0_Template","DffFormControlComponent_Conditional_1_Template","DffFormControlComponent_ng_template_2_Template","MatDatepickerModule","formState","validatorOrOpts","asyncValidator","setOptions","updateRequired","newValidator","validatorsToArray","validator","isOptionsObj","isArray","tjekOmDerErSketAendringer","setAsyncValidators","aktuelVaerdi","erNullEllerUndefined","oprindeligVaerdi","markAsPristine","markAsDirty","asValidDateOrNull","parseDate","toOprindeligAktuelStrings","hasValue","toOprindeligAktuelIntegers","toOprindeligAktuelFloats","toFloat","toOprindeligAktuelBooleans","toOprindeligAktuelDates","toDate","dffDate","javascriptDate","UntypedFormArray","prototype","getControlsAsArray","onlySelf","markAsTouched","updateDirty","controlsToArray","maxDateValidator","minDateValidator","decimalsValidator","minDate","maxDate","erBlankVaerdi","erValidCprNummer","cprNummerMedBindestregValidator","erValidCprNummerMedBindestreg","cprNummerUdenBindestregValidator","erValidCprNummerUdenBindestreg","erFoerste6cifreValidDato","expected","actual","erValidCvrNummer","erModulusValid","vaegt","total","controlDate","isSameOrAfter","actualDate","isSameOrBefore","DecimalsError","regexp","emailRegexp","erstatEmailValidatorMedDffEdbUdgave","emailValidator","isEmptyInputValue","emailsValidator","emails","results","every","matchingControlName","matchingControl","erValidPNummer","nyAlgoritme","telefonnummerValidator","erValidTelefonr","telefonnumreValidator","telefonnumre","telefonnr","doGetPath","routerState","snapshot","root","queryParams","currentUrl","childUrl","firstChild","navigateByUrl","genererUrl","replaceUrl","navigationExtras","createUrlTree","ActivationStart","NavigationCancel","DffRouteChangingObserver","DffRouteParams","paramMap","queryParamMap","previousUrl","concatMap","scan","brugPagineretRessource","callback","sideNummer","isLoading","isLoadingFirstPage","pageNo","loadingSubject","loading$","fetchSubject","fetch$","fetchPage","loadMore","loadFirstPage","HttpEventType","finalize","executeWithProgress","save","load","onProgress","UploadProgress","calculateProgressPercentage","Response","maxPercentage","percentage","loaded","ProcessingState","idleState","processingState","justProcessedState","processedState","erroredState","errorMessage","rethrowDffError","newError","isFunction","_subs","subscriptions","sub","AccordionStatusIndicatorComponent","AccordionStatusIndicatorComponent_Template","DffButtonPanelComponent","align","cssClass","DffButtonPanelComponent_HostBindings","DffSpinnerButtonComponent","color","spinning","buttonType","click","killHostClickListener","DffSpinnerButtonComponent_HostBindings","DffSpinnerButtonComponent_Template_span_click_0_listener","DffSpinnerButtonComponent_Template_button_click_1_listener","DffSpinnerButtonComponent_Conditional_2_Template","NativeDateAdapter","padLeft","padChar","size","repeat","substr","dffParseDateExact","dateStr","dffParseDate","today","currentYear","getFullYear","currentMonth","getMonth","dffFormatDate","DffDateAdapter","_displayFormat","__ngFactoryType__","DateAdapter","MAT_DATE_FORMATS","MAT_NATIVE_DATE_FORMATS","DffDateModule","MatDffDateModule","addDays","ctx_r3","DffDateFieldComponent","getMinErrorText","getMaxErrorText","getAnyErrorText","matDatepickerMin","matDatepickerMax","label","DffDateFieldComponent_Template","DffDateFieldComponent_Template_input_focus_3_listener","datepicker_r2","DffDateFieldComponent_Template_mat_datepicker_closed_6_listener","dateinput_r3","DffDateFieldComponent_Conditional_8_Template","DffDateFieldComponent_Conditional_9_Template","MatDatepickerIntl","MAT_DATE_LOCALE","CustomDatepickerIntl","DffDateFieldModule","closeCalendarLabel","openCalendarLabel","prevMonthLabel","nextMonthLabel","prevMultiYearLabel","nextMultiYearLabel","switchToMonthViewLabel","switchToMultiYearViewLabel","cancelLabel","setTodayLabel","weekNumberLabel","changesDetected","saveAndCloseLabel","DffEmailFieldComponent","DffEmailFieldComponent_Template","DffEmailFieldComponent_Conditional_4_Template","DffEmailFieldComponent_Conditional_5_Template","DffEmailFieldModule","DffErrorPanelComponent_Conditional_0_Conditional_6_Template_small_click_0_listener","detailsVisible","details","DffErrorPanelComponent_Conditional_0_Conditional_6_Template","DffErrorPanelComponent_Conditional_0_Conditional_7_Template","logId","DffErrorPanelComponent","getMessage","getLogId","getDetails","DffErrorPanelComponent_Template","DffErrorPanelComponent_Conditional_0_Template","_x","_getDetails","apply","arguments","friendlyMessage","DffErrorPanelModule","MAT_DIALOG_DATA","MatDialogRef","DffInfoDialogComponent","dialogRef","DffInfoDialogComponent_Template","DffInfoDialogComponent_Conditional_3_Template","DffInfoDialogComponent_Conditional_4_Template","mdiCloseCircleOutline","afterClosed","interval","isValidDate","DffInfoPopupComponent","manuallyHidden","classDffInfoPopup","classInit","classVisible","startDate","endDate","setHours","getHours","isDateInInterval","intervalFrom","intervalTo","onShowPopup","onHidePopup","DffInfoPopupComponent_HostBindings","DffInfoPopupComponent_Template_a_click_1_listener","DffInfoPopupComponent_Conditional_5_Template","DffInfoPopupComponent_Conditional_6_Template","DffInfoPopupComponent_Conditional_7_Template","DffInfoPopupComponent_Conditional_8_Template","DffInfoPopupComponent_Template_a_click_9_listener","mdiInformationOutline","DffInfoComponent","DffInfoComponent_Template","DffInfoModule","row_r1","DffKvitteringComponent_For_2_Conditional_0_Template","DffKvitteringComponent_For_2_For_5_Template","ɵ$index_3_r3","group_r2","DffKvitteringComponent","DffKvitteringComponent_Template","DffKvitteringComponent_For_2_Template","DffKvitteringModule","groupsHtml","buildGroupHtml","buildPanelHtml","buildSpacerHtml","buildHeaderHtml","buildRowsHtml","row","buildRowHtml","css1","css2","MatSlider","DffMatSliderWrapperComponent","formatValue","matSlider","displayWith","contentQueries","DffMatSliderWrapperComponent_ContentQueries","dirIndex","MatSliderModule","DffMatSliderWrapperModule","DffSideTekstComponent","DffSideTekstComponent_Template","DffSideTekstComponent_Conditional_0_Template","DffSideTekstComponent_Conditional_1_Template","DffSideTitelComponent","DffSideTitelComponent_Template","vm_r1","DffSideComponent_Conditional_0_Conditional_0_Template","DffSideComponent_Conditional_0_Conditional_1_Template","DffSideComponent_Conditional_0_Conditional_2_Template","showContent","DffSideComponent","routeChangingObserver","notNavigating$","changing","showContent$","DffSideComponent_Template","DffSideComponent_Conditional_0_Template","PageErrorModule","ɵ$index_11_r3","knap_r2","DffSimpelDialogComponent","dialogTitle","dialogDesc","hostAttrs","DffSimpelDialogComponent_HostBindings","DffSimpelDialogComponent_Conditional_0_Template","DffSimpelDialogComponent_For_5_Template","knapper","config","matDialogConfig","openOkAnnuller","DffUploadProgressOverlayComponent","DffUploadProgressOverlayComponent_Template","DffUploadProgressOverlayModule","keyframes","iconClass","matIcon","EmptyPageBadgeComponent","slideInFromTop","EmptyPageBadgeComponent_HostBindings","EmptyPageBadgeComponent_Conditional_0_Template","EmptyPageBadgeComponent_Conditional_1_Template","EmptyPageBadgeComponent_Conditional_2_Template","offset","ErrorComponent_Conditional_0_Conditional_5_Template_small_click_0_listener","ErrorComponent_Conditional_0_Conditional_5_Template","ErrorComponent_Conditional_0_Conditional_6_Template","ErrorComponent","ErrorComponent_Template","ErrorComponent_Conditional_0_Template","ErrorModule","getImageFromFile","ImageUploadButtonComponent","onFileChanged","files","file","reader","FileReader","ev","pdf","Blob","pdfFile","filNavn","fil","readAsArrayBuffer","then","ImageUploadButtonComponent_Template","ImageUploadButtonComponent_Template_input_change_0_listener","ImageUploadButtonComponent_Template_button_click_2_listener","fileInput_r2","mdiCameraPlus","ImageUploadButtonModule","DffSidenavMenuComponent_For_2_Conditional_1_Conditional_0_Template_a_click_0_listener","DffSidenavMenuComponent_For_2_Conditional_1_Conditional_0_Conditional_1_Template","getMenuItemId","tmp_13_0","DffSidenavMenuComponent_For_2_Conditional_1_Conditional_1_Template_a_click_0_listener","DffSidenavMenuComponent_For_2_Conditional_1_Conditional_1_Conditional_1_Template","DffSidenavMenuComponent_For_2_Conditional_1_Conditional_0_Template","DffSidenavMenuComponent_For_2_Conditional_1_Conditional_1_Template","DffSidenavMenuComponent_For_2_Conditional_2_Template_mat_expansion_panel_opened_0_listener","hasTabIndex","DffSidenavMenuComponent_For_2_Conditional_2_Template_mat_expansion_panel_closed_0_listener","DffSidenavMenuComponent_For_2_Conditional_2_Conditional_2_Template","DffSidenavMenuComponent_For_2_Conditional_2_Template_dff_sidenav_menu_itemClick_5_listener","DffSidenavMenuComponent_For_2_Conditional_3_Conditional_7_Template_button_click_1_listener","closeSubmenu","DffSidenavMenuComponent_For_2_Conditional_3_Conditional_7_Template_button_keydown_enter_1_listener","DffSidenavMenuComponent_For_2_Conditional_3_Conditional_7_Template_button_keydown_space_1_listener","DffSidenavMenuComponent_For_2_Conditional_3_Conditional_7_Template_dff_sidenav_menu_itemClick_5_listener","currentItem","tmp_18_0","DffSidenavMenuComponent_For_2_Conditional_3_Template_button_click_1_listener","openSubmenu","DffSidenavMenuComponent_For_2_Conditional_3_Template_button_keydown_enter_1_listener","DffSidenavMenuComponent_For_2_Conditional_3_Template_button_keydown_space_1_listener","DffSidenavMenuComponent_For_2_Conditional_3_Conditional_3_Template","DffSidenavMenuComponent_For_2_Conditional_3_Conditional_7_Template","tmp_11_0","isSubmenuVisible","DffSidenavMenuComponent_For_2_Conditional_1_Template","DffSidenavMenuComponent_For_2_Conditional_2_Template","DffSidenavMenuComponent_For_2_Conditional_3_Template","DffSidenavMenuComponent","innerWidth","submenu","getElementById","firstFocusableElement","itemId","itemType","killClick","DffSidenavMenuComponent_Template","DffSidenavMenuComponent_Conditional_0_Template","DffSidenavMenuComponent_For_2_Template","styles","animation","flattenMenuItems","menuItemOrItems","RouterModule","MatListModule","MatDrawer","MatDrawerContainer","MatDrawerContent","mdiArrowRight","mdiPause","PageErrorComponent_Conditional_0_Conditional_3_Template_small_click_0_listener","PageErrorComponent_Conditional_0_Conditional_3_Template","PageErrorComponent_Conditional_0_Conditional_4_Template","PageErrorComponent","PageErrorComponent_Template","PageErrorComponent_Conditional_0_Template","mdiAlertCircleOutline","PanelComponent","PanelComponent_Template","PanelComponent_Conditional_2_Template","MatCardModule","PanelModule","TrustHtmlPipe","TrustHtmlModule","pure","RevealOnFocusDirective","HTMLElement","_elementRef","RevealOnFocusDirective_HostBindings","RevealOnFocusDirective_focus_HostBindingHandler","SpinnerComponent","SpinnerComponent_Template","MatSnackBar","MatSnackBarConfig","snackBar","matSnackBarConfig","horizontalPosition","verticalPosition","visInfo","Hammer","getOffsetLeft","getOffsetTop","getScrollBottom","getScrollLeft","getScrollRight","getScrollTop","getWidth","CanvasZoomService","canvas","redrawCallback","hammerIt","elm","maxScale","minScale","doubletapScaleFactor","realScale","pinchPosX","pinchPosY","pinchScale","pinchTranslateX","pinchTranslateY","currentDoubletapScaleFactor","hammertime","touchAction","on","handleHammerEvent","zoomIn","zoom","zoomOut","scale","pos","realZoom","posX","posY","adjustOverUnderScale","translateX","translateY","clientWidth","scrollLeft","getBoundingClientRect","left","scrollWidth","offsetWidth","getScrollbarWidth","outer","visibility","widthNoScroll","overflow","inner","widthWithScroll","parentNode","MegaPixImage","Image","dimensions","getNewDimensions","mediaType","getMediaTypeFromDataUrl","mpImg","render","maxHeight","quality","readAsDataURL","rotateImageData","imageData","sourceImage","rotateRight","targetImage","orientation","maxWidthAndHeight","isPortrait","floor","dataUrl","start","end","scrollIntoViewIfNeeded","className","addClass","removeClass","shouldAdd","genererUnikId","genererCorrelationId","laengde","createCustomElement","asapScheduler","component","schedule","customElements","define","addDate","tsAddDate","addMonth","tsAddMonth","addYear","tsAddYear","tsAsValidDateOrNull","tsIsValidDate","resetDate","tsResetDate","resetMonth","tsResetMonth","resetYear","tsResetYear","tsFormat","tsParse","values","dateFormat","addYears","years","addMonths","months","days","toUtc","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","formatDayInterval","fullDateFormat","newYear","newMonth","fromFormat","formatYearInterval","dbToDates","dates","datesToDb","dateToDb","dbToInts","isValid","intsToDb","dbToBooleans","booleansToDb","booleanToDb","dbToFloats","divisor","floatsToDb","dbToStrings","stringsToDb","DeviceService","erMobilVisning","isMatched","DffOprindeligAktuelVaerdi","InjectionToken","showNotification","HttpResponseBase","fromError","getFormattedStackTrace","_getFormattedStackTrace","stackFrames","getStackTrace","formatStackTrace","_x2","_getStackTrace","stackFrame","fileName","catch","functionName","lineNumber","unwrapError","brugerbesked","_getErrorDetails","getErrorDetailsRecursive","stringDetails","formatErrorDetail","rejection","_getErrorDetailsRecursive","stack","innerErrorDetails","logFields","hostname","Application","genererLogValue","validChars","XMLHttpRequest","send","vocaIsNumeric","_4","_5","_6","_7","cookie","observable$","updateCount","check","expires","secure","sameSite","notifyChanged","deleteAll","ObservableStorageBase","storage","formatNumber","angularFormatNumber","vocaTrim","vocaTrimRight","whitespace","digitInfo","upperCaseFirstChar","charAt","lastIndexOf","MatIconRegistry","matIconRegistry","domSanitizer","svgData","iconName","addSvgIconLiteral","createSvgTag2","createSvgTag","alphabet","splits","agg","value1","value2","split1","split2","compare","compareSubVersions","localeCompare"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}