{"version":3,"file":"main.js","mappings":"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","sources":["./apps/e-forsyning/src/app/app-info/app-info.component.ts","./apps/e-forsyning/src/app/app-info/app-info.component.html","./apps/e-forsyning/src/app/app-info/app-info.service.ts","./apps/e-forsyning/src/app/app-routing.module.ts","./apps/e-forsyning/src/app/app-vaelg-installation/app-vaelg-installation.component.ts","./apps/e-forsyning/src/app/app-vaelg-installation/app-vaelg-installation.component.html","./apps/e-forsyning/src/app/app.component.ts","./apps/e-forsyning/src/app/app.component.html","./apps/e-forsyning/src/app/app.module.ts","./apps/e-forsyning/src/app/matomo/matomo-config.service.ts","./apps/e-forsyning/src/environments/environment.ts","./apps/e-forsyning/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/kontaktoplysninger-popup/index.ts","./libs/e-forsyning/common/src/lib/kontaktoplysninger-popup/kontaktoplysninger-popup-content/kontaktoplysninger-popup-content.component.ts","./libs/e-forsyning/common/src/lib/kontaktoplysninger-popup/kontaktoplysninger-popup-content/kontaktoplysninger-popup-content.component.html","./libs/e-forsyning/common/src/lib/kontaktoplysninger-popup/kontaktoplysninger-popup-content/kontaktoplysninger-popup-content.sandbox.ts","./libs/e-forsyning/common/src/lib/kontaktoplysninger-popup/kontaktoplysninger-popup-ref.ts","./libs/e-forsyning/common/src/lib/kontaktoplysninger-popup/kontaktoplysninger-popup.module.ts","./libs/e-forsyning/common/src/lib/kontaktoplysninger-popup/kontaktoplysninger-popup.repository.ts","./libs/e-forsyning/common/src/lib/kontaktoplysninger-popup/kontaktoplysninger-popup.service.ts","./libs/e-forsyning/common/src/lib/kontaktoplysninger-popup/kontaktoplysninger-popup.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/loginoplysninger/index.ts","./libs/e-forsyning/common/src/lib/loginoplysninger/loginoplysninger.repository.ts","./libs/e-forsyning/common/src/lib/loginoplysninger/model/loginoplysninger.model.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/silent-login/index.ts","./libs/e-forsyning/common/src/lib/silent-login/silent-login.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/common/src/lib/valgt-installation/valgt-installation.repository.ts","./libs/e-forsyning/common/src/lib/valgt-installation/valgt-installation.service.ts","./libs/e-forsyning/features/default/src/index.ts","./libs/e-forsyning/features/default/src/lib/default.component.ts","./libs/e-forsyning/features/default/src/lib/default.component.html","./libs/e-forsyning/features/default/src/lib/default.module.ts","./libs/e-forsyning/features/login/src/index.ts","./libs/e-forsyning/features/login/src/lib/glemt-kodeord/glemt-kodeord-form-builder.ts","./libs/e-forsyning/features/login/src/lib/glemt-kodeord/glemt-kodeord.component.ts","./libs/e-forsyning/features/login/src/lib/glemt-kodeord/glemt-kodeord.component.html","./libs/e-forsyning/features/login/src/lib/login-container/login-container.component.ts","./libs/e-forsyning/features/login/src/lib/login-container/login-container.component.html","./libs/e-forsyning/features/login/src/lib/login-email/login-email.component.ts","./libs/e-forsyning/features/login/src/lib/login-email/login-email.component.html","./libs/e-forsyning/features/login/src/lib/login-forbrugernr/login-forbrugernr.component.ts","./libs/e-forsyning/features/login/src/lib/login-forbrugernr/login-forbrugernr.component.html","./libs/e-forsyning/features/login/src/lib/login-form-builder.ts","./libs/e-forsyning/features/login/src/lib/login-hjaelp/login-hjaelp.repository.ts","./libs/e-forsyning/features/login/src/lib/login-hjaelp/login-hjaelp.service.ts","./libs/e-forsyning/features/login/src/lib/login.component.ts","./libs/e-forsyning/features/login/src/lib/login.component.html","./libs/e-forsyning/features/login/src/lib/login.module.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 { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from \"@angular/core\";\r\n\r\nimport { AppInfo } from \"./app-info.model\";\r\n\r\n@Component({\r\n selector: \"app-info\",\r\n templateUrl: \"./app-info.component.html\",\r\n styleUrls: [\"./app-info.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AppInfoComponent {\r\n @Input() public value: AppInfo;\r\n @Output() public close = new EventEmitter();\r\n @HostBinding(\"class\") public cssClass = \"backgroundcolor2\";\r\n\r\n public onClose(event: MouseEvent): void {\r\n event.preventDefault();\r\n this.close.emit(this.value);\r\n }\r\n}\r\n","\r\n {{ value.text }}\r\n\r\n\r\n \r\n\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable, of } from \"rxjs\";\r\nimport { map, switchMap } from \"rxjs/operators\";\r\n\r\nimport { addDays, LocalStorage } from \"@dffedb/util\";\r\nimport { AktuelBrugerObserver, Rolle } from \"@e-forsyning/common/bruger\";\r\nimport { UmbracoHttpClient } from \"@e-forsyning/common/http\";\r\n\r\nimport { AppInfo } from \"./app-info.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AppInfoService {\r\n constructor(\r\n private readonly aktuelBrugerObserver: AktuelBrugerObserver,\r\n private readonly umbracoHttp: UmbracoHttpClient,\r\n private readonly localStorage: LocalStorage\r\n ) {}\r\n\r\n public getInfos(): Observable {\r\n const noData: AppInfo[] = [];\r\n return this.aktuelBrugerObserver.valueChanges.pipe(\r\n switchMap((bruger) => (bruger && combineLatest([this.getMaaleraflaesningInfo()])) || of(noData))\r\n );\r\n }\r\n\r\n public getMaaleraflaesningInfo(): Observable {\r\n const text = `Venligst indtast måleraflæsning under menupunktet \"Indtast aflæsninger\".`;\r\n const link = \"#/indtast-aflaesninger\";\r\n const afkraevAflaesningDto$ = this.umbracoHttp.hentSideData(\"indtast-aflaesninger\");\r\n const bruger$ = this.aktuelBrugerObserver.valueChanges;\r\n return combineLatest([afkraevAflaesningDto$, bruger$]).pipe(\r\n map(([dto, bruger]) => {\r\n const startDato = new Date(dto.startDato);\r\n const slutDato = addDays(new Date(dto.slutDato), 1);\r\n const nu = new Date();\r\n const visible = bruger && Rolle.erForbruger(bruger.rolle) && nu >= startDato && nu <= slutDato;\r\n return { text, link, visible };\r\n })\r\n );\r\n }\r\n\r\n public onCloseAppInfo(value: AppInfo): void {\r\n if (value.localStorageKey) {\r\n this.localStorage.setItem(value.localStorageKey, \"NO\");\r\n }\r\n }\r\n}\r\n\r\ninterface AfkraevAflaesningDto {\r\n startDato?: string;\r\n slutDato?: string;\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { PreloadAllModules, Router, RouterModule, Routes } from \"@angular/router\";\r\n\r\nimport { AuthGuard, InstallationGuard, MenuBegraensningGuard, SequentialGuards } from \"@e-forsyning/common/auth\";\r\nimport { DefaultComponent } from \"@e-forsyning/features/default\";\r\nimport { GlemtKodeordComponent, LoginComponent } from \"@e-forsyning/features/login\";\r\n\r\nconst routes: Routes = [\r\n {\r\n path: \"\",\r\n component: DefaultComponent\r\n },\r\n {\r\n path: \"login\",\r\n data: {\r\n title: \"Log ind\"\r\n },\r\n children: [\r\n {\r\n path: \"**\",\r\n component: LoginComponent\r\n }\r\n ]\r\n },\r\n {\r\n path: \"logout\",\r\n redirectTo: \"login\"\r\n },\r\n {\r\n path: \"glemt-kodeord/:guid\",\r\n component: GlemtKodeordComponent\r\n },\r\n {\r\n path: \"deeplink\",\r\n loadChildren: () => import(\"@e-forsyning/features/deeplink\").then((module) => module.EForsyningFeaturesDeeplinkModule)\r\n },\r\n {\r\n path: \"silent-login\",\r\n loadChildren: () => import(\"@e-forsyning/features/silent-login\").then((module) => module.EForsyningFeaturesSilentLoginModule)\r\n },\r\n {\r\n path: \"install-picker\",\r\n loadChildren: () => import(\"@e-forsyning/features/installationer\").then((module) => module.EForsyningFeaturesInstallationerModule),\r\n canActivate: [AuthGuard]\r\n },\r\n {\r\n path: \"noter\",\r\n loadChildren: () => import(\"@e-forsyning/features/noter\").then((module) => module.EForsyningFeaturesNoterModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard, InstallationGuard]\r\n }\r\n },\r\n {\r\n path: \"opgaver\",\r\n loadChildren: () => import(\"@e-forsyning/features/opgavestyring\").then((module) => module.EForsyningFeaturesOpgavestyringModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard],\r\n title: \"Opgaver\"\r\n }\r\n },\r\n {\r\n path: \"mine-dokumenter\",\r\n loadChildren: () => import(\"@e-forsyning/features/dokumenter\").then((module) => module.EForsyningFeaturesDokumenterModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard],\r\n title: \"Mine dokumenter\"\r\n }\r\n },\r\n {\r\n path: \"fakturagodkendelse\",\r\n loadChildren: () =>\r\n import(\"@e-forsyning/features/fakturagodkendelse\").then((module) => module.EForsyningFeaturesFakturagodkendelseModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard],\r\n title: \"Fakturagodkendelse\"\r\n }\r\n },\r\n {\r\n path: \"indtast-aflaesninger\",\r\n loadChildren: () =>\r\n import(\"@e-forsyning/features/maaler-aflaesning\").then((module) => module.EForsyningFeaturesMaalerAflaesningModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard, InstallationGuard],\r\n title: \"Indtast aflæsninger\"\r\n }\r\n },\r\n {\r\n path: \"meld-flytning\",\r\n loadChildren: () =>\r\n import(\"@e-forsyning/features/flyttemeddelelse\").then((module) => module.EForsyningFeaturesFlyttemeddelelseModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard, InstallationGuard],\r\n title: \"Meld flytning\"\r\n }\r\n },\r\n {\r\n path: \"mine-oplysninger\",\r\n loadChildren: () =>\r\n import(\"@e-forsyning/features/mine-oplysninger\").then((module) => module.EForsyningFeaturesMineOplysningerModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard],\r\n title: \"Mine oplysninger\"\r\n }\r\n },\r\n {\r\n path: \"kontakt\",\r\n loadChildren: () => import(\"@e-forsyning/features/kontakt\").then((module) => module.EForsyningFeaturesKontaktModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard],\r\n title: \"Kontakt\"\r\n }\r\n },\r\n {\r\n path: \"mit-forbrug\",\r\n loadChildren: () => import(\"@e-forsyning/features/mit-forbrug\").then((module) => module.EForsyningFeaturesMitForbrugModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard, InstallationGuard],\r\n title: \"Mit forbrug\"\r\n }\r\n },\r\n {\r\n path: \"sms-service\",\r\n loadChildren: () => import(\"@e-forsyning/features/sms-service\").then((module) => module.EForsyningFeaturesSmsServiceModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard],\r\n title: \"SMS Service\"\r\n }\r\n },\r\n {\r\n path: \"forbrugsoverblik\",\r\n loadChildren: () =>\r\n import(\"@e-forsyning/features/forbrugsnotifikation\").then((module) => module.EForsyningFeaturesForbrugsnotifikationModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard],\r\n title: \"Forbrugsoverblik\"\r\n }\r\n },\r\n // {\r\n // path: \"forbrugsoverblik\",\r\n // redirectTo: \"forbrugsnotifikation\"\r\n // },\r\n {\r\n path: \"beregnet-varmeregnskab\",\r\n loadChildren: () => import(\"@e-forsyning/features/prognose\").then((module) => module.EForsyningFeaturesPrognoseModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard, InstallationGuard],\r\n title: \"Beregnet varmeregnskab\"\r\n }\r\n },\r\n // {\r\n //path: \"beregnet-varmeregnskab\",\r\n //redirectTo: \"prognose\"\r\n // },\r\n {\r\n path: \"sammenlign-forbrug\",\r\n loadChildren: () =>\r\n import(\"@e-forsyning/features/sammenlign-forbrug\").then((module) => module.EForsyningFeaturesSammenlignForbrugModule),\r\n canActivate: [SequentialGuards],\r\n data: {\r\n sequentialGuards: [AuthGuard, MenuBegraensningGuard, InstallationGuard],\r\n title: \"Sammenlign forbrug\"\r\n }\r\n },\r\n {\r\n path: \"api/viewDocument/documentid/:dokumentId/unr/:ejendomNr/anr/:aktivNr/inr/:installationNr/viewkey/:viewkey\",\r\n loadChildren: () =>\r\n import(\"@e-forsyning/features/dokument-redirect\").then((module) => module.EForsyningFeaturesDokumentRedirectModule)\r\n },\r\n {\r\n path: \"**\",\r\n loadChildren: () => import(\"@e-forsyning/features/error404\").then((module) => module.EForsyningFeaturesError404Module)\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes, {\r\n useHash: true,\r\n preloadingStrategy: PreloadAllModules,\r\n // TODO 14420: relativeLinkResolution = legacy is deprecated, but is an alternative needed?\r\n //relativeLinkResolution: \"legacy\",\r\n enableTracing: false\r\n })\r\n ],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule {\r\n constructor(router: Router) {\r\n router.events.subscribe((e) => {\r\n // using `instanceof` you can filter the events of interest\r\n //if (e instanceof NavigationCancel) debugger;\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { map, startWith } from \"rxjs/operators\";\r\n\r\nimport { AktuelInstallationObserver } from \"@e-forsyning/common/installation\";\r\nimport { AktuelBrugersInstallationerObserver } from \"@e-forsyning/common/installation\";\r\n\r\nimport { AppVaelgInstallationViewModel } from \"./app-vaelg-installation.view-model\";\r\n\r\n@Component({\r\n selector: \"app-vaelg-installation\",\r\n templateUrl: \"./app-vaelg-installation.component.html\",\r\n styleUrls: [\"./app-vaelg-installation.component.scss\"]\r\n})\r\nexport class AppVaelgInstallationComponent implements OnInit {\r\n public vm$: Observable;\r\n constructor(\r\n private readonly aktuelBrugersInstallationerObserver: AktuelBrugersInstallationerObserver,\r\n private readonly aktuelInstallationObserver: AktuelInstallationObserver\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n const installationer$ = this.aktuelBrugersInstallationerObserver.valueChanges;\r\n const aktuelInstallation$ = this.aktuelInstallationObserver.valueChanges;\r\n this.vm$ = combineLatest([installationer$, aktuelInstallation$]).pipe(\r\n map(([installationer, aktuelInstallation]) => ({\r\n adresse: (aktuelInstallation && aktuelInstallation.adresse) || \"\",\r\n maalerNr: (aktuelInstallation && aktuelInstallation.maalerNr) || \"\",\r\n vaelgInstallationHref: installationer && installationer.length > 1 ? \"#/install-picker\" : \"\"\r\n })),\r\n startWith({ adresse: \"\", maalerNr: \"\", vaelgInstallationHref: \"\" })\r\n );\r\n }\r\n\r\n public onLinkClick(event: MouseEvent, href: string): void {\r\n if (!href) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","@if (vm$ | async; as vm) {\r\n
\r\n @if (vm.vaelgInstallationHref) {\r\n \r\n
\r\n
\r\n \r\n {{ vm.adresse }}\r\n \r\n
\r\n @if (vm.maalerNr) {\r\n Måler: {{ vm.maalerNr }}\r\n }\r\n @if (vm.adresse && !vm.maalerNr) {\r\n Status: Passiv\r\n }\r\n
\r\n @if (vm.vaelgInstallationHref) {\r\n SKIFT...\r\n }\r\n \r\n } @else {\r\n
\r\n
\r\n
\r\n \r\n {{ vm.adresse }}\r\n \r\n
\r\n @if (vm.maalerNr) {\r\n Måler: {{ vm.maalerNr }}\r\n }\r\n @if (vm.adresse && !vm.maalerNr) {\r\n Status: Passiv\r\n }\r\n
\r\n @if (vm.vaelgInstallationHref) {\r\n SKIFT...\r\n }\r\n
\r\n }\r\n
\r\n}\r\n","import { Component, OnInit } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { delay, filter, map } from \"rxjs/operators\";\r\n\r\nimport { AppserverInstallationCredentialsRepository } from \"@e-forsyning/common/credentials\";\r\nimport { RedirectService } from \"@e-forsyning/common/router\";\r\n\r\nimport { AppInfo } from \"./app-info/app-info.model\";\r\nimport { AppInfoService } from \"./app-info/app-info.service\";\r\nimport { ActivatedRoute, NavigationEnd, Router } from \"@angular/router\";\r\nimport { Title } from \"@angular/platform-browser\";\r\n\r\n@Component({\r\n selector: \"app-root\",\r\n templateUrl: \"./app.component.html\",\r\n styleUrls: [\"./app.component.scss\"]\r\n})\r\nexport class AppComponent implements OnInit {\r\n public erLoggetInd$: Observable;\r\n public infos$: Observable;\r\n\r\n constructor(\r\n private readonly credentials: AppserverInstallationCredentialsRepository,\r\n private readonly redirectService: RedirectService,\r\n private readonly appInfoService: AppInfoService,\r\n private router: Router,\r\n private titleService: Title,\r\n private route: ActivatedRoute\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.erLoggetInd$ = this.credentials.valueChanges.pipe(\r\n delay(0) /* Lav fra Synkron til Asynkron for at undgå: ExpressionChangedAfterItHasBeenCheckedError */,\r\n map((credentials) => !!credentials.forsyningNodeId)\r\n );\r\n this.infos$ = this.appInfoService\r\n .getInfos()\r\n .pipe(delay(0) /* Lav fra Synkron til Asynkron for at undgå: ExpressionChangedAfterItHasBeenCheckedError */);\r\n\r\n this.setPageTitle();\r\n }\r\n\r\n public setPageTitle() {\r\n this.router.events\r\n .pipe(\r\n filter((event) => event instanceof NavigationEnd),\r\n map(() => {\r\n const child: ActivatedRoute | null = this.route.firstChild;\r\n const documentid = this.router.url.split(\"/mine-dokumenter/\").pop();\r\n let title = child && child.snapshot.data[\"title\"];\r\n if (this.router.url.includes(\"/mine-dokumenter/\") && documentid && title) {\r\n return `${title} - ${documentid}`;\r\n } else if (title) {\r\n return title;\r\n }\r\n })\r\n )\r\n .subscribe((title) => {\r\n if (title) {\r\n this.titleService.setTitle(`${title} - E|Forsyning`);\r\n }\r\n });\r\n }\r\n\r\n public onInstallationerClick(): void {\r\n this.redirectService.redirectTilInstallationer();\r\n }\r\n\r\n public onCloseAppInfo(value: AppInfo): void {\r\n value.visible = false;\r\n this.appInfoService.onCloseAppInfo(value);\r\n }\r\n}\r\n","\r\n @if (erLoggetInd$ | async) {\r\n \r\n }\r\n \r\n
\r\n
\r\n @for (info of infos$ | async; track info) {\r\n @if (info.visible) {\r\n \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 { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\n\r\nimport { mdiClose } from \"@mdi/js\";\r\nimport \"hammerjs\"; // Kræves for at kunne dragge MatSlideToggle\r\nimport { CookieService } from \"ngx-cookie-service\";\r\nimport { filter } from \"rxjs/operators\";\r\nimport { first } from \"rxjs/operators\";\r\n\r\nimport { erstatEmailValidatorMedDffEdbUdgave } from \"@dffedb/forms\";\r\nimport { DffSimpelDialogModule, MatDffDateModule } from \"@dffedb/ui\";\r\nimport { ENV, LogentriesLoggerService, LOGGER, SvgIconRegistry } from \"@dffedb/util\";\r\nimport { AppShellModule } from \"@e-forsyning/common/app-shell\";\r\nimport { EBoksPopupService, EBoksTilmeldingModule } from \"@e-forsyning/common/e-boks\";\r\nimport { EforsyningMenuService, EforsyningSidenavMenuModule } from \"@e-forsyning/common/eforsyning-menu\";\r\nimport { EforsyningErrorHandler } from \"@e-forsyning/common/error\";\r\nimport { EforsyningHttpInterceptor } from \"@e-forsyning/common/http\";\r\nimport { KontaktoplysningerPopupModule, KontaktoplysningerPopupService } from \"@e-forsyning/common/kontaktoplysninger-popup\";\r\nimport { initUmbracoIndstillinger } from \"@e-forsyning/common/umbraco-indstillinger\";\r\nimport { RolleBodyClassService, RouteBodyClassService } from \"@e-forsyning/common/util\";\r\nimport { EForsyningFeaturesDefaultModule } from \"@e-forsyning/features/default\";\r\nimport { EForsyningFeaturesLoginModule } from \"@e-forsyning/features/login\";\r\nimport { DffedbCookieConsentModule, DffedbDriftsstatusKnapModule, DffedbFancyboxModule, EForsyningLogindKnapModule } from \"@e-forsyning/web-components\";\r\n\r\nimport { environment } from \"../environments/environment\";\r\nimport { AppInfoComponent } from \"./app-info/app-info.component\";\r\nimport { AppRoutingModule } from \"./app-routing.module\";\r\nimport { AppVaelgInstallationComponent } from \"./app-vaelg-installation/app-vaelg-installation.component\";\r\nimport { AppComponent } from \"./app.component\";\r\nimport { MATOMO_CONFIGURATION, MatomoConfiguration, MatomoModule, MatomoRouterModule, provideMatomo } from \"ngx-matomo-client\";\r\nimport { MatomoConfigService } from \"./matomo/matomo-config.service\";\r\nimport { AktuelBrugersInstallationerService } from \"@e-forsyning/common/installation/aktuel-brugers-installationer.service\";\r\n\r\nregisterLocaleData(localeDa);\r\nerstatEmailValidatorMedDffEdbUdgave();\r\n\r\n@NgModule({\r\n declarations: [AppComponent, AppInfoComponent, AppVaelgInstallationComponent],\r\n imports: [\r\n AppShellModule,\r\n BrowserModule,\r\n AppRoutingModule,\r\n HttpClientModule,\r\n BrowserAnimationsModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatSnackBarModule,\r\n MatDffDateModule,\r\n DffSimpelDialogModule,\r\n EForsyningFeaturesDefaultModule,\r\n EForsyningFeaturesLoginModule,\r\n EforsyningSidenavMenuModule,\r\n EBoksTilmeldingModule,\r\n KontaktoplysningerPopupModule,\r\n EForsyningLogindKnapModule,\r\n DffedbCookieConsentModule,\r\n DffedbDriftsstatusKnapModule,\r\n DffedbFancyboxModule, // Registrerer WebComponent \r\n MatomoRouterModule,\r\n MatomoModule.forRoot({\r\n mode: \"auto\",\r\n requireConsent: \"cookie\",\r\n siteId: 0, // Replace with your actual site ID\r\n trackerUrl: \"//matomo.eforsyning.dk\" // Replace with your actual tracker URL\r\n })\r\n ],\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 {\r\n provide: APP_INITIALIZER,\r\n useFactory: appInit,\r\n deps: [Injector],\r\n multi: true\r\n },\r\n {\r\n provide: MATOMO_CONFIGURATION,\r\n useFactory: matomoConfigFactory,\r\n deps: [MatomoConfigService]\r\n },\r\n AktuelBrugersInstallationerService // Ensure the service is provided\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n constructor(svgIconRegistry: SvgIconRegistry) {\r\n svgIconRegistry.registerIcon(mdiClose, \"app-info-close\", \"dummy-to-trigger-build-v1\");\r\n }\r\n}\r\n// TODO 14420 - Matomo - implement new Matomo tracking package\r\nexport function matomoConfigFactory(service: MatomoConfigService) {\r\n // console.log(\"matomoConfigFactory\", service, service.myBackendConfig);\r\n\r\n // return service.buildConfig((window as any).matomoSiteId);\r\n return {\r\n siteId: 0,\r\n trackerUrl: \"//matomo.eforsyning.dk\",\r\n scriptUrl: `//matomo.eforsyning.dk/js/container_.js`,\r\n requireConsent: \"tracking\"\r\n };\r\n}\r\n\r\nexport function appInit(injector: Injector): () => void {\r\n return () => {\r\n initUmbracoIndstillinger(injector, (window as any).initUmbracoIndstillinger);\r\n initBodyClassServices(injector);\r\n initPopups(injector);\r\n injector.get(EforsyningMenuService).init();\r\n };\r\n}\r\n\r\nfunction initBodyClassServices(injector: Injector): void {\r\n injector.get(RouteBodyClassService).setup();\r\n injector.get(RolleBodyClassService).setup();\r\n}\r\n\r\nfunction initPopups(injector: Injector): void {\r\n const router = injector.get(Router);\r\n const eboksPopupService = injector.get(EBoksPopupService);\r\n const kontaktoplysningerPopupService = injector.get(KontaktoplysningerPopupService);\r\n const aktuelBrugersInstallationerService = injector.get(AktuelBrugersInstallationerService); // Get the service instance\r\n\r\n //vi skal se om der er fler einstallationer\r\n router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe(async () => {\r\n const installationer = await aktuelBrugersInstallationerService.select().pipe(first()).toPromise();\r\n if (installationer.length === 1) {\r\n eboksPopupService.aabnHvisIkkeAlleredeTilmeldt().then(() => {\r\n kontaktoplysningerPopupService.aabnHvisIkkeAlleredeTilmeldt();\r\n });\r\n }\r\n });\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatomoConfiguration } from \"ngx-matomo-client\";\r\n\r\n// TODO 14420 - Matomo - implement new Matomo tracking package\r\n//import { MatomoConfiguration } from \"@ngx-matomo/tracker\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class MatomoConfigService {\r\n // \"dummy\" data, otherwise tracker throws due to null properties\r\n // public myBackendConfig: any = { trackerUrl: \"//eforsyning.dk:42555/matomo\", siteId: \"0\" };\r\n // public myBackendConfig: any = { trackerUrl: \"//eforsyning.matomo.cloud/\", siteId: \"0\" };\r\n //public myBackendConfig: any = { trackerUrl: \"//matomo.eforsyning.dk\", siteId: \"0\" };\r\n\r\n // TODO 14420 - Matomo - implement new Matomo tracking package\r\n\r\n public myBackendConfig: {\r\n siteId: 0;\r\n trackerUrl: \"//matomo.eforsyning.dk\";\r\n scriptUrl: `//matomo.eforsyning.dk/js/container_.js`;\r\n requireConsent: \"tracking\";\r\n };\r\n\r\n public buildConfig(matomoSiteId: number): MatomoConfiguration {\r\n //console.log(\"buildConfig\", matomoSiteId);\r\n return {\r\n siteId: matomoSiteId?.toString(),\r\n trackerUrl: this.myBackendConfig.trackerUrl ?? \"//matomo.eforsyning.dk\"\r\n };\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: \"E|Forsyning\",\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 \"./kontaktoplysninger-popup.service\";\r\nexport * from \"./kontaktoplysninger-popup.module\";\r\n","import { Component } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { IFormGroup } from \"@dffedb/forms\";\r\nimport { DffInfoDialog } from \"@dffedb/ui\";\r\n\r\nimport { KontaktoplysningerPopupRef } from \"../kontaktoplysninger-popup-ref\";\r\nimport { KontaktoplysningerPopupContentModel } from \"./kontaktoplysninger-popup-content.model\";\r\nimport { KontaktoplysningerPopupContentSandbox } from \"./kontaktoplysninger-popup-content.sandbox\";\r\nimport { KontaktoplysningerPopupContentViewModel } from \"./kontaktoplysninger-popup-content.view-model\";\r\n\r\n@Component({\r\n selector: \"kontaktoplysninger-popup-content\",\r\n templateUrl: \"./kontaktoplysninger-popup-content.component.html\",\r\n styleUrls: [\"./kontaktoplysninger-popup-content.component.scss\"]\r\n})\r\nexport class KontaktoplysningerPopupContentComponent {\r\n public vm$: Observable;\r\n\r\n constructor(\r\n private readonly popupRef: KontaktoplysningerPopupRef,\r\n private readonly sandbox: KontaktoplysningerPopupContentSandbox,\r\n private readonly dialog: DffInfoDialog\r\n ) {\r\n this.vm$ = this.sandbox.hentViewModel();\r\n }\r\n\r\n public onLuk(): void {\r\n this.popupRef.cancel();\r\n }\r\n\r\n public async onGem(formGroup: IFormGroup): Promise {\r\n await this.sandbox.gem(formGroup.value);\r\n this.popupRef.close();\r\n await this.dialog.success(\"\", \"Vi har registreret dine oplysninger\").toPromise();\r\n }\r\n}\r\n","

    Digital kommunikation

    \r\n@if (vm$ | async; as vm) {\r\n \r\n @if (vm.formGroup.value.telefonnr || vm.formGroup.value.beboeremail) {\r\n
    \r\n

    Har du ændringer til dit mobilnummer eller din e-mail?

    \r\n
    \r\n } @else {\r\n

    Indtast dit mobilnummer og din e-mail, så vi kan sende dig information digitalt.

    \r\n }\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n @if (vm.formGroup.get('beboeremail').errors) {\r\n Indtast en gyldig e-mail\r\n }\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n } @else {\r\n \r\n }\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { UntypedFormBuilder } from \"@angular/forms\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { emailsValidator, IFormBuilder } from \"@dffedb/forms\";\r\nimport { ValgtInstallationService } from \"@e-forsyning/common/valgt-installation/valgt-installation.service\";\r\n\r\nimport { KontaktoplysningerPopupContentModel } from \"./kontaktoplysninger-popup-content.model\";\r\nimport { KontaktoplysningerPopupContentViewModel } from \"./kontaktoplysninger-popup-content.view-model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class KontaktoplysningerPopupContentSandbox {\r\n private readonly fb: IFormBuilder;\r\n\r\n constructor(fb: UntypedFormBuilder, private readonly valgtInstallationService: ValgtInstallationService) {\r\n this.fb = fb;\r\n }\r\n\r\n public hentViewModel(): Observable {\r\n const result = this.valgtInstallationService.hentInstallationsoplysninger().pipe(\r\n map((i) => ({\r\n formGroup: this.fb.group({\r\n telefonnr: this.fb.control(i.telefonnr),\r\n beboeremail: this.fb.control(i.beboeremail, [emailsValidator(\",\")])\r\n })\r\n }))\r\n );\r\n return result;\r\n }\r\n\r\n public async gem(value: KontaktoplysningerPopupContentModel): Promise {\r\n await this.valgtInstallationService.redigerBeboeremail(value.beboeremail);\r\n await this.valgtInstallationService.redigerTelefonnr(value.telefonnr);\r\n }\r\n}\r\n","import { OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { EventEmitter } from \"@angular/core\";\r\n\r\nexport class KontaktoplysningerPopupRef {\r\n public canceled = new EventEmitter();\r\n public closed = new EventEmitter();\r\n constructor(private overlayRef: OverlayRef) {}\r\n\r\n public close(): void {\r\n this.overlayRef.dispose();\r\n this.closed.emit();\r\n }\r\n\r\n public cancel(): void {\r\n this.overlayRef.dispose();\r\n this.canceled.emit();\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 { mdiClose } from \"@mdi/js\";\r\nimport { NgxMaskDirective, NgxMaskPipe, provideEnvironmentNgxMask } from \"ngx-mask\";\r\n\r\nimport { DffButtonModule, DffInfoDialogModule, DffSimpelDialogModule, RevealOnFocusModule, SpinnerModule } from \"@dffedb/ui\";\r\nimport { SvgIconRegistry } from \"@dffedb/util\";\r\n\r\nimport { KontaktoplysningerPopupContentComponent } from \"./kontaktoplysninger-popup-content/kontaktoplysninger-popup-content.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 SpinnerModule,\r\n NgxMaskDirective,\r\n NgxMaskPipe,\r\n DffSimpelDialogModule,\r\n DffButtonModule,\r\n RevealOnFocusModule,\r\n DffInfoDialogModule\r\n ],\r\n declarations: [KontaktoplysningerPopupContentComponent],\r\n exports: [],\r\n providers: [provideEnvironmentNgxMask()]\r\n})\r\nexport class KontaktoplysningerPopupModule {\r\n constructor(iconRegistry: SvgIconRegistry) {\r\n iconRegistry.registerIcon(mdiClose, \"kontaktoplysninger-dialog-close-icon\");\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 { UmbracoHttpClient } from \"@e-forsyning/common/http\";\r\n\r\nimport { KontaktoplysningerPopupIndstillinger } from \"./kontaktoplysninger-popup-content/kontaktoplysninger-popup-content.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class KontaktoplysningerPopupRepository {\r\n constructor(private readonly umbracoHttpClient: UmbracoHttpClient) {}\r\n public hentIndstillinger(): Observable {\r\n return this.umbracoHttpClient.hentSideData(\"\").pipe(\r\n map((value) => ({\r\n visKampagne: value.kontaktoplysningerKampagne === \"1\"\r\n })),\r\n shareReplay(1)\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { combineLatest, Observable } from \"rxjs\";\r\nimport { first, map, mapTo, shareReplay } from \"rxjs/operators\";\r\n\r\nimport { DffCurrentRoute } from \"@dffedb/router\";\r\nimport { CookieStorage } 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\nimport { SilentLoginService } from \"@e-forsyning/common/silent-login\";\r\n\r\nimport { EBoksPopupService } from \"../e-boks\";\r\nimport { KontaktoplysningerPopup } from \"./kontaktoplysninger-popup\";\r\nimport { KontaktoplysningerPopupRef } from \"./kontaktoplysninger-popup-ref\";\r\nimport { KontaktoplysningerPopupRepository } from \"./kontaktoplysninger-popup.repository\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class KontaktoplysningerPopupService {\r\n public popupAnnulleret: boolean;\r\n private readonly erForbruger$: Observable;\r\n private readonly erKampagneAktiveret$: Observable;\r\n\r\n constructor(\r\n private readonly popup: KontaktoplysningerPopup,\r\n private readonly repository: KontaktoplysningerPopupRepository,\r\n private readonly loginService: LoginService,\r\n private readonly cookieStorage: CookieStorage,\r\n private readonly eboksPopupService: EBoksPopupService,\r\n private readonly aktuelBrugerObserver: AktuelBrugerObserver,\r\n private readonly currentRoute: DffCurrentRoute,\r\n private readonly silentLoginService: SilentLoginService\r\n ) {\r\n this.erForbruger$ = this.erForbruger();\r\n this.erKampagneAktiveret$ = this.erKampagneAktiveret();\r\n }\r\n\r\n public get popupAlleredeVist(): boolean {\r\n return !!this.cookieStorage.get(\"kontaktoplysninger-popup-vist\");\r\n }\r\n\r\n public set popupAlleredeVist(value: boolean) {\r\n // Vi viser popup'en i morgen hvis der er annuleret ellers om 90 dage\r\n this.cookieStorage.set(\"kontaktoplysninger-popup-vist\", value.toString(), this.popupAnnulleret ? 1 : 90);\r\n\r\n // this.cookieStorage.set(\"kontaktoplysninger-popup-vist\", value.toString(), 90);\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() {\r\n if (this.visIkkePopupPaaAktuelleSide()) {\r\n return false;\r\n }\r\n if (this.silentLoginService.erLoggetPaaViaSilentLogin) {\r\n return false;\r\n }\r\n if (!this.loginService.erLoggetInd()) {\r\n return false;\r\n }\r\n if (this.popupAlleredeVist) {\r\n return false;\r\n }\r\n const forbrugerElKampagne = combineLatest([this.erForbruger$.pipe(first()), this.erKampagneAktiveret$.pipe(first())]);\r\n\r\n return Promise.resolve(forbrugerElKampagne);\r\n }\r\n\r\n private open(): KontaktoplysningerPopupRef {\r\n const result = this.popup.open();\r\n result.closed.pipe(first()).subscribe(() => {\r\n this.popupAnnulleret = false;\r\n this.popupAlleredeVist = true;\r\n });\r\n result.canceled.pipe(first()).subscribe(() => {\r\n this.popupAnnulleret = true;\r\n this.popupAlleredeVist = true;\r\n });\r\n return result;\r\n }\r\n\r\n private erKampagneAktiveret(): Observable {\r\n return this.repository.hentIndstillinger().pipe(\r\n map((result) => result.visKampagne),\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 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 { KontaktoplysningerPopupContentComponent } from \"./kontaktoplysninger-popup-content/kontaktoplysninger-popup-content.component\";\r\nimport { KontaktoplysningerPopupRef } from \"./kontaktoplysninger-popup-ref\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class KontaktoplysningerPopup {\r\n public popupRef: KontaktoplysningerPopupRef;\r\n constructor(private readonly injector: Injector, private readonly overlay: Overlay) {}\r\n\r\n public open(): KontaktoplysningerPopupRef {\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: \"kontaktoplysninger-popup-backdrop\",\r\n scrollStrategy: this.overlay.scrollStrategies.block()\r\n });\r\n this.popupRef = new KontaktoplysningerPopupRef(overlayRef);\r\n this.popupRef.closed.subscribe(() => {\r\n this.popupRef = null;\r\n });\r\n this.popupRef.canceled.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: KontaktoplysningerPopupRef): KontaktoplysningerPopupContentComponent {\r\n const injector = this.createInjector(popupRef);\r\n const containerPortal = new ComponentPortal(KontaktoplysningerPopupContentComponent, null, injector);\r\n const containerRef = overlayRef.attach(containerPortal);\r\n return containerRef.instance;\r\n }\r\n\r\n private createInjector(popupRef: KontaktoplysningerPopupRef): Injector {\r\n return Injector.create({\r\n parent: this.injector,\r\n providers: [\r\n {\r\n provide: KontaktoplysningerPopupRef,\r\n useValue: popupRef\r\n }\r\n ]\r\n });\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 * from \"./model/loginoplysninger.model\";\r\nexport * from \"./loginoplysninger.repository\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { mapTo } from \"rxjs/operators\";\r\n\r\nimport { InstallationHttpClient, ParametreForAktuelleInstallation } from \"@e-forsyning/common/http\";\r\n\r\nimport { ILoginoplysninger } from \"./model/loginoplysninger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class LoginoplysningerRepository {\r\n constructor(private readonly http: InstallationHttpClient) {}\r\n\r\n public redigerLoginoplysninger(loginoplysninger: ILoginoplysninger): Promise {\r\n const info = {\r\n soldPwd: loginoplysninger.nuvaerendeKodeord,\r\n saltedPwd: loginoplysninger.nytKodeord,\r\n eBrugerId: loginoplysninger.brugerId\r\n };\r\n\r\n return this.http.postWithStringResult(\"api/updatepwd\", info, ParametreForAktuelleInstallation.true).pipe(mapTo(null)).toPromise();\r\n }\r\n}\r\n","export interface ILoginoplysninger {\r\n nuvaerendeKodeord: string;\r\n nytKodeord: string;\r\n gentagNytKodeord: string;\r\n brugerId: number;\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","export * from \"./silent-login.service\";\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { SessionStorage } from \"@dffedb/util\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class SilentLoginService {\r\n private readonly key = \"logget-paa-via-silent-login\";\r\n\r\n constructor(public readonly sessionStorage: SessionStorage) {}\r\n\r\n public get erLoggetPaaViaSilentLogin(): boolean {\r\n return this.sessionStorage.getItem(this.key) === \"true\";\r\n }\r\n\r\n public set erLoggetPaaViaSilentLogin(value: boolean) {\r\n this.sessionStorage.setItem(this.key, value ? \"true\" : \"false\");\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","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { map, mapTo } from \"rxjs/operators\";\r\n\r\nimport { Rolle } from \"@e-forsyning/common/bruger\";\r\nimport { InstallationHttpClient, ParametreForAktuelleInstallation } from \"@e-forsyning/common/http\";\r\nimport { IInstallationsoplysninger } from \"@e-forsyning/common/installation\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ValgtInstallationRepository {\r\n constructor(private readonly http: InstallationHttpClient) {}\r\n\r\n public hentInstallationsoplysninger(): Observable {\r\n return this.http\r\n .get(\"api/getebrugerinfo\", ParametreForAktuelleInstallation.true)\r\n .pipe(map((installationsoplysningerFof: any) => this.mapTo(installationsoplysningerFof)));\r\n }\r\n\r\n public async redigerMail(mail: string): Promise {\r\n return this.redigerBrugeroplysning(\"EMAIL\", mail);\r\n }\r\n\r\n public async redigerTelefonnummer(telefonnummer: string): Promise {\r\n return this.redigerBrugeroplysning(\"TLF\", telefonnummer);\r\n }\r\n\r\n public async redigerBeboeremail(beboeremail: string): Promise {\r\n return this.redigerBrugeroplysning(\"BEBOEREMAIL\", beboeremail);\r\n }\r\n\r\n private async redigerBrugeroplysning(type: \"TLF\" | \"EMAIL\" | \"BEBOEREMAIL\", value: string): Promise {\r\n const data = {\r\n [type.toLowerCase()]: value,\r\n toUpdate: type\r\n };\r\n return await this.http\r\n .postWithStringResult(\"api/updateebruger\", data, ParametreForAktuelleInstallation.true)\r\n .pipe(mapTo(null))\r\n .toPromise();\r\n }\r\n\r\n private mapTo(installationsoplysningerFof: any): IInstallationsoplysninger {\r\n return {\r\n ejendomnr: installationsoplysningerFof.ejendomnr,\r\n navn: installationsoplysningerFof.navn,\r\n navn2: installationsoplysningerFof.navn2,\r\n vejnavn: installationsoplysningerFof.vej,\r\n husnr: installationsoplysningerFof.husnr,\r\n litra: installationsoplysningerFof.litra,\r\n litra2: installationsoplysningerFof.litra2,\r\n postnr: installationsoplysningerFof.postnr,\r\n telefonnr: installationsoplysningerFof.tlf,\r\n beboeremail: installationsoplysningerFof.beboeremail,\r\n bynavn: installationsoplysningerFof.bynavn,\r\n mail: installationsoplysningerFof.email,\r\n id: installationsoplysningerFof.id,\r\n rolle: installationsoplysningerFof.rolle as Rolle,\r\n ejerNavn: installationsoplysningerFof.ejerNavn\r\n };\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport MD5 from \"md5-es\";\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport { catchError, first } from \"rxjs/operators\";\r\n\r\nimport { DffError } from \"@dffedb/util\";\r\nimport { LocalStorage } from \"@dffedb/util\";\r\nimport { AppserverInstallationCredentialsRepository } from \"@e-forsyning/common/credentials\";\r\nimport { IInstallationsoplysninger } from \"@e-forsyning/common/installation\";\r\nimport { ILoginoplysninger, LoginoplysningerRepository } from \"@e-forsyning/common/loginoplysninger\";\r\n\r\nimport { ValgtForbrugerObserver } from \"../bruger/valgt-forbruger.observer\";\r\nimport { ValgtInstallationRepository } from \"./valgt-installation.repository\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class ValgtInstallationService {\r\n constructor(\r\n private readonly localStorage: LocalStorage,\r\n private readonly valgtInstallationRepository: ValgtInstallationRepository,\r\n private readonly credentialsRepository: AppserverInstallationCredentialsRepository,\r\n private readonly loginoplysningerRepository: LoginoplysningerRepository,\r\n private readonly valgtForbrugerObserver: ValgtForbrugerObserver\r\n ) {}\r\n\r\n public hentInstallationsoplysninger(): Observable {\r\n return this.valgtInstallationRepository.hentInstallationsoplysninger().pipe(\r\n catchError((e) =>\r\n throwError(\r\n new DffError(e.message, {\r\n friendlyMessage: \"Fejl i hent installationsoplysninger.\",\r\n innerError: e,\r\n showNotification: true\r\n })\r\n )\r\n )\r\n );\r\n }\r\n\r\n public async redigerTelefonnr(telefonnr: string): Promise {\r\n await this.valgtInstallationRepository.redigerTelefonnummer(telefonnr);\r\n this.localStorage.setItem(\"remindMe\", \"NO\");\r\n }\r\n\r\n public async redigerBeboeremail(beboeremail: string): Promise {\r\n await this.valgtInstallationRepository.redigerBeboeremail(beboeremail);\r\n this.localStorage.setItem(\"remindMe\", \"NO\");\r\n }\r\n\r\n public async redigerMail(mail: string): Promise {\r\n await this.valgtInstallationRepository.redigerMail(mail);\r\n this.localStorage.setItem(\"remindMe\", \"NO\");\r\n }\r\n\r\n public async redigerLoginoplysninger(loginoplysninger: ILoginoplysninger): Promise {\r\n const valgtBruger = await this.valgtForbrugerObserver.valueChanges.pipe(first()).toPromise();\r\n loginoplysninger.nytKodeord = MD5.hash(loginoplysninger.nytKodeord);\r\n loginoplysninger.nuvaerendeKodeord = MD5.hash(loginoplysninger.nuvaerendeKodeord);\r\n loginoplysninger.brugerId = valgtBruger.id;\r\n\r\n return await this.loginoplysningerRepository.redigerLoginoplysninger(loginoplysninger);\r\n }\r\n\r\n public hentEjendomNr(): number {\r\n return this.credentialsRepository.hent().ejendomNr;\r\n }\r\n\r\n public hentAktivNr(): number {\r\n return this.credentialsRepository.hent().aktivNr;\r\n }\r\n\r\n public hentInstallationNr(): number {\r\n return this.credentialsRepository.hent().installationNr;\r\n }\r\n\r\n public hentForsyningId(): string {\r\n return this.credentialsRepository.hent().forsyningId;\r\n }\r\n}\r\n","export * from \"./lib/default.component\";\r\nexport * from \"./lib/default.module\";\r\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { map, shareReplay, switchMap } from \"rxjs/operators\";\r\n\r\nimport { SubSink } from \"@dffedb/rxjs\";\r\nimport { AppserverBrugerCredentialsRepository } from \"@e-forsyning/common/credentials\";\r\nimport { Installation } from \"@e-forsyning/common/installation\";\r\nimport { AktuelBrugersInstallationerObserver } from \"@e-forsyning/common/installation\";\r\nimport { RedirectService } from \"@e-forsyning/common/router\";\r\n\r\nimport { DefaultComponentViewModel } from \"./default.component.view-model\";\r\n\r\n@Component({\r\n templateUrl: \"./default.component.html\",\r\n styleUrls: [\"./default.component.scss\"]\r\n})\r\nexport class DefaultComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n public vm$: Observable;\r\n\r\n constructor(\r\n private readonly brugerCredentialsRepository: AppserverBrugerCredentialsRepository,\r\n private readonly aktuelBrugersInstallationerObserver: AktuelBrugersInstallationerObserver,\r\n private readonly redirectService: RedirectService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n const erLoggetInd$ = this.brugerCredentialsRepository.valueChanges.pipe(map((credentials) => !!credentials.cryptId));\r\n const installationer$ = this.aktuelBrugersInstallationerObserver.valueChanges;\r\n this.vm$ = erLoggetInd$.pipe(\r\n switchMap((erLoggetInd) =>\r\n erLoggetInd\r\n ? installationer$.pipe(map((installationer) => ({ erLoggetInd, installationer })))\r\n : of({ erLoggetInd, installationer: [] as Installation[] })\r\n ),\r\n shareReplay(1)\r\n );\r\n\r\n this.subs.sink = this.vm$.subscribe((vm) => {\r\n const erPassivForbruger =\r\n vm.installationer.length === 0 || (vm.installationer.length === 1 && vm.installationer[0].installationNr === 0);\r\n\r\n if (!vm.erLoggetInd) {\r\n this.redirectService.redirectTilLogin();\r\n } else if (erPassivForbruger) {\r\n this.redirectService.redirectTilMineDokumenter();\r\n } else if (vm.installationer.length === 1) {\r\n this.redirectService.redirectTilMitForbrug();\r\n } else {\r\n this.redirectService.redirectTilInstallationer();\r\n }\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n"," \r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nimport { DffSideModule } from \"@dffedb/ui\";\r\n\r\nimport { DefaultComponent } from \"./default.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, DffSideModule],\r\n exports: [],\r\n declarations: [DefaultComponent],\r\n providers: []\r\n})\r\nexport class EForsyningFeaturesDefaultModule {}\r\n","export * from \"./lib/glemt-kodeord/glemt-kodeord.component\";\r\nexport * from \"./lib/login.component\";\r\nexport * from \"./lib/login.module\";\r\n","import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from \"@angular/forms\";\r\n\r\nexport class GlemtKodeordFormBuilder {\r\n public static opretForm(): UntypedFormGroup {\r\n const builder = new UntypedFormBuilder();\r\n return builder.group({\r\n nytKodeord: [\"\", [Validators.required, Validators.minLength(4), Validators.maxLength(24)]],\r\n gentagNytKodeord: [\"\", [Validators.required, this.erKodeordEns]]\r\n });\r\n }\r\n\r\n private static erKodeordEns(abstractControl: AbstractControl): { invalid: boolean } {\r\n if (!abstractControl.parent || !abstractControl) {\r\n return { invalid: true };\r\n }\r\n\r\n const kodeord = abstractControl.parent.get(\"nytKodeord\");\r\n const gentagKodeord = abstractControl.parent.get(\"gentagNytKodeord\");\r\n\r\n // En validator returnere ValidationErrors eller null\r\n if (kodeord && gentagKodeord && kodeord.value === gentagKodeord.value) {\r\n return null;\r\n }\r\n return { invalid: true };\r\n }\r\n}\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\n\r\nimport { finalize, tap } from \"rxjs/operators\";\r\n\r\nimport { DffRouteParams } from \"@dffedb/router\";\r\nimport { ToastService } from \"@dffedb/ui\";\r\nimport { LoginService } from \"@e-forsyning/common/auth\";\r\nimport { RedirectService } from \"@e-forsyning/common/router\";\r\n\r\nimport { GlemtKodeordFormBuilder } from \"./glemt-kodeord-form-builder\";\r\n\r\n@Component({\r\n selector: \"glemt-kodeord\",\r\n templateUrl: \"./glemt-kodeord.component.html\"\r\n})\r\nexport class GlemtKodeordComponent implements OnInit {\r\n public form: UntypedFormGroup;\r\n public loginFejl = false;\r\n public fejlBesked = \"\";\r\n public key: string;\r\n public arbejder = false;\r\n constructor(\r\n private readonly routeParams: DffRouteParams,\r\n private readonly loginService: LoginService,\r\n private readonly toastService: ToastService,\r\n private readonly redirectService: RedirectService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.key = this.routeParams.get(\"guid\");\r\n this.form = GlemtKodeordFormBuilder.opretForm();\r\n }\r\n\r\n public glemtKodeordClick(): void {\r\n if (this.form.valid) {\r\n this.arbejder = true;\r\n this.loginService\r\n .resetPwd(this.form.get(\"nytKodeord\").value, this.key)\r\n .pipe(\r\n tap(() => {\r\n this.toastService.visInfo(\"Dit kodeord er nu ændret.\");\r\n this.redirectService.redirectTilLogin();\r\n }),\r\n finalize(() => {\r\n this.arbejder = false;\r\n })\r\n )\r\n .subscribe();\r\n }\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    Indtast ønskede adgangskode
    \r\n
    \r\n \r\n \r\n @if (\r\n (!form.controls.nytKodeord.hasError('minLength') || !form.controls.nytKodeord.hasError('maxLength')) &&\r\n !form.controls.nytKodeord.hasError('required')\r\n ) {\r\n \r\n Kodeord skal være 4-24 tegn.\r\n \r\n }\r\n @if (form.controls.nytKodeord.hasError('required')) {\r\n Et kodeord er krævet. \r\n }\r\n \r\n
    \r\n
    \r\n \r\n \r\n @if (form.controls.gentagNytKodeord.hasError('invalid') && !form.controls.gentagNytKodeord.hasError('required')) {\r\n \r\n De to kodeord stemmer ikke overens.\r\n \r\n }\r\n @if (form.controls.gentagNytKodeord.hasError('required')) {\r\n Et kodeord er krævet. \r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { UmbracoIndstillingerObserver } from \"@e-forsyning/common/umbraco-indstillinger\";\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: \"login-container\",\r\n templateUrl: \"./login-container.component.html\",\r\n styleUrls: [\"./login-container.component.scss\"]\r\n})\r\nexport class LoginContainerComponent implements OnInit {\r\n @Input() public titel: string;\r\n @Input() public arbejder: boolean;\r\n @Output() public tilbage = new EventEmitter();\r\n public overskrift$: Observable;\r\n constructor(private indstillingerObserver: UmbracoIndstillingerObserver) {}\r\n public ngOnInit(): void {\r\n this.overskrift$ = this.indstillingerObserver.valueChanges.pipe(map((value) => value.aktuelEforsyning.overskriftPaaLoginside));\r\n }\r\n}\r\n","\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n @if (overskrift$ | async; as overskrift) {\r\n

    {{ overskrift }}

    \r\n } @else {\r\n

    E|Forsyning

    \r\n }\r\n

    {{ titel }}

    \r\n \r\n
    \r\n
    \r\n @if (arbejder) {\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 { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\n\r\nimport { of, throwError } from \"rxjs\";\r\nimport { catchError, finalize, first, tap } from \"rxjs/operators\";\r\n\r\nimport { DffRouteParams } from \"@dffedb/router\";\r\nimport { DffError } from \"@dffedb/util\";\r\nimport { LoginService } from \"@e-forsyning/common/auth\";\r\nimport { RedirectService } from \"@e-forsyning/common/router\";\r\n\r\nimport { LoginData } from \"../login-data.model\";\r\nimport { LoginHjaelpService } from \"../login-hjaelp/login-hjaelp.service\";\r\n\r\n@Component({\r\n selector: \"login-email\",\r\n templateUrl: \"./login-email.component.html\"\r\n})\r\nexport class LoginEmailComponent {\r\n @Input()\r\n public parent: UntypedFormGroup;\r\n\r\n @Output()\r\n public loginSucceeded = new EventEmitter();\r\n\r\n @ViewChild(\"emailInput\", { static: true }) public emailInput: ElementRef;\r\n\r\n public foersteGangAktiveret = false;\r\n public glemtKodeordAktiveret = false;\r\n public arbejder = false;\r\n public infoBesked = \"\";\r\n public fejlBesked = \"\";\r\n public visFeltFejl = false;\r\n\r\n constructor(\r\n private readonly loginService: LoginService,\r\n private readonly loginHjaelpService: LoginHjaelpService,\r\n private readonly redirectService: RedirectService,\r\n private readonly routeParams: DffRouteParams\r\n ) {}\r\n\r\n public focus(): void {\r\n this.emailInput.nativeElement.focus();\r\n }\r\n\r\n public loginClick(): void {\r\n if (this.foersteGangAktiveret && this.parent.valid) {\r\n this.firstEmailLoginClick();\r\n } else if (this.glemtKodeordAktiveret) {\r\n this.sendGlemtKodeordClick();\r\n } else if (this.foersteGangAktiveret === false) {\r\n const loginData: LoginData = {\r\n brugernavn: this.parent.get(\"emailGroup.email\").value,\r\n kodeord: this.parent.get(\"emailGroup.adgangskode\").value,\r\n huskMig: this.parent.get(\"huskMig\").value\r\n };\r\n this.forbrugerLogin(loginData);\r\n } else {\r\n this.visFeltFejl = true;\r\n }\r\n }\r\n\r\n public forbrugerLogin(credentials: LoginData): void {\r\n this.fejlBesked = \"\";\r\n this.arbejder = true;\r\n this.loginService\r\n .login(credentials.brugernavn, credentials.kodeord, credentials.huskMig)\r\n .pipe(\r\n first(),\r\n tap((result) => {\r\n if (result.success) {\r\n this.loginSucceeded.emit();\r\n } else {\r\n this.fejlBesked = \"Ugyldig e-mail eller adgangskode\";\r\n }\r\n }),\r\n catchError((error: DffError) => {\r\n this.fejlBesked = error.friendlyMessage || error.message;\r\n return throwError(error);\r\n }),\r\n finalize(() => {\r\n this.arbejder = false;\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n public firstEmailLoginClick(): void {\r\n const email = this.parent.get(\"emailGroup.email\").value;\r\n const adgangskode = this.parent.get(\"emailGroup.adgangskode\").value;\r\n const forbrugerNr = this.parent.get(\"forbrugerNrGroup.forbrugerNr\").value;\r\n const kode = this.parent.get(\"forbrugerNrGroup.kode\").value;\r\n this.arbejder = true;\r\n this.loginService\r\n .tilknytEmail(forbrugerNr, kode, email, adgangskode)\r\n .pipe(\r\n first(),\r\n tap(() => {\r\n this.fejlBesked = \"\";\r\n this.foersteGangAktiveret = false;\r\n }),\r\n catchError((error: any) => {\r\n console.log(\"FEJL VED LOGIN:::\", error.error);\r\n\r\n this.fejlBesked = error.error;\r\n return of(null);\r\n }),\r\n finalize(() => {\r\n this.arbejder = false;\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n public sendGlemtKodeordClick(): void {\r\n const email = this.parent.get(\"emailGroup.email\").value;\r\n this.arbejder = true;\r\n this.loginService\r\n .glemtKodeord(email)\r\n .pipe(\r\n first(),\r\n tap(() => {\r\n this.foersteGangAktiveret = false;\r\n this.fejlBesked = \"\";\r\n this.infoBesked = `E-mail sendt til: ${email}`;\r\n }),\r\n catchError((error: any) => {\r\n console.log(\"FEJL :::\", error.error);\r\n this.fejlBesked = error.error;\r\n return of(null);\r\n }),\r\n finalize(() => {\r\n this.arbejder = false;\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n public onGlemtKodeordClick(): void {\r\n this.glemtKodeordAktiveret = !this.glemtKodeordAktiveret;\r\n this.fejlBesked = \"\";\r\n this.foersteGangAktiveret = false;\r\n this.infoBesked = \"\";\r\n }\r\n\r\n public firstTimeClick(): void {\r\n this.fejlBesked = \"\";\r\n this.foersteGangAktiveret = !this.foersteGangAktiveret;\r\n }\r\n\r\n public loginHjaelpClick(): void {\r\n this.loginHjaelpService.visLoginHjaelpDialog();\r\n }\r\n\r\n public redirectEfterLogin(): void {\r\n const path = this.routeParams.get(\"path\");\r\n if (path && path !== \"404\") {\r\n this.redirectService.redirect(path);\r\n } else {\r\n this.redirectService.redirectTilInstallationer();\r\n }\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    Indtast dit eksisterende login
    \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 @if (foersteGangAktiveret) {\r\n
    Indtast din e-mail og ønskede adgangskode
    \r\n }\r\n
    \r\n \r\n \r\n @if (parent.get(\"emailGroup.email\").errors && visFeltFejl) {\r\n Indtast gyldig e-mail\r\n }\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Husk mig\r\n
    \r\n @if (infoBesked) {\r\n
    \r\n {{ infoBesked }}\r\n
    \r\n }\r\n @if (fejlBesked) {\r\n
    \r\n {{ fejlBesked }}\r\n
    \r\n }\r\n\r\n @if (!foersteGangAktiveret && !glemtKodeordAktiveret) {\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n } @else {\r\n @if (!glemtKodeordAktiveret) {\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n } @else {\r\n
    \r\n @if (!infoBesked) {\r\n
    \r\n \r\n \r\n
    \r\n }\r\n @if (infoBesked) {\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n }\r\n }\r\n
    \r\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\n\r\nimport { throwError } from \"rxjs\";\r\nimport { catchError, finalize, first, tap } from \"rxjs/operators\";\r\n\r\nimport { DffError, isNumeric } from \"@dffedb/util\";\r\nimport { LoginService } from \"@e-forsyning/common/auth\";\r\n\r\nimport { LoginData } from \"../login-data.model\";\r\nimport { LoginHjaelpService } from \"../login-hjaelp/login-hjaelp.service\";\r\n\r\n@Component({\r\n selector: \"login-forbrugernr\",\r\n templateUrl: \"./login-forbrugernr.component.html\"\r\n})\r\nexport class LoginForbrugernrComponent {\r\n @Input()\r\n public parent: UntypedFormGroup;\r\n\r\n @Output()\r\n public loginSucceeded = new EventEmitter();\r\n\r\n @Output()\r\n public alphaKeyPressed = new EventEmitter();\r\n\r\n @ViewChild(\"forbrugerNrInput\", { static: true }) public forbrugerNrInput: ElementRef;\r\n\r\n public arbejder = false;\r\n public fejlBesked = \"\";\r\n\r\n constructor(private readonly loginService: LoginService, private readonly loginHjaelpService: LoginHjaelpService) {}\r\n\r\n public focus(): void {\r\n this.forbrugerNrInput.nativeElement.focus();\r\n }\r\n\r\n public loginClick(): void {\r\n const loginData: LoginData = {\r\n brugernavn: this.parent.get(\"forbrugerNrGroup.forbrugerNr\").value,\r\n kodeord: this.parent.get(\"forbrugerNrGroup.kode\").value,\r\n huskMig: this.parent.get(\"huskMig\").value\r\n };\r\n this.onForbrugerLogin(loginData);\r\n }\r\n\r\n public onForbrugerLogin(credentials: LoginData): void {\r\n this.fejlBesked = \"\";\r\n this.arbejder = true;\r\n this.loginService\r\n .login(credentials.brugernavn, credentials.kodeord, credentials.huskMig)\r\n .pipe(\r\n first(),\r\n tap((result) => {\r\n if (result.success) {\r\n this.loginSucceeded.emit();\r\n } else {\r\n this.fejlBesked = \"Ugyldig forbrugernummer eller kode\";\r\n }\r\n }),\r\n catchError((error: DffError) => {\r\n this.fejlBesked = error.friendlyMessage || error.message;\r\n return throwError(error);\r\n }),\r\n finalize(() => {\r\n this.arbejder = false;\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n public loginHjaelpClick(): void {\r\n this.loginHjaelpService.visLoginHjaelpDialog();\r\n }\r\n\r\n public onForbrugernummerKeypress(event: KeyboardEvent): void {\r\n const feltetErBlankt = !this.parent.get(\"forbrugerNrGroup.forbrugerNr\").value;\r\n if (feltetErBlankt && !isNumeric(event.key)) {\r\n this.alphaKeyPressed.emit(event.key);\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 Husk mig\r\n
    \r\n @if (fejlBesked) {\r\n
    \r\n {{ fejlBesked }}\r\n
    \r\n }\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n","import { UntypedFormBuilder, UntypedFormGroup, Validators } from \"@angular/forms\";\r\n\r\nimport { HuskMigCredentialsService } from \"@e-forsyning/common/auth\";\r\n\r\nexport class LoginFormBuilder {\r\n public static opretForm(huskMigCredentialsService: HuskMigCredentialsService): UntypedFormGroup {\r\n const { brugernavn, kodeord, huskMig } = huskMigCredentialsService.hent();\r\n const erEmail = isNaN(Number(brugernavn));\r\n\r\n const builder = new UntypedFormBuilder();\r\n return builder.group({\r\n forbrugerNrGroup: builder.group({\r\n forbrugerNr: [(!erEmail && brugernavn) || null, []],\r\n kode: [(!erEmail && kodeord) || null, [Validators.required]]\r\n }),\r\n emailGroup: builder.group({\r\n email: [(erEmail && brugernavn) || null, [Validators.email]],\r\n adgangskode: [(erEmail && kodeord) || null, [Validators.required]]\r\n }),\r\n huskMig: [huskMig]\r\n });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { UmbracoHttpClient } from \"@e-forsyning/common/http\";\r\n\r\nimport { LoginHjaelpIndstillinger } from \"./login-hjaelp-indstillinger.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class LoginHjaelpRepository {\r\n constructor(private readonly umbracoHttp: UmbracoHttpClient) {}\r\n\r\n public hentIndstillinger(): Observable {\r\n return this.umbracoHttp.hentSideData(\"login-hjaelp\");\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { DffSimpelDialog } from \"@dffedb/ui\";\r\n\r\nimport { LoginHjaelpRepository } from \"./login-hjaelp.repository\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class LoginHjaelpService {\r\n constructor(private readonly dialog: DffSimpelDialog, private readonly repository: LoginHjaelpRepository) {}\r\n\r\n public async visLoginHjaelpDialog(): Promise {\r\n const indstillinger = await this.repository.hentIndstillinger().toPromise();\r\n await this.dialog.openOk(indstillinger.overskrift, indstillinger.indhold, { maxWidth: 400 });\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\nimport { MatTabChangeEvent, MatTabGroup } from \"@angular/material/tabs\";\r\n\r\nimport { DffCurrentRoute, DffRoute } from \"@dffedb/router\";\r\nimport { LocalStorage, trim } from \"@dffedb/util\";\r\nimport { HuskMigCredentialsService, LoginService } from \"@e-forsyning/common/auth\";\r\nimport { VaelgInstallationService } from \"@e-forsyning/common/installation\";\r\nimport { RedirectService } from \"@e-forsyning/common/router\";\r\n\r\nimport { LoginEmailComponent } from \"./login-email/login-email.component\";\r\nimport { LoginForbrugernrComponent } from \"./login-forbrugernr/login-forbrugernr.component\";\r\nimport { LoginFormBuilder } from \"./login-form-builder\";\r\n\r\n@Component({\r\n selector: \"login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"]\r\n})\r\nexport class LoginComponent implements OnInit {\r\n public form: UntypedFormGroup;\r\n public loginFejl = false;\r\n public fejlBesked = \"\";\r\n @ViewChild(MatTabGroup, { static: true }) public tabGroup: MatTabGroup;\r\n @ViewChild(LoginEmailComponent, { static: true }) public loginEmailComponent: LoginEmailComponent;\r\n @ViewChild(LoginForbrugernrComponent, { static: true }) public loginForbrugernrComponent: LoginForbrugernrComponent;\r\n\r\n constructor(\r\n private readonly currentRoute: DffCurrentRoute,\r\n private readonly huskMigCredentialsService: HuskMigCredentialsService,\r\n private readonly redirectService: RedirectService,\r\n private readonly localStorage: LocalStorage,\r\n private readonly loginService: LoginService,\r\n private readonly vaelgInstallationService: VaelgInstallationService\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.loginService.logout();\r\n this.form = LoginFormBuilder.opretForm(this.huskMigCredentialsService);\r\n let index = parseInt(this.localStorage.getItem(\"login.index\") || \"\", 10);\r\n if (!!this.form.get(\"huskMig\").value) {\r\n index = this.form.get(\"forbrugerNrGroup.forbrugerNr\").value === null ? 1 : 0;\r\n }\r\n this.tabGroup.selectedIndex = isNaN(index) ? 0 : index;\r\n setTimeout(() => this.focusTabContent(this.tabGroup.selectedIndex));\r\n }\r\n\r\n public async onLoginSucceeded(): Promise {\r\n this.localStorage.setItem(\"login.index\", this.tabGroup.selectedIndex.toString());\r\n await this.vaelgInstallationService.vaelgFoeresteInstallation(false);\r\n this.redirect();\r\n }\r\n\r\n public onNavigerTilOversigtClick(): void {\r\n this.redirectService.redirectTilVaerksListe();\r\n }\r\n\r\n public redirect(): void {\r\n const { path, params } = this.getRedirectPath();\r\n if (path && path !== \"404\") {\r\n this.redirectService.redirect(path, params);\r\n } else {\r\n this.redirectService.redirectTilDefault();\r\n }\r\n }\r\n\r\n public onForbrugerNrAlphaKeyPressed(value: string): void {\r\n // Man har forsøgt at taste et ikke-nummerisk tal i feltet Forbrugernumme.\r\n // Det betyder sandsynligvis at man forsøger at logge ind med mail-adresse (nim@softvaerket.dk) eller som FOF-bruger (SN).\r\n // I stedet for at der ikke sker noget, forsøger vi at hjælpe ved at skifte til fanen hvor man kan logge ind med e-mail.\r\n this.form.get(\"emailGroup.email\").setValue(value);\r\n this.tabGroup.selectedIndex = 1;\r\n }\r\n\r\n public onSelectedTabChange(event: MatTabChangeEvent): void {\r\n this.focusTabContent(event.index);\r\n }\r\n\r\n private focusTabContent(tabIndex: number): void {\r\n if (tabIndex === 0) {\r\n this.loginForbrugernrComponent.focus();\r\n } else {\r\n this.loginEmailComponent.focus();\r\n }\r\n }\r\n\r\n private getRedirectPath(): DffRoute {\r\n // Fjern \"login\" fra url'en og returner resten.\r\n // Eksempel: /login/mine-oplysninger -> mine-oplysninger\r\n const { path, params } = this.currentRoute.value;\r\n const [_, ...rest] = trim(path, \"/\").split(\"/\");\r\n return { params, path: rest.join(\"/\") };\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\n//import { FlexModule } from \"@angular/flex-layout\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\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 { MatTabsModule } from \"@angular/material/tabs\";\r\n\r\nimport { GlemtKodeordComponent } from \"./glemt-kodeord/glemt-kodeord.component\";\r\nimport { LoginContainerComponent } from \"./login-container/login-container.component\";\r\nimport { LoginEmailComponent } from \"./login-email/login-email.component\";\r\nimport { LoginForbrugernrComponent } from \"./login-forbrugernr/login-forbrugernr.component\";\r\nimport { LoginComponent } from \"./login.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule,\r\n MatTabsModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [LoginContainerComponent, LoginComponent, LoginEmailComponent, LoginForbrugernrComponent, GlemtKodeordComponent],\r\n providers: []\r\n})\r\nexport class EForsyningFeaturesLoginModule {}\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":["EventEmitter","AppInfoComponent","constructor","close","cssClass","onClose","event","preventDefault","emit","value","_","_2","selectors","hostVars","hostBindings","AppInfoComponent_HostBindings","rf","ctx","i0","ɵɵclassMap","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","AppInfoComponent_Template_a_click_2_listener","$event","ɵɵelement","ɵɵproperty","link","ɵɵsanitizeUrl","ɵɵadvance","ɵɵtextInterpolate1","text","combineLatest","of","map","switchMap","addDays","LocalStorage","AktuelBrugerObserver","Rolle","UmbracoHttpClient","AppInfoService","aktuelBrugerObserver","umbracoHttp","localStorage","getInfos","noData","valueChanges","pipe","bruger","getMaaleraflaesningInfo","afkraevAflaesningDto$","hentSideData","bruger$","dto","startDato","Date","slutDato","nu","visible","erForbruger","rolle","onCloseAppInfo","localStorageKey","setItem","ɵɵinject","i1","i2","i3","factory","ɵfac","providedIn","PreloadAllModules","Router","RouterModule","AuthGuard","InstallationGuard","MenuBegraensningGuard","SequentialGuards","DefaultComponent","GlemtKodeordComponent","LoginComponent","routes","path","component","data","title","children","redirectTo","loadChildren","then","module","EForsyningFeaturesDeeplinkModule","EForsyningFeaturesSilentLoginModule","EForsyningFeaturesInstallationerModule","canActivate","EForsyningFeaturesNoterModule","sequentialGuards","EForsyningFeaturesOpgavestyringModule","EForsyningFeaturesDokumenterModule","EForsyningFeaturesFakturagodkendelseModule","EForsyningFeaturesMaalerAflaesningModule","EForsyningFeaturesFlyttemeddelelseModule","EForsyningFeaturesMineOplysningerModule","EForsyningFeaturesKontaktModule","EForsyningFeaturesMitForbrugModule","EForsyningFeaturesSmsServiceModule","EForsyningFeaturesForbrugsnotifikationModule","EForsyningFeaturesPrognoseModule","EForsyningFeaturesSammenlignForbrugModule","EForsyningFeaturesDokumentRedirectModule","EForsyningFeaturesError404Module","AppRoutingModule","router","events","subscribe","e","_3","forRoot","useHash","preloadingStrategy","enableTracing","imports","exports","startWith","AktuelInstallationObserver","AktuelBrugersInstallationerObserver","vm_r2","maalerNr","AppVaelgInstallationComponent_Conditional_0_Conditional_1_Template_a_click_0_listener","ɵɵrestoreView","_r4","ɵɵnextContext","ctx_r2","ɵɵresetView","onLinkClick","vaelgInstallationHref","ɵɵtemplate","AppVaelgInstallationComponent_Conditional_0_Conditional_1_Conditional_5_Template","AppVaelgInstallationComponent_Conditional_0_Conditional_1_Conditional_6_Template","AppVaelgInstallationComponent_Conditional_0_Conditional_1_Conditional_7_Template","adresse","ɵɵconditional","AppVaelgInstallationComponent_Conditional_0_Conditional_2_Conditional_5_Template","AppVaelgInstallationComponent_Conditional_0_Conditional_2_Conditional_6_Template","AppVaelgInstallationComponent_Conditional_0_Conditional_2_Conditional_7_Template","AppVaelgInstallationComponent_Conditional_0_Template_div_click_0_listener","_r1","AppVaelgInstallationComponent_Conditional_0_Conditional_1_Template","AppVaelgInstallationComponent_Conditional_0_Conditional_2_Template","AppVaelgInstallationComponent","aktuelBrugersInstallationerObserver","aktuelInstallationObserver","ngOnInit","installationer$","aktuelInstallation$","vm$","installationer","aktuelInstallation","length","href","ɵɵdirectiveInject","decls","vars","consts","template","AppVaelgInstallationComponent_Template","AppVaelgInstallationComponent_Conditional_0_Template","tmp_0_0","ɵɵpipeBind1","delay","filter","AppserverInstallationCredentialsRepository","RedirectService","ActivatedRoute","NavigationEnd","Title","AppComponent_For_8_Conditional_0_Template_app_info_close_0_listener","ctx_r1","info_r3","AppComponent_For_8_Conditional_0_Template","AppComponent","credentials","redirectService","appInfoService","titleService","route","erLoggetInd$","forsyningNodeId","infos$","setPageTitle","child","firstChild","documentid","url","split","pop","snapshot","includes","setTitle","onInstallationerClick","redirectTilInstallationer","i4","i5","AppComponent_Template","AppComponent_Conditional_1_Template","ɵɵrepeaterCreate","AppComponent_For_8_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","registerLocaleData","HTTP_INTERCEPTORS","HttpClientModule","localeDa","APP_INITIALIZER","ErrorHandler","Injector","LOCALE_ID","MatButtonModule","MatIconModule","MatSnackBarModule","BrowserModule","BrowserAnimationsModule","mdiClose","CookieService","first","erstatEmailValidatorMedDffEdbUdgave","DffSimpelDialogModule","MatDffDateModule","ENV","LogentriesLoggerService","LOGGER","SvgIconRegistry","AppShellModule","EBoksPopupService","EBoksTilmeldingModule","EforsyningMenuService","EforsyningSidenavMenuModule","EforsyningErrorHandler","EforsyningHttpInterceptor","KontaktoplysningerPopupModule","KontaktoplysningerPopupService","initUmbracoIndstillinger","RolleBodyClassService","RouteBodyClassService","EForsyningFeaturesDefaultModule","EForsyningFeaturesLoginModule","DffedbCookieConsentModule","DffedbDriftsstatusKnapModule","DffedbFancyboxModule","EForsyningLogindKnapModule","environment","MATOMO_CONFIGURATION","MatomoModule","MatomoRouterModule","MatomoConfigService","AktuelBrugersInstallationerService","AppModule","svgIconRegistry","registerIcon","bootstrap","provide","useValue","useClass","multi","useFactory","appInit","deps","matomoConfigFactory","mode","requireConsent","siteId","trackerUrl","declarations","service","scriptUrl","injector","window","initBodyClassServices","initPopups","get","init","setup","eboksPopupService","kontaktoplysningerPopupService","aktuelBrugersInstallationerService","_asyncToGenerator","select","toPromise","aabnHvisIkkeAlleredeTilmeldt","buildConfig","matomoSiteId","toString","myBackendConfig","logentries","application","token","production","enableProdMode","__NgCli_bootstrap_1","platformBrowser","bootstrapModule","AdresseFormatter","formatter","husnr","vej","vejnavn","litra","litra2","trim","postnr","postnrBy","bynavn","result","adresselinie1","adresselinie2","adresselinie3","adresselinie4","replace","dbToInt","dbToString","AdresseMapper","dtoToAdresse","adressenr","vejnr","DOCUMENT","NgZone","fromEvent","Subject","AppShellScrollService","document","zone","subject","asObservable","matSidenavContent","subscription","unsubscribe","elementScrolled","getElementRef","nativeElement","element","scrollTop","clientHeight","scrollBottom","scrollHeight","run","next","scrollY","innerHeight","documentElement","BreakpointObserver","ElementRef","MatSidenavContent","Observable","timer","distinctUntilChanged","UmbracoIndstillingerObserver","ɵɵelementContainer","AppShellComponent_Conditional_0_Conditional_0_Conditional_0_ng_container_1_Template","AppShellComponent_Conditional_0_Conditional_0_Conditional_0_ng_container_3_Template","leftmenu_r2","content_r1","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_3_Template_button_click_0_listener","sidenavLeft_r5","ɵɵreference","sidenavRight_r6","toggle","AppShellComponent_Conditional_0_Conditional_0_Conditional_1_Conditional_3_Conditional_4_Template","ctx_r6","eforsyningIcon$","indstillinger_r8","logoUrl","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","scrollPositionTop","opened","eforsyninger","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","AppShellComponent","setMatSidenavContent","scrollService","scrollSubscription","isAtTop","measureScrollOffset","breakpointObserver","indstillingerObserver","b","breakpointChange$","observe","settings$","indstillinger","state","matches","driftsstatusForstyrrelserTekst","driftsstatusIngenForstyrrelserTekst","toggleAriaExpanded","id","menuType","attributes","getNamedItem","ngAfterViewInit","navbarMobile","offsetHeight","viewQuery","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","MatSidenavModule","mdiAccountCircleOutline","mdiBellAlertOutline","mdiCash100","mdiChartBar","mdiCheckCircleOutline","mdiClipboardTextOutline","mdiCounter","mdiDomain","mdiFileDocumentEditOutline","mdiFileDocumentOutline","mdiLogin","mdiLogout","mdiMenu","mdiMessageTextOutline","mdiPhoneOutline","mdiScaleBalance","mdiTrainCar","ForsyningwebSidenavMenuModule","menuIconForsyningWeb","registerIcon2","ActivatedRouteSnapshot","RouterStateSnapshot","UrlTree","catchError","mapTo","getErrorMessage","AuthenticationService","BrugerRepository","LoginService","brugerRepository","loginService","installationCredentialsObserver","umbracoIndstillingerObserver","authenticationService","isAuthenticationTimeout","resetAuthenticationTimeout","erAktuelleEforsyningAuthenticated","erBrugerLoggetInd","authenticated","loginMedGemteCredentials","parseUrl","authenticatedEforsyningNodeId$","c","aktuelEforsyningNodeId$","i","aktuelEforsyningNodeId","authenticatedEforsyningNodeId","hentAktuelleBruger","error","console","warn","success","i6","AuthenticationResult","cryptId","HttpClient","MD5","http","authenticate","brugernavn","hashedKodeord","forsyningId","hentAppServerUrl","appServerUrl","getSecurityToken","createCryptId","getAuthenticationUrl","httpAuthenticate","authTimer","timeout","now","reAuthenticate","getSecurityTokenUrl","Token","userType","indexOf","isNaN","parseInt","hashedPassword","hash","r","AppServerUri","authResult","Result","HuskMigCredentialsService","clear","removeItem","hent","userCredentials","getItem","JSON","parse","atob","username","password","rememberMe","kodeord","huskMig","gem","btoa","stringify","isNumeric","AktuelInstallationKeyObserver","aktuelInstallationKeyObserver","routerStateSnapShot","spilts","key","throwError","tap","SessionStorage","DffError","AppserverBrugerCredentialsRepository","InstallationService","brugerCredentials","installationCredentials","installationService","huskMigCredentialsService","sessionStorage","u","aktuelEforsyning","login","fixCasing","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","hentEgneInstallationer","hentEgneOgTilknyttedeInterneInstallationer","items","hentBruger","postnrby","huskMigCredentials","innerError","i7","UmbracoMenuObserver","umbracoMenuObserver","rootMenuItem$","m","result$","rootMenuItem","menuItem","findMenupunkt","harBrugerAdgangTilMenupunkt","endsWith","adgangsstyret","menupunkter","name","Type","from","isObservable","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","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","DriftsstatusService","umbracoHttpClient","erDerAktuelleDriftsforstyrrelser","EBoksPopupRef","EBoksPopupContentComponent_Conditional_0_Template_button_click_10_listener","onNext","EBoksPopupContentComponent_Conditional_0_Template_button_click_12_listener","onLuk","EBoksPopupContentComponent_Conditional_0_Template_button_click_14_listener","onLukOgSpoergMigIkkeIgen","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","overlayRef","closed","dispose","DffCurrentRoute","EBoksTilmeldingRepository","EBoksPopup","popup","eboksRepository","currentRoute","erForbruger$","erAlleredeTilmeldtEBoks$","erAlleredeTilmeldtEBoks","erEBoksKampagneAktiveret$","erEBoksKampagneAktiveret","popupSkalAldrigVisesIgen","popupSkalIkkeVisesIgenIDenneSession","_this","skalPopupVises","open","_this2","erEBoksAktiveret","visIkkePopupPaaAktuelleSide","hentIndstillinger","visEBoksSektion","visEBoksKampagne","hentTilmeldinger","tilmeldinger","ignoredRoutes","some","test","Overlay","ComponentPortal","overlay","create","positionStrategy","position","global","centerHorizontally","centerVertically","hasBackdrop","backdropClass","scrollStrategy","scrollStrategies","block","attachContainer","createInjector","containerPortal","containerRef","attach","instance","parent","providers","ReactiveFormsModule","MatCheckboxModule","MatDialogModule","MatExpansionModule","MatFormFieldModule","MatInputModule","MatProgressSpinnerModule","MatStepperModule","MatTabsModule","mdiPencil","NgxMaskDirective","NgxMaskPipe","provideEnvironmentNgxMask","DffButtonModule","DffInfoDialogModule","RevealOnFocusModule","EBoksTilmeldingComponent","StepAdresseKodeComponent","StepEksisterendeTilmeldingerComponent","StepIdentitetComponent","StepSamtykkeComponent","iconRegistry","SimpleChanges","MatStepper","debounceTime","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","_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","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","dialog","tilmeldt","initialiserer$","eforsyningIndstilling$","destroy$","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","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","stopPropagation","openJaNej","StepEksisterendeTilmeldingerComponent_Template","StepEksisterendeTilmeldingerComponent_For_3_Template","StepEksisterendeTilmeldingerComponent_Conditional_4_Template","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","relativeUrl","BehaviorSubject","ProcessingSubject","tilmeldingerSubject","eforsyningIndstillingSubject","tilmelderSubject","initialisererSubject","afmelderSubject","validererAdresseKodeSubject","initialiserEforsyningIndstilling","internalHentTilmeldinger","idle","internalTilmeld","internalAfmeld","hentAdresseKode","maskCprNummer","slice","formatterCprEllerCvrNummer","samtykker","samtykkeTekstSkabelon","toBehaviorObservable","observable","initialValue","initialiserAutoLukVedMenuklik","links","Array","querySelectorAll","forEach","addEventListener","closest","divs","div","parentElement","removeChild","setTimeout","appendChild","EforsyningMenuForSidebarObserver","vm_r4","EforsyningSidenavMenuComponent_Conditional_0_Conditional_2_Conditional_0_Template_a_click_1_listener","DffSidenavMenu_r5","onItemClick","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","menu","visLoggetUdMenu","onArrowDown","focusableElementsNodeList","focusableElementsArray","focusedElement","activeElement","currentIndex","nextIndex","nextElement","onArrowUp","prevElement","lastElement","menuItems$","aktuelBruger$","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","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","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","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","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","VaelgInstallationService","previousRouteService","vaelgFoeresteInstallation","redirect","vaelgInstallation","erIntern","vaelgInternInstallation","vaelgEksternInstallation","getRedirectRoute","origin","location","slash","loginRedirect","deeplink","notFound","ignoreRoute","KontaktoplysningerPopupRef","KontaktoplysningerPopupContentSandbox","KontaktoplysningerPopupContentComponent_Conditional_2_Conditional_1_Template","KontaktoplysningerPopupContentComponent_Conditional_2_Conditional_2_Template","KontaktoplysningerPopupContentComponent_Conditional_2_Conditional_8_Template","KontaktoplysningerPopupContentComponent_Conditional_2_Template_button_click_10_listener","KontaktoplysningerPopupContentComponent_Conditional_2_Template_button_click_12_listener","vm_r3","onGem","telefonnr","beboeremail","KontaktoplysningerPopupContentComponent","hentViewModel","cancel","KontaktoplysningerPopupContentComponent_Template","KontaktoplysningerPopupContentComponent_Conditional_2_Template","KontaktoplysningerPopupContentComponent_Conditional_4_Template","emailsValidator","ValgtInstallationService","valgtInstallationService","hentInstallationsoplysninger","redigerBeboeremail","redigerTelefonnr","canceled","SpinnerModule","KontaktoplysningerPopupRepository","visKampagne","kontaktoplysningerKampagne","CookieStorage","SilentLoginService","KontaktoplysningerPopup","cookieStorage","silentLoginService","erKampagneAktiveret$","erKampagneAktiveret","popupAlleredeVist","popupAnnulleret","erLoggetPaaViaSilentLogin","forbrugerElKampagne","i8","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","LoginoplysningerRepository","redigerLoginoplysninger","loginoplysninger","info","soldPwd","nuvaerendeKodeord","nytKodeord","MailHelper","EforsyningMailBuilderService","genererAsync","titel","generer","genererMailBody","genererLogo","fallbackFirmaNavn","image","h1","html","EforsyningMailSenderService","sendForsyningsanmodningMail","mail","mail$","to","model","sendMitforbrugDatafejlMail","sendMailFraUmbraco","genererKvitteringMailHtml","css","center","content","table","rows","tableRow","tdCss","colon","hr","width","space","marginTop","venligHilsen","firmaOplysninger","signatur","kvitteringPanel","kvittering","DffRedirectService","redirectTilDefault","redirectTilLogin","redirectTilAktuelleRouteEfterLogin","redirectUrl","redirectTilFlyttekvittering","parameter","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","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","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","initialized","getValue","UmbracoIndstillingerRepository","EforsyningUrlService","hentAbsolutUrl","sourceListener","innerProject","errorProject","stateChangesSubject","errorChangesSubject","stateChanges","errorChanges","valueChanges$","loading","__","SubSink","BodyClassService","bodyClassService","sink","teardown","pairwise","firstEvent$","enter","getRoute","leave","followingEvents$","events$","remove","ValgtInstallationRepository","installationsoplysningerFof","redigerMail","redigerBrugeroplysning","redigerTelefonnummer","telefonnummer","toUpdate","navn2","tlf","ejerNavn","valgtInstallationRepository","loginoplysningerRepository","friendlyMessage","showNotification","valgtBruger","hentEjendomNr","hentAktivNr","hentInstallationNr","hentForsyningId","erPassivForbruger","DefaultComponent_Template","GlemtKodeordFormBuilder","opretForm","builder","gentagNytKodeord","erKodeordEns","abstractControl","gentagKodeord","finalize","DffRouteParams","routeParams","toastService","loginFejl","fejlBesked","arbejder","glemtKodeordClick","visInfo","GlemtKodeordComponent_Template","GlemtKodeordComponent_Template_form_ngSubmit_1_listener","GlemtKodeordComponent_Conditional_8_Template","GlemtKodeordComponent_Conditional_9_Template","GlemtKodeordComponent_Conditional_13_Template","GlemtKodeordComponent_Conditional_14_Template","LoginContainerComponent","tilbage","overskrift$","ngContentSelectors","_c0","LoginContainerComponent_Template","LoginContainerComponent_Conditional_3_Template","LoginContainerComponent_Conditional_5_Template","LoginContainerComponent_Template_button_click_8_listener","LoginContainerComponent_Conditional_11_Template","LoginHjaelpService","infoBesked","LoginEmailComponent_Conditional_29_Template_a_click_5_listener","onGlemtKodeordClick","LoginEmailComponent_Conditional_29_Template_a_click_8_listener","firstTimeClick","LoginEmailComponent_Conditional_30_Conditional_0_Template_button_click_2_listener","LoginEmailComponent_Conditional_30_Conditional_1_Conditional_1_Template_button_click_1_listener","LoginEmailComponent_Conditional_30_Conditional_1_Conditional_2_Template_button_click_1_listener","LoginEmailComponent_Conditional_30_Conditional_1_Conditional_1_Template","LoginEmailComponent_Conditional_30_Conditional_1_Conditional_2_Template","LoginEmailComponent_Conditional_30_Conditional_0_Template","LoginEmailComponent_Conditional_30_Conditional_1_Template","glemtKodeordAktiveret","LoginEmailComponent","loginHjaelpService","loginSucceeded","foersteGangAktiveret","visFeltFejl","emailInput","loginClick","firstEmailLoginClick","sendGlemtKodeordClick","loginData","forbrugerLogin","adgangskode","forbrugerNr","loginHjaelpClick","visLoginHjaelpDialog","redirectEfterLogin","LoginEmailComponent_Query","LoginEmailComponent_Template_form_ngSubmit_0_listener","LoginEmailComponent_Template_a_click_6_listener","LoginEmailComponent_Conditional_15_Template","LoginEmailComponent_Conditional_20_Template","LoginEmailComponent_Conditional_27_Template","LoginEmailComponent_Conditional_28_Template","LoginEmailComponent_Conditional_29_Template","LoginEmailComponent_Conditional_30_Template","LoginForbrugernrComponent","alphaKeyPressed","forbrugerNrInput","onForbrugerLogin","onForbrugernummerKeypress","feltetErBlankt","LoginForbrugernrComponent_Query","LoginForbrugernrComponent_Template_input_keypress_4_listener","LoginForbrugernrComponent_Conditional_12_Template","LoginForbrugernrComponent_Template_button_click_14_listener","LoginForbrugernrComponent_Template_a_click_17_listener","LoginFormBuilder","Number","forbrugerNrGroup","emailGroup","LoginHjaelpRepository","indhold","maxWidth","MatTabGroup","vaelgInstallationService","tabGroup","focusTabContent","onLoginSucceeded","onNavigerTilOversigtClick","getRedirectPath","onForbrugerNrAlphaKeyPressed","loginForbrugernrComponent","loginEmailComponent","LoginComponent_Query","LoginComponent_Template_login_container_tilbage_0_listener","LoginComponent_Template_mat_tab_group_selectedTabChange_1_listener","LoginComponent_Template_login_forbrugernr_loginSucceeded_3_listener","LoginComponent_Template_login_forbrugernr_alphaKeyPressed_3_listener","LoginComponent_Template_login_email_loginSucceeded_6_listener","loginForbrugerNr_r2","loginEmail_r3","DffedbCookieConsentOverlaySandbox","DffedbCookieConsentOverlayComponent","pageReload","classInitialized","setCookieConsentChangeRequiresPageReload","DffedbCookieConsentOverlayComponent_HostBindings","DffedbCookieConsentOverlayComponent_Conditional_0_Template","overlayVisible","defineCustomElements","DffCookieConsentOverlayModule","DffedbCookieConsentOverlayModule","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","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","DffedbEBoksTilmeldModule","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","DffedbForsyningPaaAdresseModule","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","DffedbIframeModule","DffCookieConsentCookieListModule","cookieConsentCookieListModule","mapViewModel","getCookieConsent","DffedbInfoPopupComponent","showAfterMs","hideAfterMs","toDateTime","header","imageSrc","buttonText","buttonHref","buttonTarget","visibleStartTime","visibleEndTime","DffedbInfoPopupComponent_Template","DffInfoPopupModule","DffedbInfoPopupModule","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","DffedbPrisberegnerModule","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","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","DffedbTilslutningsanmodningModule","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","DffCookieConsentOverlayComponent","onShowCookieConsent","DffCookieConsentOverlayComponent_Template","DffCookieConsentOverlayComponent_Template_a_click_5_listener","cookieConsentsEqual","consent1","consent2","cookieConsentToString","utc","necessary","stringToCookieConsent","keyValuePairs","cc","getAsString","getAsDate","getAsBoolean","getAllEnabledCookieConsent","kv","defaultValue","compareVersions","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","emailValidator","isEmptyInputValue","emails","results","every","matchingControlName","matchingControl","erValidPNummer","nyAlgoritme","telefonnummerValidator","erValidTelefonr","telefonnumreValidator","telefonnumre","doGetPath","routerState","root","queryParams","currentUrl","childUrl","navigateByUrl","genererUrl","replaceUrl","navigationExtras","createUrlTree","ActivationStart","NavigationCancel","DffRouteChangingObserver","paramMap","queryParamMap","previousUrl","concatMap","scan","brugPagineretRessource","callback","sideNummer","isLoading","isLoadingFirstPage","pageNo","loadingSubject","loading$","fetchSubject","fetch$","fetchPage","loadMore","loadFirstPage","HttpEventType","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","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","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","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","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","querySelector","itemId","itemType","killClick","DffSidenavMenuComponent_Template","DffSidenavMenuComponent_Conditional_0_Template","DffSidenavMenuComponent_For_2_Template","styles","animation","flattenMenuItems","menuItemOrItems","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","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","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","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":[]}