{"version":3,"sources":["webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/components/config-param/config-param.component.html","webpack:///./src/app/components/config-param/config-param.component.scss","webpack:///./src/app/components/config-param/config-param.component.ts","webpack:///./src/app/components/dashboard/dashboard.component.html","webpack:///./src/app/components/dashboard/dashboard.component.scss","webpack:///./src/app/components/dashboard/dashboard.component.ts","webpack:///./src/app/components/feature/feature.component.html","webpack:///./src/app/components/feature/feature.component.scss","webpack:///./src/app/components/feature/feature.component.ts","webpack:///./src/app/components/footer/footer.component.css","webpack:///./src/app/components/footer/footer.component.html","webpack:///./src/app/components/footer/footer.component.ts","webpack:///./src/app/components/generics/AbstractDataTableComponent.ts","webpack:///./src/app/components/login/login.component.html","webpack:///./src/app/components/login/login.component.scss","webpack:///./src/app/components/login/login.component.ts","webpack:///./src/app/components/mandanten/mandant-detail/mandant-detail.component.html","webpack:///./src/app/components/mandanten/mandant-detail/mandant-detail.component.scss","webpack:///./src/app/components/mandanten/mandant-detail/mandant-detail.component.ts","webpack:///./src/app/components/mandanten/mandant-list/mandant-list.component.html","webpack:///./src/app/components/mandanten/mandant-list/mandant-list.component.scss","webpack:///./src/app/components/mandanten/mandant-list/mandant-list.component.ts","webpack:///./src/app/components/measurement/display-images-one-side/display-images-one-side.component.html","webpack:///./src/app/components/measurement/display-images-one-side/display-images-one-side.component.scss","webpack:///./src/app/components/measurement/display-images-one-side/display-images-one-side.component.ts","webpack:///./src/app/components/measurement/measurement-comment/measurement-comment.component.html","webpack:///./src/app/components/measurement/measurement-comment/measurement-comment.component.scss","webpack:///./src/app/components/measurement/measurement-comment/measurement-comment.component.ts","webpack:///./src/app/components/measurement/measurement-detail-range/measurement-detail-range.component.html","webpack:///./src/app/components/measurement/measurement-detail-range/measurement-detail-range.component.scss","webpack:///./src/app/components/measurement/measurement-detail-range/measurement-detail-range.component.ts","webpack:///./src/app/components/measurement/measurement.component.html","webpack:///./src/app/components/measurement/measurement.component.scss","webpack:///./src/app/components/measurement/measurement.component.ts","webpack:///./src/app/components/measurement/validation/validation.component.html","webpack:///./src/app/components/measurement/validation/validation.component.scss","webpack:///./src/app/components/measurement/validation/validation.component.ts","webpack:///./src/app/components/modals/yes-no-dialog/yes-no-dialog.component.html","webpack:///./src/app/components/modals/yes-no-dialog/yes-no-dialog.component.scss","webpack:///./src/app/components/modals/yes-no-dialog/yes-no-dialog.component.ts","webpack:///./src/app/components/nav/nav.component.html","webpack:///./src/app/components/nav/nav.component.scss","webpack:///./src/app/components/nav/nav.component.ts","webpack:///./src/app/components/notification/notification.component.html","webpack:///./src/app/components/notification/notification.component.scss","webpack:///./src/app/components/notification/notification.component.ts","webpack:///./src/app/components/operators/operator-detail/operator-detail.component.html","webpack:///./src/app/components/operators/operator-detail/operator-detail.component.scss","webpack:///./src/app/components/operators/operator-detail/operator-detail.component.ts","webpack:///./src/app/components/operators/operator-list/operator-list.component.html","webpack:///./src/app/components/operators/operator-list/operator-list.component.scss","webpack:///./src/app/components/operators/operator-list/operator-list.component.ts","webpack:///./src/app/components/patient/patient-detail-anamnesen/patient-detail-anamnesen.component.html","webpack:///./src/app/components/patient/patient-detail-anamnesen/patient-detail-anamnesen.component.scss","webpack:///./src/app/components/patient/patient-detail-anamnesen/patient-detail-anamnesen.component.ts","webpack:///./src/app/components/patient/patient-detail-data/patient-detail-data.component.html","webpack:///./src/app/components/patient/patient-detail-data/patient-detail-data.component.scss","webpack:///./src/app/components/patient/patient-detail-data/patient-detail-data.component.ts","webpack:///./src/app/components/patient/patient-detail-diagnosen/patient-detail-diagnosen.component.html","webpack:///./src/app/components/patient/patient-detail-diagnosen/patient-detail-diagnosen.component.scss","webpack:///./src/app/components/patient/patient-detail-diagnosen/patient-detail-diagnosen.component.ts","webpack:///./src/app/components/patient/patient-detail-measurements/patient-detail-measurements.component.html","webpack:///./src/app/components/patient/patient-detail-measurements/patient-detail-measurements.component.scss","webpack:///./src/app/components/patient/patient-detail-measurements/patient-detail-measurements.component.ts","webpack:///./src/app/components/patient/patient-detail-menue/patient-detail-menue.component.html","webpack:///./src/app/components/patient/patient-detail-menue/patient-detail-menue.component.scss","webpack:///./src/app/components/patient/patient-detail-menue/patient-detail-menue.component.ts","webpack:///./src/app/components/patient/patient-detail-usbstick/patient-detail-usbstick.component.html","webpack:///./src/app/components/patient/patient-detail-usbstick/patient-detail-usbstick.component.scss","webpack:///./src/app/components/patient/patient-detail-usbstick/patient-detail-usbstick.component.ts","webpack:///./src/app/components/patient/patient-edit/patient-edit.component.html","webpack:///./src/app/components/patient/patient-edit/patient-edit.component.scss","webpack:///./src/app/components/patient/patient-edit/patient-edit.component.ts","webpack:///./src/app/components/patient/patient-list/patient-list.component.html","webpack:///./src/app/components/patient/patient-list/patient-list.component.scss","webpack:///./src/app/components/patient/patient-list/patient-list.component.ts","webpack:///./src/app/components/users/user-detail/user-detail.component.html","webpack:///./src/app/components/users/user-detail/user-detail.component.scss","webpack:///./src/app/components/users/user-detail/user-detail.component.ts","webpack:///./src/app/components/users/user-list/user-list.component.html","webpack:///./src/app/components/users/user-list/user-list.component.scss","webpack:///./src/app/components/users/user-list/user-list.component.ts","webpack:///./src/app/components/utils/upload-measurement/upload-measurement.component.html","webpack:///./src/app/components/utils/upload-measurement/upload-measurement.component.scss","webpack:///./src/app/components/utils/upload-measurement/upload-measurement.component.ts","webpack:///./src/app/directives/has-privilege.directive.ts","webpack:///./src/app/directives/has-role.directive.ts","webpack:///./src/app/entities/AnamnesenStub.ts","webpack:///./src/app/entities/BackendErrorResponseDto.ts","webpack:///./src/app/entities/CurrentUser.ts","webpack:///./src/app/entities/DiagnosenStub.ts","webpack:///./src/app/entities/ManagableUser.ts","webpack:///./src/app/entities/Mandant.ts","webpack:///./src/app/entities/MeasurementDetailsSummary.ts","webpack:///./src/app/entities/MeasurementStub.ts","webpack:///./src/app/entities/OperatorView.ts","webpack:///./src/app/entities/Patient.ts","webpack:///./src/app/entities/SaveUserDto.ts","webpack:///./src/app/enums/NotificationSeverityEnum.ts","webpack:///./src/app/guards/AuthGuard.ts","webpack:///./src/app/services/anamnesen.service.ts","webpack:///./src/app/services/auth.service.ts","webpack:///./src/app/services/comment.service.ts","webpack:///./src/app/services/config_params_service.ts","webpack:///./src/app/services/diagnosen.service.ts","webpack:///./src/app/services/diagnosis.service.ts","webpack:///./src/app/services/feature_toggles_service.ts","webpack:///./src/app/services/mandant.service.ts","webpack:///./src/app/services/measurement.service.ts","webpack:///./src/app/services/navigation.service.ts","webpack:///./src/app/services/notification.service.ts","webpack:///./src/app/services/operator.service.ts","webpack:///./src/app/services/patient.service.ts","webpack:///./src/app/services/role.service.ts","webpack:///./src/app/services/upload-measurement.service.ts","webpack:///./src/app/services/usb.service.ts","webpack:///./src/app/services/user.service.ts","webpack:///./src/app/utilities/BackendInterceptor.ts","webpack:///./src/app/utilities/DownloadOctetStreamNamedFile.ts","webpack:///./src/app/utilities/GlobalErrorHandler.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"main.js","sourcesContent":["var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-SG\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-SG.js\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport {LoginComponent} from './components/login/login.component';\nimport {AuthGuard} from './guards/AuthGuard';\nimport {PatientListComponent} from './components/patient/patient-list/patient-list.component';\nimport {PatientDetailMenueComponent} from './components/patient/patient-detail-menue/patient-detail-menue.component';\nimport {MeasurementComponent} from './components/measurement/measurement.component';\nimport {ValidationComponent} from './components/measurement/validation/validation.component';\nimport {MeasurementDetailRangeComponent} from './components/measurement/measurement-detail-range/measurement-detail-range.component';\nimport {MandantListComponent} from './components/mandanten/mandant-list/mandant-list.component';\nimport {MandantDetailComponent} from './components/mandanten/mandant-detail/mandant-detail.component';\nimport {UserListComponent} from './components/users/user-list/user-list.component';\nimport {UserDetailComponent} from './components/users/user-detail/user-detail.component';\nimport {PatientEditComponent} from './components/patient/patient-edit/patient-edit.component';\nimport {DashboardComponent} from './components/dashboard/dashboard.component';\nimport {OperatorListComponent} from './components/operators/operator-list/operator-list.component';\nimport {OperatorDetailComponent} from './components/operators/operator-detail/operator-detail.component';\nimport { FeatureComponent } from './components/feature/feature.component';\nimport { ConfigComponent } from './components/config-param/config-param.component';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'dashboard', pathMatch: 'full'},\n { path: 'login', component: LoginComponent},\n { path: 'patienten', component: PatientListComponent, canActivate: [AuthGuard]},\n { path: 'patienten/:pid', component: PatientDetailMenueComponent, canActivate: [AuthGuard]},\n { path: 'patient-edit/:pid', component: PatientEditComponent, canActivate: [AuthGuard]},\n { path: 'measurement/:id', component: MeasurementComponent, canActivate: [AuthGuard]},\n { path: 'measurement-validation/:id', component: ValidationComponent, canActivate: [AuthGuard]},\n { path: 'measurement-detail-range/:id', component: MeasurementDetailRangeComponent, canActivate: [AuthGuard]},\n { path: 'mandanten', component: MandantListComponent, canActivate: [AuthGuard]},\n { path: 'mandanten/:id', component: MandantDetailComponent, canActivate: [AuthGuard]},\n { path: 'users', component: UserListComponent, canActivate: [AuthGuard]},\n { path: 'users/:id', component: UserDetailComponent, canActivate: [AuthGuard]},\n { path: 'operators', component: OperatorListComponent, canActivate: [AuthGuard]},\n { path: 'operators/:id', component: OperatorDetailComponent, canActivate: [AuthGuard]},\n { path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard]},\n { path: 'feature', component: FeatureComponent, canActivate: [AuthGuard]},\n { path: 'config', component: ConfigComponent, canActivate: [AuthGuard]}\n \n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {useHash: true})],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {}\n","module.exports = \"\\n
\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {AuthService} from './services/auth.service';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit, OnDestroy {\n\n // indicates that we have an authenticated user\n hasUserAuth: boolean;\n\n subs: Array = [];\n\n constructor(\n private authService: AuthService,\n private router: Router\n ) {\n this.hasUserAuth = false;\n }\n\n ngOnInit(): void {\n this.subs.push(\n this.authService.currentUser$.subscribe(cu => {\n this.hasUserAuth = (!(typeof cu === 'undefined') && (cu != null));\n if (!this.hasUserAuth) { this.router.navigate(['/login'], {queryParams: {logout: true} }); }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport {ErrorHandler, NgModule} from '@angular/core';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { DataTablesModule } from 'angular-datatables';\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\nimport {BackendInterceptor} from './utilities/BackendInterceptor';\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome';\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { faEdit } from '@fortawesome/free-regular-svg-icons';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport { LoginComponent } from './components/login/login.component';\nimport { NavComponent } from './components/nav/nav.component';\nimport { FooterComponent } from './components/footer/footer.component';\nimport { AuthService } from './services/auth.service';\nimport {AuthGuard} from './guards/AuthGuard';\nimport { NotificationComponent } from './components/notification/notification.component';\nimport {NotificationService} from './services/notification.service';\nimport {GlobalErrorHandler} from './utilities/GlobalErrorHandler';\nimport { PatientListComponent } from './components/patient/patient-list/patient-list.component';\nimport { PatientDetailMenueComponent } from './components/patient/patient-detail-menue/patient-detail-menue.component';\nimport { PatientDetailDataComponent } from './components/patient/patient-detail-data/patient-detail-data.component';\nimport { PatientDetailMeasurementsComponent } from './components/patient/patient-detail-measurements/patient-detail-measurements.component';\nimport { UploadMeasurementComponent } from './components/utils/upload-measurement/upload-measurement.component';\nimport { MeasurementComponent } from './components/measurement/measurement.component';\nimport { MandantListComponent } from './components/mandanten/mandant-list/mandant-list.component';\nimport { MandantDetailComponent } from './components/mandanten/mandant-detail/mandant-detail.component';\nimport { UserListComponent } from './components/users/user-list/user-list.component';\nimport { UserDetailComponent } from './components/users/user-detail/user-detail.component';\nimport { YesNoDialogComponent } from './components/modals/yes-no-dialog/yes-no-dialog.component';\nimport { PatientEditComponent } from './components/patient/patient-edit/patient-edit.component';\nimport { PatientDetailUsbstickComponent } from './components/patient/patient-detail-usbstick/patient-detail-usbstick.component';\nimport { HasRoleDirective } from './directives/has-role.directive';\nimport { HasPrivilegeDirective } from './directives/has-privilege.directive';\nimport { MeasurementDetailRangeComponent } from './components/measurement/measurement-detail-range/measurement-detail-range.component';\nimport { MeasurementCommentComponent } from './components/measurement/measurement-comment/measurement-comment.component';\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\nimport { OperatorListComponent } from './components/operators/operator-list/operator-list.component';\nimport { OperatorDetailComponent } from './components/operators/operator-detail/operator-detail.component';\nimport { DisplayImagesOneSideComponent } from './components/measurement/display-images-one-side/display-images-one-side.component';\nimport { PatientDetailAnamnesenComponent } from './components/patient/patient-detail-anamnesen/patient-detail-anamnesen.component';\nimport { PatientDetailDiagnosenComponent } from './components/patient/patient-detail-diagnosen/patient-detail-diagnosen.component';\nimport { FeatureComponent } from './components/feature/feature.component';\nimport { ConfigComponent } from './components/config-param/config-param.component';\nimport { ValidationComponent } from './components/measurement/validation/validation.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n LoginComponent,\n NavComponent,\n NotificationComponent,\n PatientListComponent,\n PatientDetailMenueComponent,\n PatientDetailDataComponent,\n PatientDetailMeasurementsComponent,\n PatientDetailDiagnosenComponent,\n PatientDetailAnamnesenComponent,\n UploadMeasurementComponent,\n MeasurementComponent,\n MandantListComponent,\n MandantDetailComponent,\n UserListComponent,\n UserDetailComponent,\n YesNoDialogComponent,\n PatientEditComponent,\n PatientDetailUsbstickComponent,\n HasRoleDirective,\n HasPrivilegeDirective,\n MeasurementDetailRangeComponent,\n MeasurementCommentComponent,\n DashboardComponent,\n OperatorListComponent,\n OperatorDetailComponent,\n DisplayImagesOneSideComponent,\n FooterComponent,\n FeatureComponent,\n ConfigComponent,\n ValidationComponent\n ],\n imports: [\n AppRoutingModule,\n BrowserModule,\n DataTablesModule,\n HttpClientModule,\n FontAwesomeModule,\n ReactiveFormsModule,\n FormsModule\n ],\n providers: [\n AuthService,\n AuthGuard,\n NotificationService,\n { provide: HTTP_INTERCEPTORS, useClass: BackendInterceptor, multi: true },\n { provide: ErrorHandler, useClass: GlobalErrorHandler },\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {\n constructor() {\n library.add(faEdit);\n }\n}\n","module.exports = \"
\\n\\n
\\n
\\n
\\n

Config Parameter

\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
#NameWert Schema
{{ configParam.id }}:{{ configParam.name }}:\\n \\n \\n {{ configParam.value_s}}\\n \\n \\n
\\n Save\\n \\n
\\n \\n
{{ configParam.data_schema_s }}
\\n
\"","module.exports = \"table {\\n border-collapse: collapse; }\\n\\ntd, th {\\n border: 1px solid #ddd;\\n padding: 5px 1em; }\\n\\n.value {\\n width: 60%;\\n min-width: 25em; }\\n\\n.value input {\\n width: 100%;\\n padding: 10px;\\n margin: 10px 0;\\n border: 1px solid #ccc;\\n border-radius: 4px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL2NvbmZpZy1wYXJhbS9jb25maWctcGFyYW0uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSwwQkFBeUIsRUFDMUI7O0FBQ0Q7RUFDRSx1QkFBc0I7RUFDdEIsaUJBQWdCLEVBQ2pCOztBQUNEO0VBQ0UsV0FBVTtFQUNWLGdCQUFlLEVBQ2hCOztBQUNEO0VBQ0UsWUFBVztFQUNYLGNBQWE7RUFDYixlQUFjO0VBQ2QsdUJBQXNCO0VBQ3RCLG1CQUFrQixFQUNuQiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29uZmlnLXBhcmFtL2NvbmZpZy1wYXJhbS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbInRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cbnRkLCB0aCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIHBhZGRpbmc6IDVweCAxZW07XG59XG4udmFsdWUge1xuICB3aWR0aDogNjAlO1xuICBtaW4td2lkdGg6IDI1ZW07XG59XG4udmFsdWUgaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTBweDtcbiAgbWFyZ2luOiAxMHB4IDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport {ConfigParamsService} from 'src/app/services/config_params_service';\nimport { NotificationService } from 'src/app/services/notification.service';\n\n\n@Component({\n selector: 'app-config',\n templateUrl: './config-param.component.html',\n styleUrls: ['./config-param.component.scss']\n})\nexport class ConfigComponent implements OnInit {\n\n configParams: Array = [];\n editConfigParamId: number = -1;\n\n constructor(\n private configParamsService: ConfigParamsService,\n private notificationService: NotificationService,\n ) {\n \n }\n\n ngOnInit(): void {\n this.configParamsService.list().subscribe(data => {\n this.configParams = data;\n });\n }\n\n activateEditMode(configParamId: number) {\n console.log('activate edit mode for config param id: ' + configParamId);\n this.editConfigParamId = configParamId;\n }\n\n cancelEdit() {\n this.editConfigParamId = -1;\n }\n\n updateConfigParam(id: number, newValue: string): void {\n this.configParamsService.updateValue(id, newValue).subscribe(\n response => {\n //console.log('Config param updated successfully', response);\n this.notificationService.success('Config Param erfolgreich gespeichert');\n this.editConfigParamId = -1; // Exit edit mode\n },\n error => {\n //console.error('Error updating config param', error);\n this.notificationService.error('Fehler beim Speichen des Config Params: ' + error.error.message);\n }\n );\n }\n}","module.exports = \"
\\n\\n
\\n
\\n
\\n

Willkommen

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

Guten Tag,

\\n

Sie sind eingeloggt als {{currentUser.username}} für die Klinik/Praxis {{currentUser.mandant_title}}

\\n

Sie haben derzeit alle Rechte der Nutzerrollen: {{role}}{{isLast?'':', '}}

\\n
\\n
\\n
\\n
\\n\\n \\n \\n \\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZGFzaGJvYXJkL2Rhc2hib2FyZC5jb21wb25lbnQuc2NzcyJ9 */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\nimport {Subscription} from 'rxjs';\nimport {CurrentUser} from '../../entities/CurrentUser';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss']\n})\nexport class DashboardComponent implements OnInit, OnDestroy {\n\n subs: Array = [];\n currentUser: CurrentUser;\n\n constructor(\n private authService: AuthService\n ) { }\n\n ngOnInit() {\n this.subs.push(this.authService.currentUser$.subscribe(user => this.currentUser = user));\n }\n\n ngOnDestroy(): void {\n if (this.subs != null) { this.subs.forEach(sub => sub.unsubscribe()); }\n this.subs = [];\n }\n}\n","module.exports = \"
\\n\\n
\\n
\\n
\\n

Feature Toggles

\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NameStatusToggle
{{ featureToggle.name }}{{ featureToggle.enabled ? 'Aktiviert' : 'Deaktiviert' }}\\n \\n
\\n
\"","module.exports = \".row {\\n width: 100%; }\\n\\n.switch {\\n position: relative;\\n display: inline-block;\\n width: 60px;\\n height: 34px; }\\n\\n.switch input {\\n opacity: 0;\\n width: 0;\\n height: 0; }\\n\\n.slider {\\n position: absolute;\\n cursor: pointer;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: #ccc;\\n transition: .4s; }\\n\\n.slider:before {\\n position: absolute;\\n content: \\\"\\\";\\n height: 26px;\\n width: 26px;\\n left: 4px;\\n bottom: 4px;\\n background-color: white;\\n transition: .4s; }\\n\\ninput:checked + .slider {\\n background-color: #2196F3; }\\n\\ninput:focus + .slider {\\n box-shadow: 0 0 1px #2196F3; }\\n\\ninput:checked + .slider:before {\\n -webkit-transform: translateX(26px);\\n transform: translateX(26px); }\\n\\n/* Rounded sliders */\\n\\n.slider.round {\\n border-radius: 34px; }\\n\\n.slider.round:before {\\n border-radius: 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL2ZlYXR1cmUvZmVhdHVyZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUVFLFlBQVcsRUFDWjs7QUFFRDtFQUNJLG1CQUFrQjtFQUNsQixzQkFBcUI7RUFDckIsWUFBVztFQUNYLGFBQVksRUFDYjs7QUFFRDtFQUNFLFdBQVU7RUFDVixTQUFRO0VBQ1IsVUFBUyxFQUNWOztBQUVEO0VBQ0UsbUJBQWtCO0VBQ2xCLGdCQUFlO0VBQ2YsT0FBTTtFQUNOLFFBQU87RUFDUCxTQUFRO0VBQ1IsVUFBUztFQUNULHVCQUFzQjtFQUV0QixnQkFBZSxFQUNoQjs7QUFFRDtFQUNFLG1CQUFrQjtFQUNsQixZQUFXO0VBQ1gsYUFBWTtFQUNaLFlBQVc7RUFDWCxVQUFTO0VBQ1QsWUFBVztFQUNYLHdCQUF1QjtFQUV2QixnQkFBZSxFQUNoQjs7QUFFRDtFQUNFLDBCQUF5QixFQUMxQjs7QUFFRDtFQUNFLDRCQUEyQixFQUM1Qjs7QUFFRDtFQUNFLG9DQUFtQztFQUVuQyw0QkFBMkIsRUFDNUI7O0FBRUQscUJBQXFCOztBQUNyQjtFQUNFLG9CQUFtQixFQUNwQjs7QUFFRDtFQUNFLG1CQUFrQixFQUNuQiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZmVhdHVyZS9mZWF0dXJlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiXG4ucm93IHtcblxuICB3aWR0aDogMTAwJTtcbn1cblxuLnN3aXRjaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogNjBweDtcbiAgICBoZWlnaHQ6IDM0cHg7XG4gIH1cbiAgXG4gIC5zd2l0Y2ggaW5wdXQgeyBcbiAgICBvcGFjaXR5OiAwO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgfVxuICBcbiAgLnNsaWRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IC40cztcbiAgICB0cmFuc2l0aW9uOiAuNHM7XG4gIH1cbiAgXG4gIC5zbGlkZXI6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDI2cHg7XG4gICAgd2lkdGg6IDI2cHg7XG4gICAgbGVmdDogNHB4O1xuICAgIGJvdHRvbTogNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLjRzO1xuICAgIHRyYW5zaXRpb246IC40cztcbiAgfVxuICBcbiAgaW5wdXQ6Y2hlY2tlZCArIC5zbGlkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTk2RjM7XG4gIH1cbiAgXG4gIGlucHV0OmZvY3VzICsgLnNsaWRlciB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAjMjE5NkYzO1xuICB9XG4gIFxuICBpbnB1dDpjaGVja2VkICsgLnNsaWRlcjpiZWZvcmUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjZweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpO1xuICB9XG4gIFxuICAvKiBSb3VuZGVkIHNsaWRlcnMgKi9cbiAgLnNsaWRlci5yb3VuZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMzRweDtcbiAgfVxuICBcbiAgLnNsaWRlci5yb3VuZDpiZWZvcmUge1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgfSJdfQ== */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractDataTableComponent } from 'src/app/components/generics/AbstractDataTableComponent';\nimport { FeatureToggle } from 'src/app/entities/FeatureToggle';\nimport { FeatureToggleService } from 'src/app/services/feature_toggles_service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-feature',\n templateUrl: './feature.component.html',\n styleUrls: ['./feature.component.scss']\n})\nexport class FeatureComponent extends AbstractDataTableComponent implements OnInit, OnDestroy {\n\n subs: Subscription[] = [];\n FeatureList: FeatureToggle[] = [];\n\n constructor(private featureToggleService: FeatureToggleService) {\n super('feature list');\n }\n\n\n ngOnInit() {\n this.subs.push(this.featureToggleService.getFeatures().subscribe(list => {\n this.FeatureList = list;\n this.rerender();\n }));\n\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n setFeatureStatus(id: Number, status: boolean): void {\n this.subs.push(this.featureToggleService.setFeatureStatus(id, status).subscribe((data) => {\n let feature = this.FeatureList.find(f => f.id == data.id);\n if (feature) {\n feature.enabled = data.enabled;\n }\n }));\n }\n}\n","module.exports = \".footer {\\n position: fixed;\\n left: 25px;\\n right: 25px;\\n bottom: -5px;\\n background-color: #3c763d;\\n color: white;\\n text-align: center;\\n padding: 10px 0;\\n height: 50px;\\n display: flex;\\n}\\n\\n.usb-service {\\n display: flex;\\n font-size: 15px;\\n top: 50%;\\n margin-left: 45%;\\n \\n \\n}\\n\\n.status-indicator {\\n width: 10px;\\n height: 10px;\\n border-radius: 50%;\\n margin-left: 10px;\\n box-shadow: 0 0 8px 2px white;\\n margin-top: 5%;\\n \\n \\n\\n}\\n\\n.red {\\n background: radial-gradient(circle, darkred, red);\\n}\\n\\n.yellow {\\n background: radial-gradient(circle, #ffd700, #ffff00);\\n}\\n\\n.green {\\n background: radial-gradient(circle, #3c763d, #2e5930);\\n \\n}\\n\\n.version-label {\\n position: absolute;\\n right: 10px; \\n top: 50%; \\n -webkit-transform: translateY(-50%); \\n transform: translateY(-50%); \\n color: white; \\n font-size: 12px;\\n}\\n\\n.footerNumbersContainer {\\n\\n display: flex;\\n font-size: 15px;\\n margin-left: 1%;\\n \\n}\\n\\n.footerNumbers {\\n display: flex;\\n margin-left: 10px;\\n \\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7SUFDWixhQUFhO0lBQ2IsMEJBQTBCO0lBQzFCLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixjQUFjO0NBQ2pCOztBQUVEO0lBQ0ksY0FBYztJQUNkLGdCQUFnQjtJQUNoQixTQUFTO0lBQ1QsaUJBQWlCOzs7Q0FHcEI7O0FBRUQ7SUFDSSxZQUFZO0lBQ1osYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsOEJBQThCO0lBQzlCLGVBQWU7Ozs7Q0FJbEI7O0FBRUQ7SUFDSSxrREFBa0Q7Q0FDckQ7O0FBQ0Q7SUFDSSxzREFBc0Q7Q0FDekQ7O0FBRUQ7SUFDSSxzREFBc0Q7O0NBRXpEOztBQUVEO0lBQ0ksbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixTQUFTO0lBQ1Qsb0NBQTRCO1lBQTVCLDRCQUE0QjtJQUM1QixhQUFhO0lBQ2IsZ0JBQWdCO0NBQ25COztBQUdEOztJQUVJLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsZ0JBQWdCOztDQUVuQjs7QUFFRDtJQUNJLGNBQWM7SUFDZCxrQkFBa0I7O0NBRXJCIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9vdGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogMjVweDtcbiAgICByaWdodDogMjVweDtcbiAgICBib3R0b206IC01cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNjNzYzZDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbn1cblxuLnVzYi1zZXJ2aWNlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogNDUlO1xuICAgIFxuICAgIFxufVxuXG4uc3RhdHVzLWluZGljYXRvciB7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICBib3gtc2hhZG93OiAwIDAgOHB4IDJweCB3aGl0ZTtcbiAgICBtYXJnaW4tdG9wOiA1JTtcbiAgICBcbiAgICBcblxufVxuXG4ucmVkIHtcbiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCBkYXJrcmVkLCByZWQpO1xufVxuLnllbGxvdyB7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgI2ZmZDcwMCwgI2ZmZmYwMCk7XG59XG5cbi5ncmVlbiB7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgIzNjNzYzZCwgIzJlNTkzMCk7XG4gICAgXG59XG5cbi52ZXJzaW9uLWxhYmVsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDEwcHg7IFxuICAgIHRvcDogNTAlOyBcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IFxuICAgIGNvbG9yOiB3aGl0ZTsgXG4gICAgZm9udC1zaXplOiAxMnB4O1xufVxuXG5cbi5mb290ZXJOdW1iZXJzQ29udGFpbmVyIHtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiAxJTtcbiAgICBcbn1cblxuLmZvb3Rlck51bWJlcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgXG59XG4iXX0= */\"","module.exports = \"
\\n
\\n

Status USB Service:

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

{{ uploadedMeasurementsCount}}

\\n
\\n
\\n

/

\\n
\\n
\\n

{{ totalMeasurementsCount }}

\\n
\\n
\\n
Version: {{usbServiceVersion}}
\\n
\"","import { Component } from '@angular/core';\nimport { UsbService } from 'src/app/services/usb.service';\nimport { FeatureToggleService } from 'src/app/services/feature_toggles_service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.css']\n})\n\nexport class FooterComponent {\n // used as variables in the html file\n usbStatusClass: string = 'status-indicator red';\n usbStatusHint: string = 'USB Service nicht verfügbar!';\n usbServiceVersion: string = 'n.v.';\n footerEnabled: boolean = false;\n usbStickReady: boolean = false;\n usbServiceReady: boolean = false;\n totalMeasurementsCount: number;\n uploadedMeasurementsCount: number;\n\n // internal variables\n featureToggleServiceSub: Subscription;\n usbServiceSub: Subscription;\n \n constructor(\n private usbService: UsbService,\n private featureToggleService: FeatureToggleService,\n ) { }\n\n ngOnInit() {\n this.featureToggleServiceSub = this.featureToggleService.getFeatureStatus('new_usb_service')\n .subscribe((status) => {\n this.footerEnabled = status;\n if (status) {\n this.activateUsbService();\n }\n })\n }\n\n activateUsbService() {\n console.log('Activate USB service');\n this.usbService.startUsbService();\n const repeatInterval = window.location.hostname === '127.0.0.1' ? 10000 : 5000;\n\n this.usbServiceSub = this.usbService.currentEvent.subscribe((status) => {\n this.usbServiceVersion = status.version;\n this.usbServiceReady = true;\n if (status.status === 'USB_SERVICE_NOT_AVAILABLE') {\n this.usbStatusClass = 'status-indicator red';\n this.usbStatusHint = 'USB Service nicht verfügbar!';\n this.usbStickReady = false;\n } else if (status.error.length > 0) {\n this.usbStatusClass = 'status-indicator yellow';\n this.usbStatusHint = status.error;\n this.usbStickReady = false;\n } else {\n this.usbStatusHint = status.usb_path;\n this.usbStatusClass = 'status-indicator green';\n this.usbStickReady = true;\n }\n });\n\n this.usbService.currentUsbStickCounts.subscribe(newUsbCount => {\n console.log('new USB count status:', newUsbCount);\n if (newUsbCount) {\n this.totalMeasurementsCount = newUsbCount.totalCount;\n this.uploadedMeasurementsCount = newUsbCount.uploadedCount;\n }\n });\n }\n\n\n ngOnDestroy() {\n if (this.featureToggleServiceSub){\n this.featureToggleServiceSub.unsubscribe();\n }\n if (this.usbServiceSub){\n this.usbServiceSub.unsubscribe();\n }\n }\n\n\n}","import {AfterViewInit, ViewChild} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {DataTableDirective} from 'angular-datatables';\n\n/**\n * This class provide common datatable functionality to a list view component\n */\nexport abstract class AbstractDataTableComponent implements AfterViewInit {\n\n protected table_name: string;\n\n dtOptions: DataTables.Settings = {\n pagingType: 'full_numbers',\n pageLength: 25,\n lengthMenu: [10, 25, 50, 100, 500]\n };\n\n // We use this trigger because fetching the list of persons can be quite long,\n // thus we ensure the data is fetched before rendering\n dtTrigger: Subject = new Subject();\n\n @ViewChild(DataTableDirective)\n dtElement: DataTableDirective;\n\n constructor(tableName: string) {\n this.table_name = tableName;\n }\n\n // do not trigger dt inside subscription, this will run into problemes with dt rendering\n ngAfterViewInit(): void {\n this.dtTrigger.next();\n }\n\n /**\n * this method must be called, when data have been refreshed -- typically in subscription of API response\n */\n rerender(): void {\n if ((this.dtElement != null) && (this.dtElement.dtInstance != null)) {\n console.log('rerender datatable list', this.table_name);\n this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {\n // Destroy the table first\n dtInstance.destroy();\n // Call the dtTrigger to rerender again\n this.dtTrigger.next();\n });\n }\n }\n\n}\n","module.exports = \"
\\n
\\n
\\n
Please Login
\\n
\\n
\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n \\n
\\n
\\n
\\n
\\n
\\n ERROR: Invalid username and password.\\n
\\n
\\n Logged out. Have a nice day! \\n
\\n
\\n
\\n
\\n\"","module.exports = \".login {\\n height: 100vh;\\n margin-left: -15px;\\n padding-left: 15px; }\\n .login .card-login {\\n border: 0;\\n border-radius: 0.5rem;\\n box-shadow: 0 0.5rem 1rem 0 rgba(0, 0, 0, 0.1);\\n margin: auto; }\\n .login .card-login .card-body {\\n min-width: 350px;\\n padding: 1.5rem 1.5rem 1rem; }\\n .login .card-login .card-title {\\n margin-bottom: 2rem;\\n font-weight: 300;\\n font-size: 1.5rem;\\n text-align: center; }\\n .login .card-login .note {\\n font-size: 0.75rem;\\n text-align: center;\\n color: #6c757d; }\\n .login .card-login .card-footer {\\n background: none;\\n padding: 0; }\\n .login .card-login .card-footer .alert {\\n border-radius: 0;\\n margin: 0; }\\n .login .card-login .card-footer .alert:last-child {\\n border-bottom-left-radius: 0.5rem;\\n border-bottom-right-radius: 0.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5zY3NzIiwiL2FwcC9zcmMvcGFydGlhbHMvX3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0UsY0FBYTtFQUNiLG1CQUFrQjtFQUNsQixtQkFBa0IsRUF5Q25CO0VBNUNEO0lBTUksVUFBUztJQUNULHNCQ1FxQjtJRFByQiwrQ0FBOEM7SUFDOUMsYUFBWSxFQWtDYjtFQTNDSDtNQVlNLGlCQUFnQjtNQUNoQiw0QkFBMkIsRUFDNUI7RUFkTDtNQWlCTSxvQkFBbUI7TUFDbkIsaUJBQWdCO01BQ2hCLGtCQUFpQjtNQUNqQixtQkFBa0IsRUFDbkI7RUFyQkw7TUF3Qk0sbUJBQWtCO01BQ2xCLG1CQUFrQjtNQUNsQixlQ25CWSxFRG9CYjtFQTNCTDtNQThCTSxpQkFBZ0I7TUFDaEIsV0FBVSxFQVdYO0VBMUNMO1FBa0NRLGlCQUFnQjtRQUNoQixVQUFTLEVBTVY7RUF6Q1A7VUFzQ1Usa0NDdkJlO1VEd0JmLG1DQ3hCZSxFRHlCaEIiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uLy4uL3BhcnRpYWxzL3ZhcmlhYmxlc1wiO1xuXG4ubG9naW4ge1xuICBoZWlnaHQ6IDEwMHZoO1xuICBtYXJnaW4tbGVmdDogLTE1cHg7XG4gIHBhZGRpbmctbGVmdDogMTVweDtcblxuICAuY2FyZC1sb2dpbiB7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuICAgIGJveC1zaGFkb3c6IDAgMC41cmVtIDFyZW0gMCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgbWFyZ2luOiBhdXRvO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICBtaW4td2lkdGg6IDM1MHB4O1xuICAgICAgcGFkZGluZzogMS41cmVtIDEuNXJlbSAxcmVtO1xuICAgIH1cblxuICAgIC5jYXJkLXRpdGxlIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm5vdGUge1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgY29sb3I6ICRncmF5LTYwMDtcbiAgICB9XG5cbiAgICAuY2FyZC1mb290ZXIge1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgIC5hbGVydCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuICAgICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIi8vIENvbG9yc1xuJGdyZWVuOiAjM2M3NjNkO1xuXG4kd2hpdGU6ICAgICNmZmY7XG4kZ3JheS0xMDA6ICNmOGY5ZmE7XG4kZ3JheS0yMDA6ICNlOWVjZWY7XG4kZ3JheS0zMDA6ICNkZWUyZTY7XG4kZ3JheS00MDA6ICNjZWQ0ZGE7XG4kZ3JheS01MDA6ICNhZGI1YmQ7XG4kZ3JheS02MDA6ICM2Yzc1N2Q7XG4kZ3JheS03MDA6ICM0OTUwNTc7XG4kZ3JheS04MDA6ICMzNDNhNDA7XG4kZ3JheS05MDA6ICMyMTI1Mjk7XG4kYmxhY2s6ICAgICMwMDA7XG5cbi8vIEJvcmRlciBSYWRpdXNcbiRib3JkZXItcmFkaXVzLXNtOiAwLjI1cmVtO1xuJGJvcmRlci1yYWRpdXMtbWQ6IDAuNXJlbTtcbiRib3JkZXItcmFkaXVzLWxnOiAxcmVtO1xuXG4vLyBCb2R5XG4kYm9keS1iZzogICAgICR3aGl0ZTtcbiRib2R5LWNvbG9yOiAgJGdyYXktOTAwO1xuXG4vLyBOYXZiYXJcbiRuYXZiYXItaGVpZ2h0OiA1NnB4O1xuJG5hdmJhci1iZy1jb2xvcjogJHdoaXRlO1xuJG5hdmJhci1mb250LXNpemU6IDAuODc1cmVtO1xuXG4vLyBCdXR0b25zXG4kYnRuLWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXG4vLyBGb3Jtc1xuJGlucHV0LWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXG4vLyBDYXJkc1xuJGNhcmQtYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7Il19 */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AuthService} from '../../services/auth.service';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n\n returnUrl: string;\n loggedOut = false;\n errorMessage: String;\n subs: Array = [];\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private authService: AuthService,\n\n ) { }\n\n ngOnInit() {\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';\n\n // redirect, if we have already a user\n if (this.authService.hasCurrentUser()) {this.router.navigate([this.returnUrl]);}\n\n // set logout message, if url has query param /login?logout\n this.loggedOut = ('logout' in this.route.snapshot.queryParams);\n\n // set subscriptions to login status\n this.subs.push(\n this.authService.onLoginSuccess.subscribe( () => { this.router.navigate([this.returnUrl]); })\n );\n\n this.subs.push(\n this.authService.onLoginFailed.subscribe(() => this.errorMessage = 'Unable to login, try again.')\n );\n }\n\n public login(username: string, password: string): void {\n this.authService.login(username, password);\n }\n\n ngOnDestroy() {\n this.subs.forEach(subs => subs.unsubscribe());\n\n this.subs = [];\n }\n\n}\n","module.exports = \"
\\n\\n
\\n
\\n
\\n

Mandant {{mandant.id > 0 ? 'bearbeiten (#' + mandant.id + ')' : 'neu erstellen'}}

\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n \\n \\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFuZGFudGVuL21hbmRhbnQtZGV0YWlsL21hbmRhbnQtZGV0YWlsLmNvbXBvbmVudC5zY3NzIn0= */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {MandantService} from '../../../services/mandant.service';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {Mandant} from '../../../entities/Mandant';\nimport {Observable, Subscription} from 'rxjs';\nimport {AuthService} from '../../../services/auth.service';\n\n@Component({\n selector: 'app-mandant-detail',\n templateUrl: './mandant-detail.component.html',\n styleUrls: ['./mandant-detail.component.scss']\n})\nexport class MandantDetailComponent implements OnInit, OnDestroy {\n\n mandant: Mandant;\n mandForm: FormGroup;\n subs: Subscription[] = [];\n\n openModalDialog = false;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private fb: FormBuilder,\n private mandantService: MandantService,\n private authService: AuthService\n ) { }\n\n ngOnInit() {\n\n this.mandForm = this.fb.group({\n id: [''],\n title: ['', Validators.required],\n test: [false]\n });\n\n const sub: Subscription = this.route.params\n .switchMap(params => {\n const id: number = +params['id']; // (+) converts string 'id' to a number\n if (id > 0) {\n return this.mandantService.getList().map(all => { // TODO replace by single request\n return all.filter(item => item.id === id)[0];\n });\n } else {\n // create new Mandant\n const m: Mandant = new Mandant();\n m.id = 0;\n return Observable.of(m);\n }\n })\n .subscribe(mand => {\n this.mandant = mand;\n this.mandForm.patchValue({\n id: mand.id,\n title: mand.title,\n test: mand.test\n });\n });\n this.subs.push(sub);\n }\n\n saveMandant(m: Mandant, isValid: boolean) {\n if (isValid) {\n this.mandantService.save(m).subscribe((resp: Mandant) => {\n this.mandant = resp;\n m.id > 0 ? this.goBackToList() : this.openModalDialog = true; // open modal for new user\n });\n }\n }\n\n switchContextToAddNewUser(): void {\n const sub = this.authService.switchContext(this.mandant.id).subscribe(() => {\n this.router.navigate(['/users', 'new'], {queryParams: {role: 'ADMIN'}});\n });\n }\n\n goBackToList(): void {\n this.router.navigate(['/mandanten']);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n}\n","module.exports = \"
\\n\\n
\\n
\\n
\\n

Mandanten

\\n \\n Mandant hinzufügen \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Nr.Bezeichnung#Patienten#Benutzer#Operatoren
{{mandant.id}}{{mandant.title}}{{mandant.countPatients}}{{mandant.countUsers}}{{mandant.countOperators}}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n \\n
\\n\"","module.exports = \".btn-group .btn {\\n margin-right: 10px;\\n border-radius: 0.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL21hbmRhbnRlbi9tYW5kYW50LWxpc3QvbWFuZGFudC1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksbUJBQWtCO0VBQ2xCLHNCQUFxQixFQUN0QiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFuZGFudGVuL21hbmRhbnQtbGlzdC9tYW5kYW50LWxpc3QuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYnRuLWdyb3VwIC5idG4ge1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIH0iXX0= */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractDataTableComponent} from '../../generics/AbstractDataTableComponent';\nimport {Subscription} from 'rxjs';\nimport {MandantService} from '../../../services/mandant.service';\nimport {Mandant} from '../../../entities/Mandant';\nimport {AuthService} from '../../../services/auth.service';\nimport {CurrentUser} from '../../../entities/CurrentUser';\n\n@Component({\n selector: 'app-mandant-list',\n templateUrl: './mandant-list.component.html',\n styleUrls: ['./mandant-list.component.scss']\n})\nexport class MandantListComponent extends AbstractDataTableComponent implements OnInit, OnDestroy {\n\n currentUser: CurrentUser;\n mandants: Array = [];\n subs: Array = [];\n openModalDialog = false;\n deleteMandantId = null;\n\n constructor(\n private mandantService: MandantService,\n private authService: AuthService\n ) {\n super('mandant-list');\n }\n\n ngOnInit() {\n this.subs.push(this.getList());\n\n\n this.subs.push(\n this.authService.currentUser$.subscribe(u => this.currentUser = u)\n );\n\n this.dtOptions.order = [\n [0, 'asc'], // nach ID ordnen als default\n ];\n }\n\n getList(){\n return this.mandantService.getList().subscribe((mands) => {\n this.mandants = mands;\n this.rerender();\n })\n }\n\n switchContext(mandantId: number) {\n this.authService.switchContext(mandantId).subscribe(() => {}); // TODO: this should re-route to a dashboard\n }\n\n activateDeleteModal(mandantId: number){\n this.deleteMandantId = mandantId;\n this.openModalDialog = true;\n }\n\n deleteMandant(){\n this.deleteMandantId && this.subs.push(\n this.mandantService.deleteMandant(this.deleteMandantId).subscribe(() => {\n this.openModalDialog = false;\n this.deleteMandantId = null;\n this.getList();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n}\n","module.exports = \"
\\n
\\n
Real {{label}}
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n\\n
\\n
Imaginär {{label}}
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n {{min_freq}} Hz\\n {{max_freq}} Hz\\n
\\n
\\n
\"","module.exports = \".image-output {\\n margin-bottom: 2rem; }\\n .image-output img {\\n display: block;\\n width: 90%;\\n height: auto; }\\n .frequency-control-range {\\n margin-top: 1rem;\\n width: 90%; }\\n .frequency-control-range .form-group input {\\n cursor: pointer;\\n position: relative; }\\n .frequency-control-range .form-group input:before, .frequency-control-range .form-group input:after {\\n position: absolute;\\n content: '';\\n width: 2px;\\n height: 20px;\\n background-color: #adb5bd; }\\n .frequency-control-range .form-group input:before {\\n top: -2px;\\n left: 0; }\\n .frequency-control-range .form-group input:after {\\n top: -2px;\\n right: 0; }\\n .frequency-control-range .frequency-control-boundaries {\\n display: flex;\\n justify-content: space-between; }\\n .image-with-reload {\\n position: relative;\\n min-height: 100px; }\\n .image-with-reload .reload-image {\\n position: absolute;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n top: 0;\\n left: 0;\\n width: 90%;\\n height: 100%;\\n background-color: rgba(255, 255, 255, 0.4);\\n font-size: 3em;\\n color: #343a40; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL21lYXN1cmVtZW50L2Rpc3BsYXktaW1hZ2VzLW9uZS1zaWRlL2Rpc3BsYXktaW1hZ2VzLW9uZS1zaWRlLmNvbXBvbmVudC5zY3NzIiwiL2FwcC9zcmMvcGFydGlhbHMvX3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0Usb0JBQW1CLEVBT3BCO0VBUkQ7SUFJSSxlQUFjO0lBQ2QsV0FBVTtJQUNWLGFBQVksRUFDYjtFQVdIO0VBQ0UsaUJBQWdCO0VBQ2hCLFdBQVUsRUFxQlg7RUF2QkQ7SUFLTSxnQkFBZTtJQUNmLG1CQUFrQixFQVduQjtFQWpCTDtNQVNRLG1CQUFrQjtNQUNsQixZQUFXO01BQ1gsV0FBVTtNQUNWLGFBQVk7TUFDWiwwQkN6QlUsRUQwQlg7RUFkUDtNQWVpQixVQUFTO01BQUUsUUFBTyxFQUFJO0VBZnZDO01BZ0JnQixVQUFTO01BQUUsU0FBUSxFQUFJO0VBaEJ2QztJQW9CSSxjQUFhO0lBQ2IsK0JBQThCLEVBQy9CO0VBR0g7RUFDRSxtQkFBa0I7RUFDbEIsa0JBQWlCLEVBZ0JsQjtFQWxCRDtJQUtJLG1CQUFrQjtJQUNsQixjQUFhO0lBQ2Isb0JBQW1CO0lBQ25CLHdCQUF1QjtJQUN2QixPQUFNO0lBQ04sUUFBTztJQUNQLFdBQVU7SUFDVixhQUFZO0lBQ1osMkNBQXVDO0lBQ3ZDLGVBQWM7SUFDZCxlQUFjLEVBQ2YiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL21lYXN1cmVtZW50L2Rpc3BsYXktaW1hZ2VzLW9uZS1zaWRlL2Rpc3BsYXktaW1hZ2VzLW9uZS1zaWRlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uLy4uLy4uL3BhcnRpYWxzL3ZhcmlhYmxlc1wiO1xuXG4uaW1hZ2Utb3V0cHV0IHtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcblxuICBpbWcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA5MCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi5yZWFse1xuXG59XG5cbi5pbWFnaW5hcnl7XG5cbn1cblxuLmZyZXF1ZW5jeS1jb250cm9sLXJhbmdlIHtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbiAgd2lkdGg6IDkwJTtcbiAgLmZvcm0tZ3JvdXAge1xuICAgIGlucHV0IHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICY6YmVmb3JlLFxuICAgICAgJjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHdpZHRoOiAycHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyYXktNTAwO1xuICAgICAgfVxuICAgICAgJjpiZWZvcmUgeyB0b3A6IC0ycHg7IGxlZnQ6IDA7IH1cbiAgICAgICY6YWZ0ZXIgeyB0b3A6IC0ycHg7IHJpZ2h0OiAwOyB9XG4gICAgfVxuICB9XG4gIC5mcmVxdWVuY3ktY29udHJvbC1ib3VuZGFyaWVzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxufVxuXG4uaW1hZ2Utd2l0aC1yZWxvYWQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1pbi1oZWlnaHQ6IDEwMHB4O1xuXG4gIC5yZWxvYWQtaW1hZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjQpO1xuICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgIGNvbG9yOiAjMzQzYTQwO1xuICB9XG5cbn0iLCIvLyBDb2xvcnNcbiRncmVlbjogIzNjNzYzZDtcblxuJHdoaXRlOiAgICAjZmZmO1xuJGdyYXktMTAwOiAjZjhmOWZhO1xuJGdyYXktMjAwOiAjZTllY2VmO1xuJGdyYXktMzAwOiAjZGVlMmU2O1xuJGdyYXktNDAwOiAjY2VkNGRhO1xuJGdyYXktNTAwOiAjYWRiNWJkO1xuJGdyYXktNjAwOiAjNmM3NTdkO1xuJGdyYXktNzAwOiAjNDk1MDU3O1xuJGdyYXktODAwOiAjMzQzYTQwO1xuJGdyYXktOTAwOiAjMjEyNTI5O1xuJGJsYWNrOiAgICAjMDAwO1xuXG4vLyBCb3JkZXIgUmFkaXVzXG4kYm9yZGVyLXJhZGl1cy1zbTogMC4yNXJlbTtcbiRib3JkZXItcmFkaXVzLW1kOiAwLjVyZW07XG4kYm9yZGVyLXJhZGl1cy1sZzogMXJlbTtcblxuLy8gQm9keVxuJGJvZHktYmc6ICAgICAkd2hpdGU7XG4kYm9keS1jb2xvcjogICRncmF5LTkwMDtcblxuLy8gTmF2YmFyXG4kbmF2YmFyLWhlaWdodDogNTZweDtcbiRuYXZiYXItYmctY29sb3I6ICR3aGl0ZTtcbiRuYXZiYXItZm9udC1zaXplOiAwLjg3NXJlbTtcblxuLy8gQnV0dG9uc1xuJGJ0bi1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblxuLy8gRm9ybXNcbiRpbnB1dC1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblxuLy8gQ2FyZHNcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kOyJdfQ== */\"","import {Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {forkJoin, Observable, Subscription} from 'rxjs';\nimport {ComplexPartName, ImgParam, MeasurementService, SideName} from '../../../services/measurement.service';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {MeasurementDetailsSummary} from '../../../entities/MeasurementDetailsSummary';\n\n@Component({\n selector: 'app-display-images-one-side',\n templateUrl: './display-images-one-side.component.html',\n styleUrls: ['./display-images-one-side.component.scss']\n})\nexport class DisplayImagesOneSideComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input() measurementId: string;\n\n @Input() side: string;\n\n // Farbabgleich zur anderen Seite - wird vom Server ausgewertet beim erstellen der Bilder\n @Input() colorBalancing: boolean;\n\n @Input() fixed_frequency: number; // if set, user can't slide throught frequencies\n\n @Input() measurementDetails: MeasurementDetailsSummary;\n\n @Output() frequencyChanged: EventEmitter = new EventEmitter();\n\n label = ''; // string\n\n current_freq: number = null; // current slider position (frequency value)\n\n currently_loading = false; // block slider while loading\n\n img_real: any;\n img_imag: any;\n api_sidename: SideName;\n subs: Array = [];\n min_freq: number;\n max_freq: number;\n\n constructor(\n private measurementService: MeasurementService,\n private sanitizer: DomSanitizer\n ) {\n }\n\n ngOnInit() {\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n switch (this.side) {\n case 'RECHTS':\n this.label = 'Rechts';\n this.api_sidename = SideName.RIGHT;\n break;\n case 'LINKS':\n this.label = 'Links';\n this.api_sidename = SideName.LEFT;\n break;\n default:\n // side must be 'RECHTS' or 'LINKS' onInit\n throw new Error('side must be constant \"RECHTS\" or \"LINKS\"');\n }\n\n if ('measurementDetails' in changes) {\n console.log('---- measurement details changed');\n }\n\n if ('colorBalancing' in changes && this.colorBalancing != null) {\n console.log('---- color balancing changed', this.colorBalancing);\n }\n\n if ('fixed_frequency' in changes && this.fixed_frequency != null) {\n console.log('---- fixed frequency was set', this.fixed_frequency);\n }\n\n if (this.fixed_frequency != null) {\n this.loadAndAssignImages(this.fixed_frequency);\n } else if ((this.current_freq == null) && ('measurementDetails' in changes)) {\n if (this.measurementDetails != null) {\n // image details change only once, thus reset to lowest frequency\n const initial_frequency = this.measurementDetails.frequencies.min;\n this.min_freq = this.measurementDetails.frequencies.min;\n this.max_freq = this.measurementDetails.frequencies.max;\n this.loadAndAssignImages(initial_frequency);\n }\n } else if ((this.current_freq != null) && ('colorBalancing' in changes)) {\n this.loadAndAssignImages(this.current_freq);\n }\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n }\n\n /**\n * reload image, if slider moved\n */\n public slide(val: number) {\n console.log('slide (new/old)', val, this.current_freq);\n if (this.current_freq == null) {\n return;\n } // exit, if no frequency given\n if (this.currently_loading) {\n return;\n } // exit, if currently loading an image\n const old_freq = this.getClosestFrequency(this.current_freq);\n const new_freq = this.getClosestFrequency(val);\n\n if (old_freq !== new_freq) {\n this.loadAndAssignImages(new_freq);\n }\n }\n\n /**\n * load images for real and imaginary part depeding on current_freq and injected side\n *\n * setzt nach erfolgreichem laden die aktuelle Frequenz und gibt den slider wieder frei\n */\n public loadAndAssignImages(freq: number) {\n if (typeof this.api_sidename === 'undefined') {\n console.log('skip loading, since side is undefined');\n return;\n }\n\n console.log('reload image, freq val has changed');\n\n // block slider while loading\n this.currently_loading = true;\n\n // set current frequency as being loaded from server\n this.current_freq = freq;\n\n // and inform external world about changed frequency\n this.frequencyChanged.emit(freq);\n\n // load real part\n const imgParamReal: ImgParam = {\n freq: freq,\n side: this.api_sidename,\n complex_part: ComplexPartName.REAL,\n color_balancing: this.colorBalancing\n };\n const realResponse = this.measurementService.getImage(this.measurementId, imgParamReal);\n\n // load imag part\n const imgParamImag: ImgParam = {\n freq: freq,\n side: this.api_sidename,\n complex_part: ComplexPartName.IMAG,\n color_balancing: this.colorBalancing\n };\n const imagResponse = this.measurementService.getImage(this.measurementId, imgParamImag);\n\n // assign both responses to images properties and release slider\n\n forkJoin([realResponse, imagResponse])\n .subscribe(responseList => {\n this.img_real = this.sanitizer.bypassSecurityTrustUrl(\n window.URL.createObjectURL(responseList[0])\n );\n\n this.img_imag = this.sanitizer.bypassSecurityTrustUrl(\n window.URL.createObjectURL(responseList[1])\n );\n\n // release slider\n this.currently_loading = false;\n });\n }\n\n /**\n * berechnet die nächstgelegene Frequenz in der Liste möglicher Frequenzen zu einem belibiegen Eingangswert\n * die Liste der möglichen Frequenzen wir zu Beginn geladen mit den detailsSummary\n */\n private getClosestFrequency(freq: number): number {\n return this.measurementDetails.frequencies.list.reduce((min, curr) => {\n const curr_dist = Math.abs(curr - freq);\n const old_dist = Math.abs(min - freq);\n return old_dist > curr_dist ? curr : min;\n }, this.measurementDetails.frequencies.max\n );\n }\n}\n","module.exports = \"\\n
\\n
\\n

{{comment.content}}

\\n {{comment.creationDate}} | {{comment.nick}}\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n\"","module.exports = \".frequency-comment {\\n margin-top: 2rem; }\\n @media screen and (min-width: 768px) {\\n .frequency-comment {\\n margin-top: 0;\\n margin-bottom: 2rem; } }\\n .frequency-comment div {\\n margin-bottom: 1rem; }\\n .frequency-comment p {\\n font-size: 14px;\\n color: #6c757d; }\\n .frequency-comment p:last-of-type {\\n margin-bottom: 0; }\\n .frequency-comment span {\\n font-size: 12px;\\n font-weight: 700;\\n color: #3c763d; }\\n .comment {\\n display: flex;\\n width: 100%;\\n flex-wrap: wrap;\\n align-items: flex-start;\\n justify-content: flex-end; }\\n .comment .form-group {\\n width: 100%; }\\n .comment .form-group label {\\n margin-right: 20px; }\\n @media screen and (min-width: 992px) {\\n .comment .form-group {\\n display: flex;\\n flex-wrap: nowrap;\\n align-items: flex-start;\\n justify-content: flex-start; } }\\n @media screen and (min-width: 1200px) {\\n .comment .form-group {\\n display: flex;\\n flex-wrap: wrap; } }\\n @media screen and (min-width: 1920px) {\\n .comment .form-group {\\n display: flex;\\n flex-wrap: nowrap; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL21lYXN1cmVtZW50L21lYXN1cmVtZW50LWNvbW1lbnQvbWVhc3VyZW1lbnQtY29tbWVudC5jb21wb25lbnQuc2NzcyIsIi9hcHAvc3JjL3BhcnRpYWxzL192YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFLGlCQUFnQixFQWtCakI7RUFqQkM7SUFGRjtNQUdJLGNBQWE7TUFDYixvQkFBbUIsRUFldEIsRUFBQTtFQW5CRDtJQU1RLG9CQUFtQixFQUFJO0VBTi9CO0lBU0ksZ0JBQWU7SUFDZixlQ0hjLEVES2Y7RUFaSDtNQVdzQixpQkFBZ0IsRUFBSTtFQVgxQztJQWVJLGdCQUFlO0lBQ2YsaUJBQWdCO0lBQ2hCLGVDbEJXLEVEbUJaO0VBR0g7RUFDRSxjQUFhO0VBQ2IsWUFBVztFQUNYLGdCQUFlO0VBQ2Ysd0JBQXVCO0VBQ3ZCLDBCQUF5QixFQXVCMUI7RUE1QkQ7SUFRSSxZQUFXLEVBbUJaO0VBM0JIO01BU1ksbUJBQWtCLEVBQUc7RUFFN0I7TUFYSjtRQVlNLGNBQWE7UUFDYixrQkFBaUI7UUFDakIsd0JBQXVCO1FBQ3ZCLDRCQUEyQixFQVk5QixFQUFBO0VBVEM7TUFsQko7UUFtQk0sY0FBYTtRQUNiLGdCQUFlLEVBT2xCLEVBQUE7RUFKQztNQXZCSjtRQXdCTSxjQUFhO1FBQ2Isa0JBQWlCLEVBRXBCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL21lYXN1cmVtZW50L21lYXN1cmVtZW50LWNvbW1lbnQvbWVhc3VyZW1lbnQtY29tbWVudC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi8uLi8uLi8uLi9wYXJ0aWFscy92YXJpYWJsZXNcIjtcblxuLmZyZXF1ZW5jeS1jb21tZW50IHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gIH1cbiAgZGl2IHsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxuXG4gIHAge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBjb2xvcjogJGdyYXktNjAwO1xuICAgICY6bGFzdC1vZi10eXBlIHsgIG1hcmdpbi1ib3R0b206IDA7IH1cbiAgfVxuXG4gIHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAkZ3JlZW47XG4gIH1cbn1cblxuLmNvbW1lbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblxuICAuZm9ybS1ncm91cCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbGFiZWwgeyBtYXJnaW4tcmlnaHQ6IDIwcHg7fVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIH1cblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxOTIwcHgpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIENvbG9yc1xuJGdyZWVuOiAjM2M3NjNkO1xuXG4kd2hpdGU6ICAgICNmZmY7XG4kZ3JheS0xMDA6ICNmOGY5ZmE7XG4kZ3JheS0yMDA6ICNlOWVjZWY7XG4kZ3JheS0zMDA6ICNkZWUyZTY7XG4kZ3JheS00MDA6ICNjZWQ0ZGE7XG4kZ3JheS01MDA6ICNhZGI1YmQ7XG4kZ3JheS02MDA6ICM2Yzc1N2Q7XG4kZ3JheS03MDA6ICM0OTUwNTc7XG4kZ3JheS04MDA6ICMzNDNhNDA7XG4kZ3JheS05MDA6ICMyMTI1Mjk7XG4kYmxhY2s6ICAgICMwMDA7XG5cbi8vIEJvcmRlciBSYWRpdXNcbiRib3JkZXItcmFkaXVzLXNtOiAwLjI1cmVtO1xuJGJvcmRlci1yYWRpdXMtbWQ6IDAuNXJlbTtcbiRib3JkZXItcmFkaXVzLWxnOiAxcmVtO1xuXG4vLyBCb2R5XG4kYm9keS1iZzogICAgICR3aGl0ZTtcbiRib2R5LWNvbG9yOiAgJGdyYXktOTAwO1xuXG4vLyBOYXZiYXJcbiRuYXZiYXItaGVpZ2h0OiA1NnB4O1xuJG5hdmJhci1iZy1jb2xvcjogJHdoaXRlO1xuJG5hdmJhci1mb250LXNpemU6IDAuODc1cmVtO1xuXG4vLyBCdXR0b25zXG4kYnRuLWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXG4vLyBGb3Jtc1xuJGlucHV0LWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXG4vLyBDYXJkc1xuJGNhcmQtYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7Il19 */\"","import {Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {MeasurementService} from '../../../services/measurement.service';\nimport {CommentService} from '../../../services/comment.service';\nimport {Subscription} from 'rxjs';\nimport 'rxjs-compat/add/observable/of';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {Comment} from '../../../entities/Comment';\nimport {AuthService} from '../../../services/auth.service';\nimport {CommentRead} from '../../../entities/MeasurementDetailsSummary';\n\n@Component({\n selector: 'app-measurement-comment',\n templateUrl: './measurement-comment.component.html',\n styleUrls: ['./measurement-comment.component.scss']\n})\nexport class MeasurementCommentComponent implements OnInit {\n\n measurementId: string;\n username: string;\n comments: Array;\n commentForm: FormGroup;\n\n subs: Array = [];\n\n constructor(\n private route: ActivatedRoute,\n private measurementService: MeasurementService,\n private commentService: CommentService,\n private fb: FormBuilder,\n private authService: AuthService\n ) {}\n\n ngOnInit() {\n this.commentForm = this.fb.group({\n content: [''],\n username: [''],\n measurement_id: ['']\n });\n\n const sub: Subscription = this.route.params\n .switchMap(params => {\n const id: string = params['id']; // measurement identifier is a string !\n this.measurementId = id;\n this.username = this.authService.getCurrentUser().username;\n return this.measurementService.getMeasurementDetails(id);\n })\n .subscribe(summary => {\n this.comments = summary.comments;\n this.commentForm.patchValue({\n username: this.username,\n measurement_id: this.measurementId\n });\n });\n this.subs.push(sub);\n }\n\n saveComment(c: Comment, isValid: boolean) {\n if (isValid) {\n this.subs.push(\n this.commentService.saveComment(c).subscribe(\n () => {\n const readComment: CommentRead = new CommentRead();\n readComment.content = c.content;\n readComment.creationDate = 'gerade eben';\n readComment.nick = c.username;\n this.comments.push(readComment);\n }\n )\n );\n }\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n}\n","module.exports = \"
\\n
{{headline}}
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n {{detailsSummary.frequencies.min}} Hz\\n {{detailsSummary.frequencies.max}} Hz\\n
\\n
\\n\"","module.exports = \".real img {\\n display: block;\\n width: 100%;\\n height: 100%; }\\n\\n.frequency-control-range {\\n margin-top: 1rem; }\\n\\n.frequency-control-range .form-group input {\\n cursor: pointer;\\n position: relative; }\\n\\n.frequency-control-range .form-group input:before, .frequency-control-range .form-group input:after {\\n position: absolute;\\n content: '';\\n width: 2px;\\n height: 20px;\\n background-color: #adb5bd; }\\n\\n.frequency-control-range .form-group input:before {\\n top: -2px;\\n left: 0; }\\n\\n.frequency-control-range .form-group input:after {\\n top: -2px;\\n right: 0; }\\n\\n.frequency-control-range .frequency-control-boundaries {\\n display: flex;\\n justify-content: space-between; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL21lYXN1cmVtZW50L21lYXN1cmVtZW50LWRldGFpbC1yYW5nZS9tZWFzdXJlbWVudC1kZXRhaWwtcmFuZ2UuY29tcG9uZW50LnNjc3MiLCIvYXBwL3NyYy9wYXJ0aWFscy9fdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFFSSxlQUFjO0VBQ2QsWUFBVztFQUNYLGFBQVksRUFDYjs7QUFHSDtFQUNFLGlCQUFnQixFQXFCakI7O0FBdEJEO0lBSU0sZ0JBQWU7SUFDZixtQkFBa0IsRUFXbkI7O0FBaEJMO01BUVEsbUJBQWtCO01BQ2xCLFlBQVc7TUFDWCxXQUFVO01BQ1YsYUFBWTtNQUNaLDBCQ2RVLEVEZVg7O0FBYlA7TUFjaUIsVUFBUztNQUFFLFFBQU8sRUFBSTs7QUFkdkM7TUFlZ0IsVUFBUztNQUFFLFNBQVEsRUFBSTs7QUFmdkM7SUFtQkksY0FBYTtJQUNiLCtCQUE4QixFQUMvQiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWVhc3VyZW1lbnQvbWVhc3VyZW1lbnQtZGV0YWlsLXJhbmdlL21lYXN1cmVtZW50LWRldGFpbC1yYW5nZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi8uLi8uLi8uLi9wYXJ0aWFscy92YXJpYWJsZXNcIjtcblxuLnJlYWwge1xuICBpbWcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxufVxuXG4uZnJlcXVlbmN5LWNvbnRyb2wtcmFuZ2Uge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICAuZm9ybS1ncm91cCB7XG4gICAgaW5wdXQge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgJjpiZWZvcmUsXG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgd2lkdGg6IDJweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS01MDA7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSB7IHRvcDogLTJweDsgbGVmdDogMDsgfVxuICAgICAgJjphZnRlciB7IHRvcDogLTJweDsgcmlnaHQ6IDA7IH1cbiAgICB9XG4gIH1cbiAgLmZyZXF1ZW5jeS1jb250cm9sLWJvdW5kYXJpZXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG59IiwiLy8gQ29sb3JzXG4kZ3JlZW46ICMzYzc2M2Q7XG5cbiR3aGl0ZTogICAgI2ZmZjtcbiRncmF5LTEwMDogI2Y4ZjlmYTtcbiRncmF5LTIwMDogI2U5ZWNlZjtcbiRncmF5LTMwMDogI2RlZTJlNjtcbiRncmF5LTQwMDogI2NlZDRkYTtcbiRncmF5LTUwMDogI2FkYjViZDtcbiRncmF5LTYwMDogIzZjNzU3ZDtcbiRncmF5LTcwMDogIzQ5NTA1NztcbiRncmF5LTgwMDogIzM0M2E0MDtcbiRncmF5LTkwMDogIzIxMjUyOTtcbiRibGFjazogICAgIzAwMDtcblxuLy8gQm9yZGVyIFJhZGl1c1xuJGJvcmRlci1yYWRpdXMtc206IDAuMjVyZW07XG4kYm9yZGVyLXJhZGl1cy1tZDogMC41cmVtO1xuJGJvcmRlci1yYWRpdXMtbGc6IDFyZW07XG5cbi8vIEJvZHlcbiRib2R5LWJnOiAgICAgJHdoaXRlO1xuJGJvZHktY29sb3I6ICAkZ3JheS05MDA7XG5cbi8vIE5hdmJhclxuJG5hdmJhci1oZWlnaHQ6IDU2cHg7XG4kbmF2YmFyLWJnLWNvbG9yOiAkd2hpdGU7XG4kbmF2YmFyLWZvbnQtc2l6ZTogMC44NzVyZW07XG5cbi8vIEJ1dHRvbnNcbiRidG4tYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cbi8vIEZvcm1zXG4kaW5wdXQtYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cbi8vIENhcmRzXG4kY2FyZC1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDsiXX0= */\"","import {Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {MeasurementService} from '../../../services/measurement.service';\nimport {Subscription} from 'rxjs';\nimport 'rxjs-compat/add/observable/of';\nimport {MeasurementDetailsSummary} from '../../../entities/MeasurementDetailsSummary';\nimport {DomSanitizer} from '@angular/platform-browser';\n\n@Component({\n selector: 'app-measurement-detail-range',\n templateUrl: './measurement-detail-range.component.html',\n styleUrls: ['./measurement-detail-range.component.scss']\n})\nexport class MeasurementDetailRangeComponent implements OnInit, OnChanges, OnDestroy {\n ngOnChanges(changes: SimpleChanges): void {\n }\n\n ngOnDestroy(): void {\n }\n\n ngOnInit(): void {\n }\n}\n /*\n @Input() image: string; // nullable ! convention, values being LEFT_REAL, LEFT_IMAG, RIGHT_REAL, RIGHT_IMAG\n\n measurementId: string; // TODO: should be injected by input for save encapsulation\n\n headline = null;\n detailsSummary: MeasurementDetailsSummary = null;\n current_freq: number = null; // current slider position (frequency value)\n img: any;\n currently_loading = false;\n\n subs: Array = [];\n\n constructor(\n private route: ActivatedRoute,\n private measurementService: MeasurementService,\n private sanitizer: DomSanitizer\n ) { }\n\n ngOnInit() {\n // extract measurement ID from route ..\n // TODO this is a bit hacky, since we have no guarantee that component is placed in such a route\n const sub: Subscription = this.route.params\n .switchMap(params => {\n const id: string = params['id']; // measurement identifier is a string !\n this.measurementId = id;\n return this.measurementService.getMeasurementDetails(id);\n })\n .subscribe(summary => {\n this.detailsSummary = summary;\n // do not set current frequency here, since we do not have an image yet\n });\n this.subs.push(sub);\n }\n\n // input changes, i.e. select another imager\n ngOnChanges() {\n console.log('chosen image', this.image);\n // this.current_freq = null; .. if we set null here, the slider disappears until ne image is loaded .. if not nulled, it simply\n\n const imgParam = this.mapToImgParam();\n if (imgParam != null && this.detailsSummary != null) {\n const initial_frequency = this.detailsSummary.frequencies.min; // image changed, thus reset to lowest frequency\n this.loadImage(initial_frequency, imgParam);\n this.headline = imgParam.headline;\n } else {\n this.img = null;\n this.headline = null;\n }\n }\n\n /**\n * reload image, if slider moved\n *\n * @param val\n */\n /*\n public slide(val: number) {\n console.log('slide', val, this.currently_loading, this.current_freq);\n if (this.current_freq == null) { return; } // exit, if no frequency given\n if (this.currently_loading) {return; } // exit, if currently loading an image\n const old_val = this.getClosestFrequency(this.current_freq);\n const new_val = this.getClosestFrequency(val);\n\n if (old_val !== new_val) {\n console.log('reload image, val has changed');\n const imgParam = this.mapToImgParam();\n this.loadImage(new_val, imgParam);\n this.headline = imgParam.headline;\n }\n }\n\n /**\n * berechnet die nächstgelegene Frequenz in der Liste möglicher Frequenzen zu einem belibiegen Eingangswert\n * die Liste der möglichen Frequenzen wir zu Beginn geladen mit den detailsSummary\n */\n /*\n protected getClosestFrequency(freq: number): number {\n return this.detailsSummary.frequencies.list.reduce((min, curr) => {\n const curr_dist = Math.abs(curr - freq);\n const old_dist = Math.abs(min - freq);\n return old_dist > curr_dist ? curr : min;\n }, this.detailsSummary.frequencies.max\n );\n }\n\n /**\n * read input image and extract properties like side, complex part and headline\n * returns null, if no image chosen\n */\n\n /*\n mapToImgParam(): ImgParam {\n if (typeof this.image === 'undefined' || this.image == null) { return null; }\n\n let img_param: ImgParam;\n switch (this.image) {\n case 'LEFT_REAL':\n img_param = {side: 'LEFT', complex_part: 'REALTEIL', headline: 'Real Links'};\n break;\n case 'LEFT_IMAG':\n img_param = {side: 'LEFT', complex_part: 'IMAGINAERTEIL', headline: 'Imaginär Links'};\n break;\n case 'RIGHT_REAL':\n img_param = {side: 'RIGHT', complex_part: 'REALTEIL', headline: 'Real Rechts'};\n break;\n case 'RIGHT_IMAG':\n img_param = {side: 'RIGHT', complex_part: 'IMAGINAERTEIL', headline: 'Imaginär Rechts'};\n break;\n default:\n img_param = null;\n }\n return img_param;\n }\n\n loadImage(new_frequency: number, imgParam: ImgParam) {\n this.currently_loading = true;\n const sub: Subscription = this.measurementService\n .getImage(this.measurementId, new_frequency, imgParam.side, imgParam.complex_part)\n .subscribe(blob => {\n this.img = this.sanitizer.bypassSecurityTrustUrl(\n window.URL.createObjectURL(blob)\n );\n // set current frequency as loaded from server\n this.current_freq = new_frequency;\n // release slider\n this.currently_loading = false;\n });\n this.subs.push(sub);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n}\n\ninterface ImgParam {\n side: string;\n complex_part: string;\n headline: string;\n}*/\n\n","module.exports = \"
\\n
\\n
\\n
\\n \\n
\\n

{{detailsSummary.patientName}} ({{detailsSummary.patientNumber}}) - Applikatorgröße (R/L): {{detailsSummary.rightElectrodeSize}}/{{detailsSummary.leftElectrodeSize}}, Datum: {{detailsSummary.crdate}}

\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
Kommentierung
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \".frequency-output {\\n display: flex;\\n flex-wrap: wrap;\\n width: 100%; }\\n .frequency-output .frequency-output-images {\\n width: 100%;\\n order: 1;\\n margin-bottom: 2rem; }\\n .frequency-output .frequency-output-graph-comment {\\n width: 100%;\\n order: 3; }\\n .frequency-output .frequency-output-images-range-wrapper {\\n width: 100%;\\n order: 2; }\\n @media screen and (min-width: 768px) {\\n .frequency-output .frequency-output-images {\\n width: 50%;\\n order: 2;\\n margin-bottom: 0; }\\n .frequency-output .frequency-output-graph-comment {\\n width: 50%;\\n order: 3; }\\n .frequency-output .frequency-output-images-range-wrapper {\\n width: 100%;\\n order: 1; } }\\n @media screen and (min-width: 992px) {\\n .frequency-output .frequency-output-images {\\n width: 37%;\\n order: 2; }\\n .frequency-output .frequency-output-graph-comment {\\n width: 63%;\\n order: 3; }\\n .frequency-output .frequency-output-images-range-wrapper {\\n width: 100%;\\n order: 1; } }\\n @media screen and (min-width: 1200px) {\\n .frequency-output {\\n flex-wrap: nowrap; }\\n .frequency-output .frequency-output-images {\\n width: 260px;\\n margin-right: 5%;\\n order: 1; }\\n .frequency-output .frequency-output-graph-comment {\\n width: 25%;\\n margin-top: 16px;\\n order: 3; }\\n .frequency-output .frequency-output-images-range-wrapper {\\n width: calc(100% - 35% - 260px);\\n margin-right: 5%;\\n order: 2; } }\\n .frequency-output-images {\\n display: flex; }\\n .frequency-output-images .mamma-right,\\n .frequency-output-images .mamma-left {\\n display: flex;\\n flex-direction: column;\\n text-align: center; }\\n .frequency-output-images .mamma-right .imag,\\n .frequency-output-images .mamma-left .imag {\\n margin-top: 20px; }\\n .frequency-output-images .mamma-right label,\\n .frequency-output-images .mamma-left label {\\n display: flex;\\n width: 100%;\\n flex-wrap: nowrap;\\n align-items: center;\\n justify-content: space-between;\\n font-size: 0.75rem; }\\n .frequency-output-images .mamma-right .real label,\\n .frequency-output-images .mamma-right .imag label {\\n padding-left: 8px;\\n padding-right: 8px; }\\n .frequency-output-images .mamma-left {\\n margin-left: 40px; }\\n .frequency-output-images-range-wrapper {\\n display: flex;\\n flex-wrap: nowrap;\\n align-items: flex-start;\\n justify-content: space-between;\\n margin-bottom: 2rem; }\\n .frequency-output-images-range {\\n width: 45%; }\\n .comment_list {\\n margin-top: 1em; }\\n iframe {\\n border: none; }\\n .header-text {\\n display: flex;\\n margin-top: 1%;\\n margin-left: 10px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL21lYXN1cmVtZW50L21lYXN1cmVtZW50LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBO0VBQ0UsY0FBYTtFQUNiLGdCQUFlO0VBQ2YsWUFBVyxFQWlFWjtFQXBFRDtJQU1JLFlBQVc7SUFDWCxTQUFRO0lBQ1Isb0JBQW1CLEVBQ3BCO0VBVEg7SUFXSSxZQUFXO0lBQ1gsU0FBUSxFQUNUO0VBYkg7SUFlSSxZQUFXO0lBQ1gsU0FBUSxFQUNUO0VBRUQ7SUFuQkY7TUFxQk0sV0FBVTtNQUNWLFNBQVE7TUFDUixpQkFBZ0IsRUFDakI7SUF4Qkw7TUEwQk0sV0FBVTtNQUNWLFNBQVEsRUFDVDtJQTVCTDtNQThCTSxZQUFXO01BQ1gsU0FBUSxFQUNULEVBQUE7RUFHSDtJQW5DRjtNQXFDTSxXQUFVO01BQ1YsU0FBUSxFQUNUO0lBdkNMO01BeUNNLFdBQVU7TUFDVixTQUFRLEVBQ1Q7SUEzQ0w7TUE2Q00sWUFBVztNQUNYLFNBQVEsRUFDVCxFQUFBO0VBR0g7SUFsREY7TUFtREksa0JBQWlCLEVBaUJwQjtNQXBFRDtRQXFETSxhQUFZO1FBQ1osaUJBQWdCO1FBQ2hCLFNBQVEsRUFDVDtNQXhETDtRQTBETSxXQUFVO1FBQ1YsaUJBQWdCO1FBQ2hCLFNBQVEsRUFDVDtNQTdETDtRQStETSxnQ0FBK0I7UUFDL0IsaUJBQWdCO1FBQ2hCLFNBQVEsRUFDVCxFQUFBO0VBSUw7RUFDRSxjQUFhLEVBaUNkO0VBbENEOztJQUtJLGNBQWE7SUFDYix1QkFBc0I7SUFDdEIsbUJBQWtCLEVBWW5CO0VBbkJIOztNQVNZLGlCQUFnQixFQUFJO0VBVGhDOztNQVlNLGNBQWE7TUFDYixZQUFXO01BQ1gsa0JBQWlCO01BQ2pCLG9CQUFtQjtNQUNuQiwrQkFBOEI7TUFDOUIsbUJBQWtCLEVBQ25CO0VBbEJMOztJQXlCUSxrQkFBaUI7SUFDakIsbUJBQWtCLEVBQ25CO0VBM0JQO0lBZ0NJLGtCQUFpQixFQUNsQjtFQUdIO0VBQ0UsY0FBYTtFQUNiLGtCQUFpQjtFQUNqQix3QkFBdUI7RUFDdkIsK0JBQThCO0VBQzlCLG9CQUFtQixFQUNwQjtFQUVEO0VBQ0UsV0FBVSxFQUNYO0VBRUQ7RUFDRSxnQkFBZSxFQUNoQjtFQUVEO0VBQ0UsYUFBWSxFQUNiO0VBRUQ7RUFFRSxjQUFhO0VBQ2IsZUFBYztFQUNkLGtCQUFpQixFQUNsQiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWVhc3VyZW1lbnQvbWVhc3VyZW1lbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vLi4vLi4vcGFydGlhbHMvdmFyaWFibGVzXCI7XG4uZnJlcXVlbmN5LW91dHB1dCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgLmZyZXF1ZW5jeS1vdXRwdXQtaW1hZ2VzIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvcmRlcjogMTtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICB9XG4gIC5mcmVxdWVuY3ktb3V0cHV0LWdyYXBoLWNvbW1lbnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG9yZGVyOiAzO1xuICB9XG4gIC5mcmVxdWVuY3ktb3V0cHV0LWltYWdlcy1yYW5nZS13cmFwcGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvcmRlcjogMjtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAuZnJlcXVlbmN5LW91dHB1dC1pbWFnZXMge1xuICAgICAgd2lkdGg6IDUwJTtcbiAgICAgIG9yZGVyOiAyO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgLmZyZXF1ZW5jeS1vdXRwdXQtZ3JhcGgtY29tbWVudCB7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgb3JkZXI6IDM7XG4gICAgfVxuICAgIC5mcmVxdWVuY3ktb3V0cHV0LWltYWdlcy1yYW5nZS13cmFwcGVyIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC5mcmVxdWVuY3ktb3V0cHV0LWltYWdlcyB7XG4gICAgICB3aWR0aDogMzclO1xuICAgICAgb3JkZXI6IDI7XG4gICAgfVxuICAgIC5mcmVxdWVuY3ktb3V0cHV0LWdyYXBoLWNvbW1lbnQge1xuICAgICAgd2lkdGg6IDYzJTtcbiAgICAgIG9yZGVyOiAzO1xuICAgIH1cbiAgICAuZnJlcXVlbmN5LW91dHB1dC1pbWFnZXMtcmFuZ2Utd3JhcHBlciB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG9yZGVyOiAxO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgLmZyZXF1ZW5jeS1vdXRwdXQtaW1hZ2VzIHtcbiAgICAgIHdpZHRoOiAyNjBweDtcbiAgICAgIG1hcmdpbi1yaWdodDogNSU7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gICAgLmZyZXF1ZW5jeS1vdXRwdXQtZ3JhcGgtY29tbWVudCB7XG4gICAgICB3aWR0aDogMjUlO1xuICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgIG9yZGVyOiAzO1xuICAgIH1cbiAgICAuZnJlcXVlbmN5LW91dHB1dC1pbWFnZXMtcmFuZ2Utd3JhcHBlciB7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzUlIC0gMjYwcHgpO1xuICAgICAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgICAgIG9yZGVyOiAyO1xuICAgIH1cbiAgfVxufVxuXG4uZnJlcXVlbmN5LW91dHB1dC1pbWFnZXMge1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gIC5tYW1tYS1yaWdodCxcbiAgLm1hbW1hLWxlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAuaW1hZyB7IG1hcmdpbi10b3A6IDIwcHg7IH1cbiAgICBcbiAgICBsYWJlbCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgfVxuICB9XG5cbiAgLm1hbW1hLXJpZ2h0IHtcbiAgICAucmVhbCxcbiAgICAuaW1hZyB7XG4gICAgICBsYWJlbCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hbW1hLWxlZnQge1xuICAgIG1hcmdpbi1sZWZ0OiA0MHB4O1xuICB9XG59XG5cbi5mcmVxdWVuY3ktb3V0cHV0LWltYWdlcy1yYW5nZS13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5mcmVxdWVuY3ktb3V0cHV0LWltYWdlcy1yYW5nZSB7XG4gIHdpZHRoOiA0NSU7XG59XG5cbi5jb21tZW50X2xpc3Qge1xuICBtYXJnaW4tdG9wOiAxZW07XG59XG5cbmlmcmFtZSB7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLmhlYWRlci10ZXh0IHtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tdG9wOiAxJTtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59Il19 */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {MeasurementService} from '../../services/measurement.service';\nimport {Subscription} from 'rxjs';\nimport 'rxjs-compat/add/observable/of';\nimport {MeasurementDetailsSummary} from '../../entities/MeasurementDetailsSummary';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {AuthService} from '../../services/auth.service';\nimport {NavigationService} from '../../services/navigation.service';\n\nconst DIAGNOSIS_PATH = '/diagnosis/diagnosis.html?measurement_id=';\n\n\n@Component({\n selector: 'app-measurement',\n templateUrl: './measurement.component.html',\n styleUrls: ['./measurement.component.scss']\n})\nexport class MeasurementComponent implements OnInit, OnDestroy {\n\n measurementId: string;\n username: string;\n\n detailsSummary: MeasurementDetailsSummary;\n\n subs: Array = [];\n diagnosisUrl: string = null;\n\n constructor(\n private route: ActivatedRoute,\n private measurementService: MeasurementService,\n private sanitizer: DomSanitizer,\n private authService: AuthService,\n private navigationService: NavigationService\n ) {}\n\n ngOnInit() {\n const sub: Subscription = this.route.params\n .switchMap(params => {\n const id: string = params['id']; // measurement identifier is a string !\n this.measurementId = id;\n const gUrl = this.urlForId(DIAGNOSIS_PATH, id, this.authService.getCurrentUser().token);\n this.diagnosisUrl = this.sanitizer.bypassSecurityTrustResourceUrl(gUrl) as string;\n return this.measurementService.getMeasurementDetails(id);\n })\n .subscribe(summary => {\n this.detailsSummary = summary;\n });\n this.subs.push(sub);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n /**\n * Calculate the url for the backend.\n * If run local with port 4200, then map to port 3000 for rails development server \n * @param backendPath backend path ends with '?measurement_id='\n * @param measurementId measurement id\n * @param token authentication token (JWT)\n */\n urlForId(backendPath: string, measurementId: string, token): string {\n const location = window.location;\n return location.protocol + '//' +\n location.hostname +\n (location.port ? ':3000' : '') +\n backendPath + measurementId + '&token=' + token +\n '&use_same_host=true&t=' + new Date().getTime(); // add timestamp to avoid caching\n }\n\n\n\n goBacktopatient(): void {\n this.navigationService.Back();\n }\n}\n","module.exports = \"
\\n
\\n
\\n
\\n \\n
\\n

{{detailsSummary.patientName}} ({{detailsSummary.patientNumber}}) - Applikatorgröße (R/L): {{detailsSummary.rightElectrodeSize}}/{{detailsSummary.leftElectrodeSize}}, Datum: {{detailsSummary.crdate}}

\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
Kommentierung
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\"","module.exports = \".frequency-output {\\n display: flex;\\n flex-wrap: wrap;\\n width: 100%; }\\n .frequency-output .frequency-output-images {\\n width: 100%;\\n order: 1;\\n margin-bottom: 2rem; }\\n .frequency-output .frequency-output-graph-comment {\\n width: 100%;\\n order: 3; }\\n .frequency-output .frequency-output-images-range-wrapper {\\n width: 100%;\\n order: 2; }\\n @media screen and (min-width: 768px) {\\n .frequency-output .frequency-output-images {\\n width: 50%;\\n order: 2;\\n margin-bottom: 0; }\\n .frequency-output .frequency-output-graph-comment {\\n width: 50%;\\n order: 3; }\\n .frequency-output .frequency-output-images-range-wrapper {\\n width: 100%;\\n order: 1; } }\\n @media screen and (min-width: 992px) {\\n .frequency-output .frequency-output-images {\\n width: 37%;\\n order: 2; }\\n .frequency-output .frequency-output-graph-comment {\\n width: 63%;\\n order: 3; }\\n .frequency-output .frequency-output-images-range-wrapper {\\n width: 100%;\\n order: 1; } }\\n @media screen and (min-width: 1200px) {\\n .frequency-output {\\n flex-wrap: nowrap; }\\n .frequency-output .frequency-output-images {\\n width: 260px;\\n margin-right: 5%;\\n order: 1; }\\n .frequency-output .frequency-output-graph-comment {\\n width: 25%;\\n margin-top: 16px;\\n order: 3; }\\n .frequency-output .frequency-output-images-range-wrapper {\\n width: calc(100% - 35% - 260px);\\n margin-right: 5%;\\n order: 2; } }\\n .frequency-output-images {\\n display: flex; }\\n .frequency-output-images .mamma-right,\\n .frequency-output-images .mamma-left {\\n display: flex;\\n flex-direction: column;\\n text-align: center; }\\n .frequency-output-images .mamma-right .imag,\\n .frequency-output-images .mamma-left .imag {\\n margin-top: 20px; }\\n .frequency-output-images .mamma-right label,\\n .frequency-output-images .mamma-left label {\\n display: flex;\\n width: 100%;\\n flex-wrap: nowrap;\\n align-items: center;\\n justify-content: space-between;\\n font-size: 0.75rem; }\\n .frequency-output-images .mamma-right .real label,\\n .frequency-output-images .mamma-right .imag label {\\n padding-left: 8px;\\n padding-right: 8px; }\\n .frequency-output-images .mamma-left {\\n margin-left: 40px; }\\n .frequency-output-images-range-wrapper {\\n display: flex;\\n flex-wrap: nowrap;\\n align-items: flex-start;\\n justify-content: space-between;\\n margin-bottom: 2rem; }\\n .frequency-output-images-range {\\n width: 45%; }\\n .comment_list {\\n margin-top: 1em; }\\n iframe {\\n border: none; }\\n .header-text {\\n display: flex;\\n margin-top: 1%;\\n margin-left: 10px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL21lYXN1cmVtZW50L3ZhbGlkYXRpb24vdmFsaWRhdGlvbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNFLGNBQWE7RUFDYixnQkFBZTtFQUNmLFlBQVcsRUFpRVo7RUFwRUQ7SUFNSSxZQUFXO0lBQ1gsU0FBUTtJQUNSLG9CQUFtQixFQUNwQjtFQVRIO0lBV0ksWUFBVztJQUNYLFNBQVEsRUFDVDtFQWJIO0lBZUksWUFBVztJQUNYLFNBQVEsRUFDVDtFQUVEO0lBbkJGO01BcUJNLFdBQVU7TUFDVixTQUFRO01BQ1IsaUJBQWdCLEVBQ2pCO0lBeEJMO01BMEJNLFdBQVU7TUFDVixTQUFRLEVBQ1Q7SUE1Qkw7TUE4Qk0sWUFBVztNQUNYLFNBQVEsRUFDVCxFQUFBO0VBR0g7SUFuQ0Y7TUFxQ00sV0FBVTtNQUNWLFNBQVEsRUFDVDtJQXZDTDtNQXlDTSxXQUFVO01BQ1YsU0FBUSxFQUNUO0lBM0NMO01BNkNNLFlBQVc7TUFDWCxTQUFRLEVBQ1QsRUFBQTtFQUdIO0lBbERGO01BbURJLGtCQUFpQixFQWlCcEI7TUFwRUQ7UUFxRE0sYUFBWTtRQUNaLGlCQUFnQjtRQUNoQixTQUFRLEVBQ1Q7TUF4REw7UUEwRE0sV0FBVTtRQUNWLGlCQUFnQjtRQUNoQixTQUFRLEVBQ1Q7TUE3REw7UUErRE0sZ0NBQStCO1FBQy9CLGlCQUFnQjtRQUNoQixTQUFRLEVBQ1QsRUFBQTtFQUlMO0VBQ0UsY0FBYSxFQWlDZDtFQWxDRDs7SUFLSSxjQUFhO0lBQ2IsdUJBQXNCO0lBQ3RCLG1CQUFrQixFQVluQjtFQW5CSDs7TUFTWSxpQkFBZ0IsRUFBSTtFQVRoQzs7TUFZTSxjQUFhO01BQ2IsWUFBVztNQUNYLGtCQUFpQjtNQUNqQixvQkFBbUI7TUFDbkIsK0JBQThCO01BQzlCLG1CQUFrQixFQUNuQjtFQWxCTDs7SUF5QlEsa0JBQWlCO0lBQ2pCLG1CQUFrQixFQUNuQjtFQTNCUDtJQWdDSSxrQkFBaUIsRUFDbEI7RUFHSDtFQUNFLGNBQWE7RUFDYixrQkFBaUI7RUFDakIsd0JBQXVCO0VBQ3ZCLCtCQUE4QjtFQUM5QixvQkFBbUIsRUFDcEI7RUFFRDtFQUNFLFdBQVUsRUFDWDtFQUVEO0VBQ0UsZ0JBQWUsRUFDaEI7RUFFRDtFQUNFLGFBQVksRUFDYjtFQUVEO0VBRUUsY0FBYTtFQUNiLGVBQWM7RUFDZCxrQkFBaUIsRUFDbEIiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL21lYXN1cmVtZW50L3ZhbGlkYXRpb24vdmFsaWRhdGlvbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi8uLi8uLi8uLi9wYXJ0aWFscy92YXJpYWJsZXNcIjtcbi5mcmVxdWVuY3ktb3V0cHV0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICB3aWR0aDogMTAwJTtcblxuICAuZnJlcXVlbmN5LW91dHB1dC1pbWFnZXMge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG9yZGVyOiAxO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gIH1cbiAgLmZyZXF1ZW5jeS1vdXRwdXQtZ3JhcGgtY29tbWVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3JkZXI6IDM7XG4gIH1cbiAgLmZyZXF1ZW5jeS1vdXRwdXQtaW1hZ2VzLXJhbmdlLXdyYXBwZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG9yZGVyOiAyO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC5mcmVxdWVuY3ktb3V0cHV0LWltYWdlcyB7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgb3JkZXI6IDI7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgICAuZnJlcXVlbmN5LW91dHB1dC1ncmFwaC1jb21tZW50IHtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICBvcmRlcjogMztcbiAgICB9XG4gICAgLmZyZXF1ZW5jeS1vdXRwdXQtaW1hZ2VzLXJhbmdlLXdyYXBwZXIge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLmZyZXF1ZW5jeS1vdXRwdXQtaW1hZ2VzIHtcbiAgICAgIHdpZHRoOiAzNyU7XG4gICAgICBvcmRlcjogMjtcbiAgICB9XG4gICAgLmZyZXF1ZW5jeS1vdXRwdXQtZ3JhcGgtY29tbWVudCB7XG4gICAgICB3aWR0aDogNjMlO1xuICAgICAgb3JkZXI6IDM7XG4gICAgfVxuICAgIC5mcmVxdWVuY3ktb3V0cHV0LWltYWdlcy1yYW5nZS13cmFwcGVyIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAuZnJlcXVlbmN5LW91dHB1dC1pbWFnZXMge1xuICAgICAgd2lkdGg6IDI2MHB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgICAgIG9yZGVyOiAxO1xuICAgIH1cbiAgICAuZnJlcXVlbmN5LW91dHB1dC1ncmFwaC1jb21tZW50IHtcbiAgICAgIHdpZHRoOiAyNSU7XG4gICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgb3JkZXI6IDM7XG4gICAgfVxuICAgIC5mcmVxdWVuY3ktb3V0cHV0LWltYWdlcy1yYW5nZS13cmFwcGVyIHtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzNSUgLSAyNjBweCk7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDUlO1xuICAgICAgb3JkZXI6IDI7XG4gICAgfVxuICB9XG59XG5cbi5mcmVxdWVuY3ktb3V0cHV0LWltYWdlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgLm1hbW1hLXJpZ2h0LFxuICAubWFtbWEtbGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIC5pbWFnIHsgbWFyZ2luLXRvcDogMjBweDsgfVxuICAgIFxuICAgIGxhYmVsIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICB9XG4gIH1cblxuICAubWFtbWEtcmlnaHQge1xuICAgIC5yZWFsLFxuICAgIC5pbWFnIHtcbiAgICAgIGxhYmVsIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWFtbWEtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IDQwcHg7XG4gIH1cbn1cblxuLmZyZXF1ZW5jeS1vdXRwdXQtaW1hZ2VzLXJhbmdlLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLmZyZXF1ZW5jeS1vdXRwdXQtaW1hZ2VzLXJhbmdlIHtcbiAgd2lkdGg6IDQ1JTtcbn1cblxuLmNvbW1lbnRfbGlzdCB7XG4gIG1hcmdpbi10b3A6IDFlbTtcbn1cblxuaWZyYW1lIHtcbiAgYm9yZGVyOiBub25lO1xufVxuXG4uaGVhZGVyLXRleHQge1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi10b3A6IDElO1xuICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbiJdfQ== */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {MeasurementService} from '../../../services/measurement.service';\nimport {Subscription} from 'rxjs';\nimport 'rxjs-compat/add/observable/of';\nimport {MeasurementDetailsSummary} from '../../../entities/MeasurementDetailsSummary';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {AuthService} from '../../../services/auth.service';\nimport {NavigationService} from '../../../services/navigation.service';\n\nconst VALIDATION_PATH = '/diagnosis/validation2.html?measurement_id=';\n\n\n@Component({\n selector: 'app-validation',\n templateUrl: './validation.component.html',\n styleUrls: ['./validation.component.scss']\n})\nexport class ValidationComponent implements OnInit, OnDestroy {\n\n measurementId: string;\n username: string;\n\n detailsSummary: MeasurementDetailsSummary;\n\n subs: Array = [];\n validationUrl: string = null;\n\n constructor(\n private route: ActivatedRoute,\n private measurementService: MeasurementService,\n private sanitizer: DomSanitizer,\n private authService: AuthService,\n private navigationService: NavigationService\n ) {}\n\n ngOnInit() {\n const sub: Subscription = this.route.params\n .switchMap(params => {\n const id: string = params['id']; // measurement identifier is a string !\n this.measurementId = id;\n const gUrl = this.urlForId(VALIDATION_PATH, id, this.authService.getCurrentUser().token);\n this.validationUrl = this.sanitizer.bypassSecurityTrustResourceUrl(gUrl) as string;\n return this.measurementService.getMeasurementDetails(id);\n })\n .subscribe(summary => {\n this.detailsSummary = summary;\n });\n this.subs.push(sub);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n /**\n * Calculate the url for the backend.\n * If run local with port 4200, then map to port 3000 for rails development server \n * @param backendPath backend path ends with '?measurement_id='\n * @param measurementId measurement id\n * @param token authentication token (JWT)\n */\n urlForId(backendPath: string, measurementId: string, token): string {\n const location = window.location;\n return location.protocol + '//' +\n location.hostname +\n (location.port ? ':3000' : '') +\n backendPath + measurementId + '&token=' + token +\n '&use_same_host=true&t=' + new Date().getTime(); // add timestamp to avoid caching\n }\n\n\n\n goBack(): void {\n this.navigationService.Back();\n }\n}\n","module.exports = \"\\n
\\n
\\n\\n \\n
\\n
\\n

{{title}}

\\n
\\n
\\n

{{text}}

\\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbW9kYWxzL3llcy1uby1kaWFsb2cveWVzLW5vLWRpYWxvZy5jb21wb25lbnQuc2NzcyJ9 */\"","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\ndeclare var $: any; // jquery\n\n@Component({\n selector: 'app-yes-no-dialog',\n templateUrl: './yes-no-dialog.component.html',\n styleUrls: ['./yes-no-dialog.component.scss']\n})\nexport class YesNoDialogComponent implements OnInit, OnDestroy {\n\n public modalViewId: string;\n\n @Input() title: string;\n @Input() text: string;\n\n // triggers the modal to show up\n private _show = false;\n @Input('show')\n set show(value: boolean) {\n this._show = value;\n if (value === true) {\n $('#' + this.modalViewId).modal('show');\n }\n }\n\n private _id: any = null;\n @Input ('modalId')\n set id(value: any) {\n this._id = value;\n }\n\n // user said yes, returns the given modalId to be consumable in parent container\n @Output() confirm: EventEmitter = new EventEmitter();\n\n // user said no\n @Output() deny: EventEmitter = new EventEmitter();\n\n constructor() { }\n\n ngOnInit() {\n const rand = Math.trunc(Math.random() * 10000000);\n this.modalViewId = 'yesNoModal' + String(rand);\n }\n\n sayYes(): void {\n $('#' + this.modalViewId).modal('hide');\n this.confirm.next(this._id); // return the input id to know how to process the yes answer\n this._show = false;\n }\n\n sayNo(): void {\n $('#' + this.modalViewId).modal('hide');\n this.deny.next();\n this._show = false;\n }\n\n ngOnDestroy(): void {\n if (this._show) { this.sayNo(); }\n }\n\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbmF2L25hdi5jb21wb25lbnQuc2NzcyJ9 */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\nimport {CurrentUser} from '../../entities/CurrentUser';\nimport {Event} from '../../entities/Event';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport { NotificationService } from 'src/app/services/notification.service';\nimport { interval } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { catchError } from 'rxjs/operators';\nimport { EMPTY } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { UsbService } from 'src/app/services/usb.service';\nimport { DiagnosisService } from 'src/app/services/diagnosis.service';\nimport {saveAs} from 'file-saver';\nimport { FeatureToggleService } from 'src/app/services/feature_toggles_service';\n\n@Component({\n selector: 'app-nav',\n templateUrl: './nav.component.html',\n styleUrls: ['./nav.component.scss']\n})\nexport class NavComponent implements OnInit, OnDestroy {\n [x: string]: any;\n\n currentUser: CurrentUser = null;\n subs: Array = [];\n newUsbService: boolean = false;\n\n\n constructor(private authService: AuthService, \n private notificationService: NotificationService,\n private usbService: UsbService,\n private DiagnosisService: DiagnosisService,\n private featureToggleService: FeatureToggleService,\n ) {}\n\n ngOnInit() {\n\n this.subs.push(this.featureToggleService.getFeatureStatus('new_usb_service')\n .subscribe((status) => {\n this.newUsbService = status;\n })\n );\n\n this.subs.push(\n this.authService.currentUser$.subscribe(cu => this.currentUser = cu)\n );\n const repeatInterval = window.location.hostname === '127.0.0.1' ? 60000 : 5000;\n this.subs.push(\n interval(repeatInterval)\n .pipe(\n startWith(0),\n switchMap(\n () => this.notificationService.getBackEndMessages()\n .pipe(catchError(() => {return EMPTY}))\n )\n ).subscribe((event: Event) => {\n if(event){\n if(event.status === \"OK\"){\n this.notificationService.success(event.description);\n } else {\n this.notificationService.error(event.description);\n }\n \n this.notificationService.readMessage(event.id).subscribe()\n }\n }, err => console.log(err))\n )\n }\n\n logout(): void {\n this.authService.logout();\n }\n\n downloadUsbService(){\n this.usbService.download()\n .subscribe(blob => {\n console.log(blob);\n const blobFile = new Blob([blob], { type: 'application/zip' });\n const fileName = 'installer.zip';\n saveAs(blobFile, fileName);\n })\n }\n\n downloadNewUsbService(){\n this.usbService.downloadUsbServiceInstaller()\n .subscribe(blob => {\n console.log(blob);\n const blobFile = new Blob([blob], { type: 'application/zip' });\n const fileName = 'xera3-usb-service-installer.zip';\n saveAs(blobFile, fileName);\n })\n }\n\n /**\n * This component has a button that, when clicked, \n * triggers the downloadDiagnosisData method. \n * This method calls the service, receives the blob data, creates a URL for it, \n * and then triggers the download using an invisible element.\n */\n downloadDiagnosisData(){\n this.DiagnosisService.getAll()\n .subscribe(data => {\n const blob = new Blob([data], { type: 'application/json' });\n const url= window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = 'diagnosis_list.json';\n link.click();\n window.URL.revokeObjectURL(url); \n })\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n} \n\n","module.exports = \"
\\n
\\n {{notification.summary}}\\n {{notification.detail}}\\n \\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuc2NzcyJ9 */\"","import {ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core';\nimport {NotificationService} from '../../services/notification.service';\nimport {Subscription} from 'rxjs';\nimport {NotificationMessage} from '../../entities/NotificationMessage';\nimport {NotificationSeverityEnum} from '../../enums/NotificationSeverityEnum';\n\n@Component({\n selector: 'app-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss']\n})\nexport class NotificationComponent implements OnInit, OnDestroy {\n\n private sub: Subscription;\n notifications: Array;\n\n constructor(\n private notificationService: NotificationService,\n private cdref: ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n this.sub = this.notificationService.messages$.subscribe((items) => {\n this.notifications = items;\n this.cdref.detectChanges();\n });\n }\n\n /**\n * map message severity to bootstrap class for alert coloring\n *\n * severity | bootstrap\n * --------------------\n * success | success (green)\n * warn | warning (yellow)\n * info | info (some blue)\n * error | danger (red)\n *\n * default: secondary (light grey)\n */\n public getBCTyp(severity: NotificationSeverityEnum) {\n switch (severity) {\n case NotificationSeverityEnum.ERROR:\n return 'alert-danger';\n case NotificationSeverityEnum.INFO:\n return 'alert-info';\n case NotificationSeverityEnum.SUCCESS:\n return 'alert-success';\n case NotificationSeverityEnum.WARN:\n return 'alert-warning';\n default: return 'alert-secondary';\n }\n }\n\n disposeMessage(id: number) {\n this.notificationService.disposeMessage(id);\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n this.sub = null;\n }\n\n}\n","module.exports = \"
\\n\\n
\\n
\\n
\\n

Operator {{operator.id > 0 ? 'bearbeiten (#' + operator.id + ')' : 'neu erstellen'}}

\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n Das Kürzel ist für die Rolle Operator notwendig und darf Buchstaben Aa-Zz und Zahlen enthalten und muss 3-5 Zeichen umfassen.\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n Der PIN berechtigt den Operator zur Verwendung des Messgeräts und muss eine vierstellige Zahl sein. Der PIN muss eindeutig sein, da dass Messgerät den Nickname des Operators nicht abfragt.\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvb3BlcmF0b3JzL29wZXJhdG9yLWRldGFpbC9vcGVyYXRvci1kZXRhaWwuY29tcG9uZW50LnNjc3MifQ== */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {OperatorService} from '../../../services/operator.service';\nimport {Observable, Subscription} from 'rxjs';\nimport {OperatorView} from '../../../entities/OperatorView';\nimport {NotificationService} from '../../../services/notification.service';\n\n@Component({\n selector: 'app-operator-detail',\n templateUrl: './operator-detail.component.html',\n styleUrls: ['./operator-detail.component.scss']\n})\nexport class OperatorDetailComponent implements OnInit, OnDestroy {\n\n operator: OperatorView;\n opForm: FormGroup;\n subs: Subscription[] = [];\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private fb: FormBuilder,\n private operatorService: OperatorService,\n private notificationService: NotificationService\n ) { }\n\n ngOnInit() {\n this.opForm = this.fb.group({\n id: [''],\n nickname : ['', [Validators.required, Validators.pattern('^[A-Za-z0-9]{3,5}$')]],\n pin: ['', [Validators.required, Validators.pattern('^[0-9]{4}$'), Validators.min(1000), Validators.max(9999)]]\n });\n\n const sub: Subscription = this.route.params.switchMap(params => {\n const id: number = + params['id'];\n if (id > 0) {\n return this.operatorService.getList().map(list => { // TODO replace by single request\n return list.filter(item => item.id === id)[0];\n });\n } else {\n const o: OperatorView = new OperatorView();\n o.id = 0;\n return Observable.of(o);\n }\n }).subscribe(op => {\n this.operator = op;\n this.opForm.patchValue({\n id: op.id,\n nickname: op.name,\n pin: op.pin\n });\n });\n this.subs.push(sub);\n }\n\n /**\n * Save Operator: wird zugeordnet zu Mandant des aktiven Contexts\n * @param value\n * @param valid\n */\n saveOperator(value: any, valid: boolean) {\n if (valid) {\n const body = {\n id: value.id,\n nickname: value.nickname,\n pin: value.pin\n };\n\n this.operatorService.saveOperator(body).subscribe(resp => {\n this.notificationService.success('Operator gespeichert');\n this.router.navigate(['/operators']);\n });\n }\n\n }\n\n /**\n * Delete Operator\n * @param opId\n */\n deleteOperator(opId: string) {\n this.operatorService.deleteOperator(opId).subscribe(resp => {\n this.notificationService.success('Operator gelöscht');\n this.router.navigate(['/operators']);\n });\n\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","module.exports = \"
\\n\\n \\n\\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdNamePIN
{{operator.id}}{{operator.name}}{{operator.pin}}\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvb3BlcmF0b3JzL29wZXJhdG9yLWxpc3Qvb3BlcmF0b3ItbGlzdC5jb21wb25lbnQuc2NzcyJ9 */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractDataTableComponent} from '../../generics/AbstractDataTableComponent';\nimport {OperatorService} from '../../../services/operator.service';\nimport {Subscription} from 'rxjs';\nimport {OperatorView} from '../../../entities/OperatorView';\n\n@Component({\n selector: 'app-operator-list',\n templateUrl: './operator-list.component.html',\n styleUrls: ['./operator-list.component.scss']\n})\nexport class OperatorListComponent extends AbstractDataTableComponent implements OnInit, OnDestroy {\n\n subs: Subscription[] = [];\n operators: OperatorView[] = [];\n\n constructor(private operatorService: OperatorService) {\n super('operator list');\n }\n\n ngOnInit() {\n this.subs.push(this.operatorService.getList().subscribe(list => {\n this.operators = list;\n this.rerender();\n }));\n\n this.dtOptions.order = [\n [0, 'asc'], // nach ID ordnen als default\n ];\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n}\n","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdDatumAktionen
{{anamnesen.id}}{{anamnesen.created_at | date: 'dd.MM.yyyy HH:mm'}}\\n \\n Download CSV\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcGF0aWVudC9wYXRpZW50LWRldGFpbC1hbmFtbmVzZW4vcGF0aWVudC1kZXRhaWwtYW5hbW5lc2VuLmNvbXBvbmVudC5zY3NzIn0= */\"","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {Patient} from '../../../entities/Patient';\nimport {AbstractDataTableComponent} from '../../generics/AbstractDataTableComponent';\nimport {MeasurementStub} from '../../../entities/MeasurementStub';\nimport {MeasurementService} from '../../../services/measurement.service';\nimport {Subject, Subscription} from 'rxjs';\nimport {saveAs} from 'file-saver';\nimport * as moment from 'moment';\nimport { AnamnesenService } from 'src/app/services/anamnesen.service';\nimport { AnamnesenStub } from 'src/app/entities/AnamnesenStub';\n\ndeclare var jQuery: any;\n\n@Component({\n selector: 'app-patient-detail-anamnesen',\n templateUrl: './patient-detail-anamnesen.component.html',\n styleUrls: ['./patient-detail-anamnesen.component.scss']\n})\nexport class PatientDetailAnamnesenComponent extends AbstractDataTableComponent implements OnInit, OnDestroy {\n\n @Input() patient: Patient;\n anamnesenStubs: Array = [];\n subs: Array = [];\n\n constructor(private anamnesenService: AnamnesenService) {\n super('patient-anamnesen-list');\n }\n\n ngOnInit() {\n\n // input format is 'DD.MM.YYYY HH:mm' from BackEnd\n // DateTables uses Date.parse(xx) for sorting\n // Date.parse(xx) cant parse this specific format, thus it will fall back to string sorting\n // to correctly sort date-de format, we must parse date string via moment manually\n // see: https://stackoverflow.com/a/55000726\n this.dtOptions.columnDefs = [\n {\n targets: 0,\n type: 'date-time',\n render: function(data, type) {\n // console.log('render colDef', data, type);\n return type === 'sort' ? moment(data, 'DD.MM.YYYY HH:mm').format('YYYY/MM/DD HH:mm') : data;\n }\n }\n ];\n \n this.getAnamnesen();\n }\n\n getAnamnesen(){\n const sub = this.anamnesenService.getList(this.patient.id)\n .subscribe(list => {\n console.log('stubs', list);\n this.anamnesenStubs = list;\n this.rerender();\n });\n this.subs.push(sub);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n getCsv(id, measurementDate, patientId, mandantId): void {\n this.anamnesenService\n .getCsv(patientId, id)\n .subscribe((data: any) => {\n const blob = new Blob([data], { type: 'application/octet-stream' });\n const fileName = mandantId + '_' + patientId + '_' + measurementDate + '_raw.csv';\n saveAs(blob, fileName);\n });\n }\n\n openFormServerUrl(url: string) {\n window.open(url, \"_blank\");\n }\n\n}\n","module.exports = \"
\\n
\\n
\\n
\\n
Name:
\\n
{{patient.name}}
\\n
Patienten ID:
\\n
{{patient.pid}}
\\n
\\n
\\n
\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcGF0aWVudC9wYXRpZW50LWRldGFpbC1kYXRhL3BhdGllbnQtZGV0YWlsLWRhdGEuY29tcG9uZW50LnNjc3MifQ== */\"","import {Component, Input, OnInit} from '@angular/core';\nimport {Patient} from '../../../entities/Patient';\n\n@Component({\n selector: 'app-patient-detail-data',\n templateUrl: './patient-detail-data.component.html',\n styleUrls: ['./patient-detail-data.component.scss']\n})\nexport class PatientDetailDataComponent implements OnInit {\n\n @Input() patient: Patient = null;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdDatumAktionen
{{ds.id}}{{ds.created_at | date: 'dd.MM.yyyy HH:mm'}}\\n \\n Download CSV\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcGF0aWVudC9wYXRpZW50LWRldGFpbC1kaWFnbm9zZW4vcGF0aWVudC1kZXRhaWwtZGlhZ25vc2VuLmNvbXBvbmVudC5zY3NzIn0= */\"","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {Patient} from '../../../entities/Patient';\nimport {AbstractDataTableComponent} from '../../generics/AbstractDataTableComponent';\nimport {MeasurementStub} from '../../../entities/MeasurementStub';\nimport {MeasurementService} from '../../../services/measurement.service';\nimport {Subject, Subscription} from 'rxjs';\nimport {saveAs} from 'file-saver';\nimport * as moment from 'moment';\nimport { DiagnosenStub } from 'src/app/entities/DiagnosenStub';\nimport { DiagnosenService } from 'src/app/services/diagnosen.service';\n\ndeclare var jQuery: any;\n\n@Component({\n selector: 'app-patient-detail-diagnosen',\n templateUrl: './patient-detail-diagnosen.component.html',\n styleUrls: ['./patient-detail-diagnosen.component.scss']\n})\nexport class PatientDetailDiagnosenComponent extends AbstractDataTableComponent implements OnInit, OnDestroy {\n\n @Input() patient: Patient;\n diagnosenStubs: Array = [];\n subs: Array = [];\n\n constructor(private diagnosenService: DiagnosenService) {\n super('patient-diagnosen-list');\n }\n\n ngOnInit() {\n\n // input format is 'DD.MM.YYYY HH:mm' from BackEnd\n // DateTables uses Date.parse(xx) for sorting\n // Date.parse(xx) cant parse this specific format, thus it will fall back to string sorting\n // to correctly sort date-de format, we must parse date string via moment manually\n // see: https://stackoverflow.com/a/55000726\n this.dtOptions.columnDefs = [\n {\n targets: 0,\n type: 'date-time',\n render: function(data, type) {\n // console.log('render colDef', data, type);\n return type === 'sort' ? moment(data, 'DD.MM.YYYY HH:mm').format('YYYY/MM/DD HH:mm') : data;\n }\n }\n ];\n \n this.getDiagnosen();\n\n }\n\n getDiagnosen(){\n const sub = this.diagnosenService.getList(this.patient.id)\n .subscribe(list => {\n console.log('stubs', list);\n this.diagnosenStubs = list;\n this.rerender();\n });\n this.subs.push(sub);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n getCsv(id, diagnosenDate, patientId, mandantId): void {\n this.diagnosenService.getCsv(id, patientId)\n .subscribe((data: any) => {\n const blob = new Blob([data], { type: 'application/octet-stream' });\n const fileName = mandantId + '_' + patientId + '_' + diagnosenDate + '_raw.csv';\n saveAs(blob, fileName);\n });\n }\n\n openFormServerUrl(url: string) {\n window.open(url, \"_blank\");\n }\n\n}\n","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Datum der MessungValidierungsstatus
{{ms.measurement_date | date: 'dd.MM.yyyy HH:mm'}} {{ms.validate_state}}\\n \\n Download CSV\\n \\n \\n Validierung\\n \\n \\n Befundung\\n \\n
\\n
\\n
\\n
\\n \\n
\\n\"","module.exports = \".btn-group .btn {\\n margin-right: 10px;\\n border-radius: 0.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL3BhdGllbnQvcGF0aWVudC1kZXRhaWwtbWVhc3VyZW1lbnRzL3BhdGllbnQtZGV0YWlsLW1lYXN1cmVtZW50cy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG1CQUFrQjtFQUNsQixzQkFBcUIsRUFDdEIiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3BhdGllbnQvcGF0aWVudC1kZXRhaWwtbWVhc3VyZW1lbnRzL3BhdGllbnQtZGV0YWlsLW1lYXN1cmVtZW50cy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idG4tZ3JvdXAgLmJ0biB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgfSJdfQ== */\"","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {Patient} from '../../../entities/Patient';\nimport {AbstractDataTableComponent} from '../../generics/AbstractDataTableComponent';\nimport {MeasurementStub} from '../../../entities/MeasurementStub';\nimport {MeasurementService} from '../../../services/measurement.service';\nimport {Subject, Subscription} from 'rxjs';\nimport {saveAs} from 'file-saver';\nimport * as moment from 'moment';\n\ndeclare var jQuery: any;\n\n@Component({\n selector: 'app-patient-detail-measurements',\n templateUrl: './patient-detail-measurements.component.html',\n styleUrls: ['./patient-detail-measurements.component.scss']\n})\nexport class PatientDetailMeasurementsComponent extends AbstractDataTableComponent implements OnInit, OnDestroy {\n\n @Input() patient: Patient;\n @Input() reloadMeasurements: Subject = new Subject();\n measurementStubs: Array = [];\n subs: Array = [];\n\n constructor(private measurementService: MeasurementService) {\n super('patient-measurements-list');\n }\n \n\n ngOnInit() {\n\n // input format is 'DD.MM.YYYY HH:mm' from BackEnd\n // DateTables uses Date.parse(xx) for sorting\n // Date.parse(xx) cant parse this specific format, thus it will fall back to string sorting\n // to correctly sort date-de format, we must parse date string via moment manually\n // see: https://stackoverflow.com/a/55000726\n this.dtOptions.columnDefs = [\n {\n targets: 0,\n type: 'date-time',\n render: function(data, type) {\n // console.log('render colDef', data, type);\n return type === 'sort' ? moment(data, 'DD.MM.YYYY HH:mm').format('YYYY/MM/DD HH:mm') : data;\n }\n }\n ];\n\n this.reloadMeasurements.subscribe(() => {\n this.getMeasurements();\n });\n \n this.getMeasurements();\n\n }\n\n\n getMeasurements(){\n const sub = this.measurementService.getList(this.patient.pid)\n .subscribe(list => {\n console.log('stubs', list);\n this.measurementStubs = list;\n this.rerender();\n });\n this.subs.push(sub);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n getCsv(measurementId, measurementDate, patientId, mandantId): void {\n this.measurementService\n .getMeasurementDetailsCsv(measurementId)\n .subscribe((data: any) => {\n const blob = new Blob([data], { type: 'application/octet-stream' });\n const fileName = mandantId + '_' + patientId + '_' + measurementDate + '_raw.csv';\n saveAs(blob, fileName);\n });\n }\n\n}\n","module.exports = \"
\\n
\\n
\\n
\\n \\n

Patient: {{patient.name}}

\\n \\n \\n Patient bearbeiten \\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n\\n \\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcGF0aWVudC9wYXRpZW50LWRldGFpbC1tZW51ZS9wYXRpZW50LWRldGFpbC1tZW51ZS5jb21wb25lbnQuc2NzcyJ9 */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {PatientService} from '../../../services/patient.service';\nimport {Patient} from '../../../entities/Patient';\nimport {Subject, Subscription} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport 'rxjs-compat/add/operator/switchMap';\nimport {NavigationService} from '../../../services/navigation.service';\n\n@Component({\n selector: 'app-patient-detail-menue',\n templateUrl: './patient-detail-menue.component.html',\n styleUrls: ['./patient-detail-menue.component.scss']\n})\nexport class PatientDetailMenueComponent implements OnInit, OnDestroy {\n\n activeTab = 'data';\n patient: Patient = null;\n reloadMeasurementsSub: Subject = new Subject();\n subs: Array = [];\n\n constructor(\n private route: ActivatedRoute,\n private patientService: PatientService,\n private navigationService: NavigationService\n ) { }\n\n ngOnInit() {\n const sub: Subscription = this.route.params.switchMap(params => {\n const pid: number = +params['pid']; // (+) converts string 'id' to a number\n return this.patientService.getPatient(pid);\n }).subscribe(patient => this.patient = patient);\n\n this.subs.push(sub);\n }\n\n reloadMeasurements(){\n this.reloadMeasurementsSub.next(true);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n showTab(val: string): void {\n this.activeTab = val;\n }\n\n goBack(): void {\n this.navigationService.Back();\n }\n}\n","module.exports = \"
\\n
\\n
\\n
\\n
\\n Patient:\\n
\\n \\n
\\n Operatoren:\\n
\\n \\n
\\n
\\n Auf \\\"Bildbeschreibung\\\" schreiben\\n
\\n
\\n \\n

Bitte stecken Sie einen geeigneten USB Stick ein.

\\n
\\n
\\n

 

\\n
\\n Usb Schreiben Aktivieren\\n
\\n
\\n

 

\\n

\\n Hinweis: Betätigen Sie kurz den Button „USB Schreiben aktivieren“.\\n Ist der USB Service bei Ihnen nicht installiert, laden Sie bitte die beiden Dateien unter Patient: und\\n Operatoren: auf einen leeren USB Stick.\\n \\n

\\n
\\n
\\n
\\n
\\n
\"","module.exports = \".tab-content a {\\n color: #3c763d;\\n cursor: pointer; }\\n\\n.tab-content dd {\\n margin-bottom: 5px; }\\n\\n.btn-with-image {\\n vertical-align: middle;\\n height: 30px; }\\n\\n.status-yellow {\\n font-weight: bold; }\\n\\n.download {\\n display: grid;\\n grid-template-columns: 1fr 1fr;\\n grid-template-rows: 1fr 1fr;\\n width: 25%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL3BhdGllbnQvcGF0aWVudC1kZXRhaWwtdXNic3RpY2svcGF0aWVudC1kZXRhaWwtdXNic3RpY2suY29tcG9uZW50LnNjc3MiLCIvYXBwL3NyYy9wYXJ0aWFscy9fdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFFSSxlQ0hXO0VESVgsZ0JBQWUsRUFDaEI7O0FBSkg7RUFPSSxtQkFBa0IsRUFDbkI7O0FBR0g7RUFDRSx1QkFBc0I7RUFDdEIsYUFBWSxFQUNiOztBQUVEO0VBQ0Usa0JBQWlCLEVBQ2xCOztBQUVEO0VBQ0UsY0FBYTtFQUNiLCtCQUE4QjtFQUM5Qiw0QkFBMkI7RUFDM0IsV0FBVSxFQUNYIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9wYXRpZW50L3BhdGllbnQtZGV0YWlsLXVzYnN0aWNrL3BhdGllbnQtZGV0YWlsLXVzYnN0aWNrLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uLy4uLy4uL3BhcnRpYWxzL3ZhcmlhYmxlc1wiO1xuXG4udGFiLWNvbnRlbnQge1xuICBhIHtcbiAgICBjb2xvcjogJGdyZWVuO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIGRkIHtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gIH1cbn1cblxuLmJ0bi13aXRoLWltYWdlIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgaGVpZ2h0OiAzMHB4O1xufVxuXG4uc3RhdHVzLXllbGxvdyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uZG93bmxvYWQge1xuICBkaXNwbGF5OiBncmlkOyBcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnIgMWZyO1xuICB3aWR0aDogMjUlO1xufSIsIi8vIENvbG9yc1xuJGdyZWVuOiAjM2M3NjNkO1xuXG4kd2hpdGU6ICAgICNmZmY7XG4kZ3JheS0xMDA6ICNmOGY5ZmE7XG4kZ3JheS0yMDA6ICNlOWVjZWY7XG4kZ3JheS0zMDA6ICNkZWUyZTY7XG4kZ3JheS00MDA6ICNjZWQ0ZGE7XG4kZ3JheS01MDA6ICNhZGI1YmQ7XG4kZ3JheS02MDA6ICM2Yzc1N2Q7XG4kZ3JheS03MDA6ICM0OTUwNTc7XG4kZ3JheS04MDA6ICMzNDNhNDA7XG4kZ3JheS05MDA6ICMyMTI1Mjk7XG4kYmxhY2s6ICAgICMwMDA7XG5cbi8vIEJvcmRlciBSYWRpdXNcbiRib3JkZXItcmFkaXVzLXNtOiAwLjI1cmVtO1xuJGJvcmRlci1yYWRpdXMtbWQ6IDAuNXJlbTtcbiRib3JkZXItcmFkaXVzLWxnOiAxcmVtO1xuXG4vLyBCb2R5XG4kYm9keS1iZzogICAgICR3aGl0ZTtcbiRib2R5LWNvbG9yOiAgJGdyYXktOTAwO1xuXG4vLyBOYXZiYXJcbiRuYXZiYXItaGVpZ2h0OiA1NnB4O1xuJG5hdmJhci1iZy1jb2xvcjogJHdoaXRlO1xuJG5hdmJhci1mb250LXNpemU6IDAuODc1cmVtO1xuXG4vLyBCdXR0b25zXG4kYnRuLWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXG4vLyBGb3Jtc1xuJGlucHV0LWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXG4vLyBDYXJkc1xuJGNhcmQtYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7Il19 */\"","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Patient } from '../../../entities/Patient';\nimport { Subscription } from 'rxjs';\nimport { PatientService } from '../../../services/patient.service';\nimport { OperatorService } from '../../../services/operator.service';\nimport { AuthService } from 'src/app/services/auth.service';\nimport { UsbService } from 'src/app/services/usb.service';\nimport { NotificationService } from 'src/app/services/notification.service';\nimport { FeatureToggleService } from 'src/app/services/feature_toggles_service';\n\n\n@Component({\n selector: 'app-patient-detail-usbstick',\n templateUrl: './patient-detail-usbstick.component.html',\n styleUrls: ['./patient-detail-usbstick.component.scss']\n})\nexport class PatientDetailUsbstickComponent implements OnInit, OnDestroy {\n\n @Input() patient: Patient;\n\n usbStickReady: boolean = false;\n usbServiceReady: boolean = false;\n newUsbService: boolean = false;\n private usbStatusChangeSub: Subscription;\n\n constructor(\n private authService: AuthService,\n private patientService: PatientService,\n private operatorService: OperatorService,\n private usbService: UsbService,\n private notificationService: NotificationService,\n private featureToggleService: FeatureToggleService,\n ) { }\n\n ngOnInit() {\n this.featureToggleService.getFeatureStatus('new_usb_service')\n .subscribe((status) => {\n this.newUsbService = status;\n })\n this.usbStatusChangeSub = this.usbService.currentEvent.subscribe(newUsbStatus => {\n console.log('new USB status:', newUsbStatus);\n if (newUsbStatus ) {\n this.usbStickReady = newUsbStatus.status === 'USB_READY';\n this.usbServiceReady = newUsbStatus.status === 'USB_NOT_FOUND';\n }\n });\n }\n\n /**\n * Activate the patient to write to USB-Stick.\n * @deprecated This method is not used after activate new USB-Service.\n */\n activatePatient(){\n this.patientService.activatePatient(this.patient.pid)\n .subscribe()\n }\n\n downloadPatient(): void {\n this.patientService.downloadPatientEncFileForUsb(this.patient.pid).subscribe(namedFile => {\n console.log('received file', namedFile);\n const elem = document.createElement('a');\n elem.href = URL.createObjectURL(namedFile.blob);\n elem.download = namedFile.filename;\n document.body.appendChild(elem);\n elem.click();\n })\n }\n\n\n downloadToken() {\n this.authService.getUsbServiceToken().subscribe(token => this.performDownloadToken(token.token));\n }\n\n // solution acc to https://stackoverflow.com/a/51960768\n downloadOperators(): void {\n this.operatorService.downloadOperatorsEncFileForUsb().subscribe(namedFile => this.performDownload(namedFile));\n }\n\n private performDownloadToken(token: string) {\n const location = window.location;\n\n const host = location.protocol + '//' + location.hostname + (location.port ? ':3000' : '')\n\n const data = { token: \"Bearer \" + token, host };\n\n console.log(data);\n\n const fileName = 'config.json';\n\n const fileToSave = new Blob([JSON.stringify(data)], {\n type: 'application/json'\n });\n\n this.doPerformDownload(fileToSave, fileName);\n }\n\n private performDownload(namedFile): void {\n console.log('received file', namedFile);\n this.doPerformDownload(namedFile.blob, namedFile.filename);\n }\n\n private doPerformDownload(blob: Blob, fileName: string): void {\n const elem = document.createElement('a');\n elem.href = URL.createObjectURL(blob);\n elem.download = fileName;\n document.body.appendChild(elem);\n elem.click();\n }\n\n doUsbWrite(): void {\n this.usbService.savePatientAndOperator(this.patient.pid)\n .subscribe(status => {\n console.log('USB write status:', status);\n if (status) {\n this.notificationService.success('Patientendaten erfolgreich auf USB-Stick geschrieben');\n } else {\n this.notificationService.error('Fehler beim Schreiben der Patientendaten auf den USB-Stick');\n }\n })\n }\n\n\n\n\n ngOnDestroy(): void {\n this.usbStatusChangeSub.unsubscribe();\n }\n\n}\n","module.exports = \"
\\n\\n
\\n
\\n
\\n

Patient {{patient.id > 0 ? 'bearbeiten (#' + patient.pid + ')' : 'neu erstellen'}}

\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n Die Patienten ID ist erforderlich, muss eine Zahl sein und mind. 2 und max. 9 stellig sein.\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n Das Patientenkürzel ist erforderlich, darf Buchstaben Aa-Zz und Zahlen enthalten und muss 3-5 Zeichen umfassen.\\n \\n
\\n
\\n\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcGF0aWVudC9wYXRpZW50LWVkaXQvcGF0aWVudC1lZGl0LmNvbXBvbmVudC5zY3NzIn0= */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {PatientService} from '../../../services/patient.service';\nimport {Patient} from '../../../entities/Patient';\nimport {Observable, Subscription} from 'rxjs';\n\n@Component({\n selector: 'app-patient-edit',\n templateUrl: './patient-edit.component.html',\n styleUrls: ['./patient-edit.component.scss']\n})\nexport class PatientEditComponent implements OnInit, OnDestroy {\n\n patient: Patient;\n patForm: FormGroup;\n subs: Subscription[] = [];\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private fb: FormBuilder,\n private patientService: PatientService\n ) { }\n\n get formControls() {\n return this.patForm.controls;\n }\n\n ngOnInit() {\n this.patForm = this.fb.group({\n id: [''],\n pid: ['', [Validators.required, Validators.max(999999999), Validators.min(10)]], // mind 2, max 9 stellig\n name: ['', [Validators.required, Validators.pattern('^[A-Za-z0-9]{3,5}$')]]\n });\n\n const sub: Subscription = this.route.params\n .switchMap(params => {\n const pid: number = +params['pid']; // (+) converts string 'id' to a number\n if (pid > 0) {\n return this.patientService.getPatient(pid);\n } else {\n const p: Patient = new Patient();\n p.id = 0;\n p.pid = null;\n p.name = null;\n return Observable.of(p);\n }\n })\n .subscribe(patient => {\n this.patient = patient;\n this.patForm.patchValue({\n id: patient.id,\n pid: patient.pid,\n name: patient.name\n });\n });\n this.subs.push(sub);\n }\n\n savePatient(p: Patient, isValid: boolean) {\n if (isValid) {\n this.subs.push(\n this.patientService.savePatient(p).subscribe(() => {\n // go back to list\n this.router.navigate(['/patienten']);\n })\n );\n }\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n}\n","module.exports = \"\\n\\n
\\n
\\n
\\n
\\n

Patienten

\\n \\n
\\n
\\n
\\n\\n\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Patienten IDKürzelAnzahl MessungenLetzte MessungMandant
{{patient.pid}}{{patient.name}}{{patient.measurement_count}}{{(patient.last_measurement != 'Invalid Date') ? (patient.last_measurement | date: 'dd.MM.yyyy HH:mm') : ''}}{{patient.mandant}}\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcGF0aWVudC9wYXRpZW50LWxpc3QvcGF0aWVudC1saXN0LmNvbXBvbmVudC5zY3NzIn0= */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {PatientService} from '../../../services/patient.service';\nimport {Patient} from '../../../entities/Patient';\nimport {AbstractDataTableComponent} from '../../generics/AbstractDataTableComponent';\nimport {Subscription} from 'rxjs';\nimport {AuthService} from '../../../services/auth.service';\nimport {CurrentUser} from '../../../entities/CurrentUser';\nimport * as moment from 'moment';\n\n@Component({\n selector: 'app-patient-list',\n templateUrl: './patient-list.component.html',\n styleUrls: ['./patient-list.component.scss']\n})\nexport class PatientListComponent extends AbstractDataTableComponent implements OnInit, OnDestroy {\n\n patienten: Array = [];\n sub: Subscription;\n currentUser: CurrentUser;\n\n constructor(\n private authService: AuthService,\n private patientService: PatientService\n ) {\n super('patient list');\n }\n\n ngOnInit() {\n // input format is 'DD.MM.YYYY HH:mm' from BackEnd\n // DateTables uses Date.parse(xx) for sorting\n // Date.parse(xx) cant parse this specific format, thus it will fall back to string sorting\n // to correctly sort date-de format, we must parse date string via moment manually\n // see: https://stackoverflow.com/a/55000726\n this.dtOptions.columnDefs = [\n {\n targets: [3],\n type: 'date-time',\n render: function(data, type) {\n if (data === 'Invalid Date' || data === 'undefined' || data === null) { return null; }\n console.log('render colDef', data, type);\n switch (type) {\n case 'sort' : return moment(data, 'DD.MM.YYYY HH:mm').format('YYYY/MM/DD HH:mm'); break;\n default: return data;\n }\n }\n }\n ];\n\n this.currentUser = this.authService.getCurrentUser();\n this.fetchData();\n }\n\n fetchData(): void {\n if (this.sub != null) { this.sub.unsubscribe(); }\n this.sub = null;\n this.sub = this.patientService.getPatientList().subscribe(patients => {\n this.patienten = patients;\n this.rerender();\n });\n }\n\n\n ngOnDestroy(): void {\n // this.dtOptions.columnDefs = [];\n if (this.sub != null) { this.sub.unsubscribe(); }\n }\n}\n","module.exports = \"
\\n\\n
\\n
\\n
\\n

Benutzer {{user.id > 0 ? 'bearbeiten (#' + user.id + ')' : 'neu erstellen'}}

\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n \\n \\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n Passwörter müssen mindestens 6 Zeichen lang sein.\\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n
\\n\\n
\\n
zugeordnete Rollen:
\\n \\n
\\n\\n
\\n \\n \\n \\n \\n
\\n\\n
\\n
verfügbare Rollen:
\\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvdXNlcnMvdXNlci1kZXRhaWwvdXNlci1kZXRhaWwuY29tcG9uZW50LnNjc3MifQ== */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {UserService} from '../../../services/user.service';\nimport {ManagableUser} from '../../../entities/ManagableUser';\nimport {forkJoin, Observable, Subscription} from 'rxjs';\nimport {RoleService} from '../../../services/role.service';\nimport {Role} from '../../../entities/Role';\nimport 'rxjs-compat/add/operator/first';\nimport {AuthService} from '../../../services/auth.service';\nimport 'rxjs-compat/add/operator/mergeMap';\nimport {CurrentUser} from '../../../entities/CurrentUser';\nimport {SaveUserDto} from '../../../entities/SaveUserDto';\nimport {NotificationService} from '../../../services/notification.service';\n\n@Component({\n selector: 'app-user-detail',\n templateUrl: './user-detail.component.html',\n styleUrls: ['./user-detail.component.scss']\n})\nexport class UserDetailComponent implements OnInit, OnDestroy {\n\n user: ManagableUser;\n userForm: FormGroup;\n subs: Subscription[] = [];\n available_roles: Array = [];\n assigned_roles: Array = [];\n self = this;\n\n currentUser: CurrentUser = null;\n\n get formControls() {\n return this.userForm.controls;\n }\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private fb: FormBuilder,\n private userService: UserService,\n private roleServices: RoleService,\n private authService: AuthService,\n private notificationService: NotificationService\n ) { }\n\n ngOnInit() {\n this.userForm = this.fb.group({\n id: [''],\n username: ['', Validators.required],\n // email: ['', Validators.required],\n enabled: ['', Validators.required],\n password : ['', Validators.minLength(6)],\n fc_assigned_roles : [''],\n fc_available_roles: ['']\n });\n\n const rolesObs = this.roleServices.getAssignableRoles().first();\n const paramsObs = this.route.params.first();\n const queryParamObs = this.route.queryParams.do(load => console.log('queryPObs', load)).first();\n\n // in case of a given user id, we want to edit a user\n\n const sub = forkJoin([rolesObs, paramsObs, queryParamObs])\n .switchMap ((responseList) => {\n const roles = responseList[0];\n const params = responseList[1];\n const queryParams = responseList[2];\n\n console.log('forkjoin', responseList);\n\n // set available roles\n this.available_roles = roles;\n this.userForm.patchValue({'fc_available_roles': []}); // nothing should be marked\n\n // if 'id' is given, we want to edit an existing user\n const id: number = +params['id']; // (+) converts string 'id' to a number\n if (id > 0) {\n // load user\n return this.userService.getMyUsers().map(u => u.filter(item => item.id === id)[0]);\n } else {\n // create new ManagableUser\n const m: ManagableUser = new ManagableUser();\n m.id = 0;\n m.enabled = true;\n\n // and load preset mandant and preassigned roles from query params\n m.mandant = null; // must be set by queryParam\n m.roles = [];\n if ('role' in queryParams) {\n // add role to user\n const new_user_add_role = String(queryParams['role']).toUpperCase();\n this.available_roles\n .filter(role => role === new_user_add_role) // its only one but type array\n .forEach(role => {\n this.assigned_roles.push(role);\n m.roles.push(role);\n });\n }\n return Observable.of(m);\n }\n })\n .subscribe(u => {\n console.log('filtered', u);\n this.user = u;\n this.assigned_roles = u.roles;\n u.roles.forEach(element => {\n this.available_roles.splice(this.available_roles.indexOf(element), 1);\n });\n \n this.userForm.patchValue({\n id: u.id,\n username: u.username,\n // email: u.email,\n enabled: u.enabled,\n fc_assigned_roles: [],\n fc_available_roles: []\n });\n });\n this.subs.push(sub);\n\n this.subs.push(this.authService.currentUser$.subscribe(u => this.currentUser = u));\n }\n\n /*\n * ---------------------------------------\n * ROLES\n * --------------------------------------- */\n\n /**\n * assign all available roles\n */\n select_all_roles() {\n this.available_roles.forEach(role => this.assigned_roles.push(role));\n this.available_roles = [];\n this.patchAssignedRoles();\n }\n\n /**\n * add the selected available role(s) to the assigned roles, if not already exist (no dplicates)\n */\n select_role() {\n const roles: string[] = this.userForm.controls['fc_available_roles'].value;\n roles.forEach(role => {\n this.assigned_roles.push(role);\n this.available_roles.splice(this.available_roles.indexOf(role), 1);\n });\n this.patchAssignedRoles();\n }\n\n /**\n * remove selected assigned role(s)\n */\n deselect_role() {\n const roles: string[] = this.userForm.controls['fc_assigned_roles'].value;\n roles.forEach( (role, index) => {\n this.assigned_roles.splice(this.assigned_roles.indexOf(role), 1);\n this.available_roles.push(role);\n });\n this.patchAssignedRoles();\n }\n\n /**\n * remove all assigned roles\n */\n deselect_all_roles() {\n this.assigned_roles.forEach(role => this.available_roles.push(role));\n this.assigned_roles = [];\n this.patchAssignedRoles();\n }\n\n protected patchAssignedRoles(): void {\n this.userForm.patchValue({'fc_assigned_roles': []}); // this.assigned_roles.map(r => r.id)});\n this.userForm.patchValue({'fc_available_roles': []}); // this.assigned_roles.map(r => r.id)});\n }\n\n /*\n * ---------------------------------------\n * SAVE\n *\n * der Mandant, für den der Nutzer angelegt wird wird aus dem Context des eingeloggten Nutzers genommen\n * --------------------------------------- */\n\n saveUser(userFormObject: any, isValid: boolean) {\n if (isValid) {\n // map form model to entity\n const user: SaveUserDto = new SaveUserDto();\n user.id = userFormObject.id;\n user.username = userFormObject.username;\n // user.email = userFormObject.email;\n user.enabled = userFormObject.enabled;\n if (userFormObject.password != null && userFormObject.password.length > 0) {user.password = userFormObject.password; }\n user.roles = this.assigned_roles;\n\n this.userService.saveUser(user).subscribe(() => {\n this.notificationService.success('Nutzer gespeichert');\n this.router.navigate(['/users']);\n },\n err => {\n switch (err.error.error) {\n case 'Forbidden':\n throw new Error('Sie haben kein ausreichenden Rechte, um diese Operation durchzuführen');\n default:\n throw new Error('Das Speichern ist fehlgeschlagen. Bitte achten Sie darauf, dass ' +\n 'Benutzernamen systemweit nicht doppelt vergeben werden können und ein Passwort sowie mind. 1 Rolle bekommen müssen.');\n }\n });\n }\n }\n\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n\n /**\n * take rolename, search for role in assigned_roles and take the id\n * search with this id in selected roles\n * if we find a selected role with this, return true, otherwise false\n *\n * @param {string} roleName\n * @returns {boolean}\n */\n isRoleSelected(roleName: string): boolean {\n if (roleName == null) { return false; }\n if (this.assigned_roles == null) { return false; }\n const role = this.assigned_roles.find(r => r === roleName);\n return (role != null);\n }\n}\n","module.exports = \"
\\n\\n
\\n
\\n
\\n

Benutzerverwaltung

\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdEnabledNameRolle
{{user.id}}\\n \\n {{user.enabled}} \\n {{user.username}}{{user.roleSummary()}}\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \".table-responsive table {\\n width: 100%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL3VzZXJzL3VzZXItbGlzdC91c2VyLWxpc3QuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxZQUFXLEVBQ1oiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3VzZXJzL3VzZXItbGlzdC91c2VyLWxpc3QuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGFibGUtcmVzcG9uc2l2ZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH0iXX0= */\"","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractDataTableComponent} from '../../generics/AbstractDataTableComponent';\nimport {Subscription} from 'rxjs';\nimport {UserService} from '../../../services/user.service';\nimport {ManagableUser} from '../../../entities/ManagableUser';\nimport {AuthService} from '../../../services/auth.service';\nimport {CurrentUser} from '../../../entities/CurrentUser';\n\n@Component({\n selector: 'app-user-list',\n templateUrl: './user-list.component.html',\n styleUrls: ['./user-list.component.scss']\n})\nexport class UserListComponent extends AbstractDataTableComponent implements OnInit, OnDestroy {\n\n users: Array = [];\n subs: Array = [];\n currentUser: CurrentUser = null;\n\n constructor(\n private userService: UserService,\n private authService: AuthService) {\n super('users-list');\n }\n\n ngOnInit() {\n const sub: Subscription = this.userService.getMyUsers()\n .subscribe(arr => {\n this.users = arr;\n this.rerender();\n console.log('received users', arr);\n });\n this.subs.push(sub);\n\n this.currentUser = this.authService.getCurrentUser();\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n this.subs = [];\n }\n}\n","module.exports = \"\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n
\"","module.exports = \".form-group {\\n margin: 0; }\\n\\ninput[type=\\\"file\\\"] {\\n height: 0;\\n overflow: hidden;\\n width: 0; }\\n\\ninput[type=\\\"file\\\"] + label {\\n background-color: #fff;\\n color: #212529;\\n border: none;\\n border-radius: 0.5rem;\\n cursor: pointer;\\n display: inline-block;\\n font-family: 'Poppins', sans-serif;\\n font-size: inherit;\\n padding: 0.75rem 2rem;\\n margin-top: 0.5rem;\\n transition: background-color 0.3s ease; }\\n\\ninput[type=\\\"file\\\"] + label:hover {\\n background-color: #dee2e6;\\n color: #3c763d;\\n text-decoration: underline; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL2FwcC9jb21wb25lbnRzL3V0aWxzL3VwbG9hZC1tZWFzdXJlbWVudC91cGxvYWQtbWVhc3VyZW1lbnQuY29tcG9uZW50LnNjc3MiLCIvYXBwL3NyYy9wYXJ0aWFscy9fdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxVQUFTLEVBQ1Y7O0FBRUQ7RUFDRSxVQUFTO0VBQ1QsaUJBQWdCO0VBQ2hCLFNBQVEsRUFDVDs7QUFFRDtFQUNBLHVCQ1ZlO0VEV2YsZUNGa0I7RURHbEIsYUFBWTtFQUNaLHNCQUFxQjtFQUNyQixnQkFBZTtFQUNmLHNCQUFxQjtFQUNyQixtQ0FBa0M7RUFDbEMsbUJBQWtCO0VBQ2xCLHNCQUFxQjtFQUNyQixtQkFBa0I7RUFDbEIsdUNBQXNDLEVBT3JDOztBQWxCRDtJQWNFLDBCQUF5QjtJQUN6QixlQUFjO0lBQ2QsMkJBQTBCLEVBQzNCIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy91dGlscy91cGxvYWQtbWVhc3VyZW1lbnQvdXBsb2FkLW1lYXN1cmVtZW50LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uLy4uLy4uL3BhcnRpYWxzL3ZhcmlhYmxlc1wiO1xuXG4uZm9ybS1ncm91cCB7XG4gIG1hcmdpbjogMDtcbn1cblxuaW5wdXRbdHlwZT1cImZpbGVcIl0ge1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAwO1xufVxuXG5pbnB1dFt0eXBlPVwiZmlsZVwiXSArIGxhYmVsIHtcbmJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbmNvbG9yOiAkYm9keS1jb2xvcjtcbmJvcmRlcjogbm9uZTtcbmJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbmN1cnNvcjogcG9pbnRlcjtcbmRpc3BsYXk6IGlubGluZS1ibG9jaztcbmZvbnQtZmFtaWx5OiAnUG9wcGlucycsIHNhbnMtc2VyaWY7XG5mb250LXNpemU6IGluaGVyaXQ7XG5wYWRkaW5nOiAwLjc1cmVtIDJyZW07XG5tYXJnaW4tdG9wOiAwLjVyZW07XG50cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsgXG5cbiY6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OyBcbiAgY29sb3I6ICMzYzc2M2Q7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBcbn1cbn1cblxuXG5cblxuXG4iLCIvLyBDb2xvcnNcbiRncmVlbjogIzNjNzYzZDtcblxuJHdoaXRlOiAgICAjZmZmO1xuJGdyYXktMTAwOiAjZjhmOWZhO1xuJGdyYXktMjAwOiAjZTllY2VmO1xuJGdyYXktMzAwOiAjZGVlMmU2O1xuJGdyYXktNDAwOiAjY2VkNGRhO1xuJGdyYXktNTAwOiAjYWRiNWJkO1xuJGdyYXktNjAwOiAjNmM3NTdkO1xuJGdyYXktNzAwOiAjNDk1MDU3O1xuJGdyYXktODAwOiAjMzQzYTQwO1xuJGdyYXktOTAwOiAjMjEyNTI5O1xuJGJsYWNrOiAgICAjMDAwO1xuXG4vLyBCb3JkZXIgUmFkaXVzXG4kYm9yZGVyLXJhZGl1cy1zbTogMC4yNXJlbTtcbiRib3JkZXItcmFkaXVzLW1kOiAwLjVyZW07XG4kYm9yZGVyLXJhZGl1cy1sZzogMXJlbTtcblxuLy8gQm9keVxuJGJvZHktYmc6ICAgICAkd2hpdGU7XG4kYm9keS1jb2xvcjogICRncmF5LTkwMDtcblxuLy8gTmF2YmFyXG4kbmF2YmFyLWhlaWdodDogNTZweDtcbiRuYXZiYXItYmctY29sb3I6ICR3aGl0ZTtcbiRuYXZiYXItZm9udC1zaXplOiAwLjg3NXJlbTtcblxuLy8gQnV0dG9uc1xuJGJ0bi1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblxuLy8gRm9ybXNcbiRpbnB1dC1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblxuLy8gQ2FyZHNcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kOyJdfQ== */\"","import {Component, EventEmitter, OnDestroy, OnInit, Output} from '@angular/core';\nimport {UploadMeasurementService} from '../../../services/upload-measurement.service';\nimport {NotificationService} from '../../../services/notification.service';\nimport {Subscription} from 'rxjs';\nimport {AuthService} from '../../../services/auth.service';\nimport {CurrentUser} from '../../../entities/CurrentUser';\n\n@Component({\n selector: 'app-upload-measurement',\n templateUrl: './upload-measurement.component.html',\n styleUrls: ['./upload-measurement.component.scss']\n})\nexport class UploadMeasurementComponent implements OnInit, OnDestroy {\n\n @Output() uploaded = new EventEmitter();\n\n fileToUpload: File = null;\n sub: Subscription;\n currentUser: CurrentUser;\n showOverlayUploadSpinner = false;\n\n constructor(\n private authService: AuthService,\n private notificationService: NotificationService,\n private uploadMeasurementService: UploadMeasurementService) { }\n\n ngOnInit() {\n this.currentUser = this.authService.getCurrentUser();\n }\n\n handleFileInput(event : any) {\n console.log(event);\n const files = event.target.files;\n this.fileToUpload = files.item(0);\n this.showOverlayUploadSpinner = true;\n this.sub = this.uploadMeasurementService.postFile(this.fileToUpload).subscribe(\n () => {\n this.notificationService.success('Die Datei wurde erfolgreich hochgeladen', 'Hochladen erfolgreich');\n this.showOverlayUploadSpinner = false;\n this.uploaded.emit();\n },\n err => {\n console.log(err);\n this.showOverlayUploadSpinner = false;\n\n if(err.status == 409){\n throw new Error('Messung bereits vorhanden. Upload wurde ignoriert');\n } else {\n throw new Error('Die Datei konnte nicht hochgeladen/verarbeitet werden: ' + err.error);\n }\n }\n );\n }\n\n ngOnDestroy(): void {\n if (this.sub != null) { this.sub.unsubscribe(); }\n }\n\n}\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {AuthService} from '../services/auth.service';\nimport {Subscription} from 'rxjs';\nimport {CurrentUser} from '../entities/CurrentUser';\n\n@Directive({\n selector: '[appHasPrivilege]'\n})\nexport class HasPrivilegeDirective implements OnInit, OnDestroy {\n\n // the input accept a single privilege name\n @Input('appHasPrivilege') private privilege: string;\n\n protected subscription: Subscription;\n\n constructor(\n private templateRef: TemplateRef,\n private viewContainer: ViewContainerRef,\n private authService: AuthService\n ) { }\n\n public static hasPrivilege(user: CurrentUser, required_role: string): boolean {\n return (user != null) && (user.roles != null) && (user.roles.includes(required_role));\n }\n\n ngOnInit(): void {\n // check view role privilege\n this.subscription = this.authService.currentUser$\n .subscribe((user) => {\n this.viewContainer.clear();\n if (user != null && user.hasPrivilege(this.privilege)) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n}\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {AuthService} from '../services/auth.service';\nimport {Subscription} from 'rxjs';\nimport {CurrentUser} from '../entities/CurrentUser';\n\n@Directive({\n selector: '[appHasRole]'\n})\nexport class HasRoleDirective implements OnInit, OnDestroy {\n\n // the input accept a single roles name\n @Input('appHasRole') private role: string;\n\n protected subscription: Subscription;\n\n constructor(\n private templateRef: TemplateRef,\n private viewContainer: ViewContainerRef,\n private authService: AuthService\n ) { }\n\n public static hasRole(user: CurrentUser, required_role: string): boolean {\n return (user != null) && (user.roles != null) && (user.roles.includes(required_role));\n }\n\n ngOnInit(): void {\n // check view role privilege\n this.subscription = this.authService.currentUser$\n .subscribe((user) => {\n this.viewContainer.clear()\n if (user != null && user.hasRole(this.role)) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n}\n","import * as moment from 'moment';\n\nexport class AnamnesenStub {\n id: string;\n created_at: Date;\n formserver_url: string;\n\n public static parse(rawData: any): AnamnesenStub {\n const result = new AnamnesenStub();\n result.id = 'id' in rawData ? rawData['id'] : null;\n result.created_at = 'created_at' in rawData\n ? moment.parseZone(rawData['created_at']).toDate()\n : null;\n result.formserver_url = 'formserver_url' in rawData ? rawData['formserver_url'] : null;\n return result;\n }\n}\n","export class BackendErrorResponseDto {\n status: number;\n error: string;\n message: string;\n}\n","/**\n * The current user is parsed from JWT Token and we have just roles and priviliges as values no ids)\n */\nimport {JwtHelperService} from '@auth0/angular-jwt';\n\n\nexport class CurrentUser {\n userId: number;\n username: string;\n mandant_id: number;\n mandant_title: string;\n token: string; // jwt token\n roles: Array; // role values\n privileges: Array; // all privileges from all roles of that user\n\n public constructor() {\n }\n\n public static create(token: string): CurrentUser {\n\n const result: CurrentUser = new CurrentUser();\n result.token = token;\n\n const helper = new JwtHelperService();\n const decodedToken = helper.decodeToken(token);\n //const o: any = JSON.parse(decodedToken.sub);\n const o: any = decodedToken.sub;\n\n if (!('user_id' in o)) { throw new Error('token must contain user id'); }\n result.userId = o['user_id'];\n\n if (!('mandant_id' in o)) { throw new Error('token must contain mandant id'); }\n result.mandant_id = o['mandant_id'];\n\n if (!('username' in o)) { throw new Error('token must contain user name'); }\n result.username = o['username'];\n\n if (!('roles' in o)) {throw new Error('token must contain roles'); }\n result.roles = o['roles'];\n\n if (!('privileges' in o)) {throw new Error('token must contain privileges'); }\n result.privileges = o['privileges'];\n\n if (!('mandant_title' in o)) { throw new Error('token must contain mandant title'); }\n result.mandant_title = o['mandant_title'];\n\n return result;\n }\n\n public hasRole(role: string): boolean {\n return (this.roles != null) && (this.roles.includes(role));\n }\n\n public hasPrivilege(privileg: string): boolean {\n return (this.privileges != null) && (this.privileges.includes(privileg));\n }\n}\n","import * as moment from 'moment';\n\nexport class DiagnosenStub {\n id: string;\n created_at: Date;\n formserver_url: string;\n\n public static parse(rawData: any): DiagnosenStub {\n const result = new DiagnosenStub();\n result.id = 'id' in rawData ? rawData['id'] : null;\n result.created_at = 'created_at' in rawData\n ? moment.parseZone(rawData['created_at']).toDate()\n : null;\n result.formserver_url = 'formserver_url' in rawData ? rawData['formserver_url'] : null;\n return result;\n }\n}\n","import {Mandant} from './Mandant';\n\n// dto as received from backend\n\nexport class ManagableUser {\n id: number;\n username: string;\n enabled: boolean;\n mandant: Mandant; // for received user\n roles: any; // received list of objects, send a list of strings (for save)\n // email: string;\n password?: string;\n\n roleSummary(): string {\n return this.roles.map(role => String(role).toLocaleLowerCase()).join(';');\n }\n}\n","export class Mandant {\n id: number;\n title: string;\n test: boolean;\n\n countPatients: number;\n countUsers: number;\n countOperators: number;\n}\n","export class MeasurementDetailsSummary {\n frequencies: FrequenciesSummary;\n comments: Array;\n rightElectrodeSize: String;\n leftElectrodeSize: String;\n crdate: String;\n patientName: String;\n patientNumber: Number;\n}\n\nexport class FrequenciesSummary {\n list: Array;\n min: number;\n max: number;\n}\n\nexport class CommentRead {\n content: string;\n creationDate: string;\n nick: string;\n}\n","import * as moment from 'moment';\n\nexport class MeasurementStub {\n identifier: string;\n measurement_date: Date;\n measurement_date_iso: Date;\n has_diagnosis: boolean;\n validate_state: string;\n\n public static parse(rawData: any): MeasurementStub {\n const result = new MeasurementStub();\n const valstate = rawData['validate_state'];\n result.identifier = 'identifier' in rawData ? rawData['identifier'] : null;\n result.measurement_date = 'measurement_date' in rawData\n ? moment(rawData['measurement_date'], 'DD.MM.YYYY HH:mm').toDate()\n : null;\n result.measurement_date_iso = 'measurement_date_iso' in rawData ? rawData['measurement_date_iso'] : null;\n result.has_diagnosis = 'has_diagnosis' in rawData ? rawData['has_diagnosis'] : null;\n result.validate_state = 'validate_state' in rawData ? rawData['validate_state'] : null;\n if (valstate) {\n if (valstate === 'valid') {\n result.validate_state = 'Gültig';\n } else if (valstate === 'unvalidated') {\n result.validate_state = 'Ungeprüft';\n } else if (valstate === 'invalid') {\n result.validate_state = 'Ungültig';\n } else {\n result.validate_state = 'Unbekannt';\n }\n }\n return result;\n }\n}\n","export class OperatorView {\n id: number;\n name: string;\n pin: number;\n}\n","import * as moment from 'moment';\n\nexport class Patient {\n id: number; // internal id, to update patient\n pid: number; // patient id, manually set and unique by mandant\n name: string;\n measurement_count: number;\n last_measurement: Date;\n mandant: string; // mandant name\n mandant_id: number; // mandant id\n\n public static parse(rawData: any): Patient {\n const result: Patient = Object.assign(new Patient(), rawData);\n console.log('patient parsed', result);\n result.last_measurement = 'last_measurement' in rawData\n ? moment(rawData['last_measurement'], 'DD.MM.YYYY HH:mm').toDate()\n : null;\n return result;\n }\n}\n\n\n","export class SaveUserDto {\n id: number;\n username: string;\n enabled: boolean;\n roles: any; // received list of objects, send a list of strings (for save)\n password?: string;\n nickname?: string;\n pin?: string;\n}\n","export enum NotificationSeverityEnum {\n INFO,\n SUCCESS,\n WARN,\n ERROR\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\nimport {AuthService} from '../services/auth.service';\nimport {Observable} from 'rxjs';\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n\n constructor(\n private router: Router,\n private authService: AuthService) {\n }\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean {\n if (this.authService.hasCurrentUser()) { return true; }\n this.router.navigate(['/login']); // otherwise redirect to login page\n }\n}\n","import { Injectable } from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {MeasurementStub} from '../entities/MeasurementStub';\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {MeasurementDetailsSummary} from '../entities/MeasurementDetailsSummary';\nimport {map} from 'rxjs/operators';\nimport { AnamnesenStub } from '../entities/AnamnesenStub';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AnamnesenService {\n\n constructor(private httpClient: HttpClient) { }\n\n /**\n * a non cached list of AnamnesenStub for Patient\n */\n public getList(patientId: number): Observable> {\n return this.httpClient.get('/api/patients/' + patientId + '/anamnesen')\n .map((resp: Array) => {\n const mlist: Array = [];\n resp.forEach(item => mlist.push(AnamnesenStub.parse(item))); \n return mlist;\n });\n }\n\n public getCsv(patientId: string, id: string): Observable {\n const options: {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n } = {\n responseType: 'arraybuffer'\n };\n return this.httpClient.get('/api/patients/'+ patientId +'/anamnesen/' + id +'/csv', options)\n .pipe(\n map((file: ArrayBuffer) => {\n return file;\n })\n );\n }\n}\n","import {EventEmitter, Injectable, Output} from '@angular/core';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {CurrentUser} from '../entities/CurrentUser';\nimport {HttpClient, HttpErrorResponse} from '@angular/common/http';\nimport { Token } from '../entities/Token';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n protected static LOCALSTORAGE_KEY = 'xera-analysis-app';\n\n @Output() onLoginSuccess: EventEmitter = new EventEmitter();\n @Output() onLoginFailed: EventEmitter = new EventEmitter();\n @Output() onLogout: EventEmitter = new EventEmitter();\n\n currentUser$: ReplaySubject = new ReplaySubject(1);\n\n constructor(private http: HttpClient) {\n this.currentUser$.next(this.getCurrentUserFromLocalStorage());\n }\n\n public getCurrentUser(): CurrentUser | null {\n return this.getCurrentUserFromLocalStorage();\n }\n\n public hasCurrentUser(): boolean {\n return (this.getCurrentUserFromLocalStorage() != null);\n }\n\n public getUsbServiceToken(): Observable{\n return this.http.get('/api/auth/usb-service-token');\n }\n\n public login(username: string, password: string) {\n this.http.post(\n '/api/auth/login',\n {\n username,\n password,\n })\n .map(resp => {\n console.log('login resp for \\'' + username + '\\'', resp);\n const u: CurrentUser = CurrentUser.create(resp.token); // new User(resp.username, resp.token);\n return u;\n })\n .subscribe( u => {\n this.persistCurrentUserToLocalStorage(u);\n this.onLoginSuccess.emit(); // fire event\n this.currentUser$.next(u);\n }, (err: HttpErrorResponse) => {\n if (err.error instanceof Error) {\n // A client-side or network error occurred. Handle it accordingly.\n console.log('An error occurred:', err.error.message);\n this.onLoginFailed.emit();\n } else {\n // The backend returned an unsuccessful response code.\n // The response body may contain clues as to what went wrong,\n console.log(`Backend returned code ${err.status}, body was: `, err.error);\n this.onLoginFailed.emit();\n }\n });\n }\n\n public switchContext(mandantId: number): Observable {\n return this.http.patch('/api/auth/switch-context/' + mandantId, null);\n }\n\n public refreshToken(token: string) {\n console.log('refresh token', token.substring(0, 20) + '...');\n /*\n const user: CurrentUser = this.getCurrentUserFromLocalStorage();\n if (user == null) { throw new Error('cant update user (null)'); }\n user.token = token;\n this.persistCurrentUserToLocalStorage(user);\n */\n const user: CurrentUser = CurrentUser.create(token);\n this.persistCurrentUserToLocalStorage(user);\n this.currentUser$.next(user);\n }\n\n /**\n * reset password at backend for currently logged in user\n */\n public resetpasswd(oldpw: string, newpw: string): Observable {\n const body = { oldpw : oldpw, newpw : newpw };\n return this.http.patch('/api/reset-password', JSON.stringify(body));\n }\n\n public logout(): void {\n this.removeCurrentUserFromLocalStorage();\n this.onLogout.emit();\n this.currentUser$.next(null);\n }\n\n /**\n * protected methods\n */\n protected getCurrentUserFromLocalStorage(): CurrentUser | null {\n if (localStorage.getItem(AuthService.LOCALSTORAGE_KEY) != null) {\n const userdata = JSON.parse(localStorage.getItem(AuthService.LOCALSTORAGE_KEY));\n return Object.assign(new CurrentUser(), userdata);\n }\n this.logout();\n return null;\n }\n\n protected persistCurrentUserToLocalStorage(currentUser: CurrentUser) {\n localStorage.setItem(AuthService.LOCALSTORAGE_KEY, JSON.stringify(currentUser));\n }\n\n protected removeCurrentUserFromLocalStorage() {\n localStorage.removeItem(AuthService.LOCALSTORAGE_KEY);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport 'rxjs/add/operator/map';\nimport 'rxjs-compat/add/operator/do';\nimport {Comment} from '../entities/Comment';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class CommentService {\n\n constructor(\n private httpClient: HttpClient\n ) {}\n\n public saveComment(c: Comment): Observable {\n const dto = {\n content: c.content,\n username: c.username,\n measurementId: c.measurement_id\n };\n\n return this.httpClient\n .post('/api/measurements/' + c.measurement_id + '/comments', JSON.stringify(dto));\n // reload list after save\n // .do(() => this.fetchData());\n }\n}","import { Injectable } from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\n\n// Load all configuration parameters from the backend\n// and update values \nexport class ConfigParamsService {\n\n\n constructor(\n private http: HttpClient,\n ) {\n }\n\n list(): Observable> {\n return this.http.get>('/api/config_params?t=' + new Date().getTime());\n }\n\n updateValue(id: number, new_value: string): Observable {\n const params = {\n value: new_value\n };\n return this.http.put('/api/config_params/'+id, params);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {MeasurementStub} from '../entities/MeasurementStub';\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {MeasurementDetailsSummary} from '../entities/MeasurementDetailsSummary';\nimport {map} from 'rxjs/operators';\nimport { AnamnesenStub } from '../entities/AnamnesenStub';\nimport { DiagnosenStub } from '../entities/DiagnosenStub';\n\n@Injectable({\n providedIn: 'root'\n})\n\n/**\n * Service für die manuellen Diagnosen (Diagnosen-Formular erfasst vom Arzt)\n */\nexport class DiagnosenService {\n\n constructor(private httpClient: HttpClient) { }\n\n /**\n * a non cached list of DiagnosenStub for Patient\n */\n public getList(patientId: number): Observable> {\n return this.httpClient.get('/api/patients/' + patientId + '/diagnosen')\n .map((resp: Array) => {\n const mlist: Array = [];\n resp.forEach(item => mlist.push(DiagnosenStub.parse(item))); \n return mlist;\n });\n }\n\n public getCsv(id: string, patientId: string): Observable {\n const options: {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n } = {\n responseType: 'arraybuffer'\n };\n return this.httpClient.get('/api/patients/'+ patientId +'/diagnosen/' + id +'/csv', options)\n .pipe(\n map((file: ArrayBuffer) => {\n return file;\n })\n );\n }\n}\n","import {Observable} from 'rxjs';\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n })\n \n\n/**\n * Service für die aus den Messergebnissen generierten Diagnosen\n */\nexport class DiagnosisService {\n private apiUrl = '/api/diagnosis';\n\n constructor(private httpClient: HttpClient) { }\n\n /**\n * get all diagnoses results as json\n */\n public getAll(): Observable {\n return this.httpClient.get(this.apiUrl, {responseType: 'arraybuffer' as 'json' });\n }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FeatureToggle } from '../entities/FeatureToggle';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FeatureToggleService {\n\n featureStatus: Map = new Map();\n\n constructor(\n private http: HttpClient,\n ) {\n }\n\n loadFeatureStatus(featureName: string): Observable {\n return this.getFeaturesMinimal().map((data) => {\n this.featureStatus = new Map(Object.entries(data));\n console.log('Feature toggles loaded');\n let t = this.featureStatus.get(featureName)\n return t;\n });\n }\n\n public getFeatureStatus(featureName: string): Observable {\n if(this.featureStatus.size == 0) {\n return this.loadFeatureStatus(featureName);\n }\n return new Observable((subscriber) => {\n subscriber.next(this.featureStatus.get(featureName));\n subscriber.complete();\n });\n }\n\n\n // Get all feature toggles only with their names and enabled status\n public getFeaturesMinimal(): Observable> {\n return this.http.get>('/api/feature_toggles/minimal?t=' + new Date().getTime());\n }\n\n // Get all feature toggles as a list\n public getFeatures(): Observable> {\n return this.http.get>('/api/feature_toggles');\n }\n\n public setFeatureStatus(featureId: Number, enabled: boolean): Observable {\n return this.http.put('/api/feature_toggles/' + featureId, {enabled: enabled});\n }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {Mandant} from '../entities/Mandant';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MandantService {\n\n constructor(private http: HttpClient) {\n // this.fetchdata();\n }\n\n public getList(): Observable> {\n return this.http\n .get('/api/mandants')\n .map((resp: Array) => {\n const result: Array = [];\n resp.forEach( item => result.push(Object.assign(new Mandant(), item)));\n return result;\n });\n }\n\n public getMandant(id: number): Observable {\n return this.http.get('/api/mandants/' + id);\n }\n\n public deleteMandant(id: number): Observable {\n return this.http.delete('/api/mandants/' + id);\n }\n\n public save(m: Mandant): Observable {\n const body: string = JSON.stringify(m);\n return this.http.put('/api/mandants', body);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {MeasurementStub} from '../entities/MeasurementStub';\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {MeasurementDetailsSummary} from '../entities/MeasurementDetailsSummary';\nimport {map} from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MeasurementService {\n\n constructor(private httpClient: HttpClient) { }\n\n /**\n * a non cached list of MeasurementStubs for Patient\n */\n public getList(patientId: number): Observable> {\n return this.httpClient.get('/api/patients/'+ patientId + '/measurements')\n .map((resp: Array) => {\n const mlist: Array = [];\n resp.forEach(item => mlist.push(MeasurementStub.parse(item))); // Object.assign(new MeasurementStub(), item)));\n return mlist;\n });\n }\n\n public getMeasurementDetails(measurementId: string): Observable {\n return this.httpClient.get('/api/measurements/details/' + measurementId)\n .map(resp => {\n return Object.assign(new MeasurementDetailsSummary(), resp);\n });\n }\n\n public getMeasurementDetailsCsv(measurementId: string): Observable {\n const options: {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n } = {\n responseType: 'arraybuffer'\n };\n return this.httpClient.get('/api/measurements/details/' + measurementId + '/csv', options)\n .pipe(\n map((file: ArrayBuffer) => {\n return file;\n })\n );\n }\n\n public getImage(measurementId: string, imgParam: ImgParam): Observable {\n const url = '/api/measurements/details/' + measurementId + '/images' +\n '?side=' + imgParam.side.toLocaleString() +\n '&cpart=' + imgParam.complex_part.toLocaleString() +\n '&frequency=' + imgParam.freq +\n '&balance-colors=' + imgParam.color_balancing;\n return this.httpClient.get(url, {responseType: 'blob'});\n }\n\n\n /**\n * Check a list of measuremet identifiers if measurements exists\n * @param ids \n * @returns Array of measurement identifiers that not in the database\n */\n public checkMeasurementIdentifiers(ids: Array): Observable> {\n const url = '/api/measurements/check_exists';\n //const params = new HttpParams().set('ids', ids.join(','));\n return this.httpClient.post>(url, ids);\n }\n\n public uploadMeasurement(data: string): Observable {\n const url = '/api/measurements/upload_json';\n console.log('Uploading measurements data to ' + url);\n return this.httpClient.post(url, data);\n }\n}\n\n// naming convention for API\nexport interface ImgParam {\n freq: number;\n side: SideName;\n complex_part: ComplexPartName;\n color_balancing: boolean;\n}\n\nexport enum SideName {\n LEFT = 'LEFT',\n RIGHT = 'RIGHT'\n}\n\nexport enum ComplexPartName {\n REAL = 'REALTEIL',\n IMAG = 'IMAGINAERTEIL'\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { Location } from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationService {\n back: any;\n\n constructor(private location: Location) { }\n\n Back(): void {\n this.location.back();\n }\n\n}","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Event } from '../entities/Event'\nimport {ReplaySubject} from 'rxjs/ReplaySubject';\nimport {NotificationMessage} from '../entities/NotificationMessage';\nimport {NotificationSeverityEnum} from '../enums/NotificationSeverityEnum';\n\n/**\n * The NotificationSErvice is a message queue for notifications.\n * Notifications are\n */\n@Injectable()\nexport class NotificationService {\n\n private static MESSAGE_TIMEOUT_ERROR = 12000; // in milliseconds\n private static MESSAGE_TIMEOUT_WARN = 8000; // in milliseconds\n private static MESSAGE_TIMEOUT_OK = 3000; // in milliseconds\n private static MESSAGE_TIMEOUT_INFO = 4000; // in milliseconds\n\n private messages: Array = [];\n\n // can be subscribed by observers\n public messages$: ReplaySubject> = new ReplaySubject(1);\n\n constructor(private httpClient: HttpClient) {}\n\n getBackEndMessages(): Observable{\n return this.httpClient\n .get('/api/ui_events');\n }\n\n readMessage(eventId: number){\n const dto = {\n id: eventId\n }\n return this.httpClient\n .put('/api/ui_events/'+ eventId, {});\n }\n\n success(detail: string, summary?: string): void {\n this.createMessage(NotificationSeverityEnum.SUCCESS, NotificationService.MESSAGE_TIMEOUT_OK, detail, summary);\n }\n\n warn(detail: string, summary?: string): void {\n this.createMessage(NotificationSeverityEnum.WARN, NotificationService.MESSAGE_TIMEOUT_WARN, detail, summary);\n }\n\n info(detail: string, summary?: string): void {\n this.createMessage(NotificationSeverityEnum.INFO, NotificationService.MESSAGE_TIMEOUT_INFO, detail, summary);\n }\n\n error(detail: string, summary?: string): void {\n this.createMessage(NotificationSeverityEnum.ERROR, NotificationService.MESSAGE_TIMEOUT_ERROR, detail, summary);\n }\n\n private createMessage(severity: NotificationSeverityEnum, timeout: number, detail: string, summary?: string, ) {\n const id = this.getAutoIncrement();\n // createMessage\n this.messages.push({severity, id, detail, summary});\n // inform others\n this.messages$.next(this.messages);\n\n // dispose automativally\n setTimeout(() => {\n this.disposeMessage(id);\n }, timeout);\n }\n\n public disposeMessage(id: number) {\n const indx: number = this.messages.findIndex(m => m.id === id);\n const disposedItems: NotificationMessage[] = this.messages.splice(indx, 1); // remove this element from array\n this.messages$.next(this.messages);\n }\n\n /**\n * loops through messages and returns the largest id + 1\n */\n private getAutoIncrement(): number {\n if (this.messages.length === 0) { return 1; }\n return Math.max.apply(null, this.messages.map(m => m.id)) + 1;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {NamedFile} from '../types/NamedFile';\nimport {DownloadOctetStreamNamedFile} from '../utilities/DownloadOctetStreamNamedFile';\nimport {HttpClient} from '@angular/common/http';\nimport {OperatorView} from '../entities/OperatorView';\nimport {SaveOperatorDto} from '../entities/SaveOperatorDto';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OperatorService {\n\n constructor(private http: HttpClient) { }\n\n public getList(): Observable> {\n return this.http.get>('/api/operators');\n }\n\n public saveOperator(o: SaveOperatorDto): Observable {\n if (o.id) {\n // update existing\n return this.http.put('/api/operators/'+o.id, JSON.stringify(o));\n }\n // create new\n return this.http.post('/api/operators', JSON.stringify(o));\n }\n\n public deleteOperator(opId: string): Observable {\n // delete existing\n return this.http.delete('/api/operators/'+opId);\n }\n\n public downloadOperatorsEncFileForUsb(): Observable {\n return DownloadOctetStreamNamedFile.download(this.http, '/api/operators/download');\n }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpResponse} from '@angular/common/http';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport 'rxjs/add/operator/map';\nimport 'rxjs-compat/add/operator/do';\nimport {Patient} from '../entities/Patient';\nimport {NamedFile} from '../types/NamedFile';\nimport {AuthService} from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PatientService {\n\n constructor(private httpClient: HttpClient) {\n }\n\n public getPatientList(): Observable> {\n return this.httpClient\n .get('/api/patients')\n .map((resp: Array) => {\n const plist: Array = [];\n resp.forEach(item => plist.push(Patient.parse(item)));\n return plist;\n });\n }\n\n public getPatient(pid: number): Observable {\n return this.httpClient\n .get('/api/patients/' + pid)\n .map(resp => Object.assign(Patient.parse(resp)));\n }\n\n public activatePatient(patientId: number): Observable {\n const dto = {\n patient_id: patientId\n };\n\n return this.httpClient\n .post('/api/command/request_usb_stick_write', JSON.stringify(dto));\n }\n\n public downloadPatientEncFileForUsb(patientId: number): Observable {\n return this.httpClient.get('/api/patients/' + patientId + '/file', {\n headers: new HttpHeaders({Accept: 'application/octet-stream'}),\n observe: 'response',\n responseType : 'blob' // new to Angular4, before it was defined as {responseType: ResponseContentType.Blob}\n }).switchMap((resp: HttpResponse) => {\n let filename = 'unknown';\n const contentDisposition = resp.headers.get('Content-Disposition');\n console.log('headers', resp.headers);\n if ((typeof contentDisposition !== 'undefined') && (contentDisposition != null )) {\n // filename = contentDisposition.split(';')[2].split('filename')[1].split('=')[1].trim();\n filename = contentDisposition.match('filename=\"(.*)\"')[1];\n console.log('filename', filename);\n }\n const result: NamedFile = {\n blob: new Blob([resp.body], { type: 'application/octet-stream' }),\n filename: filename\n };\n return Observable.of(result);\n });\n }\n\n public savePatient(p: Patient): Observable {\n const dto = {\n id: p.id,\n patientId: p.pid,\n nickname: p.name\n };\n\n return this.httpClient\n .put('/api/patients/', JSON.stringify(dto));\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {Role} from '../entities/Role';\nimport {HttpClient} from '@angular/common/http';\nimport {AuthService} from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RoleService {\n\n constructor(\n private http: HttpClient,\n private authService: AuthService\n ) {\n }\n\n public getAssignableRoles(): Observable> {\n return this.http.get>('/api/users/assignable-roles');\n }\n}\n","import { Injectable } from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {HttpClient} from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadMeasurementService {\n\n constructor(private httpClient: HttpClient) { }\n\n // TODO: add an angular test for this upload (using mocked server)\n public postFile(fileToUpload: File): Observable {\n const endpoint = '/api/measurements';\n const file_key = 'measurement_file';\n const formData: FormData = new FormData();\n formData.append(file_key, fileToUpload, fileToUpload.name); //\n return this.httpClient\n .post(endpoint, formData, {headers : {'skip' : 'Content-Type'}}) // do not add application-json in http interceptor\n .map(() => true);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { UsbServiceStatus } from '../entities/UsbServiceStatus';\nimport { UsbStickCounts } from '../types/usb_service_types';\nimport { MeasurementService } from '../services/measurement.service';\nimport { startWith, switchMap, catchError } from 'rxjs/operators';\nimport { BehaviorSubject, interval, Subscription, EMPTY } from 'rxjs';\nimport { NotificationService } from 'src/app/services/notification.service';\n\nexport const LOCAL_USB_SERVICE_URL = 'http://localhost:8933/';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UsbService {\n private eventSource = new BehaviorSubject(null); // You can use any data type here\n currentEvent = this.eventSource.asObservable();\n private eventUsbCountSource = new BehaviorSubject(null); // You can use any data type here\n currentUsbStickCounts = this.eventUsbCountSource.asObservable();\n usbServiceSub: Subscription;\n\n\n private lastUsbServiceStatus: UsbServiceStatus = { \n status: 'USB_SERVICE_NOT_AVAILABLE', \n version: 'n.v.', \n usb_path: '', \n error: 'Error connecting to USB service' \n };\n\n constructor(\n private httpClient: HttpClient,\n private measurementService: MeasurementService,\n private notificationService: NotificationService,\n ) {\n // init the status\n this.eventSource.next(this.lastUsbServiceStatus);\n this.getStatus().subscribe(\n status => {\n this.sendEvent(status);\n },\n error => {\n console.error('Error getting USB service status', error);\n }\n );\n // init the counts\n this.eventUsbCountSource.next({ totalCount: 0, uploadedCount: 0 });\n }\n\n startUsbService() {\n console.log('USB Service - Start cyclical query');\n const repeatInterval = window.location.hostname === '127.0.0.1' ? 10000 : 5000;\n\n this.usbServiceSub = interval(repeatInterval).pipe(\n startWith(0),\n switchMap(() => this.getStatus().pipe(\n catchError((error) => {\n console.error('Error connecting to USB service:', error);\n this.sendEvent({ \n version: 'n.v.', usb_path: '', \n error: 'Error connecting to USB service', \n status: 'USB_SERVICE_NOT_AVAILABLE' });\n return EMPTY;\n })\n ))\n ).subscribe((status) => {\n this.sendEvent(status); // Send status to all subscribed components\n });\n }\n\n /**\n * Send USB-Service-Status-Change event to all components that are interested in it.\n * @param newUsbStatus The new status to send to all subscribed components.\n */\n sendEvent(newUsbStatus: UsbServiceStatus) {\n if (this.lastUsbServiceStatus.status === newUsbStatus.status) {\n return;\n }\n console.log('USB Service status changed to ' + newUsbStatus.status);\n this.lastUsbServiceStatus = newUsbStatus;\n if (newUsbStatus.status === 'USB_READY') {\n this.checkNewMeasurements();\n }\n this.eventSource.next(newUsbStatus);\n }\n\n /**\n * Start download of the USB service installer.\n * @returns {Observable} The installer as a blob.\n */\n public download(): Observable {\n const location = window.location;\n\n const host = location.protocol + '//' + location.hostname + (location.port ? ':3000' : '')\n return this.httpClient\n .get(\"/api/usb-service/download?host=\" + host, { responseType: 'blob' });\n }\n\n public downloadUsbServiceInstaller = (): Observable => {\n return this.httpClient.get('/xera3-usb-service-installer.zip?ts='+Date.now(), { responseType: 'blob', headers: { 'skip': 'Content-Type' }});\n }\n\n public getStatus(): Observable {\n console.log('Getting USB service status from ' + LOCAL_USB_SERVICE_URL);\n return this.httpClient.get(LOCAL_USB_SERVICE_URL);\n }\n\n public savePatientFile(patientId: number): Observable {\n return this.downloadPatientData(patientId).pipe(\n switchMap(data => {\n return this.httpClient.post(LOCAL_USB_SERVICE_URL + 'save_patient_file', data);\n })\n );\n }\n\n downloadPatientData(patientId: number): Observable {\n return this.httpClient.get('/api/patients/' + patientId + '/file', { responseType: 'blob' });\n }\n\n public saveOperatorsFile(): Observable {\n return this.downloadOperatorsData().pipe(\n switchMap(data => {\n return this.httpClient.post(LOCAL_USB_SERVICE_URL + 'save_operators_file', data);\n })\n );\n }\n\n downloadOperatorsData(): Observable {\n return this.httpClient.get('/api/operators/download', { responseType: 'blob' });\n }\n\n\n checkNewMeasurements() {\n console.log('Checking for new measurements');\n const emptyResult = { totalCount: 0, uploadedCount: 0 }\n this.httpClient.get(LOCAL_USB_SERVICE_URL + 'measure_ids').subscribe(\n (measureIds: Array) => {\n if (measureIds.length === 0) {\n console.log('No measurements to upload');\n this.eventUsbCountSource.next(emptyResult);\n }\n this.measurementService.checkMeasurementIdentifiers(measureIds).subscribe(\n (missingMeasureIds: Array) => {\n if (missingMeasureIds.length > 0) {\n console.log(\"Don't exist measurements: \" + missingMeasureIds);\n for (let measureId of missingMeasureIds) {\n this.uploadMeasurement(measureId);\n }\n } else {\n console.log('All measurements uploaded');\n }\n const countResult = { totalCount: measureIds.length, uploadedCount: measureIds.length - missingMeasureIds.length };\n // update the counts\n this.eventUsbCountSource.next(countResult);\n },\n (error) => {\n console.error('Error checking measurements', error);\n this.eventUsbCountSource.next(emptyResult);\n }\n );\n },\n (error) => {\n console.error('Error getting measure ids', error);\n this.eventUsbCountSource.next(emptyResult);\n }\n );\n }\n\n uploadMeasurement(measure_id: number) {\n console.log('Uploading measurements ' + measure_id);\n this.httpClient.get(LOCAL_USB_SERVICE_URL + 'measure_file?measure_id=' + measure_id).subscribe(\n (data: string) => {\n console.log('uploadMeasurement data loaded from local USB-Svc: size=', data.length);\n this.measurementService.uploadMeasurement(data).subscribe(\n (result) => {\n console.log('uploadMeasurement done', result);\n this.notificationService.success('Messung ' + measure_id + ' erfolgreich hochgeladen');\n },\n (error) => {\n console.error('Error uploadMeasurement', error);\n this.notificationService.error('Fehler beim Hochladen der Messung ' + measure_id + ': ' + error.error);\n }\n );\n },\n (error) => {\n console.error('Error uploadMeasurement load data', error);\n this.notificationService.error('Fehler beim Laden der Messung ' + measure_id + ': ' + error.error);\n }\n );\n }\n\n public savePatientAndOperator(patientId: number): Observable {\n return this.savePatientFile(patientId).pipe(\n switchMap(() => {\n return this.saveOperatorsFile();\n })\n );\n }\n}","import { Injectable } from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {HttpClient, HttpHeaders, HttpResponse} from '@angular/common/http';\nimport {ManagableUser} from '../entities/ManagableUser';\nimport {SaveUserDto} from '../entities/SaveUserDto';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserService {\n\n constructor(private http: HttpClient) { }\n\n // returns all users that the currently loggedIn user can manage (depending on role and associated mandants)\n public getMyUsers(): Observable> {\n return this.http.get('/api/users')\n .map((resp: Array) => {\n const result: Array = [];\n resp.forEach( item => result.push(Object.assign(new ManagableUser(), item)));\n return result;\n });\n }\n\n saveUser(user: SaveUserDto): Observable {\n return this.http.put('/api/users', JSON.stringify(user));\n }\n}\n","import {Injectable, Injector} from '@angular/core';\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {AuthService} from '../services/auth.service';\nimport {CurrentUser} from '../entities/CurrentUser';\nimport {NotificationService} from '../services/notification.service';\nimport {LOCAL_USB_SERVICE_URL} from '../services/usb.service';\n\nconst DEV_BACKEND = 'https://praxis-dev.app.xera3.com';\nconst usb_service_url = LOCAL_USB_SERVICE_URL\n\n@Injectable()\nexport class BackendInterceptor implements HttpInterceptor {\n\n constructor(private injector: Injector) {}\n\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n\n\n if(req.url.startsWith(usb_service_url)) { \n // frontend is calling local USB-Service\n // do not intercept this request\n return next.handle(req);\n }\n\n\n const authService: AuthService = this.injector.get(AuthService);\n const notificationServer: NotificationService = this.injector.get(NotificationService);\n\n const currentUser: CurrentUser = authService.getCurrentUser();\n const isAuthenticationRequest: boolean = (req.url.startsWith('/api/login') || (currentUser == null) || !('token' in currentUser));\n\n\n const location = window.location;\n if (location.hostname === 'localhost' || location.hostname === '127.0.0.1x') {\n req = req.clone(\n {\n url: DEV_BACKEND + req.url,\n }\n );\n } else {\n // if not localhost, use the same domain as the frontend\n req = req.clone(\n {\n url:\n location.protocol + '//' +\n location.hostname +\n (location.port ? ':3000' : '') + // use port 3000 for backend (Rails-Bakend)\n location.pathname +\n req.url.substr(1),\n }\n );\n }\n\n\n //if (!req.url.endsWith('/api/measurements')) {\n const skipFlag = 'skip';\n // console.log('before header manipulation', req.headers);\n if (req.headers.has(skipFlag) && req.headers.get(skipFlag) === 'Content-Type') {\n // console.log(\"found skip flag, thus do not add content-type json\");\n req.headers.delete(skipFlag);\n } else {\n // console.log(\"add content type json\");\n req = req.clone({\n setHeaders: {\n 'Content-Type': 'application/json'\n }\n });\n }\n // console.log('after header manipulation', req.headers);\n\n /*\n const ctype = 'Content-Type';\n console.log(\"headers: \", req.headers.has('setMyType'), req.headers.get(ctype));\n if (req.headers.has(ctype) && req.headers.get(ctype) === 'multipart/form-data'){\n //do nothing, skip adding a header\n console.log(\"remove content type def\");\n req.headers.delete(ctype);\n console.log(\"headers: \", req.headers.has(ctype), req.headers.get(ctype));\n }\n else {\n //add already set header or use default json\n req = req.clone({\n setHeaders: {\n 'Content-Type': req.headers.has(ctype) ? req.headers.get(ctype) : 'application/json'\n }\n });\n }\n */\n\n\n\n if (isAuthenticationRequest) {\n return next.handle(req); // exit interceptor here, if its a login request\n }\n\n // otherwise add Auth token to the request\n req = req.clone(\n {\n setHeaders: {\n 'Authorization': `Bearer ${currentUser.token}`,\n },\n });\n\n return next.handle(req)\n // take the refreshed token from response and update user via auth service\n .do((event: HttpEvent) => {\n if (event instanceof HttpResponse) {\n // backend must set 'Access-Control-Expose-Headers: Authorization' to read this header in frontend\n const token: string = event.headers.get('authorization');\n if (token != null && token.startsWith('Bearer ')) {\n authService.refreshToken(token.substring(7));\n // notificationServer.info(token, \"refresh 'Authorization' token\");\n } else {\n // notificationServer.warn('unable to find \\'Authorization\\' header in (' + event.headers.keys().join('; ') + '). ' +\n // 'Request was ' + req.method + ' ' + req.url, 'refresh jwt token');\n }\n }\n // return event;\n });\n }\n}\n","import {HttpClient, HttpHeaders, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {NamedFile} from '../types/NamedFile';\n\nexport class DownloadOctetStreamNamedFile {\n\n static download(httpClient: HttpClient, url: string): Observable {\n return httpClient.get(url, {\n headers: new HttpHeaders({Accept: 'application/octet-stream'}),\n observe: 'response',\n responseType: 'blob' // new to Angular4, before it was defined as {responseType: ResponseContentType.Blob}\n }).switchMap((resp: HttpResponse) => {\n let filename = 'unknown';\n const contentDisposition = resp.headers.get('Content-Disposition');\n console.log('headers', resp.headers);\n if ((typeof contentDisposition !== 'undefined') && (contentDisposition != null)) {\n // filename = contentDisposition.split(';')[2].split('filename')[1].split('=')[1].trim();\n filename = contentDisposition.match('filename=\"(.*)\"')[1];\n console.log('filename', filename);\n }\n const result: NamedFile = {\n blob: new Blob([resp.body], {type: 'application/octet-stream'}),\n filename: filename\n };\n return Observable.of(result);\n });\n }\n}\n","import {ErrorHandler, Injectable, Injector} from '@angular/core';\nimport {NotificationService} from '../services/notification.service';\nimport {Router} from '@angular/router';\nimport {AuthService} from '../services/auth.service';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {BackendErrorResponseDto} from '../entities/BackendErrorResponseDto';\n\n/**\n * Catch Error globally and push message to notification service\n *\n * in case of HttpErrorResponse, we expect a structured error message,\n * see backend {@code de.davitec.javaangularbase.exceptions.handler.ErrorReponseDto}\n *\n * in special case of a 401, go back to login page\n */\n@Injectable()\nexport class GlobalErrorHandler implements ErrorHandler {\n\n constructor(private injector: Injector) {}\n\n handleError(error: any): void {\n const notificationService = this.injector.get(NotificationService);\n const router: Router = this.injector.get(Router);\n const authService: AuthService = this.injector.get(AuthService);\n\n if (error.status === 401) {\n notificationService.error('redirect to login page due to 401', 'Invalid Auth');\n authService.logout();\n return;\n }\n\n // else\n console.warn('globally catched error', error);\n if (!(error instanceof HttpErrorResponse)) {\n notificationService.error(error.message ? error.message : error.toString(), 'An error occured');\n return;\n }\n\n // else\n const err: HttpErrorResponse = error;\n try {\n const dto: BackendErrorResponseDto = Object.assign(new BackendErrorResponseDto(), err.error);\n notificationService.error(dto.message, dto.status + ' ' + dto.error);\n } catch (parseError) {\n notificationService.error('unable to resolvable http response error message, please refer console log', 'Http Error');\n }\n /**\n * you might also push to backend error log or\n * re-throw error here, i.e\n * throw Error(error); //re-throw, but maybe looping issues\n */\n }\n\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":""}